From f5328d765b5f7cc266d24dac89f621db3f7a804b Mon Sep 17 00:00:00 2001 From: Artur Edamov Date: Fri, 7 Oct 2016 14:24:36 +0300 Subject: [PATCH 001/611] Fix incorrect data for firebase/php-jwt library Fix 203 --- views/libraries/php.jade | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/libraries/php.jade b/views/libraries/php.jade index 36dbb5e2..249788cd 100644 --- a/views/libraries/php.jade +++ b/views/libraries/php.jade @@ -52,19 +52,19 @@ article.jwt-php.php.accordion(data-accordion) i.icon-budicon-500 | HS384 p - i.icon-budicon-501 + i.icon-budicon-500 | HS512 p i.icon-budicon-500 | RS256 p - i.icon-budicon-500 + i.icon-budicon-501 | RS384 p i.icon-budicon-501 | RS512 p - i.icon-budicon-500 + i.icon-budicon-501 | ES256 p i.icon-budicon-501 From 7cdc5f8c5de910c20f2547fcf67dce1e4c4c0e61 Mon Sep 17 00:00:00 2001 From: Ben Collins Date: Wed, 12 Oct 2016 21:36:46 -0400 Subject: [PATCH 002/611] Update JWT-C library which now supports RS and ES sign/verify Signed-off-by: Ben Collins --- views/libraries/c.jade | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/views/libraries/c.jade b/views/libraries/c.jade index 8220ae1f..8417abe4 100644 --- a/views/libraries/c.jade +++ b/views/libraries/c.jade @@ -51,22 +51,22 @@ article.jwt-c.c.accordion(data-accordion) i.icon-budicon-500 | HS512 p - i.icon-budicon-501 + i.icon-budicon-500 | RS256 p - i.icon-budicon-501 + i.icon-budicon-500 | RS384 p - i.icon-budicon-501 + i.icon-budicon-500 | RS512 p - i.icon-budicon-501 + i.icon-budicon-500 | ES256 p - i.icon-budicon-501 + i.icon-budicon-500 | ES384 p - i.icon-budicon-501 + i.icon-budicon-500 | ES512 .author-info From 46ee06e9c238689f241734db3a3363fafe540800 Mon Sep 17 00:00:00 2001 From: Lobanov Dmitry Date: Fri, 14 Oct 2016 19:03:27 +0300 Subject: [PATCH 003/611] libraries: objective-c jwt library rs algorithms added. --- views/libraries/objective-c.jade | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/libraries/objective-c.jade b/views/libraries/objective-c.jade index fce367b8..2f32b404 100644 --- a/views/libraries/objective-c.jade +++ b/views/libraries/objective-c.jade @@ -51,13 +51,13 @@ article.jwt-objective-c.objective-c.accordion(data-accordion) i.icon-budicon-500 | HS512 p - i.icon-budicon-501 + i.icon-budicon-500 | RS256 p - i.icon-budicon-501 + i.icon-budicon-500 | RS384 p - i.icon-budicon-501 + i.icon-budicon-500 | RS512 p i.icon-budicon-501 From e430180692ce684cda2b24a7836b822de9b117e9 Mon Sep 17 00:00:00 2001 From: Fraser Tweedale Date: Thu, 6 Oct 2016 13:41:25 +1000 Subject: [PATCH 004/611] hs-jose now implements aud, iss, exp, nbf, iat checks --- views/libraries/haskell2.jade | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/views/libraries/haskell2.jade b/views/libraries/haskell2.jade index 200bb019..df9ea762 100644 --- a/views/libraries/haskell2.jade +++ b/views/libraries/haskell2.jade @@ -13,7 +13,7 @@ article.jwt-haskell.haskell.accordion(data-accordion) i.icon-budicon-500 | Verify p - i.icon-budicon-501 + i.icon-budicon-500 code iss | check p @@ -21,19 +21,19 @@ article.jwt-haskell.haskell.accordion(data-accordion) code sub | check p - i.icon-budicon-501 + i.icon-budicon-500 code aud | check p - i.icon-budicon-501 + i.icon-budicon-500 code exp | check p - i.icon-budicon-501 + i.icon-budicon-500 code nbf | check p - i.icon-budicon-501 + i.icon-budicon-500 code iat | check p From 5ebc3dca9271cf960cca1974af1ab481defc03a8 Mon Sep 17 00:00:00 2001 From: Arnaud Bouchez Date: Mon, 19 Dec 2016 20:27:25 +0100 Subject: [PATCH 005/611] introducing new Delphi/FPC implementation for jwt, supporting all claims, and HS256 and ES256 algorithms --- views/libraries/delphi2.jade | 84 ++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 views/libraries/delphi2.jade diff --git a/views/libraries/delphi2.jade b/views/libraries/delphi2.jade new file mode 100644 index 00000000..aa5c3829 --- /dev/null +++ b/views/libraries/delphi2.jade @@ -0,0 +1,84 @@ +// Delphi https://github.com/synopse/mORMot +article.jwt-delphi.delphi.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/17.svg') + h3 Delphi + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-500 + code iss + | check + p + i.icon-budicon-500 + code sub + | check + p + i.icon-budicon-500 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-500 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-501 + | HS384 + p + i.icon-budicon-501 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-501 + | RS384 + p + i.icon-budicon-501 + | RS512 + p + i.icon-budicon-501 + | ES256 + p + i.icon-budicon-501 + | ES384 + p + i.icon-budicon-501 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/synopse') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Synopse + span.stars(data-repo='synopse/mORMot', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/synopse/mORMot') View Repo + + .panel-footer + code git clone https://github.com/synopse/mORMot From 2629b2a0cc6fee829357d5131aa511f8d65e8030 Mon Sep 17 00:00:00 2001 From: Arnaud Bouchez Date: Mon, 19 Dec 2016 20:34:00 +0100 Subject: [PATCH 006/611] fixed ES256 support, not RS256 --- views/libraries/delphi2.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/libraries/delphi2.jade b/views/libraries/delphi2.jade index aa5c3829..8bbfd5fb 100644 --- a/views/libraries/delphi2.jade +++ b/views/libraries/delphi2.jade @@ -51,7 +51,7 @@ article.jwt-delphi.delphi.accordion(data-accordion) i.icon-budicon-501 | HS512 p - i.icon-budicon-500 + i.icon-budicon-501 | RS256 p i.icon-budicon-501 @@ -60,7 +60,7 @@ article.jwt-delphi.delphi.accordion(data-accordion) i.icon-budicon-501 | RS512 p - i.icon-budicon-501 + i.icon-budicon-500 | ES256 p i.icon-budicon-501 From 93c8a7dc6ac4aa2cf9e52ea99fa59ae8953c8dda Mon Sep 17 00:00:00 2001 From: Nick Vellios Date: Wed, 18 Jan 2017 14:16:30 -0800 Subject: [PATCH 007/611] Added go5.jade --- views/libraries/go5.jade | 84 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 views/libraries/go5.jade diff --git a/views/libraries/go5.jade b/views/libraries/go5.jade new file mode 100644 index 00000000..13f7806d --- /dev/null +++ b/views/libraries/go5.jade @@ -0,0 +1,84 @@ +// Go nickvellios/gojwt +article.jwt-go.go.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/8.svg') + h3 Go + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-501 + code nbf + | check + p + i.icon-budicon-501 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-501 + | HS384 + p + i.icon-budicon-501 + | HS512 + p + i.icon-budicon-501 + | RS256 + p + i.icon-budicon-501 + | RS384 + p + i.icon-budicon-501 + | RS512 + p + i.icon-budicon-501 + | ES256 + p + i.icon-budicon-501 + | ES384 + p + i.icon-budicon-501 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/nickvellios') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | nickvellios + span.stars(data-repo='nickvellios/gojwt', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/nickvellios/gojwt') View Repo + + .panel-footer + code go get github.com/nickvellios/gojwt From c24babb887c616e8766e8bd1686c60ac546b02b8 Mon Sep 17 00:00:00 2001 From: Adam Hanna Date: Tue, 14 Mar 2017 08:15:07 -0700 Subject: [PATCH 008/611] added adam-hanna/jwt-auth --- views/index.jade | 7 ++-- views/libraries/go5.jade | 84 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 views/libraries/go5.jade diff --git a/views/index.jade b/views/index.jade index 2072df49..d53d8651 100644 --- a/views/index.jade +++ b/views/index.jade @@ -59,10 +59,10 @@ block content span.button-text Add to chrome section.jtw-ebook-banner span - strong Get the JWT Handbook for free! + strong Get the JWT Handbook for free! |Spread the word and download it now. a.btn.btn-download-ebook(href='https://auth0.com/e-books/jwt-handbook?utm_source=jwtio&utm_medium=sc&utm_campaign=rotating_banner', target='_blank') Download Ebook - + script. var extensionSection = document.getElementsByClassName("update-site")[0]; var ebookSection = document.getElementsByClassName("jtw-ebook-banner")[0]; @@ -214,6 +214,7 @@ block content include libraries/go2.jade include libraries/go3.jade include libraries/go4.jade + include libraries/go5.jade include libraries/haskell.jade include libraries/haskell2.jade include libraries/rust.jade @@ -274,4 +275,4 @@ block content .column.tshirt h2 Store img(src='http://github.com/img/pic_tshirt.png') - a.buy(href='http://swag.auth0.com/', target='_blank') Buy T-Shirt \ No newline at end of file + a.buy(href='http://swag.auth0.com/', target='_blank') Buy T-Shirt diff --git a/views/libraries/go5.jade b/views/libraries/go5.jade new file mode 100644 index 00000000..37b40657 --- /dev/null +++ b/views/libraries/go5.jade @@ -0,0 +1,84 @@ +// Go adam-hanna/jwt-auth +article.jwt-go.go.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/8.svg') + h3 Go + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-501 + code iat + | check + p + i.icon-budicon-500 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-500 + | ES256 + p + i.icon-budicon-500 + | ES384 + p + i.icon-budicon-500 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/adam-hanna') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | adam-hanna + span.stars(data-repo='adam-hanna/jwt-auth', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/adam-hanna/jwt-auth') View Repo + + .panel-footer + code go get github.com/adam-hanna/jwt-auth From 443a89e33f99e535befb65b2d8a732e3881eae3f Mon Sep 17 00:00:00 2001 From: Paulo Lopes Date: Thu, 16 Mar 2017 14:00:03 +0100 Subject: [PATCH 009/611] Added Vert.x Auth JWT to the list --- views/index.jade | 1 + views/libraries/java5.jade | 84 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 views/libraries/java5.jade diff --git a/views/index.jade b/views/index.jade index 2072df49..78bfede1 100644 --- a/views/index.jade +++ b/views/index.jade @@ -202,6 +202,7 @@ block content include libraries/java2.jade include libraries/java3.jade include libraries/java4.jade + include libraries/java5.jade include libraries/js.jade include libraries/perl5.jade include libraries/ruby.jade diff --git a/views/libraries/java5.jade b/views/libraries/java5.jade new file mode 100644 index 00000000..b6e5de23 --- /dev/null +++ b/views/libraries/java5.jade @@ -0,0 +1,84 @@ +// Java Vert.x +article.jwt-java.java.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/3.svg') + h3 Java + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-500 + code iss + | check + p + i.icon-budicon-500 + code sub + | check + p + i.icon-budicon-500 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-500 + | ES256 + p + i.icon-budicon-500 + | ES384 + p + i.icon-budicon-500 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/vert-x3') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Vert.x + span.stars(data-repo='vert-x3/vertx-auth', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/vert-x3/vertx-auth') View Repo + + .panel-footer + code maven: io.vertx / vertx-auth-jwt / 3.4.1 From 6078b9c439113a2b23d24f364467f10dd0669d87 Mon Sep 17 00:00:00 2001 From: Artur Troian Date: Sun, 22 Jan 2017 19:22:45 +0200 Subject: [PATCH 010/611] Add C++ Library https://github.com/troian/josepp Signed-off-by: Artur Troian --- views/libraries/cpp.jade | 84 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 views/libraries/cpp.jade diff --git a/views/libraries/cpp.jade b/views/libraries/cpp.jade new file mode 100644 index 00000000..8a37d278 --- /dev/null +++ b/views/libraries/cpp.jade @@ -0,0 +1,84 @@ +// C++ troian/jwtpp +article.jwt-c++.c++.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/8.svg') + h3 Go + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-501 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-500 + | ES256 + p + i.icon-budicon-500 + | ES384 + p + i.icon-budicon-500 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/troian') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | dgrijalva + span.stars(data-repo='troian/josepp', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/troian/josepp') View Repo + + .panel-footer + code git clone https://github.com/troian/josepp From ae431bff0ffd93d9cc0257bc34e8e658eebd3eda Mon Sep 17 00:00:00 2001 From: Iain Logan Date: Sun, 11 Jun 2017 11:54:02 +0000 Subject: [PATCH 011/611] Update io.igl.jwt lib to reflect package updates RS256 is now implemented in this package. Updated dependency instructions to target latest version. --- views/libraries/scala3.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/libraries/scala3.jade b/views/libraries/scala3.jade index 0ba8312e..740b964c 100644 --- a/views/libraries/scala3.jade +++ b/views/libraries/scala3.jade @@ -51,7 +51,7 @@ article.jwt-scala.scala.accordion(data-accordion) i.icon-budicon-500 | HS512 p - i.icon-budicon-501 + i.icon-budicon-500 | RS256 p i.icon-budicon-501 @@ -81,4 +81,4 @@ article.jwt-scala.scala.accordion(data-accordion) a(href='https://github.com/iain-logan/jwt') View Repo .panel-footer - code libraryDependencies += "io.igl" %% "jwt" % "1.2.0" + code libraryDependencies += "io.igl" %% "jwt" % "1.2.2" From 57147edf184a8ed3b1443726f8fe4406be6bbf39 Mon Sep 17 00:00:00 2001 From: Yong Wen Chua Date: Fri, 30 Jun 2017 02:13:55 +0800 Subject: [PATCH 012/611] Add Rust Library (biscuit) --- views/libraries/rust3.jade | 84 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 views/libraries/rust3.jade diff --git a/views/libraries/rust3.jade b/views/libraries/rust3.jade new file mode 100644 index 00000000..b6b0e513 --- /dev/null +++ b/views/libraries/rust3.jade @@ -0,0 +1,84 @@ +// Rust lawliet89/biscuit +article.jwt-rust-biscuit.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/10.svg') + h3 Rust + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-501 + | ES256 + p + i.icon-budicon-501 + | ES384 + p + i.icon-budicon-501 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/lawliet89') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Yong Wen Chua + span.stars(data-repo='lawliet89/biscuit', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/lawliet89/biscuit') View Repo + + .panel-footer + code Cargo.toml: biscuit = "*" From f017279b79aaf528c96344d51cef8f65e8f482b2 Mon Sep 17 00:00:00 2001 From: John Galt Date: Thu, 6 Jul 2017 16:40:30 -0400 Subject: [PATCH 013/611] Update validation capabilities of jose package --- views/libraries/haskell2.jade | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/views/libraries/haskell2.jade b/views/libraries/haskell2.jade index 200bb019..df9ea762 100644 --- a/views/libraries/haskell2.jade +++ b/views/libraries/haskell2.jade @@ -13,7 +13,7 @@ article.jwt-haskell.haskell.accordion(data-accordion) i.icon-budicon-500 | Verify p - i.icon-budicon-501 + i.icon-budicon-500 code iss | check p @@ -21,19 +21,19 @@ article.jwt-haskell.haskell.accordion(data-accordion) code sub | check p - i.icon-budicon-501 + i.icon-budicon-500 code aud | check p - i.icon-budicon-501 + i.icon-budicon-500 code exp | check p - i.icon-budicon-501 + i.icon-budicon-500 code nbf | check p - i.icon-budicon-501 + i.icon-budicon-500 code iat | check p From 212cd4131ad07f913693e528ecd941c1fce897ea Mon Sep 17 00:00:00 2001 From: Jacob Hughes Date: Sun, 30 Jul 2017 18:47:43 -0400 Subject: [PATCH 014/611] Update compatibility matrix for rust libray Based on: https://github.com/GildedHonour/frank_jwt/blob/master/README.md --- views/libraries/rust.jade | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/views/libraries/rust.jade b/views/libraries/rust.jade index 550718d1..647c7671 100644 --- a/views/libraries/rust.jade +++ b/views/libraries/rust.jade @@ -13,15 +13,15 @@ article.jwt-rust.rust.accordion(data-accordion) i.icon-budicon-500 | Verify p - i.icon-budicon-501 + i.icon-budicon-500 code iss | check p - i.icon-budicon-501 + i.icon-budicon-500 code sub | check p - i.icon-budicon-501 + i.icon-budicon-500 code aud | check p @@ -29,15 +29,15 @@ article.jwt-rust.rust.accordion(data-accordion) code exp | check p - i.icon-budicon-501 + i.icon-budicon-500 code nbf | check p - i.icon-budicon-501 + i.icon-budicon-500 code iat | check p - i.icon-budicon-501 + i.icon-budicon-500 code jti | check .column @@ -51,22 +51,22 @@ article.jwt-rust.rust.accordion(data-accordion) i.icon-budicon-500 | HS512 p - i.icon-budicon-501 + i.icon-budicon-500 | RS256 p - i.icon-budicon-501 + i.icon-budicon-500 | RS384 p - i.icon-budicon-501 + i.icon-budicon-500 | RS512 p - i.icon-budicon-501 + i.icon-budicon-500 | ES256 p - i.icon-budicon-501 + i.icon-budicon-500 | ES384 p - i.icon-budicon-501 + i.icon-budicon-500 | ES512 .author-info From ed091d6ac85d539b583e429b265bc06629c0e41f Mon Sep 17 00:00:00 2001 From: Daisuke Maki Date: Fri, 1 Sep 2017 07:16:25 +0900 Subject: [PATCH 015/611] Add lestrrat/go-jwx --- views/index.jade | 1 + views/libraries/go6.jade | 84 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 views/libraries/go6.jade diff --git a/views/index.jade b/views/index.jade index 1e4378ab..e7e6c5fd 100644 --- a/views/index.jade +++ b/views/index.jade @@ -216,6 +216,7 @@ block content include libraries/go3.jade include libraries/go4.jade include libraries/go5.jade + include libraries/go6.jade include libraries/haskell.jade include libraries/haskell2.jade include libraries/rust.jade diff --git a/views/libraries/go6.jade b/views/libraries/go6.jade new file mode 100644 index 00000000..d248a9b3 --- /dev/null +++ b/views/libraries/go6.jade @@ -0,0 +1,84 @@ +// Go lestrrat/go-jwx +article.jwt-go.go.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/8.svg') + h3 Go + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-501 + code exp + | check + p + i.icon-budicon-501 + code nbf + | check + p + i.icon-budicon-501 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-500 + | ES256 + p + i.icon-budicon-500 + | ES384 + p + i.icon-budicon-500 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/lestrrat') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | lestrrat + span.stars(data-repo='lestrrat/go-jwx', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/lestrrat/go-jwx') View Repo + + .panel-footer + code go get github.com/lestrrat/go-jwx From acfba488a35eb6c2ef569bcaac49074b3ae3ecfa Mon Sep 17 00:00:00 2001 From: David Beitey Date: Fri, 6 Oct 2017 15:26:24 +1000 Subject: [PATCH 016/611] Add links to claims references, minor grammar fix This provides an easy-to-access link to get to the spec on what "others" relates to and what public claims exist in the IANA registry. --- views/md/introduction.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/views/md/introduction.md b/views/md/introduction.md index f2a3af57..00e98433 100755 --- a/views/md/introduction.md +++ b/views/md/introduction.md @@ -49,15 +49,15 @@ Then, this JSON is **Base64Url** encoded to form the first part of the JWT. The second part of the token is the payload, which contains the claims. Claims are statements about an entity (typically, the user) and additional metadata. There are three types of claims: *reserved*, *public*, and *private* claims. -- **Reserved claims**: These are a set of predefined claims which are not mandatory but recommended, to provide a set of useful, interoperable claims. Some of them are: **iss** (issuer), **exp** (expiration time), **sub** (subject), **aud** (audience), and others. +- [**Reserved claims**](https://tools.ietf.org/html/rfc7519#section-4.1): These are a set of predefined claims which are not mandatory but recommended, to provide a set of useful, interoperable claims. Some of them are: **iss** (issuer), **exp** (expiration time), **sub** (subject), **aud** (audience), and [others](https://tools.ietf.org/html/rfc7519#section-4.1). > Notice that the claim names are only three characters long as JWT is meant to be compact. -- **Public claims**: These can be defined at will by those using JWTs. But to avoid collisions they should be defined in the IANA JSON Web Token Registry or be defined as a URI that contains a collision resistant namespace. +- [**Public claims**](https://tools.ietf.org/html/rfc7519#section-4.2): These can be defined at will by those using JWTs. But to avoid collisions they should be defined in the [IANA JSON Web Token Registry](https://www.iana.org/assignments/jwt/jwt.xhtml) or be defined as a URI that contains a collision resistant namespace. -- **Private claims**: These are the custom claims created to share information between parties that agree on using them. +- [**Private claims**](https://tools.ietf.org/html/rfc7519#section-4.3): These are the custom claims created to share information between parties that agree on using them and are neither *reserved* or *public* claims. -An example of payload could be: +An example payload could be: ``` { From 5a665e2396c320d098c3803edcde36bcfab39bf4 Mon Sep 17 00:00:00 2001 From: Daniel DeGroff Date: Fri, 27 Oct 2017 19:48:06 -0600 Subject: [PATCH 017/611] add prime-jwt --- views/index.jade | 1 + views/libraries/java5.jade | 82 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 views/libraries/java5.jade diff --git a/views/index.jade b/views/index.jade index 1e4378ab..42a93c6d 100644 --- a/views/index.jade +++ b/views/index.jade @@ -203,6 +203,7 @@ block content include libraries/java2.jade include libraries/java3.jade include libraries/java4.jade + include libraries/java5.jade include libraries/js.jade include libraries/perl5.jade include libraries/ruby.jade diff --git a/views/libraries/java5.jade b/views/libraries/java5.jade new file mode 100644 index 00000000..9947a3a9 --- /dev/null +++ b/views/libraries/java5.jade @@ -0,0 +1,82 @@ +// Java connect2id +article.jwt-java.java.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/3.svg') + h3 Java + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-500 + code iss + | check + p + i.icon-budicon-500 + code sub + | check + p + i.icon-budicon-500 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-501 + | ES256 + p + i.icon-budicon-501 + | ES384 + p + i.icon-budicon-501 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/inversoft') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Inversoft + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/inversoft/prime-jwt') View Repo + + .panel-footer + code maven: com.inversoft / prime-jwt / 1.1.0 From e3b4ab7afa5b63d218c477e06a67e598a132182a Mon Sep 17 00:00:00 2001 From: Jacob Mason Date: Mon, 30 Oct 2017 10:21:36 -0500 Subject: [PATCH 018/611] Update index.jade Add space between "Get the JWT Handbook for free!" and "Spread the word and download it now." --- views/index.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.jade b/views/index.jade index 1e4378ab..5b4e2c73 100644 --- a/views/index.jade +++ b/views/index.jade @@ -60,7 +60,7 @@ block content section.jtw-ebook-banner span strong Get the JWT Handbook for free! - |Spread the word and download it now. + | Spread the word and download it now. a.btn.btn-download-ebook(href='https://auth0.com/e-books/jwt-handbook?utm_source=jwtio&utm_medium=sc&utm_campaign=rotating_banner', target='_blank') Download Ebook script. From a07b89650b2d57eb5c0d9fdac63ee779d2ad3b3a Mon Sep 17 00:00:00 2001 From: German Enriquez <-> Date: Mon, 6 Nov 2017 21:49:01 +0200 Subject: [PATCH 019/611] Updated ES256, ES384, and ES512 support for System.IdentityModel.Tokens.Jwt --- views/libraries/net.jade | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/libraries/net.jade b/views/libraries/net.jade index 48b81fd0..34e4d7e5 100644 --- a/views/libraries/net.jade +++ b/views/libraries/net.jade @@ -60,13 +60,13 @@ article.jwt-net.net.accordion(data-accordion) i.icon-budicon-500 | RS512 p - i.icon-budicon-501 + i.icon-budicon-500 | ES256 p - i.icon-budicon-501 + i.icon-budicon-500 | ES384 p - i.icon-budicon-501 + i.icon-budicon-500 | ES512 .author-info From 27505da04ec8d35c3f857cb7479da301beba1671 Mon Sep 17 00:00:00 2001 From: Siyavash Habashi Date: Mon, 13 Nov 2017 00:12:28 +0100 Subject: [PATCH 020/611] add scala:spray-jwt lib --- views/index.jade | 1 + views/libraries/scala4.jade | 85 +++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 views/libraries/scala4.jade diff --git a/views/index.jade b/views/index.jade index 5b4e2c73..2f0af8c5 100644 --- a/views/index.jade +++ b/views/index.jade @@ -223,6 +223,7 @@ block content include libraries/scala.jade include libraries/scala2.jade include libraries/scala3.jade + include libraries/scala4.jade include libraries/d.jade include libraries/clojure.jade include libraries/objective-c.jade diff --git a/views/libraries/scala4.jade b/views/libraries/scala4.jade new file mode 100644 index 00000000..6a5be1f3 --- /dev/null +++ b/views/libraries/scala4.jade @@ -0,0 +1,85 @@ + +// Scala com.github.janjaali/spray-jwt +article.jwt-scala.scala.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/12.svg') + h3 Scala + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-500 + code iss + | check + p + i.icon-budicon-500 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-501 + code exp + | check + p + i.icon-budicon-501 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-501 + | ES256 + p + i.icon-budicon-501 + | ES384 + p + i.icon-budicon-501 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/janjaali') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | janjaali + span.stars(data-repo='janjaali/spray-jwt', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/janjaali/spray-jwt') View Repo + + .panel-footer + code libraryDependencies += "com.github.janjaali" %% "spray-jwt" % "1.0.0" From a2276218640df0468dec6baf961fc454ac4f694c Mon Sep 17 00:00:00 2001 From: Spomky Date: Fri, 17 Nov 2017 20:04:06 +0100 Subject: [PATCH 021/611] Adding web-token/jwt-framework --- views/index.jade | 1 + views/libraries/php7.jade | 84 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 views/libraries/php7.jade diff --git a/views/index.jade b/views/index.jade index 5b4e2c73..30f6f40a 100644 --- a/views/index.jade +++ b/views/index.jade @@ -237,6 +237,7 @@ block content include libraries/php4.jade include libraries/php5.jade include libraries/php6.jade + include libraries/php7.jade include libraries/crystal.jade include libraries/1c.jade diff --git a/views/libraries/php7.jade b/views/libraries/php7.jade new file mode 100644 index 00000000..b6a364ca --- /dev/null +++ b/views/libraries/php7.jade @@ -0,0 +1,84 @@ +// PHP web-token/jwt-framework +article.jwt-php.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/5.svg') + h3 PHP + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-500 + code iss + | check + p + i.icon-budicon-500 + code sub + | check + p + i.icon-budicon-500 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-500 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-500 + | ES256 + p + i.icon-budicon-500 + | ES384 + p + i.icon-budicon-500 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/Spomky') + i.icon-budicon-333(data-toggle='tooltip', title='Spomky', data-original-title='Maintainer') + | Spomky + span.stars(data-repo='web-token/jwt-framework', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/web-token/jwt-framework') View Repo + + .panel-footer + code composer require web-token/jwt-framework From 802f50e4678635a548862c09a6f36c5e8cd79d12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 1 Dec 2017 15:02:28 -0300 Subject: [PATCH 022/611] Ignore package-lock.json. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 18f165b2..7124d98b 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ vendor .tmp .DS_Store npm-debug.log +package-lock.json From 971be7af7a3c9feb0d33643bd4799b27844ec9b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 1 Dec 2017 16:02:05 -0300 Subject: [PATCH 023/611] Fix Biscuit (Rust, 3rd library). --- views/index.jade | 2 ++ views/libraries/rust3.jade | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/views/index.jade b/views/index.jade index 01181aac..4b21d77d 100644 --- a/views/index.jade +++ b/views/index.jade @@ -221,6 +221,8 @@ block content include libraries/haskell.jade include libraries/haskell2.jade include libraries/rust.jade + include libraries/rust2.jade + include libraries/rust3.jade include libraries/lua.jade include libraries/scala.jade include libraries/scala2.jade diff --git a/views/libraries/rust3.jade b/views/libraries/rust3.jade index b6b0e513..a4f2a192 100644 --- a/views/libraries/rust3.jade +++ b/views/libraries/rust3.jade @@ -1,5 +1,5 @@ // Rust lawliet89/biscuit -article.jwt-rust-biscuit.accordion(data-accordion) +article.jwt-rust.accordion(data-accordion) .panel-heading(data-control) img(src='http://github.com/img/10.svg') h3 Rust From 1d4b35412492fb96eb257fc1f7dd692f312dcb07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 1 Dec 2017 17:26:09 -0300 Subject: [PATCH 024/611] Enable 6th Java library. --- views/index.jade | 1 + 1 file changed, 1 insertion(+) diff --git a/views/index.jade b/views/index.jade index 4b21d77d..6f999ad0 100644 --- a/views/index.jade +++ b/views/index.jade @@ -204,6 +204,7 @@ block content include libraries/java3.jade include libraries/java4.jade include libraries/java5.jade + include libraries/java6.jade include libraries/js.jade include libraries/perl5.jade include libraries/ruby.jade From efcfc60881d92eb5be724e827631a41049f9791f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 1 Dec 2017 17:47:00 -0300 Subject: [PATCH 025/611] Manually add files for PR #231 from a remote repository that was deleted. https://github.com/jsonwebtoken/jsonwebtoken.github.io/pull/231 --- views/index.jade | 1 + views/libraries/php8.jade | 84 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 views/libraries/php8.jade diff --git a/views/index.jade b/views/index.jade index d66dfd74..f0fa59c1 100644 --- a/views/index.jade +++ b/views/index.jade @@ -245,6 +245,7 @@ block content include libraries/php5.jade include libraries/php6.jade include libraries/php7.jade + include libraries/php8.jade include libraries/crystal.jade include libraries/1c.jade diff --git a/views/libraries/php8.jade b/views/libraries/php8.jade new file mode 100644 index 00000000..9d6c0715 --- /dev/null +++ b/views/libraries/php8.jade @@ -0,0 +1,84 @@ +// PHP vaibhavpandeyvpz/jweety +article.jwt-php.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/5.svg') + h3 PHP + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-500 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-500 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-501 + | RS256 + p + i.icon-budicon-501 + | RS384 + p + i.icon-budicon-501 + | RS512 + p + i.icon-budicon-501 + | ES256 + p + i.icon-budicon-501 + | ES384 + p + i.icon-budicon-501 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/vaibhavpandeyvpz') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Vaibhav Pandey + span.stars(data-repo='vaibhavpandeyvpz/jweety', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/vaibhavpandeyvpz/jweety') View Repo + + .panel-footer + code composer require vaibhavpandeyvpz/jweety From a741d50a4e2fc29b5c210fa9b56dd2270f490231 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 12:41:09 -0300 Subject: [PATCH 026/611] Added second D library manually. PR #197 missing patch. --- views/index.jade | 1 + views/libraries/d2.jade | 84 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 views/libraries/d2.jade diff --git a/views/index.jade b/views/index.jade index af653ae2..64b01e09 100644 --- a/views/index.jade +++ b/views/index.jade @@ -232,6 +232,7 @@ block content include libraries/scala3.jade include libraries/scala4.jade include libraries/d.jade + include libraries/d2.jade include libraries/clojure.jade include libraries/objective-c.jade include libraries/swift.jade diff --git a/views/libraries/d2.jade b/views/libraries/d2.jade new file mode 100644 index 00000000..bac887a7 --- /dev/null +++ b/views/libraries/d2.jade @@ -0,0 +1,84 @@ +// D zolamk/jwt +article.jwt-d.d.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/14.svg') + h3 D + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-501 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-501 + | RS256 + p + i.icon-budicon-501 + | RS384 + p + i.icon-budicon-501 + | RS512 + p + i.icon-budicon-501 + | ES256 + p + i.icon-budicon-501 + | ES384 + p + i.icon-budicon-501 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/zolamk') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | zolamk + span.stars(data-repo='zolamk/jwt', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/zolamk/jwt') View Repo + + .panel-footer + code dub fetch jwt From 8771bef62fe9d8b72cd45b9a422453cb3842867b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 12:47:53 -0300 Subject: [PATCH 027/611] Manual merge of PR #195 (ignoring some changes). --- views/index.jade | 1 + views/libraries/c2.jade | 84 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 views/libraries/c2.jade diff --git a/views/index.jade b/views/index.jade index 64b01e09..99f8e9fa 100644 --- a/views/index.jade +++ b/views/index.jade @@ -238,6 +238,7 @@ block content include libraries/swift.jade include libraries/swift2.jade include libraries/c.jade + include libraries/c2.jade include libraries/q.jade include libraries/delphi.jade include libraries/php.jade diff --git a/views/libraries/c2.jade b/views/libraries/c2.jade new file mode 100644 index 00000000..7577385e --- /dev/null +++ b/views/libraries/c2.jade @@ -0,0 +1,84 @@ +// C cisco/cjose +article.jwt-c.c.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/16.svg') + h3 C + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-501 + code exp + | check + p + i.icon-budicon-501 + code nbf + | check + p + i.icon-budicon-501 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-500 + | ES256 + p + i.icon-budicon-500 + | ES384 + p + i.icon-budicon-500 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/cisco/cjose') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | linuxwolf + span.stars(data-repo='cisco/cjose', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/cisco/cjose') View Repo + + .panel-footer + code go get github.com/cisco/cjose From ff54b4291a23d324966257cd9f2f1a112d4e0969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 13:32:09 -0300 Subject: [PATCH 028/611] Rust: fixed library filtering. --- views/libraries/rust2.jade | 2 +- views/libraries/rust3.jade | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/views/libraries/rust2.jade b/views/libraries/rust2.jade index f7412c2a..c78be358 100644 --- a/views/libraries/rust2.jade +++ b/views/libraries/rust2.jade @@ -1,5 +1,5 @@ // Rust Keats/rust-jwt -article.jwt-rust.accordion(data-accordion) +article.jwt-rust.rust.accordion(data-accordion) .panel-heading(data-control) img(src='http://github.com/img/10.svg') h3 Rust diff --git a/views/libraries/rust3.jade b/views/libraries/rust3.jade index a4f2a192..de26a5b1 100644 --- a/views/libraries/rust3.jade +++ b/views/libraries/rust3.jade @@ -1,5 +1,5 @@ // Rust lawliet89/biscuit -article.jwt-rust.accordion(data-accordion) +article.jwt-rust.rust.accordion(data-accordion) .panel-heading(data-control) img(src='http://github.com/img/10.svg') h3 Rust From e34dcab72ea1c6db5184949300418f0392958adc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 13:35:11 -0300 Subject: [PATCH 029/611] Supersedes PR #253: fix java2 library version and author. --- views/libraries/java2.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/libraries/java2.jade b/views/libraries/java2.jade index 235c554d..19bba3e3 100644 --- a/views/libraries/java2.jade +++ b/views/libraries/java2.jade @@ -73,10 +73,10 @@ article.jwt-java.java.accordion(data-accordion) .maintainer a(href='https://twitter.com/__b_c') i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | __b_c + | Brian Campbell .repository i.icon-1392070209-icon-social-github a(href='https://bitbucket.org/b_c/jose4j') View Repo .panel-footer - code maven: org.bitbucket.b_c / jose4j / 0.5.0 + code maven: org.bitbucket.b_c / jose4j / 0.6.2 From 71233e8acd006c676922dadd3203461fc10a603f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 13:37:50 -0300 Subject: [PATCH 030/611] Update scala2 version. Supersedes PR #223. --- views/libraries/scala2.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/libraries/scala2.jade b/views/libraries/scala2.jade index f31a4352..332155d8 100644 --- a/views/libraries/scala2.jade +++ b/views/libraries/scala2.jade @@ -81,4 +81,4 @@ article.jwt-scala.scala.accordion(data-accordion) a(href='https://github.com/pauldijou/jwt-scala') View Repo .panel-footer - code sbt: "pdi" %% "jwt-core" % "0.4.1" + code sbt: "pdi" %% "jwt-core" % "0.14.1" From d10f47a3b83cfd91bff7ccff7b95bf1f0f595711 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 13:42:43 -0300 Subject: [PATCH 031/611] Enable Delphi 2 library (PR #219). --- views/index.jade | 1 + 1 file changed, 1 insertion(+) diff --git a/views/index.jade b/views/index.jade index 99f8e9fa..317136f0 100644 --- a/views/index.jade +++ b/views/index.jade @@ -241,6 +241,7 @@ block content include libraries/c2.jade include libraries/q.jade include libraries/delphi.jade + include libraries/delphi2.jade include libraries/php.jade include libraries/php2.jade include libraries/php3.jade From 3e67a1439342518b54788d9f13b27c721d904b2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 13:56:55 -0300 Subject: [PATCH 032/611] Implement PR #194 the right way. --- views/libraries/php2.jade | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/libraries/php2.jade b/views/libraries/php2.jade index 4a3fe3fa..950d051a 100644 --- a/views/libraries/php2.jade +++ b/views/libraries/php2.jade @@ -64,13 +64,13 @@ article.jwt-php.php.accordion(data-accordion) i.icon-budicon-500 | RS512 p - i.icon-budicon-500 + i.icon-budicon-501 | ES256 p - i.icon-budicon-500 + i.icon-budicon-501 | ES384 p - i.icon-budicon-500 + i.icon-budicon-501 | ES512 .author-info From 090e00bae9a430a5e3919c7c437a918b934c05bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 15:46:58 -0300 Subject: [PATCH 033/611] Updates rust2 repo that was renamed. --- views/libraries/rust2.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/libraries/rust2.jade b/views/libraries/rust2.jade index c78be358..2f379767 100644 --- a/views/libraries/rust2.jade +++ b/views/libraries/rust2.jade @@ -74,11 +74,11 @@ article.jwt-rust.rust.accordion(data-accordion) a(href='https://github.com/Keats') i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') | Keats - span.stars(data-repo='Keats/rust-jwt', style='display: inline;') + span.stars(data-repo='Keats/jsonwebtoken', style='display: inline;') i.icon-budicon-466 .repository i.icon-1392070209-icon-social-github - a(href='https://github.com/Keats/rust-jwt') View Repo + a(href='https://github.com/Keats/jsonwebtoken') View Repo .panel-footer code cargo: name = "jsonwebtoken" version = "*" From c1c08f735c30ae5944e68c6d0b19b2a2faaf5b8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 16:19:24 -0300 Subject: [PATCH 034/611] Remove video with wrong content from the introduction. Change "reserved" to "registered". --- stylus/app.styl | 14 -------------- views/introduction.jade | 4 ---- views/md/introduction.md | 6 +++--- 3 files changed, 3 insertions(+), 21 deletions(-) diff --git a/stylus/app.styl b/stylus/app.styl index 19ecd0bd..cc5140cb 100644 --- a/stylus/app.styl +++ b/stylus/app.styl @@ -1014,20 +1014,6 @@ body // plain-text -.video-content - padding-bottom 0 - - .container - max-width 630px - - .intro-video - width 100% - margin 0 auto - display block - +breakpoint("tablet") - width 600px - height 375px - .plain-text .container max-width 630px diff --git a/views/introduction.jade b/views/introduction.jade index 510d30b7..3c8ff583 100644 --- a/views/introduction.jade +++ b/views/introduction.jade @@ -61,10 +61,6 @@ block content h1 Introduction to JSON Web Tokens - section.video-content - .container - iframe.intro-video(src="http://fast.wistia.net/embed/iframe/dxfz716cw9?videoFoam=true&controlsVisibleOnLoad=false&vmode=transparent&preload=metadata&playerColor=292929" allowtransparency="true" frameborder="0" scrolling="no" class="wistia_embed" name="wistia_embed" allowfullscreen mozallowfullscreen webkitallowfullscreen oallowfullscreen msallowfullscreen) - section.plain-text .container include:markdown md/introduction.md diff --git a/views/md/introduction.md b/views/md/introduction.md index 00e98433..a7a7288a 100755 --- a/views/md/introduction.md +++ b/views/md/introduction.md @@ -47,15 +47,15 @@ Then, this JSON is **Base64Url** encoded to form the first part of the JWT. ### Payload The second part of the token is the payload, which contains the claims. Claims are statements about an entity (typically, the user) and additional metadata. -There are three types of claims: *reserved*, *public*, and *private* claims. +There are three types of claims: *registered*, *public*, and *private* claims. -- [**Reserved claims**](https://tools.ietf.org/html/rfc7519#section-4.1): These are a set of predefined claims which are not mandatory but recommended, to provide a set of useful, interoperable claims. Some of them are: **iss** (issuer), **exp** (expiration time), **sub** (subject), **aud** (audience), and [others](https://tools.ietf.org/html/rfc7519#section-4.1). +- [**Registered claims**](https://tools.ietf.org/html/rfc7519#section-4.1): These are a set of predefined claims which are not mandatory but recommended, to provide a set of useful, interoperable claims. Some of them are: **iss** (issuer), **exp** (expiration time), **sub** (subject), **aud** (audience), and [others](https://tools.ietf.org/html/rfc7519#section-4.1). > Notice that the claim names are only three characters long as JWT is meant to be compact. - [**Public claims**](https://tools.ietf.org/html/rfc7519#section-4.2): These can be defined at will by those using JWTs. But to avoid collisions they should be defined in the [IANA JSON Web Token Registry](https://www.iana.org/assignments/jwt/jwt.xhtml) or be defined as a URI that contains a collision resistant namespace. -- [**Private claims**](https://tools.ietf.org/html/rfc7519#section-4.3): These are the custom claims created to share information between parties that agree on using them and are neither *reserved* or *public* claims. +- [**Private claims**](https://tools.ietf.org/html/rfc7519#section-4.3): These are the custom claims created to share information between parties that agree on using them and are neither *registered* or *public* claims. An example payload could be: From 6ad19faf4fac912692dbcb22c2d4d9e5e9d4e8aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 16:28:57 -0300 Subject: [PATCH 035/611] Added Ruby jose gem as library. Fixes #252. --- views/index.jade | 3 +- views/libraries/ruby4.jade | 84 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 views/libraries/ruby4.jade diff --git a/views/index.jade b/views/index.jade index 317136f0..5ef5f1d5 100644 --- a/views/index.jade +++ b/views/index.jade @@ -208,8 +208,9 @@ block content include libraries/js.jade include libraries/perl5.jade include libraries/ruby.jade - include libraries/ruby3.jade include libraries/ruby2.jade + include libraries/ruby3.jade + include libraries/ruby4.jade include libraries/elixir.jade include libraries/elixir2.jade include libraries/elixir3.jade diff --git a/views/libraries/ruby4.jade b/views/libraries/ruby4.jade new file mode 100644 index 00000000..9e878861 --- /dev/null +++ b/views/libraries/ruby4.jade @@ -0,0 +1,84 @@ +// Ruby nov/json-jwt +article.jwt-ruby.ruby.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/7.svg') + h3 Ruby + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-501 + code exp + | check + p + i.icon-budicon-501 + code nbf + | check + p + i.icon-budicon-501 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-500 + | ES256 + p + i.icon-budicon-500 + | ES384 + p + i.icon-budicon-500 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/potatosalad') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Andrew Bennett + span.stars(data-repo='potatosalad/ruby-jose', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/potatosalad/ruby-jose') View Repo + + .panel-footer + code gem install jose From 1cb4edadc8765bc338fb6a95522cb1f551c45e05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 17:11:06 -0300 Subject: [PATCH 036/611] Added Haxe lib. Fixes #157. --- img/23.svg | 108 ++++++++++++++++++++++++++++++++++++++ stylus/app.styl | 3 ++ views/index.jade | 2 + views/libraries/haxe.jade | 84 +++++++++++++++++++++++++++++ 4 files changed, 197 insertions(+) create mode 100644 img/23.svg create mode 100644 views/libraries/haxe.jade diff --git a/img/23.svg b/img/23.svg new file mode 100644 index 00000000..96814436 --- /dev/null +++ b/img/23.svg @@ -0,0 +1,108 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/stylus/app.styl b/stylus/app.styl index cc5140cb..3fc9a522 100644 --- a/stylus/app.styl +++ b/stylus/app.styl @@ -722,6 +722,9 @@ body &.jwt-haskell .panel-heading h3 background-color #666 + &.jwt-haxe + .panel-heading h3 + background-color #EA8220 &.jwt-rust .panel-heading h3 background-color #814626 diff --git a/views/index.jade b/views/index.jade index 5ef5f1d5..c83f9e4b 100644 --- a/views/index.jade +++ b/views/index.jade @@ -166,6 +166,7 @@ block content option(value='.elixir') Elixir option(value='.go') Go option(value='.haskell') Haskell + option(value='.haxe') Haxe option(value='.java') Java option(value='.js') JavaScript option(value='.lua') Lua @@ -224,6 +225,7 @@ block content include libraries/go8.jade include libraries/haskell.jade include libraries/haskell2.jade + include libraries/haxe.jade include libraries/rust.jade include libraries/rust2.jade include libraries/rust3.jade diff --git a/views/libraries/haxe.jade b/views/libraries/haxe.jade new file mode 100644 index 00000000..86550fd1 --- /dev/null +++ b/views/libraries/haxe.jade @@ -0,0 +1,84 @@ +// Haskell frasertweedale/hs-jose +article.jwt-haxe.haxe.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/23.svg') + h3 Haxe + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-500 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-500 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-501 + code nbf + | check + p + i.icon-budicon-501 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-501 + | HS384 + p + i.icon-budicon-501 + | HS512 + p + i.icon-budicon-501 + | RS256 + p + i.icon-budicon-501 + | RS384 + p + i.icon-budicon-501 + | RS512 + p + i.icon-budicon-501 + | ES256 + p + i.icon-budicon-501 + | ES384 + p + i.icon-budicon-501 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/kevinresol') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Kevin Leung + span.stars(data-repo='kevinresol/jsonwebtoken', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/kevinresol/jsonwebtoken') View Repo + + .panel-footer + code haxelib install jsonwebtoken From 13dd43cd71eb7192be4ab49a7d9627fd191c6f8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 17:43:00 -0300 Subject: [PATCH 037/611] Remove unsupported claim checks from ruby2, fixes #145. --- views/libraries/ruby2.jade | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/views/libraries/ruby2.jade b/views/libraries/ruby2.jade index f0df1155..e201e4df 100644 --- a/views/libraries/ruby2.jade +++ b/views/libraries/ruby2.jade @@ -13,31 +13,31 @@ article.jwt-ruby.ruby.accordion(data-accordion) i.icon-budicon-500 | Verify p - i.icon-budicon-500 + i.icon-budicon-501 code iss | check p - i.icon-budicon-500 + i.icon-budicon-501 code sub | check p - i.icon-budicon-500 + i.icon-budicon-501 code aud | check p - i.icon-budicon-500 + i.icon-budicon-501 code exp | check p - i.icon-budicon-500 + i.icon-budicon-501 code nbf | check p - i.icon-budicon-500 + i.icon-budicon-501 code iat | check p - i.icon-budicon-500 + i.icon-budicon-501 code jti | check .column From 3a7c00da06eb441868a69476702e62b4ee7422b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 4 Dec 2017 18:01:25 -0300 Subject: [PATCH 038/611] Removed unmaintained PHP library as referenced in PR #194. --- views/index.jade | 1 - views/libraries/php2.jade | 88 --------------------------------------- 2 files changed, 89 deletions(-) delete mode 100644 views/libraries/php2.jade diff --git a/views/index.jade b/views/index.jade index c83f9e4b..6e2248f8 100644 --- a/views/index.jade +++ b/views/index.jade @@ -246,7 +246,6 @@ block content include libraries/delphi.jade include libraries/delphi2.jade include libraries/php.jade - include libraries/php2.jade include libraries/php3.jade include libraries/php4.jade include libraries/php5.jade diff --git a/views/libraries/php2.jade b/views/libraries/php2.jade deleted file mode 100644 index 950d051a..00000000 --- a/views/libraries/php2.jade +++ /dev/null @@ -1,88 +0,0 @@ -// PHP namshi -article.jwt-php.php.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/5.svg') - h3 PHP - .panel-wrap(data-content) - .version - p Minimum Version 2.2.0 - a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/', target='_blank') - img(src='http://github.com/img/ico_question.svg') - .panel-body.mversion - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/namshi') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Namshi - span.stars(data-repo='namshi/jose', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/namshi/jose') View Repo - - .panel-footer - code composer require namshi/jose From a00cd96a4867c612443831bb5543d79bbe4dbc79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 5 Dec 2017 12:53:12 -0300 Subject: [PATCH 039/611] Added Groovy library. Fixes #229. --- img/24.svg | 60 ++++++++++++++++++++++++++ stylus/app.styl | 3 ++ views/index.jade | 2 + views/libraries/groovy.jade | 84 +++++++++++++++++++++++++++++++++++++ 4 files changed, 149 insertions(+) create mode 100644 img/24.svg create mode 100644 views/libraries/groovy.jade diff --git a/img/24.svg b/img/24.svg new file mode 100644 index 00000000..6eef35d5 --- /dev/null +++ b/img/24.svg @@ -0,0 +1,60 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/stylus/app.styl b/stylus/app.styl index 3fc9a522..cd0b6b6e 100644 --- a/stylus/app.styl +++ b/stylus/app.styl @@ -719,6 +719,9 @@ body &.jwt-go .panel-heading h3 background-color #47B6C4 + &.jwt-groovy + .panel-heading h3 + background-color #6398aa &.jwt-haskell .panel-heading h3 background-color #666 diff --git a/views/index.jade b/views/index.jade index 6e2248f8..7888c8b8 100644 --- a/views/index.jade +++ b/views/index.jade @@ -165,6 +165,7 @@ block content option(value='.delphi') Delphi option(value='.elixir') Elixir option(value='.go') Go + option(value='.groovy') Groovy option(value='.haskell') Haskell option(value='.haxe') Haxe option(value='.java') Java @@ -223,6 +224,7 @@ block content include libraries/go6.jade include libraries/go7.jade include libraries/go8.jade + include libraries/groovy.jade include libraries/haskell.jade include libraries/haskell2.jade include libraries/haxe.jade diff --git a/views/libraries/groovy.jade b/views/libraries/groovy.jade new file mode 100644 index 00000000..637343be --- /dev/null +++ b/views/libraries/groovy.jade @@ -0,0 +1,84 @@ +// Go nickvellios/gojwt +article.jwt-groovy.groovy.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/24.svg') + h3 Groovy + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-501 + code exp + | check + p + i.icon-budicon-501 + code nbf + | check + p + i.icon-budicon-501 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-501 + | HS384 + p + i.icon-budicon-501 + | HS512 + p + i.icon-budicon-501 + | RS256 + p + i.icon-budicon-501 + | RS384 + p + i.icon-budicon-501 + | RS512 + p + i.icon-budicon-501 + | ES256 + p + i.icon-budicon-501 + | ES384 + p + i.icon-budicon-501 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/kaleidos') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Kaleidos + span.stars(data-repo='kaleidos/grails-security-stateless', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/kaleidos/grails-security-stateless') View Repo + + .panel-footer + code compile "org.grails.plugins:security-stateless:0.0.9" From 2d5636e3c618bdf9492c010177bf34395a14c2a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 5 Dec 2017 13:19:34 -0300 Subject: [PATCH 040/611] Fix comment. --- views/libraries/groovy.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/libraries/groovy.jade b/views/libraries/groovy.jade index 637343be..cb641961 100644 --- a/views/libraries/groovy.jade +++ b/views/libraries/groovy.jade @@ -1,4 +1,4 @@ -// Go nickvellios/gojwt +// Groovy kaleidos/grails-security-stateless article.jwt-groovy.groovy.accordion(data-accordion) .panel-heading(data-control) img(src='http://github.com/img/24.svg') From b09d43068e95d3a589864ccc78a37602b8d17c1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 5 Dec 2017 13:21:41 -0300 Subject: [PATCH 041/611] Fix comment. --- views/libraries/haxe.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/libraries/haxe.jade b/views/libraries/haxe.jade index 86550fd1..7d1fcf7d 100644 --- a/views/libraries/haxe.jade +++ b/views/libraries/haxe.jade @@ -1,4 +1,4 @@ -// Haskell frasertweedale/hs-jose +// Haxe kevinresol/jsonwebtoken article.jwt-haxe.haxe.accordion(data-accordion) .panel-heading(data-control) img(src='http://github.com/img/23.svg') From cbb28c8ecca33e2eef2e237fdfe58e6f3cf3a8ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 5 Dec 2017 13:23:33 -0300 Subject: [PATCH 042/611] Fix PHP libraries filter. --- views/libraries/php6.jade | 2 +- views/libraries/php7.jade | 2 +- views/libraries/php8.jade | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/views/libraries/php6.jade b/views/libraries/php6.jade index 7f8844fb..05c77960 100644 --- a/views/libraries/php6.jade +++ b/views/libraries/php6.jade @@ -1,5 +1,5 @@ // PHP gree/jose -article.jwt-php.accordion(data-accordion) +article.jwt-php.php.accordion(data-accordion) .panel-heading(data-control) img(src='http://github.com/img/5.svg') h3 PHP diff --git a/views/libraries/php7.jade b/views/libraries/php7.jade index b6a364ca..da11c6c8 100644 --- a/views/libraries/php7.jade +++ b/views/libraries/php7.jade @@ -1,5 +1,5 @@ // PHP web-token/jwt-framework -article.jwt-php.accordion(data-accordion) +article.jwt-php.php.accordion(data-accordion) .panel-heading(data-control) img(src='http://github.com/img/5.svg') h3 PHP diff --git a/views/libraries/php8.jade b/views/libraries/php8.jade index 9d6c0715..d0e0842e 100644 --- a/views/libraries/php8.jade +++ b/views/libraries/php8.jade @@ -1,5 +1,5 @@ // PHP vaibhavpandeyvpz/jweety -article.jwt-php.accordion(data-accordion) +article.jwt-php.php.accordion(data-accordion) .panel-heading(data-control) img(src='http://github.com/img/5.svg') h3 PHP From c41015dfe84e264c9263d0d676de8833cd7bdc0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 5 Dec 2017 13:28:02 -0300 Subject: [PATCH 043/611] Added first PostgreSQL library. Fixes #159. --- img/25.svg | 53 +++++++++++++++++++++ stylus/app.styl | 3 ++ views/index.jade | 2 + views/libraries/postgresql.jade | 84 +++++++++++++++++++++++++++++++++ 4 files changed, 142 insertions(+) create mode 100644 img/25.svg create mode 100644 views/libraries/postgresql.jade diff --git a/img/25.svg b/img/25.svg new file mode 100644 index 00000000..35536b7a --- /dev/null +++ b/img/25.svg @@ -0,0 +1,53 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/stylus/app.styl b/stylus/app.styl index cd0b6b6e..618258db 100644 --- a/stylus/app.styl +++ b/stylus/app.styl @@ -710,6 +710,9 @@ body &.jwt-php .panel-heading h3 background-color #777BB4 + &.jwt-postgresql + .panel-heading h3 + background-color #336791 &.jwt-ruby .panel-heading h3 background-color #AA1100 diff --git a/views/index.jade b/views/index.jade index 7888c8b8..5459cf06 100644 --- a/views/index.jade +++ b/views/index.jade @@ -176,6 +176,7 @@ block content option(value='.objective-c') Objective-c option(value='.perl') Perl option(value='.php') PHP + option(value='.postgresql') PostgreSQL option(value='.python') Python option(value='.q') Q option(value='.ruby') Ruby @@ -256,6 +257,7 @@ block content include libraries/php8.jade include libraries/crystal.jade include libraries/1c.jade + include libraries/postgresql.jade section.sources .container diff --git a/views/libraries/postgresql.jade b/views/libraries/postgresql.jade new file mode 100644 index 00000000..a570d162 --- /dev/null +++ b/views/libraries/postgresql.jade @@ -0,0 +1,84 @@ +// PostgreSQL michelp/pgjwt +article.jwt-postgresql.postgresql.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/25.svg') + h3 PostgreSQL + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-501 + code exp + | check + p + i.icon-budicon-501 + code nbf + | check + p + i.icon-budicon-501 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-501 + | RS256 + p + i.icon-budicon-501 + | RS384 + p + i.icon-budicon-501 + | RS512 + p + i.icon-budicon-501 + | ES256 + p + i.icon-budicon-501 + | ES384 + p + i.icon-budicon-501 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/michelp') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Michel Pelletier + span.stars(data-repo='michelp/pgjwt', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/michelp/pgjwt') View Repo + + .panel-footer + code CREATE EXTENSION pgjwt; From e390cea0db7525f16b1241ba9dbd8f2abd2950ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 5 Dec 2017 15:46:05 -0300 Subject: [PATCH 044/611] Add jose-jwe-jws (JavaScript library). Fixes #95. --- views/index.jade | 1 + views/libraries/js2.jade | 84 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 views/libraries/js2.jade diff --git a/views/index.jade b/views/index.jade index 5459cf06..b06e4306 100644 --- a/views/index.jade +++ b/views/index.jade @@ -209,6 +209,7 @@ block content include libraries/java5.jade include libraries/java6.jade include libraries/js.jade + include libraries/js2.jade include libraries/perl5.jade include libraries/ruby.jade include libraries/ruby2.jade diff --git a/views/libraries/js2.jade b/views/libraries/js2.jade new file mode 100644 index 00000000..cb15aeeb --- /dev/null +++ b/views/libraries/js2.jade @@ -0,0 +1,84 @@ +// Javascript square/js-jose +article.jwt-js.js.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/6.svg') + h3 JavaScript + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-501 + code exp + | check + p + i.icon-budicon-501 + code nbf + | check + p + i.icon-budicon-501 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-500 + | ES256 + p + i.icon-budicon-500 + | ES384 + p + i.icon-budicon-500 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/square') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Square, Inc. + span.stars(data-repo='square/js-jose', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/square/js-jose') View Repo + + .panel-footer + code npm install jose-jwe-jws From c280e82e5e385908fd585a367a748593c3d21ef4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 6 Dec 2017 21:14:34 -0300 Subject: [PATCH 045/611] Fixes #251: "none" alg results in verified signature. This is a hotfix and should be removed in the future once libraries are updated. --- js/jwt.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/js/jwt.js b/js/jwt.js index 826e49be..558b40ba 100644 --- a/js/jwt.js +++ b/js/jwt.js @@ -101,6 +101,18 @@ window.verify = function (algorithm, value, key, isSecretBase64Encoded) { var result = '', error = null; + // HOTFIX: issue #251, 'alg: none' results in valid signature. It should + // always be invalid. This is fixed in KJUR.jws.JWS in later versions. + // When we update libraries to the latest versions, we can remove this. + try { + var header = JSON.parse(window.decode(value.split('.')[0]).result); + if(header.alg === 'none') { + return { result: false, error: null }; + } + } catch(e) { + return { result: false, error: e }; + } + if (algorithm === 'HS256'){ if (isSecretBase64Encoded) { try { From 9dd6b8012726ba2d7975d913866d5842af8da9a8 Mon Sep 17 00:00:00 2001 From: Gijs Kunze Date: Thu, 7 Dec 2017 13:10:29 +0100 Subject: [PATCH 046/611] Debugger seems to work fine with RS256 --- views/index.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.jade b/views/index.jade index b06e4306..7a26cfa8 100644 --- a/views/index.jade +++ b/views/index.jade @@ -110,7 +110,7 @@ block content small paste a token here .tab-link a(href='#decoded-jwt') Decoded - small edit the payload and secret (only HS256 supported) + small edit the payload and secret .tab-content #encoded-jwt.box-content.current From fda1e49e57997dbcd4e83a9e9cff75c83f1ad460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 7 Dec 2017 18:49:22 -0300 Subject: [PATCH 047/611] Fixes #243: when the header specifies kid and the payload iss, attempt to retrieve public key from .well-known path. --- js/app.js | 78 ++++++++++++++++++++++++++++++++++++++++++++++++------- js/jwt.js | 16 ++++++++++++ 2 files changed, 84 insertions(+), 10 deletions(-) diff --git a/js/app.js b/js/app.js index 0b6f3485..c452cd7c 100644 --- a/js/app.js +++ b/js/app.js @@ -348,6 +348,60 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ } + function downloadPublicKeyIfPossible(token, callback) { + var decoded = window.decodeJWT(token); + if(decoded.error) { + console.error(decoded.error); + callback(); + return; + } + + if(decoded.result.header.alg.indexOf('RS') !== 0 || + !decoded.result.header.kid || + !decoded.result.payload.iss) { + callback(); + return; + } + + var url = decoded.result.payload.iss + '.well-known/jwks.json'; + $.get(url, function(data) { + try { + if(!data.keys || !(data.keys instanceof Array)) { + callback(); + return; + } + + for(var i = 0; i < data.keys.length; ++i) { + if(data.keys[i].kid === decoded.result.header.kid) { + var x5c = data.keys[i].x5c; + if(!(x5c instanceof Array)) { + x5c = [ x5c ]; + } + + var certChain = ''; + x5c.forEach(function(cert) { + certChain += '-----BEGIN CERTIFICATE-----\n'; + certChain += cert + '\n'; + certChain += '-----END CERTIFICATE-----\n'; + }); + + var publicKeyElement = $('textarea[name="public-key"]'); + publicKeyElement.val(certChain); + + var privateKeyElement = $('textarea[name="private-key"]'); + privateKeyElement.val(''); + + break; + } + } + + callback(); + } catch(e) { + console.error(e); + callback(); + } + }); + } function tokenEditorOnChangeListener(instance) { var value = getTrimmedValue(instance); @@ -367,21 +421,25 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ try { selectDetectedAlgorithm(JSON.parse(decodedHeader.result).alg); - }catch (e){ + } catch (e){ console.error('Invalid header decoded'); } - var selector = $('.jwt-header'); - setJSONEditorContent(headerEditor, decodedHeader, selector); - var decodedPayload = window.decode(parts[1]); - selector = $('.jwt-payload'); - setJSONEditorContent(payloadEditor, decodedPayload, selector); + downloadPublicKeyIfPossible(value, function() { - fireEvent(secretElement); + var selector = $('.jwt-header'); + setJSONEditorContent(headerEditor, decodedHeader, selector); + var decodedPayload = window.decode(parts[1]); + selector = $('.jwt-payload'); + setJSONEditorContent(payloadEditor, decodedPayload, selector); - if (window.matchMedia('(min-width: 768px)').matches) { - autoHeightInput(); - } + fireEvent(secretElement); + + if (window.matchMedia('(min-width: 768px)').matches) { + autoHeightInput(); + } + + }); } function selectDetectedAlgorithm(alg){ diff --git a/js/jwt.js b/js/jwt.js index 558b40ba..aded5db5 100644 --- a/js/jwt.js +++ b/js/jwt.js @@ -43,6 +43,22 @@ window.decode = function (base64json) { return {result: json, error: error}; }; +window.decodeJWT = function(encoded) { + var result = { + header: {}, + payload: {} + }; + + try { + var split = encoded.split('.'); + result.header = JSON.parse(window.decode(split[0]).result); + result.payload = JSON.parse(window.decode(split[1]).result); + return { result: result, error: null }; + } catch(e) { + return { result: result, error: e }; + } +} + window.sign = function (algorithm, header, payload, key, isSecretBase64Encoded) { var value = '', error = null, headerAsJSON, payloadAsJSON; From bfff70bbb3e6d9c6f7cb3ff1b8247203c021481b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 11 Dec 2017 11:46:44 -0300 Subject: [PATCH 048/611] Bugfix: remove error class when signature is verified. --- js/app.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/app.js b/js/app.js index c452cd7c..f24222d4 100644 --- a/js/app.js +++ b/js/app.js @@ -553,9 +553,10 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ var error = result.error; result = result.result; if (!error && result) { - $(signatureElement).removeClass('invalid-token'); + $(signatureElement).removeClass('invalid-token'); $(signatureElement).addClass('valid-token'); signatureElement.innerHTML = ' signature verified'; + $('.input').removeClass('error'); } else { $(signatureElement).removeClass('valid-token'); $(signatureElement).addClass('invalid-token'); From ba880a27d6ee2278d34f0a561b2050c1a9a29a59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 11 Dec 2017 13:56:14 -0300 Subject: [PATCH 049/611] Fixes #216: more robust Base64 verification (do not ignore stray characters). --- js/app.js | 25 ++++++++++++++++++------- js/jwt.js | 25 +++++++++++++++++++++---- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/js/app.js b/js/app.js index f24222d4..2f722af5 100644 --- a/js/app.js +++ b/js/app.js @@ -526,6 +526,21 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ var secretElement = document.getElementsByName('secret')[0]; var isBase64EncodedElement = document.getElementsByName('is-base64-encoded')[0]; + function showInvalidSignature() { + var signatureElement = getFirstElementByClassName('js-signature'); + $(signatureElement).removeClass('valid-token'); + $(signatureElement).addClass('invalid-token'); + signatureElement.innerHTML = ' invalid signature'; + } + + function showValidSignature() { + var signatureElement = getFirstElementByClassName('js-signature'); + $(signatureElement).removeClass('invalid-token'); + $(signatureElement).addClass('valid-token'); + signatureElement.innerHTML = ' signature verified'; + $('.input').removeClass('error'); + } + function updateSignature () { var algorithm = getAlgorithm(); var signatureElement = getFirstElementByClassName('js-signature'); @@ -538,6 +553,7 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ var isBase64 = isBase64EncodedElement.checked; if (isBase64 && !window.isValidBase64String(secretElement.value)) { $(signatureContainerElement).addClass('error'); + showInvalidSignature(); return; } else { $(signatureContainerElement).removeClass('error'); @@ -553,14 +569,9 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ var error = result.error; result = result.result; if (!error && result) { - $(signatureElement).removeClass('invalid-token'); - $(signatureElement).addClass('valid-token'); - signatureElement.innerHTML = ' signature verified'; - $('.input').removeClass('error'); + showValidSignature() } else { - $(signatureElement).removeClass('valid-token'); - $(signatureElement).addClass('invalid-token'); - signatureElement.innerHTML = ' invalid signature'; + showInvalidSignature(); } } diff --git a/js/jwt.js b/js/jwt.js index aded5db5..754d5569 100644 --- a/js/jwt.js +++ b/js/jwt.js @@ -105,9 +105,26 @@ window.sign = function (algorithm, header, payload, key, isSecretBase64Encoded) window.isValidBase64String = function (s) { try { - s = window.b64utob64(s); - window.CryptoJS.enc.Base64.parse(s).toString(); - return true; + var validChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_+/='; + var hasPadding = false; + for(var i = 0; i < s.length; ++i) { + hasPadding |= s.charAt(i) === '='; + if(validChars.indexOf(s.charAt(i)) === -1) { + return false; + } + } + + if(hasPadding) { + for(var i = s.indexOf('='); i < s.length; ++i) { + if(s.charAt(i) !== '=') { + return false; + } + } + + return s.length % 4 === 0; + } + + return true; } catch (e) { return false; } @@ -133,7 +150,7 @@ window.verify = function (algorithm, value, key, isSecretBase64Encoded) { if (isSecretBase64Encoded) { try { key = window.b64utob64(key); - key = window.CryptoJS.enc.Base64.parse(key).toString(); + key = window.b64tohex(key); } catch (e) { return {result: '', error: e}; } From d9c7db285a894aa2eed928ccc73130f27c7a6a2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 11 Dec 2017 17:08:18 -0300 Subject: [PATCH 050/611] Fixes #242: autodetect key type when pasting it. --- js/app.js | 16 +++++++++++----- js/jwt.js | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/js/app.js b/js/app.js index 2f722af5..06cd0513 100644 --- a/js/app.js +++ b/js/app.js @@ -395,6 +395,8 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ } } + validateKey.apply($('textarea[name="public-key"]')); + callback(); } catch(e) { console.error(e); @@ -642,16 +644,17 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ function validateKey() { var $textarea = $(this); - var valid; + var valid = window.isValidKey($textarea.val()); - if($textarea.prop('name') === 'public-key') { + /*if($textarea.prop('name') === 'public-key') { valid = /-----BEGIN (PUBLIC KEY|CERTIFICATE)-----(.|\n)*-----END (PUBLIC KEY|CERTIFICATE)-----/.test($textarea.val()); } else { valid = /-----BEGIN RSA PRIVATE KEY-----(.|\n)*-----END RSA PRIVATE KEY-----/.test($textarea.val()); - } + }*/ - if (valid) { + if (valid.valid) { $textarea.removeClass('error'); + $textarea.val(valid.key); } else { $textarea.addClass('error'); } @@ -670,7 +673,10 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ updateSignature(); }); - $('.jwt-signature textarea[name="public-key"]').on('input', updateSignature); + $('.jwt-signature textarea[name="public-key"]').on('input', function() { + validateKey.apply(this); + updateSignature(); + }); $('.jwt-signature textarea[name="private-key"]').on('input', function () { validateKey.apply(this); refreshTokenEditor(); diff --git a/js/jwt.js b/js/jwt.js index 754d5569..1e528977 100644 --- a/js/jwt.js +++ b/js/jwt.js @@ -167,3 +167,43 @@ window.verify = function (algorithm, value, key, isSecretBase64Encoded) { return {result: result, error: error}; }; + +window.isValidKey = function(key) { + // Four tries: no header, header for cert, header for pub key, + // header for priv key + + var headers = [{ + prologue: '', + epilogue: '' + },{ + prologue: '-----BEGIN CERTIFICATE-----\n', + epilogue: '-----END CERTIFICATE-----\n' + }, { + prologue: '-----BEGIN PUBLIC KEY-----\n', + epilogue: '-----END PUBLIC KEY-----\n' + }, { + prologue: '-----BEGIN RSA PRIVATE KEY-----\n', + epilogue: '-----END RSA PRIVATE KEY-----\n' + }]; + + for(var i = 0; i < headers.length; ++i) { + var header = headers[i]; + try { + var newKey = header.prologue; + newKey += key + '\n'; + newKey += header.epilogue; + + return { + valid: !!KEYUTIL.getKey(newKey), + key: newKey + }; + } catch(e2) { + // Ignore + } + } + + return { + valid: false, + key: key + }; +}; From edd0abee8b4d79ea5448fd7674e82077718b4860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 12 Dec 2017 20:11:40 -0300 Subject: [PATCH 051/611] Fixes #237: stricter Base64 checks. --- js/app.js | 7 +++++++ js/jwt.js | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/js/app.js b/js/app.js index 06cd0513..262692ed 100644 --- a/js/app.js +++ b/js/app.js @@ -419,6 +419,13 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ return; } + if(!window.isValidBase64String(parts[0], true) || + !window.isValidBase64String(parts[1], true) || + !window.isValidBase64String(parts[2], true)) { + $('.input').addClass('error'); + return; + } + var decodedHeader = window.decode(parts[0]); try { diff --git a/js/jwt.js b/js/jwt.js index 1e528977..90cdb918 100644 --- a/js/jwt.js +++ b/js/jwt.js @@ -103,9 +103,12 @@ window.sign = function (algorithm, header, payload, key, isSecretBase64Encoded) return {result: value, error: error}; }; -window.isValidBase64String = function (s) { +window.isValidBase64String = function (s, urlOnly) { try { - var validChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_+/='; + var validChars = urlOnly ? + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=' : + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_+/='; + var hasPadding = false; for(var i = 0; i < s.length; ++i) { hasPadding |= s.charAt(i) === '='; From 8325bfc1add0091453f416a8988b992e9d071cfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 12 Dec 2017 20:58:34 -0300 Subject: [PATCH 052/611] Fixes #275: make it clear signed tokens do not hide their contents. --- views/md/introduction.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/views/md/introduction.md b/views/md/introduction.md index a7a7288a..96fd5c4d 100755 --- a/views/md/introduction.md +++ b/views/md/introduction.md @@ -3,7 +3,9 @@ ## What is JSON Web Token? JSON Web Token (JWT) is an open standard ([RFC 7519](https://tools.ietf.org/html/rfc7519)) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be signed using a secret (with the **HMAC** algorithm) or a public/private key pair using **RSA**. -Let's explain some concepts of this definition further. +Although JWTs can be encrypted to also provide secrecy between parties, we will focus on *signed* tokens. Signed tokens can verify the *integrity* of the claims contained within it, while encrypted tokens *hide* those claims from other parties. When tokens are signed using public/private key pairs, the signature also certifies that only the party holding the private key is the one that signed it. + +Let's explain some concepts further. - **Compact**: Because of their smaller size, JWTs can be sent through a URL, POST parameter, or inside an HTTP header. Additionally, the smaller size means transmission is fast. @@ -17,7 +19,7 @@ Here are some scenarios where JSON Web Tokens are useful: - **Information Exchange**: JSON Web Tokens are a good way of securely transmitting information between parties. Because JWTs can be signed—for example, using public/private key pairs—you can be sure the senders are who they say they are. Additionally, as the signature is calculated using the header and the payload, you can also verify that the content hasn't been tampered with. ## What is the JSON Web Token structure? -JSON Web Tokens consist of three parts separated by dots (`.`), which are: +In its compact form, JSON Web Tokens consist of three parts separated by dots (`.`), which are: - Header - Payload @@ -69,6 +71,8 @@ An example payload could be: The payload is then **Base64Url** encoded to form the second part of the JSON Web Token. +> Do note that for signed tokens this information, though protected against tampering, is readable by anyone. Do not put secret information in the payload or header elements of a JWT unless it is encrypted. + ### Signature To create the signature part you have to take the encoded header, the encoded payload, a secret, the algorithm specified in the header, and sign that. @@ -81,18 +85,18 @@ HMACSHA256( secret) ``` -The signature is used to verify that the sender of the JWT is who it says it is and to ensure that the message wasn't changed along the way. +The signature is used to verify the message wasn't changed along the way, and, in the case of tokens signed with a private key, it can also verify that the sender of the JWT is who it says it is. ### Putting all together -The output is three Base64 strings separated by dots that can be easily passed in HTML and HTTP environments, while being more compact when compared to XML-based standards such as SAML. +The output is three Base64-URL strings separated by dots that can be easily passed in HTML and HTTP environments, while being more compact when compared to XML-based standards such as SAML. The following shows a JWT that has the previous header and payload encoded, and it is signed with a secret. ![Encoded JWT](https://cdn.auth0.com/content/jwt/encoded-jwt3.png) If you want to play with JWT and put these concepts into practice, you can use [jwt.io Debugger](http://jwt.io) to decode, verify, and generate JWTs. -![JWT.IO Debugger](https://cdn.auth0.com/blog/legacy-app-auth/legacy-app-auth-5.png) +![JWT.io Debugger](https://cdn.auth0.com/blog/legacy-app-auth/legacy-app-auth-5.png) ## How do JSON Web Tokens work? In authentication, when the user successfully logs in using their credentials, a JSON Web Token will be returned and must be saved locally (typically in local storage, but cookies can be also used), instead of the traditional approach of creating a session in the server and returning a cookie. @@ -112,6 +116,8 @@ The following diagram shows this process: ![How does a JSON Web Token works](https://cdn.auth0.com/content/jwt/jwt-diagram.png) +Do note that with signed tokens, all the information contained within the token is exposed to users or other parties, even though they are unable to change it. This means you should not put secret information within the token. + ## Why should we use JSON Web Tokens? Let's talk about the benefits of **JSON Web Tokens (JWT)** when compared to **Simple Web Tokens (SWT)** and **Security Assertion Markup Language Tokens (SAML)**. @@ -127,5 +133,4 @@ Regarding usage, JWT is used at Internet scale. This highlights the ease of clie ![Comparing the length of an encoded JWT and an encoded SAML](https://cdn.auth0.com/content/jwt/comparing-jwt-vs-saml2.png) _Comparison of the length of an encoded JWT and an encoded SAML_ - If you want to read more about JSON Web Tokens and even start using them to perform authentication in your own applications, browse to the [JSON Web Token landing page](http://auth0.com/learn/json-web-tokens) at Auth0. From c629b8fae4ae10e524a0295e08dbf42cc5d444ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 12 Dec 2017 21:06:57 -0300 Subject: [PATCH 053/611] Fixes #262: add a notice pointing to a document describing the nuances of cookie/local storage options for JWT storage. --- views/md/introduction.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/views/md/introduction.md b/views/md/introduction.md index 96fd5c4d..b863ccc0 100755 --- a/views/md/introduction.md +++ b/views/md/introduction.md @@ -101,6 +101,8 @@ If you want to play with JWT and put these concepts into practice, you can use [ ## How do JSON Web Tokens work? In authentication, when the user successfully logs in using their credentials, a JSON Web Token will be returned and must be saved locally (typically in local storage, but cookies can be also used), instead of the traditional approach of creating a session in the server and returning a cookie. +> There are security considerations that must be taken into account with regards to the way tokens are stored. These are enumerated in [Where to Store Tokens](https://auth0.com/docs/security/store-tokens). + Whenever the user wants to access a protected route or resource, the user agent should send the JWT, typically in the **Authorization** header using the **Bearer** schema. The content of the header should look like the following: ``` From 7b20e4973d16320b7c3504fb55c1c34718c16218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 13 Dec 2017 13:35:04 -0300 Subject: [PATCH 054/611] Fixes #232: support getting public key signatures from x5c, x5u, jku, jwk claims along with Auth0's own scheme. --- js/app.js | 116 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 74 insertions(+), 42 deletions(-) diff --git a/js/app.js b/js/app.js index 262692ed..e33453e8 100644 --- a/js/app.js +++ b/js/app.js @@ -348,61 +348,93 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ } - function downloadPublicKeyIfPossible(token, callback) { - var decoded = window.decodeJWT(token); - if(decoded.error) { - console.error(decoded.error); - callback(); - return; + function setKeyFromX5Claims(json, callback) { + function setKeyFromX5c(x5c) { + if(!x5c) { + return; + } + + if(!(x5c instanceof Array)) { + x5c = [ x5c ]; + } + + var certChain = ''; + x5c.forEach(function(cert) { + certChain += '-----BEGIN CERTIFICATE-----\n'; + certChain += cert + '\n'; + certChain += '-----END CERTIFICATE-----\n'; + }); + + var publicKeyElement = $('textarea[name="public-key"]'); + publicKeyElement.val(certChain); + + var privateKeyElement = $('textarea[name="private-key"]'); + privateKeyElement.val(''); + + validateKey.apply($('textarea[name="public-key"]')); } - if(decoded.result.header.alg.indexOf('RS') !== 0 || - !decoded.result.header.kid || - !decoded.result.payload.iss) { + if(json.x5c) { + setKeyFromX5c(json.x5c); + callback(); + } else if(json.x5u) { + $.get(json.x5u, function(data) { + setKeyFromX5c(data); + callback(); + }); + } else { callback(); - return; } + } - var url = decoded.result.payload.iss + '.well-known/jwks.json'; + function setKeyFromJwkKeySetUrl(kid, url, callback) { $.get(url, function(data) { - try { - if(!data.keys || !(data.keys instanceof Array)) { - callback(); + if(!data || !data.keys || !(data.keys instanceof Array)) { + callback(); + return; + } + + for(var i = 0; i < data.keys.length; ++i) { + var jwk = data.keys[i]; + if(jwk.kid === kid) { + setKeyFromX5Claims(jwk, callback); return; } + } - for(var i = 0; i < data.keys.length; ++i) { - if(data.keys[i].kid === decoded.result.header.kid) { - var x5c = data.keys[i].x5c; - if(!(x5c instanceof Array)) { - x5c = [ x5c ]; - } - - var certChain = ''; - x5c.forEach(function(cert) { - certChain += '-----BEGIN CERTIFICATE-----\n'; - certChain += cert + '\n'; - certChain += '-----END CERTIFICATE-----\n'; - }); - - var publicKeyElement = $('textarea[name="public-key"]'); - publicKeyElement.val(certChain); + callback(); + }); + } - var privateKeyElement = $('textarea[name="private-key"]'); - privateKeyElement.val(''); + function downloadPublicKeyIfPossible(token, callback) { + var decoded = window.decodeJWT(token); + if(decoded.error) { + console.error(decoded.error); + callback(); + return; + } - break; - } - } + var header = decoded.result.header; + var payload = decoded.result.payload; - validateKey.apply($('textarea[name="public-key"]')); + if(header.alg.indexOf('RS') !== 0) { + callback(); + return; + } - callback(); - } catch(e) { - console.error(e); - callback(); - } - }); + if(header.x5c || header.x5u) { + setKeyFromX5Claims(header, callback); + } else if(header.jku) { + setKeyFromJwkKeySetUrl(header.kid, header.jku, callback); + } else if(header.jwk) { + setKeyFromX5Claims(header.jwk, callback); + } else if(header.kid && payload.iss) { + //Auth0-specific scheme + var url = payload.iss + '.well-known/jwks.json'; + setKeyFromJwkKeySetUrl(header.kid, url, callback); + } else { + callback(); + } } function tokenEditorOnChangeListener(instance) { From 43dc33178d83747eff5288eade3dbf9c2e79a126 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 14 Dec 2017 14:46:04 -0300 Subject: [PATCH 055/611] Fixes #266 and #233: show human readable timestamps when hovering over selected claims that contain dates. --- js/app.js | 32 +++++++++++++++++++++++++++++++- stylus/codemirror.styl | 9 +++++++++ views/index.jade | 1 + 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/js/app.js b/js/app.js index e33453e8..bbb89b9f 100644 --- a/js/app.js +++ b/js/app.js @@ -319,17 +319,47 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ lint: true }); - var payloadEditor = codeMirror(document.getElementsByClassName('js-payload')[0], { + var payloadEditorDom = document.getElementsByClassName('js-payload')[0]; + var payloadEditor = codeMirror(payloadEditorDom, { mode: 'application/json', lineWrapping: true, extraKeys: { 'Tab': tabHack}, lint: true }); + $(payloadEditorDom).on('mousemove', tooltipHandler) + var algorithmRadios = $('input[name="algorithm"]'), lastRestoredToken; var tokenRadios = $('input[name="token-type"]'); + var payloadTooltip = $('#js-payload-tooltip'); + + function tooltipHandler(event) { + var result = payloadEditor.coordsChar({ + left: event.pageX, + top: event.pageY + }, 'page'); + + var line = payloadEditor.getLine(result.line); + + var timeClaims = ['exp', 'nbf', 'iat', 'auth_time', 'updated_at']; + + var matches = /"(.*)":\s*"?(\d*)"?/.exec(line); + if(matches && timeClaims.indexOf(matches[1]) !== -1) { + var dateStr = (new Date(parseInt(matches[2]))).toString(); + console.log(dateStr); + payloadTooltip.text(dateStr); + payloadTooltip.css({ + left: event.pageX + 'px', + top: event.pageY + 'px', + }); + payloadTooltip.show(); + } else { + payloadTooltip.hide(); + } + } + function setJSONEditorContent(jsonEditor, decodedJSON, selector) { jsonEditor.off('change', refreshTokenEditor); diff --git a/stylus/codemirror.styl b/stylus/codemirror.styl index bd452ab8..e8c5304d 100644 --- a/stylus/codemirror.styl +++ b/stylus/codemirror.styl @@ -34,6 +34,15 @@ .text-line a, .CodeMirror * color #D63AFF +#js-payload-tooltip + position absolute + background-color #00b9f1 + display none + color white + z-index 9999 + padding 0 4pt + margin-left 4pt + .jwt-playground .output .jwt-signature .text-line a, pre color #00B9F1 \ No newline at end of file diff --git a/views/index.jade b/views/index.jade index 7a26cfa8..e8345e0e 100644 --- a/views/index.jade +++ b/views/index.jade @@ -126,6 +126,7 @@ block content p.text-line PAYLOAD: span DATA .js-payload + #js-payload-tooltip .jwt-explained.jwt-signature p.text-line VERIFY SIGNATURE From c999d525bcbd2d9e92957a7b8d98f497376b2df2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 14 Dec 2017 15:23:01 -0300 Subject: [PATCH 056/611] Remove console.log statement used for debugging. --- js/app.js | 1 - 1 file changed, 1 deletion(-) diff --git a/js/app.js b/js/app.js index bbb89b9f..b6103c6b 100644 --- a/js/app.js +++ b/js/app.js @@ -348,7 +348,6 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ var matches = /"(.*)":\s*"?(\d*)"?/.exec(line); if(matches && timeClaims.indexOf(matches[1]) !== -1) { var dateStr = (new Date(parseInt(matches[2]))).toString(); - console.log(dateStr); payloadTooltip.text(dateStr); payloadTooltip.css({ left: event.pageX + 'px', From c566ddebfb64225f1bb806218ec9d9fcf701e623 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sun, 17 Dec 2017 17:04:44 +0100 Subject: [PATCH 057/611] Update authentikat to reflect current implementation better --- views/libraries/scala.jade | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/views/libraries/scala.jade b/views/libraries/scala.jade index b1d60def..1299fe5e 100644 --- a/views/libraries/scala.jade +++ b/views/libraries/scala.jade @@ -7,7 +7,7 @@ article.jwt-scala.scala.accordion(data-accordion) .panel-body .column p - i.icon-budicon-501 + i.icon-budicon-500 | Sign p i.icon-budicon-500 @@ -21,7 +21,7 @@ article.jwt-scala.scala.accordion(data-accordion) code sub | check p - i.icon-budicon-500 + i.icon-budicon-501 code aud | check p @@ -29,7 +29,7 @@ article.jwt-scala.scala.accordion(data-accordion) code exp | check p - i.icon-budicon-500 + i.icon-budicon-501 code nbf | check p @@ -48,19 +48,19 @@ article.jwt-scala.scala.accordion(data-accordion) i.icon-budicon-500 | HS384 p - i.icon-budicon-501 + i.icon-budicon-500 | HS512 p i.icon-budicon-501 | RS256 p - i.icon-budicon-500 + i.icon-budicon-501 | RS384 p i.icon-budicon-501 | RS512 p - i.icon-budicon-500 + i.icon-budicon-501 | ES256 p i.icon-budicon-501 @@ -81,4 +81,4 @@ article.jwt-scala.scala.accordion(data-accordion) a(href='https://github.com/jasongoodwin/authentikat-jwt') View Repo .panel-footer - code sbt: "com.jason-goodwin" %% "authentikat-jwt" % "0.3.5" + code sbt: "com.jason-goodwin" %% "authentikat-jwt" % "0.4.5" From a18cbd97a46024c019f9188d0d51878ed2a97458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 19 Dec 2017 15:31:38 -0300 Subject: [PATCH 058/611] Fixes #111: support more signing algorithms. --- js/app.js | 132 ++++++++++++++++++++++++------------------- js/default-tokens.js | 121 +++++++++++++++++++++++++++++++++++++++ js/jwt.js | 7 ++- views/index.jade | 39 ++++++++++++- views/layout.jade | 1 + 5 files changed, 238 insertions(+), 62 deletions(-) create mode 100644 js/default-tokens.js diff --git a/js/app.js b/js/app.js index b6103c6b..e74662c2 100644 --- a/js/app.js +++ b/js/app.js @@ -267,37 +267,6 @@ $(".panel-default .panel-heading").click(function() { } } - var DEFAULT_HS_TOKEN = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ'; - - var DEFAULT_RS_TOKEN = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.EkN-DOsnsuRjRO6BxXemmJDm3HbxrbRzXglbN2S4sOkopdU4IsDxTI8jO19W_A4K8ZPJijNLis4EZsHeY559a4DFOd50_OqgHGuERTqYZyuhtF39yxJPAjUESwxk2J5k_4zM3O-vtd1Ghyo4IbqKKSy6J9mTniYJPenn5-HIirE'; - - var DEFAULT_PUBLIC_RSA = "\ ------BEGIN PUBLIC KEY-----\n\ -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd\ -UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs\ -HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D\ -o2kQ+X5xK9cipRgEKwIDAQAB\n\ ------END PUBLIC KEY-----\ - "; - - var DEFAULT_PRIVATE_RSA = "\ ------BEGIN RSA PRIVATE KEY-----\n\ -MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw\ -33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW\ -+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB\ -AoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS\ -3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp\ -uGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE\ -2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0\ -GAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K\ -Su5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY\ -6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5\ -fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523\ -Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP\ -FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ - -----END RSA PRIVATE KEY-----\ - "; - var codeMirror = CodeMirror; function tabHack(instance) { @@ -516,6 +485,8 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ var $algRadio = $('.algorithm input[value="'+alg+'"]'); $algRadio.prop('checked', true); + $('.algorithm option[value="'+alg+'"]').prop('selected', true); + fireEvent($algRadio.get(0)); } @@ -650,7 +621,7 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ var privateKeyElement = $('textarea[name="private-key"]'); var publicKeyElement = $('textarea[name="public-key"]'); - if(algorithm === 'HS256') { + if(algorithm.indexOf('HS') === 0) { return secretElement.val(); } else { return action === 'sign' ? privateKeyElement.val() : publicKeyElement.val(); @@ -661,34 +632,87 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ return algorithmRadios.filter(':checked').val(); } + function checkDefaults(requestedAlgorithm) { + requestedAlgorithm = requestedAlgorithm.toLowerCase(); + var requestedDefaults = defaultTokens[requestedAlgorithm]; + + var token = getTrimmedValue(tokenEditor); + if(!token) { + token = ''; + } + for(var alg in defaultTokens) { + if(token === defaultTokens[alg].token) { + if(alg === requestedAlgorithm) { + break; + } + + tokenEditor.setValue(requestedDefaults.token); + + if(requestedAlgorithm.indexOf('hs') === 0) { + var secretElement = $('input[name="secret"]'); + + secretElement.val(requestedDefaults.secret); + } else { + var publicKey = $('.jwt-signature textarea[name=public-key]'); + var privateKey = $('.jwt-signature textarea[name=private-key]'); + + publicKey.val(requestedDefaults.publicKey); + privateKey.val(requestedDefaults.privateKey); + + validateKey.apply(publicKey); + validateKey.apply(privateKey); + } + + break; + } + } + } + + function updateHeader(algorithm) { + var headerStr = getTrimmedValue(headerEditor); + try { + var header = JSON.parse(headerStr); + header.alg = algorithm; + headerEditor.setValue(JSON.stringify(header, null, 2)); + } catch(e) { + //Ignore this, we may have garbage in the editor. + } + } + function updateAlgorithm () { var algorithm = algorithmRadios.filter(':checked').val(); + var algoType = algorithm.substr(0, 2); + var algoSize = algorithm.substr(2, 3); $('.js-input').attr('data-alg', algorithm); - $('.jwt-signature pre') + if(algoType === 'HS') { + $('#hmacsha-text').text('HMACSHA' + algoSize); + + $('.jwt-signature pre') .hide() - .filter('.' + algorithm) + .filter('.HS256') + .show(); + } else { + var texts = { + RS: 'RSASHA', + PS: 'RSAPSSSHA', + ES: 'ECDSASHA' + }; + $('#rsasha-text').text(texts[algoType] + algoSize); + + $('.jwt-signature pre') + .hide() + .filter('.RS256') .show(); - - if(getTokenType() === 'id_token' && getTrimmedValue(tokenEditor) === DEFAULT_HS_TOKEN && - algorithm === 'RS256'){ - setDefaultsForRSA(); - }else if(getTokenType() === 'id_token' && getTrimmedValue(tokenEditor) === DEFAULT_RS_TOKEN && - algorithm === 'HS256'){ - setDefaultsForHMAC(); } - } - function setDefaultsForRSA() { - tokenEditor.setValue(DEFAULT_RS_TOKEN); - - $('.jwt-signature textarea[name=public-key]').val(DEFAULT_PUBLIC_RSA); - $('.jwt-signature textarea[name=private-key]').val(DEFAULT_PRIVATE_RSA); - } + checkDefaults(algorithm); + updateHeader(algorithm); - function setDefaultsForHMAC(){ - tokenEditor.setValue(DEFAULT_HS_TOKEN); + if (window.matchMedia('(min-width: 768px)').matches) { + autoHeightInput(); + } } function updateToken() { @@ -714,12 +738,6 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ var $textarea = $(this); var valid = window.isValidKey($textarea.val()); - /*if($textarea.prop('name') === 'public-key') { - valid = /-----BEGIN (PUBLIC KEY|CERTIFICATE)-----(.|\n)*-----END (PUBLIC KEY|CERTIFICATE)-----/.test($textarea.val()); - } else { - valid = /-----BEGIN RSA PRIVATE KEY-----(.|\n)*-----END RSA PRIVATE KEY-----/.test($textarea.val()); - }*/ - if (valid.valid) { $textarea.removeClass('error'); $textarea.val(valid.key); @@ -792,7 +810,7 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\ } loadFromStorage(function (jwt) { - lastRestoredToken = jwt || DEFAULT_HS_TOKEN; + lastRestoredToken = jwt || defaultTokens.hs256.token; tokenEditor.setValue( lastRestoredToken diff --git a/js/default-tokens.js b/js/default-tokens.js new file mode 100644 index 00000000..5664712c --- /dev/null +++ b/js/default-tokens.js @@ -0,0 +1,121 @@ +var rsaPrivateKey = + '-----BEGIN RSA PRIVATE KEY-----\n' + + 'MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw\n' + + '33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW\n' + + '+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB\n' + + 'AoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS\n' + + '3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp\n' + + 'uGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE\n' + + '2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0\n' + + 'GAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K\n' + + 'Su5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY\n' + + '6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5\n' + + 'fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523\n' + + 'Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP\n' + + 'FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n' + + '-----END RSA PRIVATE KEY-----'; + +var rsaPublicKey = + '-----BEGIN PUBLIC KEY-----\n' + + 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd\n' + + 'UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs\n' + + 'HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D\n' + + 'o2kQ+X5xK9cipRgEKwIDAQAB\n' + + '-----END PUBLIC KEY-----'; + +var ecPrivateKey = + '-----BEGIN PRIVATE KEY-----' + + 'MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2' + + 'OF/2NxApJCzGCEDdfSp6VQO30hyhRANCAAQRWz+jn65BtOMvdyHKcvjBeBSDZH2r' + + '1RTwjmYSi9R/zpBnuQ4EiMnCqfMPWiZqB4QdbAd0E7oH50VpuZ1P087G' + + '-----END PRIVATE KEY-----'; + +var ecPublicKey = + '-----BEGIN PUBLIC KEY-----' + + 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVs/o5+uQbTjL3chynL4wXgUg2R9' + + 'q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg==' + + '-----END PUBLIC KEY-----'; + +var defaultTokens = { + hs256: { + token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.' + + 'eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOn' + + 'RydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ', + secret: 'secret' + }, + hs384: { + token: '', + secret: 'secret' + }, + hs512: { + token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3' + + 'ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.' + + 'YI0rUGDq5XdRw8vW2sDLRNFMN8Waol03iSFH8I4iLzuYK7FKHaQYWzPt0BJFG' + + 'rAmKJ6SjY0mJIMZqNQJFVpkuw', + secret: 'secret' + }, + rs256: { + token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.' + + 'eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRy' + + 'dWV9.EkN-DOsnsuRjRO6BxXemmJDm3HbxrbRzXglbN2S4sOkopdU4IsDxTI8jO1' + + '9W_A4K8ZPJijNLis4EZsHeY559a4DFOd50_OqgHGuERTqYZyuhtF39yxJPAjU' + + 'ESwxk2J5k_4zM3O-vtd1Ghyo4IbqKKSy6J9mTniYJPenn5-HIirE', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + rs384: { + token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxM' + + 'jM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.' + + 'Ffs4IGK8GkxrSxp7I8IcuHy_uUSskg2zBwScCGhg6T1o4hkdZ5ytJNRj04kD8' + + 'FEnUrnnUiGKgHL0MWrwmgz6Kmi6fxDSKKbiVlESPkUrgBTMaIlOheDbemy19' + + 'lxUJYqd7A2exNXtCW_UoSs8f3ZdYujNrbZWW8kWgLQuk4oa-0I', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + rs512: { + token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NT' + + 'Y3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.' + + 'yN0Dw5rVJ75rdJXKpflhwASRr4DHwlgmRY4HVMdotCdyg8fOB2sLRehLY9' + + 'g9isBnIuOA0aK7qWpj9cc7G8eYmaFdm95_moOJKxCgH0Rn2d2-wygdjBvMrSp' + + 'kxsKMdbc2tKP0rI3ZYalQ7Q86RagZNZ_JpA2V3j3JPKTQwKFGSTw', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + es256: { + token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODk' + + 'wIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.AZR4yap9' + + 'UoqRlEGkeAHjnr9vvLYAljWg8_ZtKDiaaEuN_oi55XjUNfFHfOniACB' + + '46oYm1D4eVyVb8yGavbq9xQ', + privateKey: ecPrivateKey, + publicKey: ecPublicKey + }, + es384: { + token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM' + + '0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.' + + '6zBBNCgcY_5yVr5mjhOG7-9vUUuxE7i85FtYihacGWwdQgBwQiPr8Nt' + + 'qG5eE2StJ7S3xBr-qyPY7fbwdJRG5fA', + privateKey: ecPrivateKey, + publicKey: ecPublicKey + }, + es512: { + token: '', + privateKey: ecPrivateKey, + publicKey: ecPublicKey + }, + ps256: { + token: '', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + ps384: { + token: '', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + ps512: { + token: '', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + } +}; + diff --git a/js/jwt.js b/js/jwt.js index 90cdb918..2b927555 100644 --- a/js/jwt.js +++ b/js/jwt.js @@ -81,7 +81,7 @@ window.sign = function (algorithm, header, payload, key, isSecretBase64Encoded) return error; } - if (algorithm === 'HS256') { + if(algorithm.indexOf('HS') === 0) { if (isSecretBase64Encoded) { try { key = window.b64utob64(key); @@ -149,7 +149,7 @@ window.verify = function (algorithm, value, key, isSecretBase64Encoded) { return { result: false, error: e }; } - if (algorithm === 'HS256'){ + if(algorithm.indexOf('HS') === 0) { if (isSecretBase64Encoded) { try { key = window.b64utob64(key); @@ -184,6 +184,9 @@ window.isValidKey = function(key) { }, { prologue: '-----BEGIN PUBLIC KEY-----\n', epilogue: '-----END PUBLIC KEY-----\n' + }, { + prologue: '-----BEGIN PRIVATE KEY-----\n', + epilogue: '-----END PRIVATE KEY-----\n' }, { prologue: '-----BEGIN RSA PRIVATE KEY-----\n', epilogue: '-----END RSA PRIVATE KEY-----\n' diff --git a/views/index.jade b/views/index.jade index e8345e0e..90b4381d 100644 --- a/views/index.jade +++ b/views/index.jade @@ -96,12 +96,45 @@ block content .hide label input(type='radio', name='algorithm', value='HS256', checked='') + //- Buggy support in library + //- label + //- input(type='radio', name='algorithm', value='HS384') + label + input(type='radio', name='algorithm', value='HS512') label input(type='radio', name='algorithm', value='RS256') + label + input(type='radio', name='algorithm', value='RS384') + label + input(type='radio', name='algorithm', value='RS512') + label + input(type='radio', name='algorithm', value='ES256') + label + input(type='radio', name='algorithm', value='ES384') + //- Not supported by JWS library + //- label + //- input(type='radio', name='algorithm', value='ES512') + //- Buggy support in library + //- label + //- input(type='radio', name='algorithm', value='PS256') + //- label + //- input(type='radio', name='algorithm', value='PS384') + //- label + //- input(type='radio', name='algorithm', value='PS512') .jwt-select select option(name='algorithm',value='HS256', selected='') HS256 + //- option(name='algorithm',value='HS384') HS384 + option(name='algorithm',value='HS512') HS512 option(name='algorithm',value='RS256') RS256 + option(name='algorithm',value='RS384') RS384 + option(name='algorithm',value='RS512') RS512 + option(name='algorithm',value='ES256') ES256 + option(name='algorithm',value='ES384') ES384 + //- option(name='algorithm',value='ES512') ES512 + //- option(name='algorithm',value='PS256') PS256 + //- option(name='algorithm',value='PS384') PS384 + //- option(name='algorithm',value='PS512') PS512 .algorithm-code .tab-nav @@ -131,17 +164,17 @@ block content .jwt-explained.jwt-signature p.text-line VERIFY SIGNATURE pre.pre-encode.HS256. - HMACSHA256( + HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), ) pre.pre-encode.RS256. - RSASHA256( + RSASHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), , - + ) .validation-status.js-signature diff --git a/views/layout.jade b/views/layout.jade index 8933686b..1edc1b64 100644 --- a/views/layout.jade +++ b/views/layout.jade @@ -146,6 +146,7 @@ html(lang='en') script(src='http://github.com/js/accordion.js') script(src='http://github.com/js/highlight.min.js') + script(src='http://github.com/js/default-tokens.js') script(src='http://github.com/js/app.js') // endbuild From f6039c6b9a80da461181555d4f5617c9235a706f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 19 Dec 2017 19:59:59 -0300 Subject: [PATCH 059/611] Fix date parsing for human readable timstamps in claims. --- js/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/app.js b/js/app.js index e74662c2..527c44bc 100644 --- a/js/app.js +++ b/js/app.js @@ -316,7 +316,7 @@ $(".panel-default .panel-heading").click(function() { var matches = /"(.*)":\s*"?(\d*)"?/.exec(line); if(matches && timeClaims.indexOf(matches[1]) !== -1) { - var dateStr = (new Date(parseInt(matches[2]))).toString(); + var dateStr = (new Date(parseInt(matches[2]) * 1000)).toString(); payloadTooltip.text(dateStr); payloadTooltip.css({ left: event.pageX + 'px', From 99d1204adcc2fecc8d413ca42f8bf676a3be1e50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 20 Dec 2017 16:51:05 -0300 Subject: [PATCH 060/611] Partial implementation of the share JWT button. --- js/app.js | 123 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 104 insertions(+), 19 deletions(-) diff --git a/js/app.js b/js/app.js index 527c44bc..e8d33f07 100644 --- a/js/app.js +++ b/js/app.js @@ -459,7 +459,9 @@ $(".panel-default .panel-heading").click(function() { var decodedHeader = window.decode(parts[0]); try { + headerEditor.off('change', refreshTokenEditor); selectDetectedAlgorithm(JSON.parse(decodedHeader.result).alg); + headerEditor.on('change', refreshTokenEditor); } catch (e){ console.error('Invalid header decoded'); } @@ -776,16 +778,14 @@ $(".panel-default .panel-heading").click(function() { var qs; var d; - if (document.location.search) { - qs = document.location.search.slice(1); - d = {}; - qs = qs.split('&'); - qs.forEach(function (kv) { kv = kv.split('='); d[kv[0]] = kv[1]; }); - if (d.value) { - tokenEditor.setValue(decodeURIComponent(d.value)); - return; - } - } + + loadFromStorage(function (jwt) { + lastRestoredToken = jwt || defaultTokens.hs256.token; + + tokenEditor.setValue( + lastRestoredToken + ); + }); if (document.location.hash) { qs = document.location.hash.slice(1); @@ -800,25 +800,107 @@ $(".panel-default .panel-heading").click(function() { if (d.id_token) { tokenEditor.setValue(decodeURIComponent(d.id_token)); - return; } if (d.access_token) { tokenEditor.setValue(decodeURIComponent(d.access_token)); - return; } } - loadFromStorage(function (jwt) { - lastRestoredToken = jwt || defaultTokens.hs256.token; + if (document.location.search) { + qs = document.location.search.slice(1); + d = {}; + qs = qs.split('&'); + qs.forEach(function (kv) { + kv = kv.split('='); + d[kv[0]] = kv[1]; + }); + if(d.publicKey) { + var publicKey = $('.jwt-signature textarea[name="public-key"]'); + publicKey.val(decodeURIComponent(d.publicKey)); + validateKey.apply(publicKey); + } + if (d.value) { + tokenEditor.setValue(decodeURIComponent(d.value)); + } + if(d.token) { + tokenEditor.setValue(decodeURIComponent(d.token)); + } - tokenEditor.setValue( - lastRestoredToken - ); - }); + + } + + function copyTokenLink() { + var algorithm = $('input[name="algorithm"]').filter(':checked').val(); + + var url = 'https://jwt.io/#debugger-io?'; + url += 'token=' + encodeURIComponent(getTrimmedValue(tokenEditor)); + if(algorithm.indexOf('HS') === -1) { + var publicKey = $('.jwt-signature textarea[name="public-key"]'); + url += '&publicKey=' + encodeURIComponent(publicKey.val()); + } + + copyTextToClipboard(url); + } + + $('.validation-status.js-signature').on('click', copyTokenLink); }()); +// https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript +function copyTextToClipboard(text) { + var textArea = document.createElement("textarea"); + + // + // *** This styling is an extra step which is likely not required. *** + // + // Why is it here? To ensure: + // 1. the element is able to have focus and selection. + // 2. if element was to flash render it has minimal visual impact. + // 3. less flakyness with selection and copying which **might** occur if + // the textarea element is not visible. + // + // The likelihood is the element won't even render, not even a flash, + // so some of these are just precautions. However in IE the element + // is visible whilst the popup box asking the user for permission for + // the web page to copy to the clipboard. + // + + // Place in top-left corner of screen regardless of scroll position. + textArea.style.position = 'fixed'; + textArea.style.top = 0; + textArea.style.left = 0; + + // Ensure it has a small width and height. Setting to 1px / 1em + // doesn't work as this gives a negative w/h on some browsers. + textArea.style.width = '2em'; + textArea.style.height = '2em'; + + // We don't need padding, reducing the size if it does flash render. + textArea.style.padding = 0; + + // Clean up any borders. + textArea.style.border = 'none'; + textArea.style.outline = 'none'; + textArea.style.boxShadow = 'none'; + + // Avoid flash of white box if rendered for any reason. + textArea.style.background = 'transparent'; + + textArea.value = text; + + document.body.appendChild(textArea); + + textArea.select(); + + try { + document.execCommand('copy'); + } catch (err) { + console.error(err); + } + + document.body.removeChild(textArea); +} //TIMESTAMP (function() { @@ -840,7 +922,10 @@ $(".debugger-jwt .algorithm select").change(function() { }); -$(".debugger-jwt .algorithm select").change(function(){var a=$('.debugger-jwt .algorithm input[value="'+$(this).val()+'"]');a.prop("checked",!0);}); +$(".debugger-jwt .algorithm select").change(function() { + var a = $('.debugger-jwt .algorithm input[value="'+$(this).val()+'"]'); + a.prop("checked",!0); +}); // end 07012015 $(".debugger-jwt .token-type select").change(function() { From d4f7c7169860d48a767f340436c9d9f726160388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 27 Dec 2017 16:48:59 -0300 Subject: [PATCH 061/611] Use radix when calling parseInt. --- js/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/app.js b/js/app.js index e8d33f07..c29fc865 100644 --- a/js/app.js +++ b/js/app.js @@ -316,7 +316,7 @@ $(".panel-default .panel-heading").click(function() { var matches = /"(.*)":\s*"?(\d*)"?/.exec(line); if(matches && timeClaims.indexOf(matches[1]) !== -1) { - var dateStr = (new Date(parseInt(matches[2]) * 1000)).toString(); + var dateStr = (new Date(parseInt(matches[2], 10) * 1000)).toString(); payloadTooltip.text(dateStr); payloadTooltip.css({ left: event.pageX + 'px', From 96911fe8789e478a7b9a569f32c27e7118046341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 28 Dec 2017 20:04:16 -0300 Subject: [PATCH 062/611] Fixes #278 and PR #239: new C++ library. --- img/26.svg | 75 ++++++++++++++++++++++++++++++++++++++++ stylus/app.styl | 3 ++ views/index.jade | 2 ++ views/libraries/cpp.jade | 18 +++++----- 4 files changed, 89 insertions(+), 9 deletions(-) create mode 100644 img/26.svg diff --git a/img/26.svg b/img/26.svg new file mode 100644 index 00000000..173507c8 --- /dev/null +++ b/img/26.svg @@ -0,0 +1,75 @@ + + + + + + image/svg+xml + + cpp_logo + + + + + + + cpp_logo + + + + + + + + + + diff --git a/stylus/app.styl b/stylus/app.styl index 618258db..20f493a4 100644 --- a/stylus/app.styl +++ b/stylus/app.styl @@ -749,6 +749,9 @@ body &.jwt-c .panel-heading h3 background-color #5180D2 + &.jwt-cpp + .panel-heading h3 + background-color #00599c &.jwt-objective-c .panel-heading h3 background linear-gradient(top, #AAAAAA, #767676) diff --git a/views/index.jade b/views/index.jade index 7a26cfa8..25bc9662 100644 --- a/views/index.jade +++ b/views/index.jade @@ -159,6 +159,7 @@ block content option(value='*', selected='') All option(value='.1c') 1c option(value='.c') C + option(value='.cpp') C++ option(value='.clojure') Clojure option(value='.crystal') Crystal option(value='.d') D @@ -246,6 +247,7 @@ block content include libraries/swift2.jade include libraries/c.jade include libraries/c2.jade + include libraries/cpp.jade include libraries/q.jade include libraries/delphi.jade include libraries/delphi2.jade diff --git a/views/libraries/cpp.jade b/views/libraries/cpp.jade index 8a37d278..4350605a 100644 --- a/views/libraries/cpp.jade +++ b/views/libraries/cpp.jade @@ -1,8 +1,8 @@ // C++ troian/jwtpp -article.jwt-c++.c++.accordion(data-accordion) +article.jwt-cpp.cpp.accordion(data-accordion) .panel-heading(data-control) - img(src='http://github.com/img/8.svg') - h3 Go + img(src='http://github.com/img/26.svg') + h3 C++ .panel-wrap(data-content) .panel-body .column @@ -13,15 +13,15 @@ article.jwt-c++.c++.accordion(data-accordion) i.icon-budicon-500 | Verify p - i.icon-budicon-501 + i.icon-budicon-500 code iss | check p - i.icon-budicon-501 + i.icon-budicon-500 code sub | check p - i.icon-budicon-501 + i.icon-budicon-500 code aud | check p @@ -33,11 +33,11 @@ article.jwt-c++.c++.accordion(data-accordion) code nbf | check p - i.icon-budicon-501 + i.icon-budicon-500 code iat | check p - i.icon-budicon-501 + i.icon-budicon-500 code jti | check .column @@ -73,7 +73,7 @@ article.jwt-c++.c++.accordion(data-accordion) .maintainer a(href='https://github.com/troian') i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | dgrijalva + | Artur Troian span.stars(data-repo='troian/josepp', style='display: inline;') i.icon-budicon-466 .repository From aed1490763671aff2a5f5b57822d33ccf21a2a05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 9 Jan 2018 20:03:06 -0300 Subject: [PATCH 063/611] Stage 3: major refactor (WIP). --- .bowerrc | 3 - .gitignore | 5 +- .jshintrc | 42 - Gruntfile.js | 85 +- bower.json | 12 - css/bootstrap.min.css | 14 - html/index.jade | 387 - js/app.js | 7 +- package.json | 55 +- server.js | 17 - src/default-tokens.js | 121 + src/jwt.js | 60 + src/utils.js | 107 + src/website/counter.js | 49 + src/website/dom-elements.js | 47 + src/website/editor/event-manager.js | 72 + src/website/editor/index.js | 300 + src/website/editor/instances.js | 29 + src/website/editor/jwt-mode.js | 40 + src/website/editor/tooltip.js | 25 + src/website/editor/utils.js | 38 + src/website/extension.js | 77 + src/website/index.js | 86 + src/website/libraries.js | 87 + src/website/navbar.js | 53 + src/website/strings.js | 10 + src/website/utils.js | 105 + stylus/app.styl | 5 + vendor/codemirror/.bower.json | 29 - vendor/codemirror/AUTHORS | 333 - vendor/codemirror/CONTRIBUTING.md | 72 - vendor/codemirror/LICENSE | 19 - vendor/codemirror/README.md | 11 - vendor/codemirror/addon/comment/comment.js | 169 - .../addon/comment/continuecomment.js | 82 - vendor/codemirror/addon/dialog/dialog.css | 32 - vendor/codemirror/addon/dialog/dialog.js | 130 - .../codemirror/addon/display/fullscreen.css | 6 - vendor/codemirror/addon/display/fullscreen.js | 38 - .../codemirror/addon/display/placeholder.js | 55 - vendor/codemirror/addon/display/rulers.js | 54 - vendor/codemirror/addon/edit/closebrackets.js | 123 - vendor/codemirror/addon/edit/closetag.js | 116 - vendor/codemirror/addon/edit/continuelist.js | 35 - vendor/codemirror/addon/edit/matchbrackets.js | 108 - vendor/codemirror/addon/edit/matchtags.js | 63 - vendor/codemirror/addon/edit/trailingspace.js | 24 - vendor/codemirror/addon/fold/brace-fold.js | 102 - vendor/codemirror/addon/fold/comment-fold.js | 54 - vendor/codemirror/addon/fold/foldcode.js | 117 - vendor/codemirror/addon/fold/foldgutter.css | 21 - vendor/codemirror/addon/fold/foldgutter.js | 131 - vendor/codemirror/addon/fold/indent-fold.js | 41 - vendor/codemirror/addon/fold/markdown-fold.js | 46 - vendor/codemirror/addon/fold/xml-fold.js | 178 - vendor/codemirror/addon/hint/anyword-hint.js | 39 - vendor/codemirror/addon/hint/css-hint.js | 53 - vendor/codemirror/addon/hint/html-hint.js | 345 - .../codemirror/addon/hint/javascript-hint.js | 136 - vendor/codemirror/addon/hint/python-hint.js | 99 - vendor/codemirror/addon/hint/show-hint.css | 38 - vendor/codemirror/addon/hint/show-hint.js | 349 - vendor/codemirror/addon/hint/sql-hint.js | 161 - vendor/codemirror/addon/hint/xml-hint.js | 75 - .../addon/lint/coffeescript-lint.js | 38 - vendor/codemirror/addon/lint/css-lint.js | 31 - .../codemirror/addon/lint/javascript-lint.js | 132 - vendor/codemirror/addon/lint/json-lint.js | 28 - vendor/codemirror/addon/lint/lint.css | 73 - vendor/codemirror/addon/lint/lint.js | 207 - vendor/codemirror/addon/lint/yaml-lint.js | 25 - .../addon/merge/dep/diff_match_patch.js | 50 - vendor/codemirror/addon/merge/merge.css | 92 - vendor/codemirror/addon/merge/merge.js | 505 -- vendor/codemirror/addon/mode/loadmode.js | 58 - vendor/codemirror/addon/mode/multiplex.js | 115 - .../codemirror/addon/mode/multiplex_test.js | 30 - vendor/codemirror/addon/mode/overlay.js | 70 - vendor/codemirror/addon/runmode/colorize.js | 37 - .../addon/runmode/runmode-standalone.js | 149 - vendor/codemirror/addon/runmode/runmode.js | 68 - .../codemirror/addon/runmode/runmode.node.js | 118 - .../codemirror/addon/scroll/scrollpastend.js | 43 - .../addon/search/match-highlighter.js | 100 - vendor/codemirror/addon/search/search.js | 155 - .../codemirror/addon/search/searchcursor.js | 186 - .../codemirror/addon/selection/active-line.js | 66 - .../addon/selection/mark-selection.js | 115 - vendor/codemirror/addon/tern/tern.css | 85 - vendor/codemirror/addon/tern/tern.js | 660 -- vendor/codemirror/addon/tern/worker.js | 41 - vendor/codemirror/addon/wrap/hardwrap.js | 136 - vendor/codemirror/bower.json | 15 - vendor/codemirror/keymap/emacs.js | 405 - vendor/codemirror/keymap/extra.js | 43 - vendor/codemirror/keymap/sublime.js | 425 - vendor/codemirror/keymap/vim.js | 4123 ---------- vendor/codemirror/lib/codemirror.css | 270 - vendor/codemirror/lib/codemirror.js | 7322 ----------------- vendor/codemirror/mode/apl/apl.js | 172 - vendor/codemirror/mode/asterisk/asterisk.js | 195 - vendor/codemirror/mode/clike/clike.js | 437 - vendor/codemirror/mode/clike/scala.html | 767 -- vendor/codemirror/mode/clojure/clojure.js | 238 - vendor/codemirror/mode/cobol/cobol.js | 252 - .../mode/coffeescript/coffeescript.js | 365 - .../codemirror/mode/commonlisp/commonlisp.js | 117 - vendor/codemirror/mode/css/css.js | 701 -- vendor/codemirror/mode/css/less.html | 152 - vendor/codemirror/mode/css/less_test.js | 48 - vendor/codemirror/mode/css/scss.html | 157 - vendor/codemirror/mode/css/scss_test.js | 107 - vendor/codemirror/mode/css/test.js | 119 - vendor/codemirror/mode/d/d.js | 215 - vendor/codemirror/mode/diff/diff.js | 44 - vendor/codemirror/mode/dtd/dtd.js | 139 - vendor/codemirror/mode/ecl/ecl.js | 204 - vendor/codemirror/mode/eiffel/eiffel.js | 159 - vendor/codemirror/mode/erlang/erlang.js | 619 -- vendor/codemirror/mode/fortran/fortran.js | 185 - vendor/codemirror/mode/gas/gas.js | 342 - vendor/codemirror/mode/gfm/gfm.js | 114 - vendor/codemirror/mode/gfm/test.js | 129 - vendor/codemirror/mode/gherkin/gherkin.js | 175 - vendor/codemirror/mode/go/go.js | 180 - vendor/codemirror/mode/groovy/groovy.js | 223 - vendor/codemirror/mode/haml/haml.js | 161 - vendor/codemirror/mode/haml/test.js | 94 - vendor/codemirror/mode/haskell/haskell.js | 264 - vendor/codemirror/mode/haxe/haxe.js | 442 - .../mode/htmlembedded/htmlembedded.js | 83 - vendor/codemirror/mode/htmlmixed/htmlmixed.js | 117 - vendor/codemirror/mode/http/http.js | 110 - vendor/codemirror/mode/jade/jade.js | 102 - .../codemirror/mode/javascript/javascript.js | 652 -- .../codemirror/mode/javascript/json-ld.html | 72 - vendor/codemirror/mode/javascript/test.js | 151 - .../mode/javascript/typescript.html | 61 - vendor/codemirror/mode/jinja2/jinja2.js | 63 - vendor/codemirror/mode/julia/julia.js | 298 - .../codemirror/mode/livescript/livescript.js | 280 - .../codemirror/mode/livescript/livescript.ls | 266 - vendor/codemirror/mode/lua/lua.js | 156 - vendor/codemirror/mode/markdown/markdown.js | 760 -- vendor/codemirror/mode/markdown/test.js | 724 -- vendor/codemirror/mode/meta.js | 106 - vendor/codemirror/mode/mirc/mirc.js | 190 - vendor/codemirror/mode/mllike/mllike.js | 202 - vendor/codemirror/mode/nginx/nginx.js | 175 - vendor/codemirror/mode/ntriples/ntriples.js | 183 - vendor/codemirror/mode/octave/octave.js | 132 - vendor/codemirror/mode/pascal/pascal.js | 106 - vendor/codemirror/mode/pegjs/pegjs.js | 111 - vendor/codemirror/mode/perl/perl.js | 827 -- vendor/codemirror/mode/php/php.js | 140 - vendor/codemirror/mode/pig/pig.js | 185 - .../codemirror/mode/properties/properties.js | 75 - vendor/codemirror/mode/puppet/puppet.js | 217 - vendor/codemirror/mode/python/python.js | 388 - vendor/codemirror/mode/q/q.js | 136 - vendor/codemirror/mode/r/r.js | 157 - vendor/codemirror/mode/rpm/rpm.js | 98 - vendor/codemirror/mode/rst/rst.js | 575 -- vendor/codemirror/mode/ruby/ruby.js | 261 - vendor/codemirror/mode/ruby/test.js | 11 - vendor/codemirror/mode/rust/rust.js | 448 - vendor/codemirror/mode/sass/sass.js | 342 - vendor/codemirror/mode/scheme/scheme.js | 245 - vendor/codemirror/mode/shell/shell.js | 130 - vendor/codemirror/mode/sieve/sieve.js | 190 - vendor/codemirror/mode/smalltalk/smalltalk.js | 165 - vendor/codemirror/mode/smarty/smarty.js | 218 - .../mode/smartymixed/smartymixed.js | 185 - vendor/codemirror/mode/solr/solr.js | 101 - vendor/codemirror/mode/sparql/sparql.js | 157 - vendor/codemirror/mode/sql/sql.js | 389 - vendor/codemirror/mode/stex/stex.js | 258 - vendor/codemirror/mode/stex/test.js | 120 - vendor/codemirror/mode/tcl/tcl.js | 144 - .../codemirror/mode/tiddlywiki/tiddlywiki.css | 14 - .../codemirror/mode/tiddlywiki/tiddlywiki.js | 366 - vendor/codemirror/mode/tiki/tiki.css | 26 - vendor/codemirror/mode/tiki/tiki.js | 320 - vendor/codemirror/mode/toml/toml.js | 85 - vendor/codemirror/mode/turtle/turtle.js | 157 - vendor/codemirror/mode/vb/vb.js | 271 - vendor/codemirror/mode/vbscript/vbscript.js | 347 - vendor/codemirror/mode/velocity/velocity.js | 198 - vendor/codemirror/mode/verilog/verilog.js | 192 - vendor/codemirror/mode/xml/xml.js | 349 - vendor/codemirror/mode/xquery/test.js | 64 - vendor/codemirror/mode/xquery/xquery.js | 444 - vendor/codemirror/mode/yaml/yaml.js | 109 - vendor/codemirror/mode/z80/z80.js | 97 - vendor/codemirror/theme/3024-day.css | 34 - vendor/codemirror/theme/3024-night.css | 34 - vendor/codemirror/theme/ambiance-mobile.css | 5 - vendor/codemirror/theme/ambiance.css | 75 - vendor/codemirror/theme/base16-dark.css | 34 - vendor/codemirror/theme/base16-light.css | 34 - vendor/codemirror/theme/blackboard.css | 28 - vendor/codemirror/theme/cobalt.css | 21 - vendor/codemirror/theme/eclipse.css | 23 - vendor/codemirror/theme/elegant.css | 13 - vendor/codemirror/theme/erlang-dark.css | 30 - vendor/codemirror/theme/lesser-dark.css | 47 - vendor/codemirror/theme/mbo.css | 37 - vendor/codemirror/theme/mdn-like.css | 44 - vendor/codemirror/theme/midnight.css | 43 - vendor/codemirror/theme/monokai.css | 29 - vendor/codemirror/theme/neat.css | 12 - vendor/codemirror/theme/night.css | 24 - vendor/codemirror/theme/paraiso-dark.css | 34 - vendor/codemirror/theme/paraiso-light.css | 34 - vendor/codemirror/theme/pastel-on-dark.css | 49 - vendor/codemirror/theme/rubyblue.css | 23 - vendor/codemirror/theme/solarized.css | 181 - vendor/codemirror/theme/the-matrix.css | 26 - .../theme/tomorrow-night-eighties.css | 34 - vendor/codemirror/theme/twilight.css | 28 - vendor/codemirror/theme/vibrant-ink.css | 30 - vendor/codemirror/theme/xq-dark.css | 49 - vendor/codemirror/theme/xq-light.css | 43 - vendor/json-sans-eval-min/.bower.json | 12 - vendor/json-sans-eval-min/index.js | 3 - vendor/jsonlint/.bower.json | 14 - vendor/jsonlint/.gitignore | 1 - vendor/jsonlint/Makefile | 17 - vendor/jsonlint/README.md | 63 - vendor/jsonlint/lib/cli.js | 178 - vendor/jsonlint/lib/formatter.js | 92 - vendor/jsonlint/lib/jsonlint.js | 432 - vendor/jsonlint/package.json | 41 - vendor/jsonlint/scripts/bundle.js | 8 - vendor/jsonlint/src/jsonlint.l | 24 - vendor/jsonlint/src/jsonlint.y | 86 - vendor/jsonlint/test/all-tests.js | 232 - vendor/jsonlint/test/fails/10.json | 1 - vendor/jsonlint/test/fails/11.json | 1 - vendor/jsonlint/test/fails/12.json | 1 - vendor/jsonlint/test/fails/13.json | 1 - vendor/jsonlint/test/fails/14.json | 1 - vendor/jsonlint/test/fails/15.json | 1 - vendor/jsonlint/test/fails/16.json | 1 - vendor/jsonlint/test/fails/17.json | 1 - vendor/jsonlint/test/fails/19.json | 1 - vendor/jsonlint/test/fails/2.json | 1 - vendor/jsonlint/test/fails/20.json | 1 - vendor/jsonlint/test/fails/21.json | 1 - vendor/jsonlint/test/fails/22.json | 1 - vendor/jsonlint/test/fails/23.json | 1 - vendor/jsonlint/test/fails/24.json | 1 - vendor/jsonlint/test/fails/25.json | 1 - vendor/jsonlint/test/fails/26.json | 1 - vendor/jsonlint/test/fails/27.json | 2 - vendor/jsonlint/test/fails/28.json | 2 - vendor/jsonlint/test/fails/29.json | 1 - vendor/jsonlint/test/fails/3.json | 1 - vendor/jsonlint/test/fails/30.json | 1 - vendor/jsonlint/test/fails/31.json | 1 - vendor/jsonlint/test/fails/32.json | 1 - vendor/jsonlint/test/fails/33.json | 1 - vendor/jsonlint/test/fails/34.json | 1 - vendor/jsonlint/test/fails/4.json | 1 - vendor/jsonlint/test/fails/5.json | 1 - vendor/jsonlint/test/fails/6.json | 1 - vendor/jsonlint/test/fails/7.json | 1 - vendor/jsonlint/test/fails/8.json | 1 - vendor/jsonlint/test/fails/9.json | 1 - vendor/jsonlint/test/passes/1.json | 58 - vendor/jsonlint/test/passes/2.json | 1 - vendor/jsonlint/test/passes/3.json | 6 - vendor/jsonlint/web/json2.js | 334 - vendor/jsonlint/web/jsonlint.html | 59 - vendor/jsonlint/web/jsonlint.js | 1 - vendor/jsrsasign/.bower.json | 12 - vendor/jsrsasign/index.js | 246 - vendor/jws.js/.bower.json | 12 - vendor/jws.js/index.js | 705 -- vendor/zepto/.bower.json | 16 - vendor/zepto/.gitignore | 5 - vendor/zepto/Makefile | 11 - vendor/zepto/README.md | 11 - vendor/zepto/bower.json | 6 - vendor/zepto/component.json | 13 - vendor/zepto/composer.json | 32 - vendor/zepto/zepto.js | 1550 ---- vendor/zepto/zepto.min.js | 2 - views/{index.jade => index.pug} | 134 +- views/{introduction.jade => introduction.pug} | 2 +- views/{layout.jade => layout.pug} | 39 +- views/libraries/{1c.jade => 1c.pug} | 2 +- views/libraries/{c.jade => c.pug} | 0 views/libraries/{c2.jade => c2.pug} | 0 views/libraries/{clojure.jade => clojure.pug} | 0 views/libraries/{crystal.jade => crystal.pug} | 0 views/libraries/{d.jade => d.pug} | 0 views/libraries/{d2.jade => d2.pug} | 0 views/libraries/{delphi.jade => delphi.pug} | 0 views/libraries/{delphi2.jade => delphi2.pug} | 0 views/libraries/{elixir.jade => elixir.pug} | 0 views/libraries/{elixir2.jade => elixir2.pug} | 0 views/libraries/{elixir3.jade => elixir3.pug} | 0 views/libraries/{go.jade => go.pug} | 0 views/libraries/{go2.jade => go2.pug} | 0 views/libraries/{go3.jade => go3.pug} | 0 views/libraries/{go4.jade => go4.pug} | 0 views/libraries/{go5.jade => go5.pug} | 0 views/libraries/{go6.jade => go6.pug} | 0 views/libraries/{go7.jade => go7.pug} | 0 views/libraries/{go8.jade => go8.pug} | 0 views/libraries/{groovy.jade => groovy.pug} | 0 views/libraries/{haskell.jade => haskell.pug} | 0 .../libraries/{haskell2.jade => haskell2.pug} | 0 views/libraries/{haxe.jade => haxe.pug} | 0 views/libraries/{java.jade => java.pug} | 0 views/libraries/{java2.jade => java2.pug} | 0 views/libraries/{java3.jade => java3.pug} | 0 views/libraries/{java4.jade => java4.pug} | 0 views/libraries/{java5.jade => java5.pug} | 0 views/libraries/{java6.jade => java6.pug} | 0 views/libraries/{js.jade => js.pug} | 0 views/libraries/{js2.jade => js2.pug} | 0 views/libraries/{lua.jade => lua.pug} | 0 views/libraries/{net.jade => net.pug} | 0 views/libraries/{net2.jade => net2.pug} | 0 views/libraries/{netrt.jade => netrt.pug} | 0 views/libraries/{node.jade => node.pug} | 0 .../{objective-c.jade => objective-c.pug} | 0 views/libraries/{perl5.jade => perl5.pug} | 0 views/libraries/{php.jade => php.pug} | 0 views/libraries/{php3.jade => php3.pug} | 0 views/libraries/{php4.jade => php4.pug} | 0 views/libraries/{php5.jade => php5.pug} | 0 views/libraries/{php6.jade => php6.pug} | 0 views/libraries/{php7.jade => php7.pug} | 0 views/libraries/{php8.jade => php8.pug} | 0 .../{postgresql.jade => postgresql.pug} | 0 views/libraries/{python.jade => python.pug} | 0 views/libraries/{python2.jade => python2.pug} | 2 +- views/libraries/{python3.jade => python3.pug} | 2 +- views/libraries/{q.jade => q.pug} | 0 views/libraries/{ruby.jade => ruby.pug} | 0 views/libraries/{ruby2.jade => ruby2.pug} | 0 views/libraries/{ruby3.jade => ruby3.pug} | 0 views/libraries/{ruby4.jade => ruby4.pug} | 0 views/libraries/{rust.jade => rust.pug} | 0 views/libraries/{rust2.jade => rust2.pug} | 0 views/libraries/{rust3.jade => rust3.pug} | 0 views/libraries/{scala.jade => scala.pug} | 0 views/libraries/{scala2.jade => scala2.pug} | 0 views/libraries/{scala3.jade => scala3.pug} | 0 views/libraries/{scala4.jade => scala4.pug} | 0 views/libraries/{swift.jade => swift.pug} | 0 views/libraries/{swift2.jade => swift2.pug} | 0 webpack.config.js | 38 + 356 files changed, 1493 insertions(+), 47396 deletions(-) delete mode 100644 .bowerrc delete mode 100644 .jshintrc delete mode 100644 bower.json delete mode 100755 css/bootstrap.min.css delete mode 100644 html/index.jade delete mode 100644 server.js create mode 100644 src/default-tokens.js create mode 100644 src/jwt.js create mode 100644 src/utils.js create mode 100644 src/website/counter.js create mode 100644 src/website/dom-elements.js create mode 100644 src/website/editor/event-manager.js create mode 100644 src/website/editor/index.js create mode 100644 src/website/editor/instances.js create mode 100644 src/website/editor/jwt-mode.js create mode 100644 src/website/editor/tooltip.js create mode 100644 src/website/editor/utils.js create mode 100644 src/website/extension.js create mode 100644 src/website/index.js create mode 100644 src/website/libraries.js create mode 100644 src/website/navbar.js create mode 100644 src/website/strings.js create mode 100644 src/website/utils.js delete mode 100644 vendor/codemirror/.bower.json delete mode 100644 vendor/codemirror/AUTHORS delete mode 100644 vendor/codemirror/CONTRIBUTING.md delete mode 100644 vendor/codemirror/LICENSE delete mode 100644 vendor/codemirror/README.md delete mode 100644 vendor/codemirror/addon/comment/comment.js delete mode 100644 vendor/codemirror/addon/comment/continuecomment.js delete mode 100644 vendor/codemirror/addon/dialog/dialog.css delete mode 100644 vendor/codemirror/addon/dialog/dialog.js delete mode 100644 vendor/codemirror/addon/display/fullscreen.css delete mode 100644 vendor/codemirror/addon/display/fullscreen.js delete mode 100644 vendor/codemirror/addon/display/placeholder.js delete mode 100644 vendor/codemirror/addon/display/rulers.js delete mode 100644 vendor/codemirror/addon/edit/closebrackets.js delete mode 100644 vendor/codemirror/addon/edit/closetag.js delete mode 100644 vendor/codemirror/addon/edit/continuelist.js delete mode 100644 vendor/codemirror/addon/edit/matchbrackets.js delete mode 100644 vendor/codemirror/addon/edit/matchtags.js delete mode 100644 vendor/codemirror/addon/edit/trailingspace.js delete mode 100644 vendor/codemirror/addon/fold/brace-fold.js delete mode 100644 vendor/codemirror/addon/fold/comment-fold.js delete mode 100644 vendor/codemirror/addon/fold/foldcode.js delete mode 100644 vendor/codemirror/addon/fold/foldgutter.css delete mode 100644 vendor/codemirror/addon/fold/foldgutter.js delete mode 100644 vendor/codemirror/addon/fold/indent-fold.js delete mode 100644 vendor/codemirror/addon/fold/markdown-fold.js delete mode 100644 vendor/codemirror/addon/fold/xml-fold.js delete mode 100644 vendor/codemirror/addon/hint/anyword-hint.js delete mode 100644 vendor/codemirror/addon/hint/css-hint.js delete mode 100755 vendor/codemirror/addon/hint/html-hint.js delete mode 100644 vendor/codemirror/addon/hint/javascript-hint.js delete mode 100644 vendor/codemirror/addon/hint/python-hint.js delete mode 100644 vendor/codemirror/addon/hint/show-hint.css delete mode 100644 vendor/codemirror/addon/hint/show-hint.js delete mode 100644 vendor/codemirror/addon/hint/sql-hint.js delete mode 100644 vendor/codemirror/addon/hint/xml-hint.js delete mode 100644 vendor/codemirror/addon/lint/coffeescript-lint.js delete mode 100644 vendor/codemirror/addon/lint/css-lint.js delete mode 100644 vendor/codemirror/addon/lint/javascript-lint.js delete mode 100644 vendor/codemirror/addon/lint/json-lint.js delete mode 100644 vendor/codemirror/addon/lint/lint.css delete mode 100644 vendor/codemirror/addon/lint/lint.js delete mode 100644 vendor/codemirror/addon/lint/yaml-lint.js delete mode 100644 vendor/codemirror/addon/merge/dep/diff_match_patch.js delete mode 100644 vendor/codemirror/addon/merge/merge.css delete mode 100644 vendor/codemirror/addon/merge/merge.js delete mode 100644 vendor/codemirror/addon/mode/loadmode.js delete mode 100644 vendor/codemirror/addon/mode/multiplex.js delete mode 100644 vendor/codemirror/addon/mode/multiplex_test.js delete mode 100644 vendor/codemirror/addon/mode/overlay.js delete mode 100644 vendor/codemirror/addon/runmode/colorize.js delete mode 100644 vendor/codemirror/addon/runmode/runmode-standalone.js delete mode 100644 vendor/codemirror/addon/runmode/runmode.js delete mode 100644 vendor/codemirror/addon/runmode/runmode.node.js delete mode 100644 vendor/codemirror/addon/scroll/scrollpastend.js delete mode 100644 vendor/codemirror/addon/search/match-highlighter.js delete mode 100644 vendor/codemirror/addon/search/search.js delete mode 100644 vendor/codemirror/addon/search/searchcursor.js delete mode 100644 vendor/codemirror/addon/selection/active-line.js delete mode 100644 vendor/codemirror/addon/selection/mark-selection.js delete mode 100644 vendor/codemirror/addon/tern/tern.css delete mode 100644 vendor/codemirror/addon/tern/tern.js delete mode 100644 vendor/codemirror/addon/tern/worker.js delete mode 100644 vendor/codemirror/addon/wrap/hardwrap.js delete mode 100644 vendor/codemirror/bower.json delete mode 100644 vendor/codemirror/keymap/emacs.js delete mode 100644 vendor/codemirror/keymap/extra.js delete mode 100644 vendor/codemirror/keymap/sublime.js delete mode 100644 vendor/codemirror/keymap/vim.js delete mode 100644 vendor/codemirror/lib/codemirror.css delete mode 100644 vendor/codemirror/lib/codemirror.js delete mode 100644 vendor/codemirror/mode/apl/apl.js delete mode 100644 vendor/codemirror/mode/asterisk/asterisk.js delete mode 100644 vendor/codemirror/mode/clike/clike.js delete mode 100644 vendor/codemirror/mode/clike/scala.html delete mode 100644 vendor/codemirror/mode/clojure/clojure.js delete mode 100644 vendor/codemirror/mode/cobol/cobol.js delete mode 100644 vendor/codemirror/mode/coffeescript/coffeescript.js delete mode 100644 vendor/codemirror/mode/commonlisp/commonlisp.js delete mode 100644 vendor/codemirror/mode/css/css.js delete mode 100644 vendor/codemirror/mode/css/less.html delete mode 100644 vendor/codemirror/mode/css/less_test.js delete mode 100644 vendor/codemirror/mode/css/scss.html delete mode 100644 vendor/codemirror/mode/css/scss_test.js delete mode 100644 vendor/codemirror/mode/css/test.js delete mode 100644 vendor/codemirror/mode/d/d.js delete mode 100644 vendor/codemirror/mode/diff/diff.js delete mode 100644 vendor/codemirror/mode/dtd/dtd.js delete mode 100644 vendor/codemirror/mode/ecl/ecl.js delete mode 100644 vendor/codemirror/mode/eiffel/eiffel.js delete mode 100644 vendor/codemirror/mode/erlang/erlang.js delete mode 100644 vendor/codemirror/mode/fortran/fortran.js delete mode 100644 vendor/codemirror/mode/gas/gas.js delete mode 100644 vendor/codemirror/mode/gfm/gfm.js delete mode 100644 vendor/codemirror/mode/gfm/test.js delete mode 100644 vendor/codemirror/mode/gherkin/gherkin.js delete mode 100644 vendor/codemirror/mode/go/go.js delete mode 100644 vendor/codemirror/mode/groovy/groovy.js delete mode 100644 vendor/codemirror/mode/haml/haml.js delete mode 100644 vendor/codemirror/mode/haml/test.js delete mode 100644 vendor/codemirror/mode/haskell/haskell.js delete mode 100644 vendor/codemirror/mode/haxe/haxe.js delete mode 100644 vendor/codemirror/mode/htmlembedded/htmlembedded.js delete mode 100644 vendor/codemirror/mode/htmlmixed/htmlmixed.js delete mode 100644 vendor/codemirror/mode/http/http.js delete mode 100644 vendor/codemirror/mode/jade/jade.js delete mode 100644 vendor/codemirror/mode/javascript/javascript.js delete mode 100644 vendor/codemirror/mode/javascript/json-ld.html delete mode 100644 vendor/codemirror/mode/javascript/test.js delete mode 100644 vendor/codemirror/mode/javascript/typescript.html delete mode 100644 vendor/codemirror/mode/jinja2/jinja2.js delete mode 100644 vendor/codemirror/mode/julia/julia.js delete mode 100644 vendor/codemirror/mode/livescript/livescript.js delete mode 100644 vendor/codemirror/mode/livescript/livescript.ls delete mode 100644 vendor/codemirror/mode/lua/lua.js delete mode 100644 vendor/codemirror/mode/markdown/markdown.js delete mode 100644 vendor/codemirror/mode/markdown/test.js delete mode 100644 vendor/codemirror/mode/meta.js delete mode 100644 vendor/codemirror/mode/mirc/mirc.js delete mode 100644 vendor/codemirror/mode/mllike/mllike.js delete mode 100644 vendor/codemirror/mode/nginx/nginx.js delete mode 100644 vendor/codemirror/mode/ntriples/ntriples.js delete mode 100644 vendor/codemirror/mode/octave/octave.js delete mode 100644 vendor/codemirror/mode/pascal/pascal.js delete mode 100644 vendor/codemirror/mode/pegjs/pegjs.js delete mode 100644 vendor/codemirror/mode/perl/perl.js delete mode 100644 vendor/codemirror/mode/php/php.js delete mode 100644 vendor/codemirror/mode/pig/pig.js delete mode 100644 vendor/codemirror/mode/properties/properties.js delete mode 100644 vendor/codemirror/mode/puppet/puppet.js delete mode 100644 vendor/codemirror/mode/python/python.js delete mode 100644 vendor/codemirror/mode/q/q.js delete mode 100644 vendor/codemirror/mode/r/r.js delete mode 100644 vendor/codemirror/mode/rpm/rpm.js delete mode 100644 vendor/codemirror/mode/rst/rst.js delete mode 100644 vendor/codemirror/mode/ruby/ruby.js delete mode 100644 vendor/codemirror/mode/ruby/test.js delete mode 100644 vendor/codemirror/mode/rust/rust.js delete mode 100644 vendor/codemirror/mode/sass/sass.js delete mode 100644 vendor/codemirror/mode/scheme/scheme.js delete mode 100644 vendor/codemirror/mode/shell/shell.js delete mode 100644 vendor/codemirror/mode/sieve/sieve.js delete mode 100644 vendor/codemirror/mode/smalltalk/smalltalk.js delete mode 100644 vendor/codemirror/mode/smarty/smarty.js delete mode 100644 vendor/codemirror/mode/smartymixed/smartymixed.js delete mode 100644 vendor/codemirror/mode/solr/solr.js delete mode 100644 vendor/codemirror/mode/sparql/sparql.js delete mode 100644 vendor/codemirror/mode/sql/sql.js delete mode 100644 vendor/codemirror/mode/stex/stex.js delete mode 100644 vendor/codemirror/mode/stex/test.js delete mode 100644 vendor/codemirror/mode/tcl/tcl.js delete mode 100644 vendor/codemirror/mode/tiddlywiki/tiddlywiki.css delete mode 100644 vendor/codemirror/mode/tiddlywiki/tiddlywiki.js delete mode 100644 vendor/codemirror/mode/tiki/tiki.css delete mode 100644 vendor/codemirror/mode/tiki/tiki.js delete mode 100644 vendor/codemirror/mode/toml/toml.js delete mode 100644 vendor/codemirror/mode/turtle/turtle.js delete mode 100644 vendor/codemirror/mode/vb/vb.js delete mode 100644 vendor/codemirror/mode/vbscript/vbscript.js delete mode 100644 vendor/codemirror/mode/velocity/velocity.js delete mode 100644 vendor/codemirror/mode/verilog/verilog.js delete mode 100644 vendor/codemirror/mode/xml/xml.js delete mode 100644 vendor/codemirror/mode/xquery/test.js delete mode 100644 vendor/codemirror/mode/xquery/xquery.js delete mode 100644 vendor/codemirror/mode/yaml/yaml.js delete mode 100644 vendor/codemirror/mode/z80/z80.js delete mode 100644 vendor/codemirror/theme/3024-day.css delete mode 100644 vendor/codemirror/theme/3024-night.css delete mode 100644 vendor/codemirror/theme/ambiance-mobile.css delete mode 100644 vendor/codemirror/theme/ambiance.css delete mode 100644 vendor/codemirror/theme/base16-dark.css delete mode 100644 vendor/codemirror/theme/base16-light.css delete mode 100644 vendor/codemirror/theme/blackboard.css delete mode 100644 vendor/codemirror/theme/cobalt.css delete mode 100644 vendor/codemirror/theme/eclipse.css delete mode 100644 vendor/codemirror/theme/elegant.css delete mode 100644 vendor/codemirror/theme/erlang-dark.css delete mode 100644 vendor/codemirror/theme/lesser-dark.css delete mode 100644 vendor/codemirror/theme/mbo.css delete mode 100644 vendor/codemirror/theme/mdn-like.css delete mode 100644 vendor/codemirror/theme/midnight.css delete mode 100644 vendor/codemirror/theme/monokai.css delete mode 100644 vendor/codemirror/theme/neat.css delete mode 100644 vendor/codemirror/theme/night.css delete mode 100644 vendor/codemirror/theme/paraiso-dark.css delete mode 100644 vendor/codemirror/theme/paraiso-light.css delete mode 100644 vendor/codemirror/theme/pastel-on-dark.css delete mode 100644 vendor/codemirror/theme/rubyblue.css delete mode 100644 vendor/codemirror/theme/solarized.css delete mode 100644 vendor/codemirror/theme/the-matrix.css delete mode 100644 vendor/codemirror/theme/tomorrow-night-eighties.css delete mode 100644 vendor/codemirror/theme/twilight.css delete mode 100644 vendor/codemirror/theme/vibrant-ink.css delete mode 100644 vendor/codemirror/theme/xq-dark.css delete mode 100644 vendor/codemirror/theme/xq-light.css delete mode 100644 vendor/json-sans-eval-min/.bower.json delete mode 100644 vendor/json-sans-eval-min/index.js delete mode 100644 vendor/jsonlint/.bower.json delete mode 100644 vendor/jsonlint/.gitignore delete mode 100644 vendor/jsonlint/Makefile delete mode 100644 vendor/jsonlint/README.md delete mode 100755 vendor/jsonlint/lib/cli.js delete mode 100644 vendor/jsonlint/lib/formatter.js delete mode 100644 vendor/jsonlint/lib/jsonlint.js delete mode 100644 vendor/jsonlint/package.json delete mode 100644 vendor/jsonlint/scripts/bundle.js delete mode 100644 vendor/jsonlint/src/jsonlint.l delete mode 100644 vendor/jsonlint/src/jsonlint.y delete mode 100644 vendor/jsonlint/test/all-tests.js delete mode 100644 vendor/jsonlint/test/fails/10.json delete mode 100644 vendor/jsonlint/test/fails/11.json delete mode 100644 vendor/jsonlint/test/fails/12.json delete mode 100644 vendor/jsonlint/test/fails/13.json delete mode 100644 vendor/jsonlint/test/fails/14.json delete mode 100644 vendor/jsonlint/test/fails/15.json delete mode 100644 vendor/jsonlint/test/fails/16.json delete mode 100644 vendor/jsonlint/test/fails/17.json delete mode 100644 vendor/jsonlint/test/fails/19.json delete mode 100644 vendor/jsonlint/test/fails/2.json delete mode 100644 vendor/jsonlint/test/fails/20.json delete mode 100644 vendor/jsonlint/test/fails/21.json delete mode 100644 vendor/jsonlint/test/fails/22.json delete mode 100644 vendor/jsonlint/test/fails/23.json delete mode 100644 vendor/jsonlint/test/fails/24.json delete mode 100644 vendor/jsonlint/test/fails/25.json delete mode 100644 vendor/jsonlint/test/fails/26.json delete mode 100644 vendor/jsonlint/test/fails/27.json delete mode 100644 vendor/jsonlint/test/fails/28.json delete mode 100644 vendor/jsonlint/test/fails/29.json delete mode 100644 vendor/jsonlint/test/fails/3.json delete mode 100644 vendor/jsonlint/test/fails/30.json delete mode 100644 vendor/jsonlint/test/fails/31.json delete mode 100644 vendor/jsonlint/test/fails/32.json delete mode 100644 vendor/jsonlint/test/fails/33.json delete mode 100644 vendor/jsonlint/test/fails/34.json delete mode 100644 vendor/jsonlint/test/fails/4.json delete mode 100644 vendor/jsonlint/test/fails/5.json delete mode 100644 vendor/jsonlint/test/fails/6.json delete mode 100644 vendor/jsonlint/test/fails/7.json delete mode 100644 vendor/jsonlint/test/fails/8.json delete mode 100644 vendor/jsonlint/test/fails/9.json delete mode 100644 vendor/jsonlint/test/passes/1.json delete mode 100644 vendor/jsonlint/test/passes/2.json delete mode 100644 vendor/jsonlint/test/passes/3.json delete mode 100644 vendor/jsonlint/web/json2.js delete mode 100644 vendor/jsonlint/web/jsonlint.html delete mode 100644 vendor/jsonlint/web/jsonlint.js delete mode 100644 vendor/jsrsasign/.bower.json delete mode 100644 vendor/jsrsasign/index.js delete mode 100644 vendor/jws.js/.bower.json delete mode 100644 vendor/jws.js/index.js delete mode 100644 vendor/zepto/.bower.json delete mode 100644 vendor/zepto/.gitignore delete mode 100644 vendor/zepto/Makefile delete mode 100644 vendor/zepto/README.md delete mode 100644 vendor/zepto/bower.json delete mode 100644 vendor/zepto/component.json delete mode 100644 vendor/zepto/composer.json delete mode 100644 vendor/zepto/zepto.js delete mode 100644 vendor/zepto/zepto.min.js rename views/{index.jade => index.pug} (82%) rename views/{introduction.jade => introduction.pug} (98%) rename views/{layout.jade => layout.pug} (83%) rename views/libraries/{1c.jade => 1c.pug} (97%) rename views/libraries/{c.jade => c.pug} (100%) rename views/libraries/{c2.jade => c2.pug} (100%) rename views/libraries/{clojure.jade => clojure.pug} (100%) rename views/libraries/{crystal.jade => crystal.pug} (100%) rename views/libraries/{d.jade => d.pug} (100%) rename views/libraries/{d2.jade => d2.pug} (100%) rename views/libraries/{delphi.jade => delphi.pug} (100%) rename views/libraries/{delphi2.jade => delphi2.pug} (100%) rename views/libraries/{elixir.jade => elixir.pug} (100%) rename views/libraries/{elixir2.jade => elixir2.pug} (100%) rename views/libraries/{elixir3.jade => elixir3.pug} (100%) rename views/libraries/{go.jade => go.pug} (100%) rename views/libraries/{go2.jade => go2.pug} (100%) rename views/libraries/{go3.jade => go3.pug} (100%) rename views/libraries/{go4.jade => go4.pug} (100%) rename views/libraries/{go5.jade => go5.pug} (100%) rename views/libraries/{go6.jade => go6.pug} (100%) rename views/libraries/{go7.jade => go7.pug} (100%) rename views/libraries/{go8.jade => go8.pug} (100%) rename views/libraries/{groovy.jade => groovy.pug} (100%) rename views/libraries/{haskell.jade => haskell.pug} (100%) rename views/libraries/{haskell2.jade => haskell2.pug} (100%) rename views/libraries/{haxe.jade => haxe.pug} (100%) rename views/libraries/{java.jade => java.pug} (100%) rename views/libraries/{java2.jade => java2.pug} (100%) rename views/libraries/{java3.jade => java3.pug} (100%) rename views/libraries/{java4.jade => java4.pug} (100%) rename views/libraries/{java5.jade => java5.pug} (100%) rename views/libraries/{java6.jade => java6.pug} (100%) rename views/libraries/{js.jade => js.pug} (100%) rename views/libraries/{js2.jade => js2.pug} (100%) rename views/libraries/{lua.jade => lua.pug} (100%) rename views/libraries/{net.jade => net.pug} (100%) rename views/libraries/{net2.jade => net2.pug} (100%) rename views/libraries/{netrt.jade => netrt.pug} (100%) rename views/libraries/{node.jade => node.pug} (100%) rename views/libraries/{objective-c.jade => objective-c.pug} (100%) rename views/libraries/{perl5.jade => perl5.pug} (100%) rename views/libraries/{php.jade => php.pug} (100%) rename views/libraries/{php3.jade => php3.pug} (100%) rename views/libraries/{php4.jade => php4.pug} (100%) rename views/libraries/{php5.jade => php5.pug} (100%) rename views/libraries/{php6.jade => php6.pug} (100%) rename views/libraries/{php7.jade => php7.pug} (100%) rename views/libraries/{php8.jade => php8.pug} (100%) rename views/libraries/{postgresql.jade => postgresql.pug} (100%) rename views/libraries/{python.jade => python.pug} (100%) rename views/libraries/{python2.jade => python2.pug} (98%) rename views/libraries/{python3.jade => python3.pug} (98%) rename views/libraries/{q.jade => q.pug} (100%) rename views/libraries/{ruby.jade => ruby.pug} (100%) rename views/libraries/{ruby2.jade => ruby2.pug} (100%) rename views/libraries/{ruby3.jade => ruby3.pug} (100%) rename views/libraries/{ruby4.jade => ruby4.pug} (100%) rename views/libraries/{rust.jade => rust.pug} (100%) rename views/libraries/{rust2.jade => rust2.pug} (100%) rename views/libraries/{rust3.jade => rust3.pug} (100%) rename views/libraries/{scala.jade => scala.pug} (100%) rename views/libraries/{scala2.jade => scala2.pug} (100%) rename views/libraries/{scala3.jade => scala3.pug} (100%) rename views/libraries/{scala4.jade => scala4.pug} (100%) rename views/libraries/{swift.jade => swift.pug} (100%) rename views/libraries/{swift2.jade => swift2.pug} (100%) create mode 100644 webpack.config.js diff --git a/.bowerrc b/.bowerrc deleted file mode 100644 index 3c5e8c33..00000000 --- a/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory" : "vendor" -} diff --git a/.gitignore b/.gitignore index 7124d98b..863ab278 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,5 @@ -bower_components node_modules -css/app.css -index.html -vendor +dist .tmp .DS_Store npm-debug.log diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 365c5662..00000000 --- a/.jshintrc +++ /dev/null @@ -1,42 +0,0 @@ -{ - "node": true, - "esnext": true, - "bitwise": true, - "curly": true, - "eqeqeq": true, - "immed": true, - "indent": 2, - "latedef": true, - "newcap": true, - "noarg": true, - "quotmark": "single", - "regexp": true, - "undef": true, - "strict": false, - "smarttabs": true, - "expr": true, - - - "evil": true, - "browser": true, - "regexdash": true, - "wsh": true, - "trailing": true, - "sub": true, - "unused": true, - "laxcomma": true, - - "globals": { - "after": false, - "before": false, - "afterEach": false, - "beforeEach": false, - "describe": false, - "it": false, - "define": false, - "CodeMirror": false, - "KJUR": false, - "$": false, - "expect": false - } -} diff --git a/Gruntfile.js b/Gruntfile.js index f11c304a..1cde8068 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,69 +1,52 @@ -module.exports = function (grunt) { - require('matchdep').filter('grunt-*').forEach(grunt.loadNpmTasks); +const webpackConfig = require('./webpack.config.js'); + +module.exports = grunt => { + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-contrib-stylus'); + grunt.loadNpmTasks('grunt-contrib-pug'); + grunt.loadNpmTasks('grunt-webpack'); grunt.initConfig({ - // clean: [ - // 'dist/' - // ], - watch: { - min: { - options: { - livereload: true - }, - files: ['Gruntfile.js', 'js/**/*.js', 'stylus/**/*.styl', 'views/**/*.jade', 'views/**/*.md'], - tasks: ['build'] + copy: { + main: { + files: [{ + expand: true, + src: ['img/**', 'fonts/**', 'assets/**'], + dest: 'dist/website' + }, { + expand: true, + flatten: true, + src: [ + 'node_modules/bootstrap/dist/css/bootstrap.min.css', + 'node_modules/codemirror/lib/codemirror.css', + 'node_modules/codemirror/addon/lint/lint.css', + 'css/budicon.css' + ], + dest: 'dist/website/css/' + }] } - }, - connect: { - dev: { - options: { - hostname: '0.0.0.0', - livereload: true, - protocol: 'http', - passphrase: '' - } - }, - }, + }, stylus: { compile: { files: { - 'css/app.css': 'stylus/app.styl' + 'dist/website/css/app.css': 'stylus/app.styl' } } }, - jade: { + pug: { compile: { files: { - 'index.html': 'views/index.jade', - 'introduction/index.html': 'views/introduction.jade' + 'dist/website/index.html': 'views/index.pug', + 'dist/website/introduction/index.html': 'views/introduction.pug' } } }, - // useminPrepare: { - // html: 'html/index.html', - // options: { - // root: '.', - // dest: '.' - // } - // }, - // usemin: { - // html: 'index.html', - // options: { - // assetsDir: ['dist/'] - // } - // }, - // htmlmin: { - // dist: { - // files: { 'index.html': 'html/index.html' } - // } - // }, - mocha_phantomjs: { - all: ['test/**/*.html'] + webpack: { + prod: webpackConfig, + dev: webpackConfig } }); - grunt.registerTask('build', ['stylus', 'jade']); - // grunt.registerTask('build', ['clean', 'stylus', 'jade', 'useminPrepare', 'concat', 'uglify', 'cssmin', 'htmlmin', 'usemin']); - grunt.registerTask('test', ['build', 'mocha_phantomjs']); - grunt.registerTask('default', ['build', 'connect', 'watch']); + grunt.registerTask('build', ['copy', 'stylus', 'pug', 'webpack']); + grunt.registerTask('default', ['build']); }; diff --git a/bower.json b/bower.json deleted file mode 100644 index 5d203a54..00000000 --- a/bower.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "jwt.io", - "version": "0.0.1", - "dependencies": { - "jsrsasign": "http://kjur.github.io/jsrsasign/jsrsasign-4.1.4-all-min.js", - "json-sans-eval-min": "http://kjur.github.io/jsjws/ext/json-sans-eval-min.js", - "codemirror": "https://github.com/marijnh/CodeMirror.git#4.0.1", - "jws.js": "http://rawgithub.com/kjur/jsjws/master/jws-3.0.js", - "jsonlint": "1.6.0", - "zepto": "1.1.3" - } -} diff --git a/css/bootstrap.min.css b/css/bootstrap.min.css deleted file mode 100755 index 4b7452b8..00000000 --- a/css/bootstrap.min.css +++ /dev/null @@ -1,14 +0,0 @@ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -/*! - * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=8d06cf6d9ed6a9fb278d) - * Config saved to config.json and https://gist.github.com/8d06cf6d9ed6a9fb278d - *//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:34px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.333333px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.clearfix:before,.clearfix:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.clearfix:after,.form-horizontal .form-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed} \ No newline at end of file diff --git a/html/index.jade b/html/index.jade deleted file mode 100644 index 1ded26b7..00000000 --- a/html/index.jade +++ /dev/null @@ -1,387 +0,0 @@ -doctype html -html(lang='en') - head - meta(charset='utf-8') - meta(http-equiv='X-UA-Compatible', content='IE=edge') - meta(name='viewport', content='width=device-width, minimum-scale=1.0, maximum-scale=1.0') - meta(name='author', content='auth0.com') - meta(name='description', content='JSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is digitally signed using JSON Web Signature (JWS).') - title JSON Web Tokens - jwt.io - - //- Twitter Card - - meta(name='twitter:card', content='summary_large_image') - meta(name='twitter:creator', content='@auth0') - meta(name='twitter:title', content='JWT.IO') - meta(name='twitter:description', content='JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.') - meta(name='twitter:image', content='http://jwt.io/img/twitter-card.png') - - //- Facebook Card - meta(property='og:type', content='website') - meta(property='og:title', content='JWT.IO') - meta(property='og:description', content='JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.') - meta(property='og:locale', content='en_US') - meta(property='og:url', content='http://jwt.io/') - meta(property='og:image', content='http://jwt.io/img/facebook-card.png') - meta(property='og:image:type', content='image/png') - meta(property='og:image:width', content='1200') - meta(property='og:image:height', content='630') - - // Just for debugging purposes. Don't actually copy this line! - | - link(rel="stylesheet", type="text/css", href="http://cloud.typography.com/7834932/650606/css/fonts.css") - link(rel="stylesheet", type="text/css", href="http://fonts.googleapis.com/css?family=Roboto+Mono") - - - link(rel="stylesheet", href="http://github.com/css/bootstrap.min.css") - - // build:css dist/css/app.css - link(rel='stylesheet', href='http://github.com/vendor/codemirror/lib/codemirror.css', type='text/css', media='all') - link(rel='stylesheet', href='http://github.com/vendor/codemirror/addon/lint/lint.css', type='text/css', media='all') - link(rel="stylesheet", href='http://github.com/css/budicon.css', type="text/css", media="all") - link(rel='stylesheet', href='http://github.com/css/app.css', type='text/css', media='all') - - link(rel='search', type='application/opensearchdescription+xml', title='JWT.io', href='http://github.com/opensearch.xml') - - - link(rel='apple-touch-icon', sizes='57x57', href='http://github.com/img/favicon/apple-icon-57x57.png') - link(rel='apple-touch-icon', sizes='60x60', href='http://github.com/img/favicon/apple-icon-60x60.png') - link(rel='apple-touch-icon', sizes='72x72', href='http://github.com/img/favicon/apple-icon-72x72.png') - link(rel='apple-touch-icon', sizes='76x76', href='http://github.com/img/favicon/apple-icon-76x76.png') - link(rel='apple-touch-icon', sizes='114x114', href='http://github.com/img/favicon/apple-icon-114x114.png') - link(rel='apple-touch-icon', sizes='120x120', href='http://github.com/img/favicon/apple-icon-120x120.png') - link(rel='apple-touch-icon', sizes='144x144', href='http://github.com/img/favicon/apple-icon-144x144.png') - link(rel='apple-touch-icon', sizes='152x152', href='http://github.com/img/favicon/apple-icon-152x152.png') - link(rel='apple-touch-icon', sizes='180x180', href='http://github.com/img/favicon/apple-icon-180x180.png') - link(rel='icon', type='image/png', sizes='192x192', href='http://github.com/img/favicon/android-icon-192x192.png') - link(rel='icon', type='image/png', sizes='32x32', href='http://github.com/img/favicon/favicon-32x32.png') - link(rel='icon', type='image/png', sizes='96x96', href='http://github.com/img/favicon/favicon-96x96.png') - link(rel='icon', type='image/png', sizes='16x16', href='http://github.com/img/favicon/favicon-16x16.png') - link(rel='manifest', href='http://github.com/img/favicon/manifest.json') - meta(name='msapplication-TileColor', content='#000000') - meta(name='msapplication-TileImage', content='/img/favicon/ms-icon-144x144.png') - meta(name='theme-color', content='#000000') - - - // HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries - | - - body.load - // Fixed navbar - nav.navbar.closed - .container - .top-mobile - .menu-trigger - span - - a.brand(href='http://github.com/') - //- img(src='http://github.com/img/pic_logo.svg').icon - svg(width='101px', height='101px', viewbox='0 0 101 101', version='1.1', xmlns='http://www.w3.org/2000/svg', xmlns:xlink='http://www.w3.org/1999/xlink', xmlns:sketch='http://www.bohemiancoding.com/sketch/ns').icon - defs - g(stroke='none', stroke-width='1', fill='none', fill-rule='evenodd', sketch:type='MSPage') - g(sketch:type='MSLayerGroup', transform='translate(-150.000000, -538.000000)') - g(transform='translate(0.000000, 413.000000)', sketch:type='MSShapeGroup') - g(transform='translate(150.000000, 125.000000)') - g#group - path(d='M57.8,27.2 L57.7,0.3 L42.7,0.3 L42.8,27.2 L50.3,37.5 L57.8,27.2 Z', fill='#FFFFFF') - path(d='M69.9,36 L85.7,14.2 L73.6,5.4 L57.8,27.2 L57.8,39.9 L69.9,36 Z', fill='#FB015B') - path(d='M74.5,50.3 L100.1,41.9 L95.5,27.7 L69.9,36 L62.4,46.3 L74.5,50.3 Z', fill='#D63AFF') - path(d='M62.4,54.2 L69.9,64.5 L95.5,72.8 L100.1,58.6 L74.5,50.3 L62.4,54.2 Z', fill='#00B9F1') - path(d='M57.8,73.3 L73.6,95.1 L85.7,86.3 L69.9,64.5 L57.8,60.6 L57.8,73.3 Z', fill='#00F2E6') - path(d='M42.8,73.3 L42.8,100.3 L57.8,100.3 L57.8,73.3 L50.3,63 L42.8,73.3 Z', fill='#FFFFFF') - path(d='M30.6,64.5 L14.8,86.3 L26.9,95.1 L42.8,73.3 L42.8,60.6 L30.6,64.5 Z', fill='#FB015B') - path(d='M26,50.3 L0.4,58.6 L5,72.8 L30.6,64.5 L38.1,54.2 L26,50.3 Z', fill='#D63AFF') - path(d='M30.6,36 L5,27.7 L0.4,41.9 L26,50.3 L38.1,46.3 L30.6,36 Z', fill='#00B9F1') - path(d='M42.8,27.2 L26.9,5.4 L14.8,14.2 L30.6,36 L42.8,39.9 L42.8,27.2 Z', fill='#00F2E6') - img(src='http://github.com/img/logo.svg').logo - - nav.menu - a(href='#debugger').scrollto Debugger - a(href='#libraries').scrollto Libraries - a(href='https://community.auth0.com/', target='_blank') Ask - a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! - - .social - a.a0(href='https://auth0.com/', target='_blank') - img(src='http://github.com/img/ico_a0_white.svg') - a.twitter(href='https://twitter.com/auth0', target="_blank") - img(src='http://github.com/img/ico_twitter.svg') - - a.supported(href='https://auth0.com/', target="_blank") - | Supported by - img(src='http://github.com/img/ico_logo.svg') - - section.banner-jwt - //- canvas - .container - a.logo(href='http://github.com/') - svg(width='101px', height='101px', viewbox='0 0 101 101', version='1.1', xmlns='http://www.w3.org/2000/svg', xmlns:xlink='http://www.w3.org/1999/xlink', xmlns:sketch='http://www.bohemiancoding.com/sketch/ns') - defs - g(stroke='none', stroke-width='1', fill='none', fill-rule='evenodd', sketch:type='MSPage') - g(sketch:type='MSLayerGroup', transform='translate(-150.000000, -538.000000)') - g(transform='translate(0.000000, 413.000000)', sketch:type='MSShapeGroup') - g(transform='translate(150.000000, 125.000000)') - g#group - path(d='M57.8,27.2 L57.7,0.3 L42.7,0.3 L42.8,27.2 L50.3,37.5 L57.8,27.2 Z', fill='#FFFFFF') - path(d='M69.9,36 L85.7,14.2 L73.6,5.4 L57.8,27.2 L57.8,39.9 L69.9,36 Z', fill='#FB015B') - path(d='M74.5,50.3 L100.1,41.9 L95.5,27.7 L69.9,36 L62.4,46.3 L74.5,50.3 Z', fill='#D63AFF') - path(d='M62.4,54.2 L69.9,64.5 L95.5,72.8 L100.1,58.6 L74.5,50.3 L62.4,54.2 Z', fill='#00B9F1') - path(d='M57.8,73.3 L73.6,95.1 L85.7,86.3 L69.9,64.5 L57.8,60.6 L57.8,73.3 Z', fill='#00F2E6') - path(d='M42.8,73.3 L42.8,100.3 L57.8,100.3 L57.8,73.3 L50.3,63 L42.8,73.3 Z', fill='#FFFFFF') - path(d='M30.6,64.5 L14.8,86.3 L26.9,95.1 L42.8,73.3 L42.8,60.6 L30.6,64.5 Z', fill='#FB015B') - path(d='M26,50.3 L0.4,58.6 L5,72.8 L30.6,64.5 L38.1,54.2 L26,50.3 Z', fill='#D63AFF') - path(d='M30.6,36 L5,27.7 L0.4,41.9 L26,50.3 L38.1,46.3 L30.6,36 Z', fill='#00B9F1') - path(d='M42.8,27.2 L26.9,5.4 L14.8,14.2 L30.6,36 L42.8,39.9 L42.8,27.2 Z', fill='#00F2E6') - - p.paragraph-1 - span JSON Web Tokens are an open, industry standard  - a(href='https://tools.ietf.org/html/rfc7519', target='_blank') RFC 7519 - | method for representing claims securely between two parties. - p.paragraph-2 - span JWT.IO allows you to decode, verify and generate JWT. - - section.update-site - svg(width='32px', height='32px', viewbox='0 0 32 32', version='1.1', class="paper") - g#Page-1(stroke='none', stroke-width='1', fill='none', fill-rule='evenodd', sketch:type='MSPage') - g#32px(sketch:type='MSLayerGroup', transform='translate(-805.000000, -2193.000000)', fill='#373A39') - path#Fill-529(d='M835,2221 C835,2222.1 834.104,2223 833,2223 L809,2223 C807.896,2223 807,2222.1 807,2221 L807,2197 C807,2195.89 807.896,2195 809,2195 L833,2195 C834.104,2195 835,2195.89 835,2197 L835,2221 L835,2221 Z M833,2193 L809,2193 C806.79,2193 805,2194.79 805,2197 L805,2221 C805,2223.21 806.79,2225 809,2225 L833,2225 C835.209,2225 837,2223.21 837,2221 L837,2197 C837,2194.79 835.209,2193 833,2193 L833,2193 Z M828,2203 L814,2203 C813.447,2203 813,2203.45 813,2204 C813,2204.55 813.447,2205 814,2205 L828,2205 C828.552,2205 829,2204.55 829,2204 C829,2203.45 828.552,2203 828,2203 L828,2203 Z M828,2209 L814,2209 C813.447,2209 813,2209.45 813,2210 C813,2210.55 813.447,2211 814,2211 L828,2211 C828.552,2211 829,2210.55 829,2210 C829,2209.45 828.552,2209 828,2209 L828,2209 Z M828,2215 L814,2215 C813.447,2215 813,2215.45 813,2216 C813,2216.55 813.447,2217 814,2217 L828,2217 C828.552,2217 829,2216.55 829,2216 C829,2215.45 828.552,2215 828,2215 L828,2215 Z', sketch:type='MSShapeGroup') - - strong NEW!  - span JWT.IO gets a refresh! New logo, new website and more. - a(href="https://auth0.com/blog/2015/07/21/jwt-json-webtoken-logo/", target="_blank") - | Learn More - svg(height='48', viewbox='0 0 48 48', width='48', xmlns='http://www.w3.org/2000/svg') - path(d='M-838-2232H562v3600H-838z', fill='none') - path(d='M16 10v28l22-14z') - path(d='M0 0h48v48H0z', fill='none') - - section#debugger.debugger-jwt - .container - //- a(name='debugger') - h1 Debugger - - .jwt-playground - - .algorithm - span Algorithm - .hide - label - input(type='radio', name='algorithm', value='HS256', checked='') - label - input(type='radio', name='algorithm', value='RS256') - .jwt-select - select - option(name='algorithm',value='HS256', selected='') HS256 - option(name='algorithm',value='RS256') RS256 - - .algorithm-code - .tab-nav - .tab-link.current - a(href='#encoded-jwt') Encoded - small paste a token here - .tab-link - a(href='#decoded-jwt') Decoded - small edit the payload and secret (only HS256 supported) - - .tab-content - #encoded-jwt.box-content.current - .input.js-input - #decoded-jwt.box-content - .output - .jwt-explained.jwt-header - p.text-line HEADER: - span ALGORITHM & TOKEN TYPE - .js-header - - .jwt-explained.jwt-payload - p.text-line PAYLOAD: - span DATA - .js-payload - - .jwt-explained.jwt-signature - p.text-line VERIFY SIGNATURE - pre.pre-encode.HS256. - HMACSHA256( - base64UrlEncode(header) + "." + - base64UrlEncode(payload), - - ) - pre.pre-encode.RS256. - RSASHA256( - base64UrlEncode(header) + "." + - base64UrlEncode(payload), - , - - ) - - .validation-status.js-signature - - section#libraries.libraries-jwt - .container - .title-header - //- a(name='libraries') - h1 Libraries for Token Signing/Verification - - .filter - span Filter by - .jwt-select - select - option(value='*', selected='') All - option(value='.go') Go - option(value='.haskell') Haskell - option(value='.java') Java - option(value='.net') NET - option(value='.python') Python - option(value='.php') PHP - - .warning - b Warning: - | Critical vulnerabilities in JSON Web Token libraries with asymmetric keys. - a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/') - | Learn more - - svg(height='48', viewbox='0 0 48 48', width='48', xmlns='http://www.w3.org/2000/svg') - path(d='M-838-2232H562v3600H-838z', fill='none') - path(d='M16 10v28l22-14z') - - .libraries-sv(data-accordion-group) - include libraries/net.jade - include libraries/net2.jade - include libraries/netrt.jade - include libraries/python.jade - include libraries/python2.jade - include libraries/python3.jade - include libraries/node.jade - include libraries/java.jade - include libraries/java2.jade - include libraries/java3.jade - include libraries/js.jade - include libraries/php.jade - include libraries/php2.jade - include libraries/php3.jade - include libraries/php4.jade - include libraries/ruby.jade - include libraries/ruby2.jade - include libraries/ruby3.jade - include libraries/elixir.jade - include libraries/go.jade - include libraries/go2.jade - include libraries/haskell.jade - include libraries/haskell2.jade - include libraries/rust.jade - include libraries/lua.jade - include libraries/scala.jade - include libraries/scala2.jade - include libraries/d.jade - include libraries/clojure.jade - include libraries/objective-c.jade - include libraries/swift.jade - include libraries/swift2.jade - include libraries/c.jade - include libraries/q.jade - include libraries/delphi.jade - - section.sources - .container - .columns - .column.badges - h2 Badges - .hold - a(href='http://jwt.io/assets/badge.svg', target='_blank') - img(src='http://github.com/assets/badge.svg') - .text-hold - a(href='http://jwt.io/assets/badge.svg', target='_blank') - i.icon-budicon-722 - p http://jwt.io/assets/badge.svg - .hold - a(href='http://jwt.io/assets/badge-compatible.svg', target='_blank') - img(src='http://github.com/assets/badge-compatible.svg') - .text-hold - a(href='http://jwt.io/assets/badge-compatible.svg', target='_blank') - i.icon-budicon-722 - p http://jwt.io/assets/badge-compatible.svg - .column.logotype - h2 Logotype - .hold - a(href='http://jwt.io/assets/icon.svg', target='_blank') - img(src='http://github.com/assets/icon.svg') - .text-hold - a(href='http://jwt.io/assets/icon.svg', target='_blank') - i.icon-budicon-722 - p http://jwt.io/assets/icon.svg - .hold - a(href='http://jwt.io/assets/logo.svg', target='_blank') - img(src='http://github.com/assets/logo.svg') - .text-hold - a(href='http://jwt.io/assets/logo.svg', target='_blank') - i.icon-budicon-722 - p http://jwt.io/assets/logo.svg - .column.tshirt - h2 Store - img(src='http://github.com/img/pic_tshirt.png') - a.buy(href='http://swag.auth0.com/', target='_blank') Buy T-Shirt - - .tokens-created - .container - img(src='http://github.com/img/pic_logo_ft.svg') - p JWT.io is brought to you by Auth0. - p Implement authentication with JWTs using Auth0 on any stack and any device in less than 10 minutes. - - a(href='https://auth0.com/signup', target="_blank").btn.btn-success Create free account - - .token - h5 TOKENS CREATED - - .counter - - footer - .container - .columns - .column - a(href='https://auth0.com/', target="_blank") - | Supported by - img(src='http://github.com/img/ico_logo.svg') - .column.pull-request - span Missing something? - a(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/edit/master/html/index.jade', target="_blank") Send a Pull Request - .column.social-counter - a.twitter-follow-button(href='https://twitter.com/auth0', data-show-count='true') Follow @auth0 - - - // - Bootstrap core JavaScript - ================================================== - // Placed at the end of the document so the pages load faster - script(src='http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js') - script(src='http://github.com/js/bootstrap.min.js') - // build:js dist/js/app.js - script(src='http://github.com/vendor/zepto/zepto.js') - script(src='http://github.com/vendor/jsonlint/lib/jsonlint.js') - script(src='http://github.com/vendor/json-sans-eval-min/index.js') - script(src='http://github.com/vendor/codemirror/lib/codemirror.js') - script(src='http://github.com/vendor/codemirror/mode/javascript/javascript.js') - script(src='http://github.com/vendor/codemirror/addon/lint/lint.js') - script(src='http://github.com/vendor/codemirror/addon/lint/javascript-lint.js') - script(src='http://github.com/vendor/codemirror/addon/lint/json-lint.js') - script(src='http://github.com/vendor/jsrsasign/index.js') - script(src='http://github.com/vendor/jws.js/index.js') - script(src='http://github.com/js/jwt_mode.js') - script(src='http://github.com/js/jwt.js') - - script(src='http://github.com/js/isotope.pkgd.min.js') - script(src='http://github.com/js/flipclock.js') - script(src='http://github.com/js/accordion.js') - - script(src='http://github.com/js/app.js') - // endbuild - - script. - (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ - (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), - m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) - })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - ga('create', 'UA-37952868-2', 'auto'); - ga('send', 'pageview'); - - script. - !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); diff --git a/js/app.js b/js/app.js index c29fc865..0ac84cbb 100644 --- a/js/app.js +++ b/js/app.js @@ -95,12 +95,14 @@ $('.navbar .menu a').on('click', function() { $('body').removeClass('menu-mobile'); }); +// DEAD CODE /* * Accordion */ $('.accordion').accordion({ "transitionSpeed": 400 }); +// DEAD CODE END /* * Scroll to section @@ -198,12 +200,13 @@ setInterval(function() { poll(); - +// DEAD CODE if (navigator.userAgent.indexOf('Mac OS X') != -1) { $("body").addClass("mac"); } else { $("body").addClass("pc"); } +// DEAD CODE END $(".jwt-playground .tab-link a").click(function() { @@ -230,6 +233,7 @@ $('.filter select').on( 'change', function() { $grid.isotope({ filter: $(this).val() }); }); +// DEAD CODE $(".panel-default .panel-heading").click(function() { if ($(this).hasClass("active")) { $(".panel-default .panel-heading").removeClass("active"); @@ -242,6 +246,7 @@ $(".panel-default .panel-heading").click(function() { } return false; }); +// DEAD CODE END // Principal JWT JS ** diff --git a/package.json b/package.json index fc689f66..a3dcbea6 100644 --- a/package.json +++ b/package.json @@ -1,35 +1,36 @@ { "name": "jwt.io", - "version": "0.0.1", - "dependencies": { - "bower": "^1.4.1", - "express": "^4.13.4", - "express-sslify": "^1.0.1", - "marked": "^0.3.5", - "serve": "*", - "grunt": "^0.4.5", - "grunt-cli": "^1.2.0", - "grunt-contrib-clean": "^0.6.0", - "grunt-contrib-concat": "^0.5.0", - "grunt-contrib-connect": "^0.8.0", - "grunt-contrib-copy": "^0.5.0", - "grunt-contrib-cssmin": "^0.9.0", - "grunt-contrib-htmlmin": "^0.3.0", - "grunt-contrib-jade": "^0.14.1", - "grunt-contrib-stylus": "^0.21.0", - "grunt-contrib-uglify": "^0.5.1", - "grunt-contrib-watch": "^0.6.1", - "grunt-mocha-phantomjs": "0.7.0", - "grunt-usemin": "^2.0.2", - "matchdep": "~0.3.0" + "version": "2.0.0", + "repository": { + "type": "git", + "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" }, + "dependencies": {}, "devDependencies": { - "expect.js": "^0.3.1" + "@babel/core": "^7.0.0-beta.36", + "@babel/polyfill": "^7.0.0-beta.37", + "@babel/preset-env": "^7.0.0-beta.36", + "babel-loader": "^8.0.0-beta.0", + "bootstrap": "^3.3.7", + "codemirror": "^5.33.0", + "flipclock": "^0.7.8", + "grunt": "^1.0.1", + "grunt-cli": "^1.2.0", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-pug": "^1.0.0", + "grunt-contrib-stylus": "^1.2.0", + "grunt-webpack": "^3.0.2", + "highlight.js": "^9.12.0", + "isotope-layout": "^3.0.5", + "jquery": "^3.2.1", + "jsrsasign": "^8.0.4", + "jstransformer-markdown-it": "^2.0.0", + "pug": "^2.0.0-rc.4", + "stylus": "^0.54.5", + "webpack": "^3.10.0" }, "scripts": { - "test": "grunt test --verbose", - "start": "node server.js", - "watch": "grunt", - "postinstall": "bower install && grunt build" + "test": "echo UNIMPLEMENTED", + "start": "echo UNIMPLEMENTED" } } diff --git a/server.js b/server.js deleted file mode 100644 index aaddfd4e..00000000 --- a/server.js +++ /dev/null @@ -1,17 +0,0 @@ -var express = require('express'); -var http = require('http'); -var enforce = require('express-sslify'); - -var app = express(); - -// use HTTPS(true) in case you are behind a load balancer (e.g. Heroku) -if (process.env.NODE_ENV === 'production') { - console.log('redirecting to ssl'); - app.use(enforce.HTTPS({ trustProtoHeader: true })) -} - -app.use('/', express.static(__dirname)); - -http.createServer(app).listen(process.env.PORT || 3000, function() { - console.log('started'); -}); diff --git a/src/default-tokens.js b/src/default-tokens.js new file mode 100644 index 00000000..177ab802 --- /dev/null +++ b/src/default-tokens.js @@ -0,0 +1,121 @@ +const rsaPrivateKey = + '-----BEGIN RSA PRIVATE KEY-----\n' + + 'MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw\n' + + '33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW\n' + + '+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB\n' + + 'AoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS\n' + + '3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp\n' + + 'uGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE\n' + + '2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0\n' + + 'GAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K\n' + + 'Su5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY\n' + + '6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5\n' + + 'fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523\n' + + 'Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP\n' + + 'FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n' + + '-----END RSA PRIVATE KEY-----'; + +const rsaPublicKey = + '-----BEGIN PUBLIC KEY-----\n' + + 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd\n' + + 'UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs\n' + + 'HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D\n' + + 'o2kQ+X5xK9cipRgEKwIDAQAB\n' + + '-----END PUBLIC KEY-----'; + +const ecPrivateKey = + '-----BEGIN PRIVATE KEY-----' + + 'MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2' + + 'OF/2NxApJCzGCEDdfSp6VQO30hyhRANCAAQRWz+jn65BtOMvdyHKcvjBeBSDZH2r' + + '1RTwjmYSi9R/zpBnuQ4EiMnCqfMPWiZqB4QdbAd0E7oH50VpuZ1P087G' + + '-----END PRIVATE KEY-----'; + +const ecPublicKey = + '-----BEGIN PUBLIC KEY-----' + + 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVs/o5+uQbTjL3chynL4wXgUg2R9' + + 'q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg==' + + '-----END PUBLIC KEY-----'; + +export default { + hs256: { + token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.' + + 'eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOn' + + 'RydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ', + secret: 'secret' + }, + hs384: { + token: '', + secret: 'secret' + }, + hs512: { + token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3' + + 'ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.' + + 'YI0rUGDq5XdRw8vW2sDLRNFMN8Waol03iSFH8I4iLzuYK7FKHaQYWzPt0BJFG' + + 'rAmKJ6SjY0mJIMZqNQJFVpkuw', + secret: 'secret' + }, + rs256: { + token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.' + + 'eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRy' + + 'dWV9.EkN-DOsnsuRjRO6BxXemmJDm3HbxrbRzXglbN2S4sOkopdU4IsDxTI8jO1' + + '9W_A4K8ZPJijNLis4EZsHeY559a4DFOd50_OqgHGuERTqYZyuhtF39yxJPAjU' + + 'ESwxk2J5k_4zM3O-vtd1Ghyo4IbqKKSy6J9mTniYJPenn5-HIirE', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + rs384: { + token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxM' + + 'jM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.' + + 'Ffs4IGK8GkxrSxp7I8IcuHy_uUSskg2zBwScCGhg6T1o4hkdZ5ytJNRj04kD8' + + 'FEnUrnnUiGKgHL0MWrwmgz6Kmi6fxDSKKbiVlESPkUrgBTMaIlOheDbemy19' + + 'lxUJYqd7A2exNXtCW_UoSs8f3ZdYujNrbZWW8kWgLQuk4oa-0I', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + rs512: { + token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NT' + + 'Y3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.' + + 'yN0Dw5rVJ75rdJXKpflhwASRr4DHwlgmRY4HVMdotCdyg8fOB2sLRehLY9' + + 'g9isBnIuOA0aK7qWpj9cc7G8eYmaFdm95_moOJKxCgH0Rn2d2-wygdjBvMrSp' + + 'kxsKMdbc2tKP0rI3ZYalQ7Q86RagZNZ_JpA2V3j3JPKTQwKFGSTw', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + es256: { + token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODk' + + 'wIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.AZR4yap9' + + 'UoqRlEGkeAHjnr9vvLYAljWg8_ZtKDiaaEuN_oi55XjUNfFHfOniACB' + + '46oYm1D4eVyVb8yGavbq9xQ', + privateKey: ecPrivateKey, + publicKey: ecPublicKey + }, + es384: { + token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM' + + '0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.' + + '6zBBNCgcY_5yVr5mjhOG7-9vUUuxE7i85FtYihacGWwdQgBwQiPr8Nt' + + 'qG5eE2StJ7S3xBr-qyPY7fbwdJRG5fA', + privateKey: ecPrivateKey, + publicKey: ecPublicKey + }, + es512: { + token: '', + privateKey: ecPrivateKey, + publicKey: ecPublicKey + }, + ps256: { + token: '', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + ps384: { + token: '', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + ps512: { + token: '', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + } +}; + diff --git a/src/jwt.js b/src/jwt.js new file mode 100644 index 00000000..7745a61d --- /dev/null +++ b/src/jwt.js @@ -0,0 +1,60 @@ +import { + jws, + KEYUTIL, + b64utoutf8, + b64utohex, + utf8tohex +} from 'jsrsasign'; + +export function sign(header, + payload, + secretOrPrivateKeyString, + base64Secret = false) { + if(!header.alg) { + throw new Error('Missing "alg" claim in header'); + } + + if(header.alg.indexOf('HS') === 0) { + return jws.JWS.sign(null, header, payload, + base64Secret ? + b64utohex(secretOrPrivateKeyString) : + utf8tohex(secretOrPrivateKeyString)); + } else { + return jws.JWS.sign(null, header, payload, secretOrPrivateKeyString); + } +} + +export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { + const decoded = decode(jwt); + + if(!decoded.header.alg) { + return false; + } + + if(decoded.header.alg.indexOf('HS') === 0) { + return jws.JWS.verify(jwt, + base64Secret ? + b64utohex(secretOrPublicKeyString) : + utf8tohex(secretOrPublicKeyString)); + } else { + return jws.JWS.verify(jwt, secretOrPublicKeyString); + } +} + +export function decode(jwt) { + const split = jwt.split('.'); + + const result = {}; + try { + result.header = JSON.parse(b64utoutf8(split[0])); + } catch(e) { + result.header = ''; + } + try { + result.payload = JSON.parse(b64utoutf8(split[1])); + } catch(e) { + result.payload = ''; + } + + return result; +} diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 00000000..f6c1a1f7 --- /dev/null +++ b/src/utils.js @@ -0,0 +1,107 @@ +import { KEYUTIL } from 'jsrsasign'; + +export function httpGet(url, cache = true) { + return new Promise((resolve, reject) => { + + const request = new XMLHttpRequest(); + request.onreadystatechange = () => { + if (request.readyState === XMLHttpRequest.DONE) { + + if (request.status === 200) { + resolve(request.responseText); + } else { + reject({ + status: request.status, + response: request.responseText + }); + } + + } + }; + + request.open('GET', url); + if (!cache) { + request.setRequestHeader("Cache-Control", "no-cache"); + } + request.send(); + + }); +} + +export function downloadPublicKeyIfPossible() { + return ''; +} + +export function isValidBase64String(s, urlOnly) { + try { + const validChars = urlOnly ? + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=' : + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_+/='; + + let hasPadding = false; + for(let i = 0; i < s.length; ++i) { + hasPadding |= s.charAt(i) === '='; + if(validChars.indexOf(s.charAt(i)) === -1) { + return false; + } + } + + if(hasPadding) { + for(let i = s.indexOf('='); i < s.length; ++i) { + if(s.charAt(i) !== '=') { + return false; + } + } + + return s.length % 4 === 0; + } + + return true; + } catch (e) { + return false; + } +}; + +export function isValidKey(key) { + // Four tries: no header, header for cert, header for pub key, + // header for priv key + + const headers = [{ + prologue: '', + epilogue: '' + },{ + prologue: '-----BEGIN CERTIFICATE-----\n', + epilogue: '-----END CERTIFICATE-----\n' + }, { + prologue: '-----BEGIN PUBLIC KEY-----\n', + epilogue: '-----END PUBLIC KEY-----\n' + }, { + prologue: '-----BEGIN PRIVATE KEY-----\n', + epilogue: '-----END PRIVATE KEY-----\n' + }, { + prologue: '-----BEGIN RSA PRIVATE KEY-----\n', + epilogue: '-----END RSA PRIVATE KEY-----\n' + }]; + + for(let i = 0; i < headers.length; ++i) { + const header = headers[i]; + try { + let newKey = header.prologue; + newKey += key + '\n'; + newKey += header.epilogue; + + return { + valid: !!KEYUTIL.getKey(newKey), + key: newKey + }; + } catch(e2) { + // Ignore + } + } + + return { + valid: false, + key: key + }; +} + diff --git a/src/website/counter.js b/src/website/counter.js new file mode 100644 index 00000000..69e554e2 --- /dev/null +++ b/src/website/counter.js @@ -0,0 +1,49 @@ +import { counterElement } from './dom-elements.js'; +import { isInViewport } from './utils.js'; +import { httpGet } from '../utils.js'; + +import $ from 'jquery'; +import jQuery from 'jquery'; +import 'flipclock/compiled/flipclock.js'; + +const initialCount = 80482701; +const pollIntervalWhenVisible = 5000; +const pollIntervalWhenHidden = 1000*1000; +const url = 'https://webtask.it.auth0.com/api/run/' + + 'wt-matiasw-gmail_com-0/proxy?' + + 'url=http://metrics.it.auth0.com/counters'; + +const flipCounter = $(counterElement).FlipClock(initialCount, { + clockFace: 'Counter', + minimumDigits: initialCount.toString().length +}); + +function updateCounterFromWebtask() { + return new Promise((resolve, reject) => { + httpGet(url, false).then(data => { + const parsed = JSON.parse(data); + flipCounter.setTime(parsed.logins); + }).catch(e => { + console.error('Failed to set count from Webtask: ', e); + }); + }); +} + +let elapsed = pollIntervalWhenHidden; +function updateCounter() { + elapsed += pollIntervalWhenVisible; + + if(isInViewport(counterElement)) { + updateCounterFromWebtask(); + } else { + if(elapsed >= pollIntervalWhenHidden) { + elapsed = 0; + updateCounterFromWebtask(); + } + } +} + +export function setupJwtCounter() { + updateCounter(); + setInterval(updateCounter, pollIntervalWhenVisible); +} diff --git a/src/website/dom-elements.js b/src/website/dom-elements.js new file mode 100644 index 00000000..ae1b7611 --- /dev/null +++ b/src/website/dom-elements.js @@ -0,0 +1,47 @@ +export const navbarElement = document.querySelector('nav.navbar'); +export const menuTriggerElement = document.querySelector('.menu-trigger'); +export const menuLinks = document.querySelectorAll('.navbar .menu a'); +export const menuScrollableLinks = + navbarElement.querySelectorAll('a.scrollto'); + +export const sectionElements = document.getElementsByTagName('section'); + +export const extensionButton = document.getElementById('extension-button'); +export const extensionButtonText = + extensionButton.querySelector('.button-text'); + +export const codeElements = document.querySelectorAll('.plain-text pre code'); + +export const debuggerSection = document.getElementById('debugger-io'); + +export const editorElement = document.querySelector('#encoded-jwt .input'); +export const decodedElement = document.querySelector('#decoded-jwt .output'); +export const headerElement = document.querySelector('.js-header'); +export const payloadElement = document.querySelector('.js-payload'); +export const payloadTooltipElement = + document.getElementById('js-payload-tooltip'); + +export const signatureStatusElement = + document.querySelector('.validation-status.js-signature'); + +export const algorithmSelect = document.getElementById('algorithm-select'); + +export const keyEditorContainer = document.querySelector('.jwt-signature pre.RS256'); +export const rsaShaTextSpan = document.getElementById('rsasha-text'); +export const secretEditorContainer = document.querySelector('.jwt-signature pre.HS256'); +export const hmacShaTextSpan = document.getElementById('hmacsha-text'); + +export const publicKeyTextArea = + document.querySelector('.jwt-signature textarea[name="public-key"]'); +export const privateKeyTextArea = + document.querySelector('.jwt-signature textarea[name="private-key"]'); +export const secretInput = + document.querySelector('.jwt-signature input[name="secret"]'); +export const secretBase64Checkbox = + document.getElementById('is-base64-encoded'); + +export const starsElements = document.getElementsByClassName('stars'); +export const librariesElement = document.querySelector('.libraries-sv'); +export const librariesSelect = document.getElementById('libraries-select'); + +export const counterElement = document.querySelector('.counter'); diff --git a/src/website/editor/event-manager.js b/src/website/editor/event-manager.js new file mode 100644 index 00000000..290bf1c4 --- /dev/null +++ b/src/website/editor/event-manager.js @@ -0,0 +1,72 @@ +function disableAll(events) { + events.forEach(event => { + event.target[event.disable](event.event, event.handler); + }); +} + +function enableAll(events) { + events.forEach(event => { + event.target[event.enable](event.event, event.handler); + }); +} + +function tryAsResult(func) { + const result = {}; + + try { + result.result = func(); + } catch(e) { + result.exception = e; + } + + return result; +} + +export default class EventManager { + constructor() { + this.events = []; + this.callDepth = 0; + } + + addEvent(target, enable, disable, event, handler) { + this.events.push({ + target: target, + enable: enable, + disable: disable, + event: event, + handler: handler + }); + + target[enable](event, handler); + } + + addDomEvent(target, event, handler) { + this.addEvent(target, 'addEventListener', + 'removeEventListener', event,handler); + } + + addCodeMirrorEvent(target, event, handler) { + this.addEvent(target, 'on', 'off', event, handler); + } + + withDisabledEvents(func) { + // Nested calls are supported + if(this.callDepth === 0) { + disableAll(this.events); + } + + ++this.callDepth; + const result = tryAsResult(func); + --this.callDepth; + + if(this.callDepth === 0) { + enableAll(this.events); + } + + if(result.exception) { + throw result.exception; + } + + return result.result; + } +} diff --git a/src/website/editor/index.js b/src/website/editor/index.js new file mode 100644 index 00000000..9bde2b08 --- /dev/null +++ b/src/website/editor/index.js @@ -0,0 +1,300 @@ +import { copyTextToClipboard } from '../utils.js'; +import { tooltipHandler } from './tooltip.js'; +import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; +import { + copyTokenLink, + getTrimmedValue, + stringify, + fixEditorHeight +} from './utils.js'; +import { sign, verify, decode } from '../../jwt.js'; +import EventManager from './event-manager.js'; +import strings from '../strings.js'; +import defaultTokens from '../../default-tokens.js'; +import { + algorithmSelect, + signatureStatusElement, + editorElement, + headerElement, + payloadElement, + decodedElement, + secretInput, + privateKeyTextArea, + publicKeyTextArea, + hmacShaTextSpan, + rsaShaTextSpan, + keyEditorContainer, + secretEditorContainer, + secretBase64Checkbox +} from '../dom-elements.js'; + +// The event manager lets us enable/disable events as needed without +// manually tracking them. Events that need to be disabled should be +// passed to the event manager. +const eventManager = new EventManager(); + +function markAsInvalid() { + signatureStatusElement.classList.remove('valid-token'); + signatureStatusElement.classList.add('invalid-token'); + signatureStatusElement.innerHTML = + ` ${strings.editor.signatureInvalid}`; +} + +function markAsValid() { + const elementsWithError = document.getElementsByClassName('error'); + Array.prototype.forEach.call(elementsWithError, element => { + element.classList.remove('error'); + }); + + signatureStatusElement.classList.remove('invalid-token'); + signatureStatusElement.classList.add('valid-token'); + signatureStatusElement.innerHTML = + ` ${strings.editor.signatureVerified}`; +} + +function displaySecretOrKeys(algorithm) { + const algoType = algorithm.substr(0, 2); + const algoSize = algorithm.substr(2, 3); + + if(algoType === 'HS') { + hmacShaTextSpan.firstChild.textContent = `HMACSHA${algoSize}`; + secretEditorContainer.style.display = ''; + keyEditorContainer.style.display = 'none'; + } else { + const texts = { + RS: 'RSASHA', + PS: 'RSAPSSSHA', + ES: 'ECDSASHA' + }; + + rsaShaTextSpan.firstChild.textContent = `${texts[algoType]}${algoSize}`; + secretEditorContainer.style.display = 'none'; + keyEditorContainer.style.display = ''; + } + + fixEditorHeight(); +} + +function selectAlgorithm(algorithm) { + eventManager.withDisabledEvents(() => { + const selected = + algorithmSelect.querySelector(`option[value="${algorithm}"]`); + + if(!selected) { + console.log(`Invalid algorithm ${algorithm}, ignoring...`); + return; + } + + selected.selected = true; + + displaySecretOrKeys(algorithm); + }); +} + +function isDefaultToken(token) { + for(const algorithm of Object.keys(defaultTokens)) { + if(defaultTokens[algorithm].token === token) { + return true; + } + } + + return false; +} + +export function useDefaultToken(algorithm) { + eventManager.withDisabledEvents(() => { + const defaults = defaultTokens[algorithm.toLowerCase()]; + const decoded = decode(defaults.token); + + tokenEditor.setValue(defaults.token); + headerEditor.setValue(stringify(decoded.header)); + payloadEditor.setValue(stringify(decoded.payload)); + + if(algorithm.indexOf('HS') === 0) { + secretInput.value = defaults.secret; + } else { + publicKeyTextArea.firstChild.textContent = defaults.publicKey; + privateKeyTextArea.firstChild.textContent = defaults.privateKey; + } + + markAsValid(); + }); +} + +function setAlgorithmInHeader(algorithm) { + eventManager.withDisabledEvents(() => { + try { + const header = JSON.parse(headerEditor.getValue()); + header.alg = algorithm; + headerEditor.setValue(stringify(header)); + } catch(e) { + // SyntaxError is expected while things are being edited, ignore those + // errors. + if(!(e instanceof SyntaxError)) { + // If it's not a SyntaxError, log the error. + console.error('Failed to encode token: ', e); + } + } + + try { + encodeToken(); + } catch(e) { + // Ignore error, this may fail in unexpected ways if the data + // is being edited. + } + }); +} + +function getSelectedAlgorithm() { + const selected = algorithmSelect.options[algorithmSelect.selectedIndex]; + return selected.value; +} + +function algorithmChangeHandler() { + const algorithm = getSelectedAlgorithm(); + + displaySecretOrKeys(algorithm); + + if(isDefaultToken(getTrimmedValue(tokenEditor))) { + useDefaultToken(algorithm); + } else { + setAlgorithmInHeader(algorithm); + } +} + +function markAsInvalidWithElement(element, clearTokenEditor = true) { + element.classList.add('error'); + markAsInvalid(); + + if(clearTokenEditor) { + eventManager.withDisabledEvents(() => { + tokenEditor.setValue(''); + }); + } +} + +function encodeToken() { + eventManager.withDisabledEvents(() => { + let header; + try { + header = JSON.parse(headerEditor.getValue()); + } catch(e) { + markAsInvalidWithElement(headerElement, true); + return; + } + + if(!header.alg) { + setAlgorithmInHeader(getSelectedAlgorithm()); + return; + } else { + selectAlgorithm(header.alg); + } + + let payload; + try { + payload = JSON.parse(payloadEditor.getValue()); + } catch(e) { + markAsInvalidWithElement(payloadElement, true); + return; + } + + try { + const encoded = sign(header, payload, + header.alg.indexOf('HS') === 0 ? + secretInput.value : + privateKeyTextArea.firstChild.textContent, + secretBase64Checkbox.checked); + + tokenEditor.setValue(encoded); + } catch(e) { + console.error('Failed to sign/encode token: ', e); + } + + verifyToken(); + }); +} + +function decodeToken() { + eventManager.withDisabledEvents(() => { + try { + const jwt = getTrimmedValue(tokenEditor); + const decoded = decode(jwt); + + selectAlgorithm(decoded.header.alg); + downloadPublicKeyIfPossible(decoded).then(publicKey => { + eventManager.withDisabledEvents(() => { + publicKeyTextArea.firstChild.textContent = publicKey; + verifyToken(); + }); + }); + + headerEditor.setValue(stringify(decoded.header)); + payloadEditor.setValue(stringify(decoded.payload)); + + verifyToken(); + } catch(e) { + console.error('Failed to decode token: ', e); + } + }); +} + +function verifyToken() { + const jwt = getTrimmedValue(tokenEditor); + const decoded = decode(jwt); + + if(!decoded.header.alg || decoded.header.alg === 'none') { + markAsInvalid(); + return; + } + + const publicKeyOrSecret = + decoded.header.alg.indexOf('HS') === 0 ? + secretInput.value : + publicKeyTextArea.firstChild.textContent; + + if(verify(jwt, publicKeyOrSecret, secretBase64Checkbox.checked)) { + markAsValid(); + } else { + markAsInvalid(); + } +} + +function setupEvents() { + // The event manager lets us enable/disable events as needed without + // manually tracking them. Events that need to be disabled should be + // passed to the event manager. + + eventManager.addDomEvent(algorithmSelect, 'change', algorithmChangeHandler); + + // When an encoded token is inserted, it must be decoded. + eventManager.addCodeMirrorEvent(tokenEditor, 'change', decodeToken); + // When parts of the decoded token are changed, it must be reencoded. + eventManager.addCodeMirrorEvent(headerEditor, 'change', encodeToken); + eventManager.addCodeMirrorEvent(payloadEditor, 'change', encodeToken); + + // HMAC secret, when changed the encoded token must be updated. + eventManager.addDomEvent(secretInput, 'change', encodeToken); + // Private key, when changed the encoded token must be updated. + eventManager.addDomEvent(privateKeyTextArea, 'change', encodeToken); + // Public key, when changed the encoded token must NOT be updated + // (only verified). + eventManager.addDomEvent(publicKeyTextArea, 'change', verifyToken); + + // The following event are never disabled, so it is not necessary to go + // through the event manager for them. + + // Human readable timestamp tooltips + payloadElement.addEventListener('mousemove', tooltipHandler); + // Temporary (share button not ready yet) + signatureStatusElement.addEventListener('click', copyTokenLink); +} + +export function setTokenEditorValue(value) { + tokenEditor.setValue(value); +} + +export function setupTokenEditor() { + setupEvents(); + selectAlgorithm('HS256'); + fixEditorHeight(); +} diff --git a/src/website/editor/instances.js b/src/website/editor/instances.js new file mode 100644 index 00000000..de78a194 --- /dev/null +++ b/src/website/editor/instances.js @@ -0,0 +1,29 @@ +import CodeMirror from 'codemirror'; +import jwtMode from './jwt-mode.js'; +import { + headerElement, + payloadElement, + editorElement +} from '../dom-elements.js'; + +CodeMirror.defineMode('jwt', jwtMode); + +const jsonEditorOptions = { + mode: 'application/json', + lineWrapping: true, + extraKeys: { + 'Tab': instance => { + instance.replaceSelection(' ', 'end'); + } + }, + lint: true +}; + +const tokenEditorOptions = Object.assign({}, jsonEditorOptions, { + mode: 'jwt', + theme: 'night' +}); + +export const headerEditor = new CodeMirror(headerElement, jsonEditorOptions); +export const payloadEditor = new CodeMirror(payloadElement, jsonEditorOptions); +export const tokenEditor = new CodeMirror(editorElement, tokenEditorOptions); diff --git a/src/website/editor/jwt-mode.js b/src/website/editor/jwt-mode.js new file mode 100644 index 00000000..bde1e98f --- /dev/null +++ b/src/website/editor/jwt-mode.js @@ -0,0 +1,40 @@ +export default function jwtModeFactory() { + function jwtHeader(stream, state) { + stream.eatWhile(/[^.]/); + state.cur = firstDot; + return 'jwt-header'; + } + + function firstDot(stream, state) { + stream.next(); + state.cur = jwtPayload; + return 'jwt-dot'; + } + + function jwtPayload(stream, state) { + stream.eatWhile(/[^.]/); + state.cur = secondDot; + return 'jwt-payload'; + } + + function secondDot(stream, state) { + stream.next(); + state.cur = jwtSignature; + return 'jwt-dot'; + } + + function jwtSignature(stream) { + stream.skipToEnd(); + return 'jwt-signature'; + } + + return { + token: function (stream, state) { + var cur = state.cur; + return cur(stream, state); + }, + startState: function () { + return { cur: jwtHeader }; + } + }; +} diff --git a/src/website/editor/tooltip.js b/src/website/editor/tooltip.js new file mode 100644 index 00000000..1203ad54 --- /dev/null +++ b/src/website/editor/tooltip.js @@ -0,0 +1,25 @@ +import { payloadEditor } from './instances.js'; +import { payloadTooltipElement } from '../dom-elements.js'; + +export function tooltipHandler(event) { + const result = payloadEditor.coordsChar({ + left: event.pageX, + top: event.pageY + }, 'page'); + + const line = payloadEditor.getLine(result.line); + + const timeClaims = ['exp', 'nbf', 'iat', 'auth_time', 'updated_at']; + + const matches = /"(.*)":\s*"?(\d*)"?/.exec(line); + if (matches && timeClaims.indexOf(matches[1]) !== -1) { + const dateStr = (new Date(parseInt(matches[2], 10) * 1000)).toString(); + payloadTooltipElement.firstChild.textContent = dateStr; + payloadTooltipElement.style.left = event.pageX + 'px'; + payloadTooltipElement.style.top = event.pageY + 'px'; + + payloadTooltipElement.style.display = ''; + } else { + payloadTooltipElement.style.display = 'none'; + } +} diff --git a/src/website/editor/utils.js b/src/website/editor/utils.js new file mode 100644 index 00000000..b714a38d --- /dev/null +++ b/src/website/editor/utils.js @@ -0,0 +1,38 @@ +import { tokenEditor } from './instances.js'; +import { + algorithmSelect, + publicKeyTextArea, + editorElement, + decodedElement +} from '../dom-elements.js'; + +export function getTrimmedValue(instance) { + const value = instance.getValue(); + if (!value) { + return ''; + } + + return value.replace(/\s/g, ''); +} + +export function copyTokenLink() { + const algorithm = algorithmSelect.querySelector(':selected').value; + + let url = 'https://jwt.io/#debugger-io?' + + `token=${encodeURIComponent(getTrimmedValue(tokenEditor))}`; + if (algorithm.indexOf('HS') === -1) { + url += `&publicKey=${encodeURIComponent(publicKeyTextArea.value)}`; + } + + copyTextToClipboard(url); +} + +export function fixEditorHeight() { + if(window.matchMedia('(min-width: 768px)').matches) { + editorElement.style.height = `${decodedElement.offsetHeight}px`; + } +} + +export function stringify(object) { + return JSON.stringify(object, 2); +} diff --git a/src/website/extension.js b/src/website/extension.js new file mode 100644 index 00000000..c63140c6 --- /dev/null +++ b/src/website/extension.js @@ -0,0 +1,77 @@ +import { extensionButton, extensionButtonText } from './dom-elements.js'; +import strings from './strings.js'; + +// https://stackoverflow.com/questions/4565112/javascript-how-to-find-out-if-the-user-browser-is-chrome +function isChrome() { + // please note, + // that IE11 now returns undefined again for window.chrome + // and new Opera 30 outputs true for window.chrome + // and new IE Edge outputs to true now for window.chrome + // and if not iOS Chrome check + // so use the below updated condition + const isChromium = window.chrome, + winNav = window.navigator, + vendorName = winNav.vendor, + isOpera = winNav.userAgent.indexOf("OPR") > -1, + isIEedge = winNav.userAgent.indexOf("Edge") > -1, + isIOSChrome = winNav.userAgent.match("CriOS"); + + if (isIOSChrome) { + return false; + } else if (isChromium !== null && + isChromium !== undefined && + vendorName === "Google Inc." && + isOpera == false && + isIEedge == false) { + return true; + } else { + return false; + } +} + +function setInstalledText() { + if (extensionButton.classList.contains('is-installed')) { + extensionButtonText.firstChild.textContent = + strings.extension.alreadyInstalled; + + extensionButton.style.cursor = 'default'; + } +} + +export function setupExtensionButton() { + // The is-installed class is added by the extension (when it is installed). + // It is unspecified when this is done. So check again in a second or so. + setTimeout(setInstalledText, 1000); + + // chrome.webstore.install can only be called from standard event handlers. + extensionButton.addEventListener('click', () => { + const url = 'https://chrome.google.com/webstore/detail/' + + 'jwt-debugger/ppmmlchacdbknfphdeafcbmklcghghmd'; + + if (button.classList.contains('is-installed')) { + return; + } + + function notInstalled() { + extensionButton.classList.remove('is-installed'); + extensionButtonText.firstChild.textContent = + strings.extension.addToChrome; + window.open(url); + } + + if(isChrome()) { + try { + chrome.webstore.install(url, () => { + button.classList.add('is-installed'); + setInstalledText(); + }, () => { + notInstalled(); + }); + } catch (e) { + notInstalled(); + } + } else { + notInstalled(); + } + }); +} diff --git a/src/website/index.js b/src/website/index.js new file mode 100644 index 00000000..6a667d86 --- /dev/null +++ b/src/website/index.js @@ -0,0 +1,86 @@ +import { setupNavbar } from './navbar.js'; +import { setupExtensionButton } from './extension.js'; +import { setupLibraries } from './libraries.js'; +import { + setupTokenEditor, + setTokenEditorValue, + useDefaultToken +} from './editor'; +import { setupJwtCounter } from './counter.js'; +import { getParameterByName } from './utils.js'; +import { + publicKeyTextArea, + codeElements, + debuggerSection +} from './dom-elements.js'; + +import hljs from 'highlight.js'; + +/* For initialization, look at the end of this file */ + +function parseLocationQuery() { + const publicKey = getParameterByName('publicKey'); + const value = getParameterByName('value'); + const token = getParameterByName('token'); + + let scroll = false; + if(publicKey) { + publicKeyTextArea.value = publicKey; + scroll = true; + } + if(value) { + setTokenEditorValue(value); + scroll = true; + } + if(token) { + setTokenEditorValue(value); + scroll = true; + } + + debuggerSection.scrollIntoView(true); +} + +function loadToken() { + const lastToken = localStorage.getItem('lastToken'); + if(lastToken) { + setTokenEditorValue(value); + + const lastPublicKey = localStorage.getItem('lastPublicKey'); + if(lastPublicKey) { + publicKeyTextArea.value = lastPublicKey; + } + } else { + useDefaultToken('HS256'); + } +} + +function setupHighlighting() { + // TODO: consider replacing this with CodeMirror, which we already use. + + hljs.configure({ + classPrefix: '' + }); + + Array.prototype.forEach.call(codeElements, element => { + if(!element.classList.contains('hljs')) { + element.classList.add('hljs'); + hljs.highlightBlock(element); + } + }); +} + +function setupSmoothScrolling() { + //TODO + console.log('TODO: smooth scrolling'); +} + +// Initialization +setupNavbar(); +setupExtensionButton(); +setupSmoothScrolling(); +setupLibraries(); +setupTokenEditor(); +loadToken(); +parseLocationQuery(); +setupHighlighting(); +setupJwtCounter(); diff --git a/src/website/libraries.js b/src/website/libraries.js new file mode 100644 index 00000000..1491a00c --- /dev/null +++ b/src/website/libraries.js @@ -0,0 +1,87 @@ +import { safeLocalStorageSetItem } from './utils.js'; +import { httpGet } from '../utils.js'; +import { + starsElements, + librariesElement, + librariesSelect +} from './dom-elements.js'; + +import Isotope from 'isotope-layout'; + +const librariesGrid = new Isotope(librariesElement, { + layoutMode: 'fitRows', + itemSelector: 'article', + percentPosition: true, + masonry: { + columnWidth: 'article' + } +}); + +function getStarsFromUrl(url) { + return httpGet(url).then(data => { + const parsed = JSON.parse(data); + const count = parsed.stargazers_count; + + if(Number.isInteger(count)) { + return count; + } else { + throw new Error('Bad data received for stars count.'); + } + }); +} + +function insertStarCount(starElement, count) { + const span = document.createElement('span'); + span.textContent = count; + starElement.insertBefore(span, null); + starElement.style.display = 'inline'; +} + +function getStarsForGitHubRepos() { + Array.prototype.forEach.call(starsElements, element => { + const repo = element.getAttribute('data-repo'); + if (!repo) { + return; + } + + const key = `stars_v2_${repo}`; + + const now = Date.now(); + try { + const stored = JSON.parse(localStorage.getItem(key)); + const diff = now - stored.date; + // Cached for a week + const maxdiff = 7 * 24 * 60 * 60 * 1000; + if (diff < maxdiff) { + insertStarCount(element, stored.count); + return; + } + } catch (e) { + // Ignore bad data + console.error('Bad data in stored stars count, ignoring...', e); + } + + const url = `https://api.github.com/repos/${repo}`; + getStarsFromUrl(url).then(count => { + safeLocalStorageSetItem(key, JSON.stringify({ + date: now, + count: count + })); + + insertStarCount(element, count); + }).catch(e => { + console.error('Failed to get GitHub stars count for repository, ' + + 'is the repository URL OK? ', e); + }); + }); +} + +export function setupLibraries() { + getStarsForGitHubRepos(); + + librariesSelect.addEventListener('change', event => { + librariesGrid.arrange({ + filter: event.target.value + }); + }); +} diff --git a/src/website/navbar.js b/src/website/navbar.js new file mode 100644 index 00000000..db4821d0 --- /dev/null +++ b/src/website/navbar.js @@ -0,0 +1,53 @@ +import { getOffsetBoundingClientRect } from './utils.js'; + +import { + navbarElement, + menuTriggerElement, + menuLinks, + sectionElements, + menuScrollableLinks +} from './dom-elements.js'; + +export function setupNavbar() { + window.addEventListener('scroll', () => { + // Logo animation + if (window.pageYOffset >= 130) { + navbarElement.classList.add('fixed'); + } else { + navbarElement.classList.remove('fixed'); + } + + // Navbar highlighting + const navbarHeight = navbarElement.offsetHeight; + const windowPos = window.pageYOffset; + Array.prototype.forEach.call(sectionElements, section => { + const top = getOffsetBoundingClientRect(section).top - navbarHeight; + const bottom = top + section.offsetHeight; + + if (windowPos >= top && windowPos <= bottom) { + Array.prototype.forEach.call(menuScrollableLinks, link => { + if (link.getAttribute('href') === `#${section.id}`) { + link.classList.add('active'); + } else { + link.classList.remove('active'); + } + }); + } + }); + }); + + // Mobile menu + menuTriggerElement.addEventListener('click', () => { + menuTriggerElement.classList.toggle('active'); + navbarElement.classList.toggle('open'); + document.body.classList.toggle('menu-mobile'); + }); + + Array.prototype.forEach.call(menuLinks, item => { + item.addEventListener('click', () => { + menuTriggerElement.classList.remove('active'); + navbarElement.classList.remove('open'); + document.body.classList.remove('menu-mobile'); + }); + }); +} \ No newline at end of file diff --git a/src/website/strings.js b/src/website/strings.js new file mode 100644 index 00000000..b6e3367a --- /dev/null +++ b/src/website/strings.js @@ -0,0 +1,10 @@ +export default { + extension: { + alreadyInstalled: 'Already installed', + addToChrome: 'Add to Chrome' + }, + editor: { + signatureVerified: 'signature verified', + signatureInvalid: 'invalid signature' + } +}; diff --git a/src/website/utils.js b/src/website/utils.js new file mode 100644 index 00000000..f35b5955 --- /dev/null +++ b/src/website/utils.js @@ -0,0 +1,105 @@ +export function safeLocalStorageSetItem(key, value) { + try { + localStorage.setItem(key, value); + } catch (e) { + console.error(e); + // Safari when in private browsing doesn't allow it + } +} + +// https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript +export function getParameterByName(name, url) { + if(!url) { + url = window.location.href; + } + + name = name.replace(/[\[\]]/g, "\\$&"); + + const regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"); + const results = regex.exec(url); + if(!results) { + return null; + } + if(!results[2]) { + return ''; + } + + return decodeURIComponent(results[2].replace(/\+/g, " ")); +} + +// https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript +export function copyTextToClipboard(text) { + var textArea = document.createElement("textarea"); + + // + // *** This styling is an extra step which is likely not required. *** + // + // Why is it here? To ensure: + // 1. the element is able to have focus and selection. + // 2. if element was to flash render it has minimal visual impact. + // 3. less flakyness with selection and copying which **might** occur if + // the textarea element is not visible. + // + // The likelihood is the element won't even render, not even a flash, + // so some of these are just precautions. However in IE the element + // is visible whilst the popup box asking the user for permission for + // the web page to copy to the clipboard. + // + + // Place in top-left corner of screen regardless of scroll position. + textArea.style.position = 'fixed'; + textArea.style.top = 0; + textArea.style.left = 0; + + // Ensure it has a small width and height. Setting to 1px / 1em + // doesn't work as this gives a negative w/h on some browsers. + textArea.style.width = '2em'; + textArea.style.height = '2em'; + + // We don't need padding, reducing the size if it does flash render. + textArea.style.padding = 0; + + // Clean up any borders. + textArea.style.border = 'none'; + textArea.style.outline = 'none'; + textArea.style.boxShadow = 'none'; + + // Avoid flash of white box if rendered for any reason. + textArea.style.background = 'transparent'; + + textArea.value = text; + + document.body.appendChild(textArea); + + textArea.select(); + + try { + document.execCommand('copy'); + } catch (err) { + console.error(err); + } + + document.body.removeChild(textArea); +} + +export function getOffsetBoundingClientRect(element) { + const rect = element.getBoundingClientRect(); + + return { + top: rect.top + document.body.scrollTop, + left: rect.left + document.body.scrollLeft, + bottom: rect.bottom + document.body.scrollTop, + right: rect.right + document.body.scrollLeft + }; +} + +// From: https://gomakethings.com/how-to-test-if-an-element-is-in-the-viewport-with-vanilla-javascript/ +export function isInViewport(elem) { + const bounding = elem.getBoundingClientRect(); + return ( + bounding.top >= 0 && + bounding.left >= 0 && + bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && + bounding.right <= (window.innerWidth || document.documentElement.clientWidth) + ); +}; diff --git a/stylus/app.styl b/stylus/app.styl index 618258db..282f7615 100644 --- a/stylus/app.styl +++ b/stylus/app.styl @@ -768,6 +768,9 @@ body .panel-heading + padding 0 + border-bottom 0 + img float left width 45px @@ -781,6 +784,7 @@ body height: 90px; h3 font-size 18px + font-weight bold color white margin 0 padding 20px 20px 20px 70px @@ -872,6 +876,7 @@ body code font-size 12px color white + background-color black a color white text-decoration none diff --git a/vendor/codemirror/.bower.json b/vendor/codemirror/.bower.json deleted file mode 100644 index 2f3ba026..00000000 --- a/vendor/codemirror/.bower.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "CodeMirror", - "main": [ - "lib/codemirror.js", - "lib/codemirror.css" - ], - "ignore": [ - "**/.*", - "node_modules", - "components", - "bin", - "demo", - "doc", - "test", - "index.html", - "package.json" - ], - "homepage": "https://github.com/marijnh/CodeMirror", - "version": "4.0.1", - "_release": "4.0.1", - "_resolution": { - "type": "version", - "tag": "4.0.1", - "commit": "5dee39fa4f6447f1f3359f254795325ed282eb8e" - }, - "_source": "https://github.com/marijnh/CodeMirror.git", - "_target": "4.0.1", - "_originalSource": "https://github.com/marijnh/CodeMirror.git" -} \ No newline at end of file diff --git a/vendor/codemirror/AUTHORS b/vendor/codemirror/AUTHORS deleted file mode 100644 index 464249d7..00000000 --- a/vendor/codemirror/AUTHORS +++ /dev/null @@ -1,333 +0,0 @@ -List of CodeMirror contributors. Updated before every release. - -4r2r -Aaron Brooks -Abe Fettig -Adam Ahmed -Adam King -adanlobato -Adán Lobato -Adrian Aichner -aeroson -Ahmad Amireh -Ahmad M. Zawawi -ahoward -Akeksandr Motsjonov -Alberto González Palomo -Alberto Pose -Albert Xing -Alexander Pavlov -Alexander Schepanovski -Alexander Solovyov -alexey-k -Alex Piggott -Amsul -Amy -Ananya Sen -anaran -AndersMad -Anderson Mesquita -Andre von Houck -Andrey Lushnikov -Andy Joslin -Andy Kimball -Andy Li -angelozerr -angelo.zerr@gmail.com -Ankit Ahuja -Ansel Santosa -Anthony Grimes -Anton Kovalyov -areos -AtomicPages LLC -Atul Bhouraskar -Aurelian Oancea -Bastian Müller -benbro -Beni Cherniavsky-Paskin -Benjamin DeCoste -Ben Keen -Bernhard Sirlinger -Billy Moon -binny -B Krishna Chaitanya -Blaine G -boomyjee -borawjm -Brandon Frohs -Brandon Wamboldt -Brett Zamir -Brian Sletten -Bruce Mitchener -Chandra Sekhar Pydi -Charles Skelton -Chris Coyier -Chris Granger -Chris Houseknecht -Chris Morgan -Christopher Brown -ciaranj -CodeAnimal -ComFreek -Curtis Gagliardi -dagsta -Dan Heberden -Daniel, Dao Quang Minh -Daniel Faust -Daniel Huigens -Daniel KJ -Daniel Neel -Daniel Parnell -Danny Yoo -Darius Roberts -David Mignot -David Pathakjee -deebugger -Deep Thought -domagoj412 -Dominator008 -Domizio Demichelis -Drew Bratcher -Drew Hintz -Drew Khoury -Dror BG -duralog -eborden -edsharp -ekhaled -Enam Mijbah Noor -Eric Allam -eustas -Fabien O'Carroll -Fabio Zendhi Nagao -Fauntleroy -fbuchinger -feizhang365 -Felipe Lalanne -Felix Raab -Filip Noetzel -flack -ForbesLindesay -Forbes Lindesay -Ford_Lawnmower -Frank Wiegand -Gabriel Horner -Gabriel Nahmias -galambalazs -Gautam Mehta -Glenn Jorde -Glenn Ruehle -Golevka -Gordon Smith -Grant Skinner -greengiant -Guillaume Massé -Guillaume Massé -Hans Engel -Hardest -Hasan Karahan -hitsthings -Hocdoc -Ian Beck -Ian Dickinson -Ian Wehrman -Ian Wetherbee -Ice White -ICHIKAWA, Yuji -ilvalle -Ingo Richter -Irakli Gozalishvili -Ivan Kurnosov -Jacob Lee -Jakob Miland -Jakub Vrana -James Campos -James Thorne -Jamie Hill -Jan Jongboom -jankeromnes -Jan Keromnes -Jan Odvarko -Jan T. Sott -Jason -Jason Grout -Jason Johnston -Jason San Jose -Jason Siefken -Jean Boussier -jeffkenton -Jeff Pickhardt -jem (graphite) -Jochen Berger -Johan Ask -John Connor -John Lees-Miller -John Snelson -John Van Der Loo -Jonathan Malmaud -jongalloway -Jon Malmaud -Joost-Wim Boekesteijn -Joseph Pecoraro -Joshua Newman -jots -jsoojeon -Juan Benavides Romero -Jucovschi Constantin -Juho Vuori -jwallers@gmail.com -kaniga -Ken Newman -Ken Rockot -Kevin Sawicki -Klaus Silveira -Koh Zi Han, Cliff -komakino -Konstantin Lopuhin -koops -ks-ifware -kubelsmieci -Lanny -Laszlo Vidacs -leaf corcoran -Leonya Khachaturov -Liam Newman -LM -Lorenzo Stoakes -Luciano Longo -lynschinzer -Maksim Lin -Maksym Taran -Malay Majithia -Manuel Rego Casasnovas -Marat Dreizin -Marco Aurélio -Marco Munizaga -Marijn Haverbeke -Mario Pietsch -Mark Lentczner -Marko Bonaci -Martin Balek -Martín Gaitán -Martin Hasoň -Mason Malone -Mateusz Paprocki -mats cronqvist -Matthew Beale -Matthias BUSSONNIER -Matt McDonald -Matt Pass -Matt Sacks -Maximilian Hils -Maxim Kraev -Max Kirsch -mbarkhau -Metatheos -Micah Dubinko -Michael Lehenbauer -Michael Zhou -Mighty Guava -Miguel Castillo -Mike -Mike Brevoort -Mike Diaz -Mike Ivanov -Mike Kadin -MinRK -Miraculix87 -misfo -mloginov -mps -mtaran-google -Narciso Jaramillo -Nathan Williams -ndr -nerbert -nextrevision -nguillaumin -Ng Zhi An -Nicholas Bollweg -Niels van Groningen -Nikita Beloglazov -Nikita Vasilyev -Nikolay Kostov -nlwillia -pablo -Page -Patil Arpith -Patrick Strawderman -Paul Garvin -Paul Ivanov -Pavel Feldman -Pavel Strashkin -Paweł Bartkiewicz -peteguhl -peterkroon -Peter Kroon -prasanthj -Prasanth J -Rahul -Randy Edmunds -Rasmus Erik Voel Jensen -Richard Z.H. Wang -robertop23 -Robert Plummer -Ruslan Osmanov -Ryan Prior -sabaca -Samuel Ainsworth -sandeepshetty -santec -Sascha Peilicke -satchmorun -sathyamoorthi -SCLINIC\jdecker -Sebastian Zaha -shaund -shaun gilchrist -Shawn A -sheopory -Shiv Deepak -Shmuel Englard -soliton4 -sonson -spastorelli -Stanislav Oaserele -Stas Kobzar -Stefan Borsje -Steffen Beyer -Steve O'Hara -stoskov -Taha Jahangir -Tarmil -tfjgeorge -Thaddee Tyl -think -Thomas Dvornik -Thomas Schmid -Tim Baumann -Timothy Farrell -Timothy Hatcher -TobiasBg -Tomas-A -Tomas Varaneckas -Tom Erik Støwer -Tom MacWright -Tony Jian -Travis Heppe -Triangle717 -twifkak -Vestimir Markov -vf -Volker Mische -wenli -Wesley Wiser -William Jamieson -Wojtek Ptak -Xavier Mendez -YNH Webdev -Yunchi Luo -Yuvi Panda -Zachary Dremann -zziuni -魏鹏刚 diff --git a/vendor/codemirror/CONTRIBUTING.md b/vendor/codemirror/CONTRIBUTING.md deleted file mode 100644 index 8938f620..00000000 --- a/vendor/codemirror/CONTRIBUTING.md +++ /dev/null @@ -1,72 +0,0 @@ -# How to contribute - -- [Getting help](#getting-help-) -- [Submitting bug reports](#submitting-bug-reports-) -- [Contributing code](#contributing-code-) - -## Getting help - -Community discussion, questions, and informal bug reporting is done on the -[CodeMirror Google group](http://groups.google.com/group/codemirror). - -## Submitting bug reports - -The preferred way to report bugs is to use the -[GitHub issue tracker](http://github.com/marijnh/CodeMirror/issues). Before -reporting a bug, read these pointers. - -**Note:** The issue tracker is for *bugs*, not requests for help. Questions -should be asked on the -[CodeMirror Google group](http://groups.google.com/group/codemirror) instead. - -### Reporting bugs effectively - -- CodeMirror is maintained by volunteers. They don't owe you anything, so be - polite. Reports with an indignant or belligerent tone tend to be moved to the - bottom of the pile. - -- Include information about **the browser in which the problem occurred**. Even - if you tested several browsers, and the problem occurred in all of them, - mention this fact in the bug report. Also include browser version numbers and - the operating system that you're on. - -- Mention which release of CodeMirror you're using. Preferably, try also with - the current development snapshot, to ensure the problem has not already been - fixed. - -- Mention very precisely what went wrong. "X is broken" is not a good bug - report. What did you expect to happen? What happened instead? Describe the - exact steps a maintainer has to take to make the problem occur. We can not - fix something that we can not observe. - -- If the problem can not be reproduced in any of the demos included in the - CodeMirror distribution, please provide an HTML document that demonstrates - the problem. The best way to do this is to go to - [jsbin.com](http://jsbin.com/ihunin/edit), enter it there, press save, and - include the resulting link in your bug report. - -## Contributing code - -- Make sure you have a [GitHub Account](https://github.com/signup/free) -- Fork [CodeMirror](https://github.com/marijnh/CodeMirror/) - ([how to fork a repo](https://help.github.com/articles/fork-a-repo)) -- Make your changes -- If your changes are easy to test or likely to regress, add tests. - Tests for the core go into `test/test.js`, some modes have their own - test suite under `mode/XXX/test.js`. Feel free to add new test - suites to modes that don't have one yet (be sure to link the new - tests into `test/index.html`). -- Follow the general code style of the rest of the project (see - below). Run `bin/lint` to verify that the linter is happy. -- Make sure all tests pass. Visit `test/index.html` in your browser to - run them. -- Submit a pull request -([how to create a pull request](https://help.github.com/articles/fork-a-repo)) - -### Coding standards - -- 2 spaces per indentation level, no tabs. -- Include semicolons after statements. -- Note that the linter (`bin/lint`) which is run after each commit - complains about unused variables and functions. Prefix their names - with an underscore to muffle it. diff --git a/vendor/codemirror/LICENSE b/vendor/codemirror/LICENSE deleted file mode 100644 index 442d11cd..00000000 --- a/vendor/codemirror/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2013 by Marijn Haverbeke and others - -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. diff --git a/vendor/codemirror/README.md b/vendor/codemirror/README.md deleted file mode 100644 index 61f6b645..00000000 --- a/vendor/codemirror/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# CodeMirror -[![Build Status](https://secure.travis-ci.org/marijnh/CodeMirror.png?branch=master)](http://travis-ci.org/marijnh/CodeMirror) -[![NPM version](https://badge.fury.io/js/codemirror.png)](http://badge.fury.io/js/codemirror) - -CodeMirror is a JavaScript component that provides a code editor in -the browser. When a mode is available for the language you are coding -in, it will color your code, and optionally help with indentation. - -The project page is http://codemirror.net -The manual is at http://codemirror.net/doc/manual.html -The contributing guidelines are in [CONTRIBUTING.md](https://github.com/marijnh/CodeMirror/blob/master/CONTRIBUTING.md) diff --git a/vendor/codemirror/addon/comment/comment.js b/vendor/codemirror/addon/comment/comment.js deleted file mode 100644 index 1eb9a05c..00000000 --- a/vendor/codemirror/addon/comment/comment.js +++ /dev/null @@ -1,169 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var noOptions = {}; - var nonWS = /[^\s\u00a0]/; - var Pos = CodeMirror.Pos; - - function firstNonWS(str) { - var found = str.search(nonWS); - return found == -1 ? 0 : found; - } - - CodeMirror.commands.toggleComment = function(cm) { - var minLine = Infinity, ranges = cm.listSelections(), mode = null; - for (var i = ranges.length - 1; i >= 0; i--) { - var from = ranges[i].from(), to = ranges[i].to(); - if (from.line >= minLine) continue; - if (to.line >= minLine) to = Pos(minLine, 0); - minLine = from.line; - if (mode == null) { - if (cm.uncomment(from, to)) mode = "un"; - else { cm.lineComment(from, to); mode = "line"; } - } else if (mode == "un") { - cm.uncomment(from, to); - } else { - cm.lineComment(from, to); - } - } - }; - - CodeMirror.defineExtension("lineComment", function(from, to, options) { - if (!options) options = noOptions; - var self = this, mode = self.getModeAt(from); - var commentString = options.lineComment || mode.lineComment; - if (!commentString) { - if (options.blockCommentStart || mode.blockCommentStart) { - options.fullLines = true; - self.blockComment(from, to, options); - } - return; - } - var firstLine = self.getLine(from.line); - if (firstLine == null) return; - var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1); - var pad = options.padding == null ? " " : options.padding; - var blankLines = options.commentBlankLines || from.line == to.line; - - self.operation(function() { - if (options.indent) { - var baseString = firstLine.slice(0, firstNonWS(firstLine)); - for (var i = from.line; i < end; ++i) { - var line = self.getLine(i), cut = baseString.length; - if (!blankLines && !nonWS.test(line)) continue; - if (line.slice(0, cut) != baseString) cut = firstNonWS(line); - self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut)); - } - } else { - for (var i = from.line; i < end; ++i) { - if (blankLines || nonWS.test(self.getLine(i))) - self.replaceRange(commentString + pad, Pos(i, 0)); - } - } - }); - }); - - CodeMirror.defineExtension("blockComment", function(from, to, options) { - if (!options) options = noOptions; - var self = this, mode = self.getModeAt(from); - var startString = options.blockCommentStart || mode.blockCommentStart; - var endString = options.blockCommentEnd || mode.blockCommentEnd; - if (!startString || !endString) { - if ((options.lineComment || mode.lineComment) && options.fullLines != false) - self.lineComment(from, to, options); - return; - } - - var end = Math.min(to.line, self.lastLine()); - if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end; - - var pad = options.padding == null ? " " : options.padding; - if (from.line > end) return; - - self.operation(function() { - if (options.fullLines != false) { - var lastLineHasText = nonWS.test(self.getLine(end)); - self.replaceRange(pad + endString, Pos(end)); - self.replaceRange(startString + pad, Pos(from.line, 0)); - var lead = options.blockCommentLead || mode.blockCommentLead; - if (lead != null) for (var i = from.line + 1; i <= end; ++i) - if (i != end || lastLineHasText) - self.replaceRange(lead + pad, Pos(i, 0)); - } else { - self.replaceRange(endString, to); - self.replaceRange(startString, from); - } - }); - }); - - CodeMirror.defineExtension("uncomment", function(from, to, options) { - if (!options) options = noOptions; - var self = this, mode = self.getModeAt(from); - var end = Math.min(to.line, self.lastLine()), start = Math.min(from.line, end); - - // Try finding line comments - var lineString = options.lineComment || mode.lineComment, lines = []; - var pad = options.padding == null ? " " : options.padding, didSomething; - lineComment: { - if (!lineString) break lineComment; - for (var i = start; i <= end; ++i) { - var line = self.getLine(i); - var found = line.indexOf(lineString); - if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1; - if (found == -1 && (i != end || i == start) && nonWS.test(line)) break lineComment; - if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment; - lines.push(line); - } - self.operation(function() { - for (var i = start; i <= end; ++i) { - var line = lines[i - start]; - var pos = line.indexOf(lineString), endPos = pos + lineString.length; - if (pos < 0) continue; - if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length; - didSomething = true; - self.replaceRange("", Pos(i, pos), Pos(i, endPos)); - } - }); - if (didSomething) return true; - } - - // Try block comments - var startString = options.blockCommentStart || mode.blockCommentStart; - var endString = options.blockCommentEnd || mode.blockCommentEnd; - if (!startString || !endString) return false; - var lead = options.blockCommentLead || mode.blockCommentLead; - var startLine = self.getLine(start), endLine = end == start ? startLine : self.getLine(end); - var open = startLine.indexOf(startString), close = endLine.lastIndexOf(endString); - if (close == -1 && start != end) { - endLine = self.getLine(--end); - close = endLine.lastIndexOf(endString); - } - if (open == -1 || close == -1 || - !/comment/.test(self.getTokenTypeAt(Pos(start, open + 1))) || - !/comment/.test(self.getTokenTypeAt(Pos(end, close + 1)))) - return false; - - self.operation(function() { - self.replaceRange("", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)), - Pos(end, close + endString.length)); - var openEnd = open + startString.length; - if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length; - self.replaceRange("", Pos(start, open), Pos(start, openEnd)); - if (lead) for (var i = start + 1; i <= end; ++i) { - var line = self.getLine(i), found = line.indexOf(lead); - if (found == -1 || nonWS.test(line.slice(0, found))) continue; - var foundEnd = found + lead.length; - if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length; - self.replaceRange("", Pos(i, found), Pos(i, foundEnd)); - } - }); - return true; - }); -}); diff --git a/vendor/codemirror/addon/comment/continuecomment.js b/vendor/codemirror/addon/comment/continuecomment.js deleted file mode 100644 index 42277267..00000000 --- a/vendor/codemirror/addon/comment/continuecomment.js +++ /dev/null @@ -1,82 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - var modes = ["clike", "css", "javascript"]; - - for (var i = 0; i < modes.length; ++i) - CodeMirror.extendMode(modes[i], {blockCommentContinue: " * "}); - - function continueComment(cm) { - if (cm.getOption("disableInput")) return CodeMirror.Pass; - var ranges = cm.listSelections(), mode, inserts = []; - for (var i = 0; i < ranges.length; i++) { - var pos = ranges[i].head, token = cm.getTokenAt(pos); - if (token.type != "comment") return CodeMirror.Pass; - var modeHere = CodeMirror.innerMode(cm.getMode(), token.state).mode; - if (!mode) mode = modeHere; - else if (mode != modeHere) return CodeMirror.Pass; - - var insert = null; - if (mode.blockCommentStart && mode.blockCommentContinue) { - var end = token.string.indexOf(mode.blockCommentEnd); - var full = cm.getRange(CodeMirror.Pos(pos.line, 0), CodeMirror.Pos(pos.line, token.end)), found; - if (end != -1 && end == token.string.length - mode.blockCommentEnd.length && pos.ch >= end) { - // Comment ended, don't continue it - } else if (token.string.indexOf(mode.blockCommentStart) == 0) { - insert = full.slice(0, token.start); - if (!/^\s*$/.test(insert)) { - insert = ""; - for (var j = 0; j < token.start; ++j) insert += " "; - } - } else if ((found = full.indexOf(mode.blockCommentContinue)) != -1 && - found + mode.blockCommentContinue.length > token.start && - /^\s*$/.test(full.slice(0, found))) { - insert = full.slice(0, found); - } - if (insert != null) insert += mode.blockCommentContinue; - } - if (insert == null && mode.lineComment && continueLineCommentEnabled(cm)) { - var line = cm.getLine(pos.line), found = line.indexOf(mode.lineComment); - if (found > -1) { - insert = line.slice(0, found); - if (/\S/.test(insert)) insert = null; - else insert += mode.lineComment + line.slice(found + mode.lineComment.length).match(/^\s*/)[0]; - } - } - if (insert == null) return CodeMirror.Pass; - inserts[i] = "\n" + insert; - } - - cm.operation(function() { - for (var i = ranges.length - 1; i >= 0; i--) - cm.replaceRange(inserts[i], ranges[i].from(), ranges[i].to(), "+insert"); - }); - } - - function continueLineCommentEnabled(cm) { - var opt = cm.getOption("continueComments"); - if (opt && typeof opt == "object") - return opt.continueLineComment !== false; - return true; - } - - CodeMirror.defineOption("continueComments", null, function(cm, val, prev) { - if (prev && prev != CodeMirror.Init) - cm.removeKeyMap("continueComment"); - if (val) { - var key = "Enter"; - if (typeof val == "string") - key = val; - else if (typeof val == "object" && val.key) - key = val.key; - var map = {name: "continueComment"}; - map[key] = continueComment; - cm.addKeyMap(map); - } - }); -}); diff --git a/vendor/codemirror/addon/dialog/dialog.css b/vendor/codemirror/addon/dialog/dialog.css deleted file mode 100644 index 2e7c0fc9..00000000 --- a/vendor/codemirror/addon/dialog/dialog.css +++ /dev/null @@ -1,32 +0,0 @@ -.CodeMirror-dialog { - position: absolute; - left: 0; right: 0; - background: white; - z-index: 15; - padding: .1em .8em; - overflow: hidden; - color: #333; -} - -.CodeMirror-dialog-top { - border-bottom: 1px solid #eee; - top: 0; -} - -.CodeMirror-dialog-bottom { - border-top: 1px solid #eee; - bottom: 0; -} - -.CodeMirror-dialog input { - border: none; - outline: none; - background: transparent; - width: 20em; - color: inherit; - font-family: monospace; -} - -.CodeMirror-dialog button { - font-size: 70%; -} diff --git a/vendor/codemirror/addon/dialog/dialog.js b/vendor/codemirror/addon/dialog/dialog.js deleted file mode 100644 index 586b7370..00000000 --- a/vendor/codemirror/addon/dialog/dialog.js +++ /dev/null @@ -1,130 +0,0 @@ -// Open simple dialogs on top of an editor. Relies on dialog.css. - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - function dialogDiv(cm, template, bottom) { - var wrap = cm.getWrapperElement(); - var dialog; - dialog = wrap.appendChild(document.createElement("div")); - if (bottom) { - dialog.className = "CodeMirror-dialog CodeMirror-dialog-bottom"; - } else { - dialog.className = "CodeMirror-dialog CodeMirror-dialog-top"; - } - if (typeof template == "string") { - dialog.innerHTML = template; - } else { // Assuming it's a detached DOM element. - dialog.appendChild(template); - } - return dialog; - } - - function closeNotification(cm, newVal) { - if (cm.state.currentNotificationClose) - cm.state.currentNotificationClose(); - cm.state.currentNotificationClose = newVal; - } - - CodeMirror.defineExtension("openDialog", function(template, callback, options) { - closeNotification(this, null); - var dialog = dialogDiv(this, template, options && options.bottom); - var closed = false, me = this; - function close() { - if (closed) return; - closed = true; - dialog.parentNode.removeChild(dialog); - } - var inp = dialog.getElementsByTagName("input")[0], button; - if (inp) { - if (options && options.value) inp.value = options.value; - CodeMirror.on(inp, "keydown", function(e) { - if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; } - if (e.keyCode == 13 || e.keyCode == 27) { - inp.blur(); - CodeMirror.e_stop(e); - close(); - me.focus(); - if (e.keyCode == 13) callback(inp.value); - } - }); - if (options && options.onKeyUp) { - CodeMirror.on(inp, "keyup", function(e) {options.onKeyUp(e, inp.value, close);}); - } - if (options && options.value) inp.value = options.value; - inp.focus(); - CodeMirror.on(inp, "blur", close); - } else if (button = dialog.getElementsByTagName("button")[0]) { - CodeMirror.on(button, "click", function() { - close(); - me.focus(); - }); - button.focus(); - CodeMirror.on(button, "blur", close); - } - return close; - }); - - CodeMirror.defineExtension("openConfirm", function(template, callbacks, options) { - closeNotification(this, null); - var dialog = dialogDiv(this, template, options && options.bottom); - var buttons = dialog.getElementsByTagName("button"); - var closed = false, me = this, blurring = 1; - function close() { - if (closed) return; - closed = true; - dialog.parentNode.removeChild(dialog); - me.focus(); - } - buttons[0].focus(); - for (var i = 0; i < buttons.length; ++i) { - var b = buttons[i]; - (function(callback) { - CodeMirror.on(b, "click", function(e) { - CodeMirror.e_preventDefault(e); - close(); - if (callback) callback(me); - }); - })(callbacks[i]); - CodeMirror.on(b, "blur", function() { - --blurring; - setTimeout(function() { if (blurring <= 0) close(); }, 200); - }); - CodeMirror.on(b, "focus", function() { ++blurring; }); - } - }); - - /* - * openNotification - * Opens a notification, that can be closed with an optional timer - * (default 5000ms timer) and always closes on click. - * - * If a notification is opened while another is opened, it will close the - * currently opened one and open the new one immediately. - */ - CodeMirror.defineExtension("openNotification", function(template, options) { - closeNotification(this, close); - var dialog = dialogDiv(this, template, options && options.bottom); - var duration = options && (options.duration === undefined ? 5000 : options.duration); - var closed = false, doneTimer; - - function close() { - if (closed) return; - closed = true; - clearTimeout(doneTimer); - dialog.parentNode.removeChild(dialog); - } - - CodeMirror.on(dialog, 'click', function(e) { - CodeMirror.e_preventDefault(e); - close(); - }); - if (duration) - doneTimer = setTimeout(close, options.duration); - }); -}); diff --git a/vendor/codemirror/addon/display/fullscreen.css b/vendor/codemirror/addon/display/fullscreen.css deleted file mode 100644 index 437acd89..00000000 --- a/vendor/codemirror/addon/display/fullscreen.css +++ /dev/null @@ -1,6 +0,0 @@ -.CodeMirror-fullscreen { - position: fixed; - top: 0; left: 0; right: 0; bottom: 0; - height: auto; - z-index: 9; -} diff --git a/vendor/codemirror/addon/display/fullscreen.js b/vendor/codemirror/addon/display/fullscreen.js deleted file mode 100644 index e39c6e16..00000000 --- a/vendor/codemirror/addon/display/fullscreen.js +++ /dev/null @@ -1,38 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineOption("fullScreen", false, function(cm, val, old) { - if (old == CodeMirror.Init) old = false; - if (!old == !val) return; - if (val) setFullscreen(cm); - else setNormal(cm); - }); - - function setFullscreen(cm) { - var wrap = cm.getWrapperElement(); - cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset, - width: wrap.style.width, height: wrap.style.height}; - wrap.style.width = ""; - wrap.style.height = "auto"; - wrap.className += " CodeMirror-fullscreen"; - document.documentElement.style.overflow = "hidden"; - cm.refresh(); - } - - function setNormal(cm) { - var wrap = cm.getWrapperElement(); - wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/, ""); - document.documentElement.style.overflow = ""; - var info = cm.state.fullScreenRestore; - wrap.style.width = info.width; wrap.style.height = info.height; - window.scrollTo(info.scrollLeft, info.scrollTop); - cm.refresh(); - } -}); diff --git a/vendor/codemirror/addon/display/placeholder.js b/vendor/codemirror/addon/display/placeholder.js deleted file mode 100644 index 0fdc9b0d..00000000 --- a/vendor/codemirror/addon/display/placeholder.js +++ /dev/null @@ -1,55 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - CodeMirror.defineOption("placeholder", "", function(cm, val, old) { - var prev = old && old != CodeMirror.Init; - if (val && !prev) { - cm.on("blur", onBlur); - cm.on("change", onChange); - onChange(cm); - } else if (!val && prev) { - cm.off("blur", onBlur); - cm.off("change", onChange); - clearPlaceholder(cm); - var wrapper = cm.getWrapperElement(); - wrapper.className = wrapper.className.replace(" CodeMirror-empty", ""); - } - - if (val && !cm.hasFocus()) onBlur(cm); - }); - - function clearPlaceholder(cm) { - if (cm.state.placeholder) { - cm.state.placeholder.parentNode.removeChild(cm.state.placeholder); - cm.state.placeholder = null; - } - } - function setPlaceholder(cm) { - clearPlaceholder(cm); - var elt = cm.state.placeholder = document.createElement("pre"); - elt.style.cssText = "height: 0; overflow: visible"; - elt.className = "CodeMirror-placeholder"; - elt.appendChild(document.createTextNode(cm.getOption("placeholder"))); - cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild); - } - - function onBlur(cm) { - if (isEmpty(cm)) setPlaceholder(cm); - } - function onChange(cm) { - var wrapper = cm.getWrapperElement(), empty = isEmpty(cm); - wrapper.className = wrapper.className.replace(" CodeMirror-empty", "") + (empty ? " CodeMirror-empty" : ""); - - if (empty) setPlaceholder(cm); - else clearPlaceholder(cm); - } - - function isEmpty(cm) { - return (cm.lineCount() === 1) && (cm.getLine(0) === ""); - } -}); diff --git a/vendor/codemirror/addon/display/rulers.js b/vendor/codemirror/addon/display/rulers.js deleted file mode 100644 index eb0ff06e..00000000 --- a/vendor/codemirror/addon/display/rulers.js +++ /dev/null @@ -1,54 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineOption("rulers", false, function(cm, val, old) { - if (old && old != CodeMirror.Init) { - clearRulers(cm); - cm.off("refresh", refreshRulers); - } - if (val && val.length) { - setRulers(cm); - cm.on("refresh", refreshRulers); - } - }); - - function clearRulers(cm) { - for (var i = cm.display.lineSpace.childNodes.length - 1; i >= 0; i--) { - var node = cm.display.lineSpace.childNodes[i]; - if (/(^|\s)CodeMirror-ruler($|\s)/.test(node.className)) - node.parentNode.removeChild(node); - } - } - - function setRulers(cm) { - var val = cm.getOption("rulers"); - var cw = cm.defaultCharWidth(); - var left = cm.charCoords(CodeMirror.Pos(cm.firstLine(), 0), "div").left; - var bot = -cm.display.scroller.offsetHeight; - for (var i = 0; i < val.length; i++) { - var elt = document.createElement("div"); - var col, cls = null; - if (typeof val[i] == "number") { - col = val[i]; - } else { - col = val[i].column; - cls = val[i].className; - } - elt.className = "CodeMirror-ruler" + (cls ? " " + cls : ""); - elt.style.cssText = "left: " + (left + col * cw) + "px; top: -50px; bottom: " + bot + "px"; - cm.display.lineSpace.insertBefore(elt, cm.display.cursorDiv); - } - } - - function refreshRulers(cm) { - clearRulers(cm); - setRulers(cm); - } -}); diff --git a/vendor/codemirror/addon/edit/closebrackets.js b/vendor/codemirror/addon/edit/closebrackets.js deleted file mode 100644 index f48ad881..00000000 --- a/vendor/codemirror/addon/edit/closebrackets.js +++ /dev/null @@ -1,123 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - var DEFAULT_BRACKETS = "()[]{}''\"\""; - var DEFAULT_EXPLODE_ON_ENTER = "[]{}"; - var SPACE_CHAR_REGEX = /\s/; - - CodeMirror.defineOption("autoCloseBrackets", false, function(cm, val, old) { - if (old != CodeMirror.Init && old) - cm.removeKeyMap("autoCloseBrackets"); - if (!val) return; - var pairs = DEFAULT_BRACKETS, explode = DEFAULT_EXPLODE_ON_ENTER; - if (typeof val == "string") pairs = val; - else if (typeof val == "object") { - if (val.pairs != null) pairs = val.pairs; - if (val.explode != null) explode = val.explode; - } - var map = buildKeymap(pairs); - if (explode) map.Enter = buildExplodeHandler(explode); - cm.addKeyMap(map); - }); - - function charsAround(cm, pos) { - var str = cm.getRange(CodeMirror.Pos(pos.line, pos.ch - 1), - CodeMirror.Pos(pos.line, pos.ch + 1)); - return str.length == 2 ? str : null; - } - - function buildKeymap(pairs) { - var map = { - name : "autoCloseBrackets", - Backspace: function(cm) { - if (cm.getOption("disableInput")) return CodeMirror.Pass; - var ranges = cm.listSelections(); - for (var i = 0; i < ranges.length; i++) { - if (!ranges[i].empty()) return CodeMirror.Pass; - var around = charsAround(cm, ranges[i].head); - if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass; - } - for (var i = ranges.length - 1; i >= 0; i--) { - var cur = ranges[i].head; - cm.replaceRange("", CodeMirror.Pos(cur.line, cur.ch - 1), CodeMirror.Pos(cur.line, cur.ch + 1)); - } - } - }; - var closingBrackets = ""; - for (var i = 0; i < pairs.length; i += 2) (function(left, right) { - if (left != right) closingBrackets += right; - map["'" + left + "'"] = function(cm) { - if (cm.getOption("disableInput")) return CodeMirror.Pass; - var ranges = cm.listSelections(), type, next; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i], cur = range.head, curType; - if (left == "'" && cm.getTokenTypeAt(cur) == "comment") - return CodeMirror.Pass; - var next = cm.getRange(cur, CodeMirror.Pos(cur.line, cur.ch + 1)); - if (!range.empty()) - curType = "surround"; - else if (left == right && next == right) - curType = "skip"; - else if (left == right && CodeMirror.isWordChar(next)) - return CodeMirror.Pass; - else if (cm.getLine(cur.line).length == cur.ch || closingBrackets.indexOf(next) >= 0 || SPACE_CHAR_REGEX.test(next)) - curType = "both"; - else - return CodeMirror.Pass; - if (!type) type = curType; - else if (type != curType) return CodeMirror.Pass; - } - - if (type == "skip") { - cm.execCommand("goCharRight"); - } else if (type == "surround") { - var sels = cm.getSelections(); - for (var i = 0; i < sels.length; i++) - sels[i] = left + sels[i] + right; - cm.replaceSelections(sels, "around"); - } else if (type == "both") { - cm.replaceSelection(left + right, null); - cm.execCommand("goCharLeft"); - } - }; - if (left != right) map["'" + right + "'"] = function(cm) { - var ranges = cm.listSelections(); - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (!range.empty() || - cm.getRange(range.head, CodeMirror.Pos(range.head.line, range.head.ch + 1)) != right) - return CodeMirror.Pass; - } - cm.execCommand("goCharRight"); - }; - })(pairs.charAt(i), pairs.charAt(i + 1)); - return map; - } - - function buildExplodeHandler(pairs) { - return function(cm) { - if (cm.getOption("disableInput")) return CodeMirror.Pass; - var ranges = cm.listSelections(); - for (var i = 0; i < ranges.length; i++) { - if (!ranges[i].empty()) return CodeMirror.Pass; - var around = charsAround(cm, ranges[i].head); - if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass; - } - cm.operation(function() { - cm.replaceSelection("\n\n", null); - cm.execCommand("goCharLeft"); - ranges = cm.listSelections(); - for (var i = 0; i < ranges.length; i++) { - var line = ranges[i].head.line; - cm.indentLine(line, null, true); - cm.indentLine(line + 1, null, true); - } - }); - }; - } -}); diff --git a/vendor/codemirror/addon/edit/closetag.js b/vendor/codemirror/addon/edit/closetag.js deleted file mode 100644 index c7c0701b..00000000 --- a/vendor/codemirror/addon/edit/closetag.js +++ /dev/null @@ -1,116 +0,0 @@ -/** - * Tag-closer extension for CodeMirror. - * - * This extension adds an "autoCloseTags" option that can be set to - * either true to get the default behavior, or an object to further - * configure its behavior. - * - * These are supported options: - * - * `whenClosing` (default true) - * Whether to autoclose when the '/' of a closing tag is typed. - * `whenOpening` (default true) - * Whether to autoclose the tag when the final '>' of an opening - * tag is typed. - * `dontCloseTags` (default is empty tags for HTML, none for XML) - * An array of tag names that should not be autoclosed. - * `indentTags` (default is block tags for HTML, none for XML) - * An array of tag names that should, when opened, cause a - * blank line to be added inside the tag, and the blank line and - * closing line to be indented. - * - * See demos/closetag.html for a usage example. - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../fold/xml-fold")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../fold/xml-fold"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - CodeMirror.defineOption("autoCloseTags", false, function(cm, val, old) { - if (old != CodeMirror.Init && old) - cm.removeKeyMap("autoCloseTags"); - if (!val) return; - var map = {name: "autoCloseTags"}; - if (typeof val != "object" || val.whenClosing) - map["'/'"] = function(cm) { return autoCloseSlash(cm); }; - if (typeof val != "object" || val.whenOpening) - map["'>'"] = function(cm) { return autoCloseGT(cm); }; - cm.addKeyMap(map); - }); - - var htmlDontClose = ["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", - "source", "track", "wbr"]; - var htmlIndent = ["applet", "blockquote", "body", "button", "div", "dl", "fieldset", "form", "frameset", "h1", "h2", "h3", "h4", - "h5", "h6", "head", "html", "iframe", "layer", "legend", "object", "ol", "p", "select", "table", "ul"]; - - function autoCloseGT(cm) { - if (cm.getOption("disableInput")) return CodeMirror.Pass; - var ranges = cm.listSelections(), replacements = []; - for (var i = 0; i < ranges.length; i++) { - if (!ranges[i].empty()) return CodeMirror.Pass; - var pos = ranges[i].head, tok = cm.getTokenAt(pos); - var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state; - if (inner.mode.name != "xml" || !state.tagName) return CodeMirror.Pass; - var opt = cm.getOption("autoCloseTags"), html = inner.mode.configuration == "html"; - var dontCloseTags = (typeof opt == "object" && opt.dontCloseTags) || (html && htmlDontClose); - var indentTags = (typeof opt == "object" && opt.indentTags) || (html && htmlIndent); - - var tagName = state.tagName; - if (tok.end > pos.ch) tagName = tagName.slice(0, tagName.length - tok.end + pos.ch); - var lowerTagName = tagName.toLowerCase(); - // Don't process the '>' at the end of an end-tag or self-closing tag - if (!tagName || - tok.type == "string" && (tok.end != pos.ch || !/[\"\']/.test(tok.string.charAt(tok.string.length - 1)) || tok.string.length == 1) || - tok.type == "tag" && state.type == "closeTag" || - tok.string.indexOf("/") == (tok.string.length - 1) || // match something like - dontCloseTags && indexOf(dontCloseTags, lowerTagName) > -1 || - CodeMirror.scanForClosingTag && CodeMirror.scanForClosingTag(cm, pos, tagName, - Math.min(cm.lastLine() + 1, pos.line + 50))) - return CodeMirror.Pass; - - var indent = indentTags && indexOf(indentTags, lowerTagName) > -1; - replacements[i] = {indent: indent, - text: ">" + (indent ? "\n\n" : "") + "", - newPos: indent ? CodeMirror.Pos(pos.line + 1, 0) : CodeMirror.Pos(pos.line, pos.ch + 1)}; - } - - for (var i = ranges.length - 1; i >= 0; i--) { - var info = replacements[i]; - cm.replaceRange(info.text, ranges[i].head, ranges[i].anchor, "+insert"); - var sel = cm.listSelections().slice(0); - sel[i] = {head: info.newPos, anchor: info.newPos}; - cm.setSelections(sel); - if (info.indent) { - cm.indentLine(info.newPos.line, null, true); - cm.indentLine(info.newPos.line + 1, null, true); - } - } - } - - function autoCloseSlash(cm) { - if (cm.getOption("disableInput")) return CodeMirror.Pass; - var ranges = cm.listSelections(), replacements = []; - for (var i = 0; i < ranges.length; i++) { - if (!ranges[i].empty()) return CodeMirror.Pass; - var pos = ranges[i].head, tok = cm.getTokenAt(pos); - var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state; - if (tok.type == "string" || tok.string.charAt(0) != "<" || - tok.start != pos.ch - 1 || inner.mode.name != "xml" || - !state.context || !state.context.tagName) - return CodeMirror.Pass; - replacements[i] = "/" + state.context.tagName + ">"; - } - cm.replaceSelections(replacements); - } - - function indexOf(collection, elt) { - if (collection.indexOf) return collection.indexOf(elt); - for (var i = 0, e = collection.length; i < e; ++i) - if (collection[i] == elt) return i; - return -1; - } -}); diff --git a/vendor/codemirror/addon/edit/continuelist.js b/vendor/codemirror/addon/edit/continuelist.js deleted file mode 100644 index 2946aa6a..00000000 --- a/vendor/codemirror/addon/edit/continuelist.js +++ /dev/null @@ -1,35 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var listRE = /^(\s*)([*+-]|(\d+)\.)(\s*)/, - unorderedBullets = "*+-"; - - CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) { - if (cm.getOption("disableInput")) return CodeMirror.Pass; - var ranges = cm.listSelections(), replacements = []; - for (var i = 0; i < ranges.length; i++) { - var pos = ranges[i].head, match; - var inList = cm.getStateAfter(pos.line).list !== false; - - if (!ranges[i].empty() || !inList || !(match = cm.getLine(pos.line).match(listRE))) { - cm.execCommand("newlineAndIndent"); - return; - } - var indent = match[1], after = match[4]; - var bullet = unorderedBullets.indexOf(match[2]) >= 0 - ? match[2] - : (parseInt(match[3], 10) + 1) + "."; - - replacements[i] = "\n" + indent + bullet + after; - } - - cm.replaceSelections(replacements); - }; -}); diff --git a/vendor/codemirror/addon/edit/matchbrackets.js b/vendor/codemirror/addon/edit/matchbrackets.js deleted file mode 100644 index 576ec143..00000000 --- a/vendor/codemirror/addon/edit/matchbrackets.js +++ /dev/null @@ -1,108 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - var ie_lt8 = /MSIE \d/.test(navigator.userAgent) && - (document.documentMode == null || document.documentMode < 8); - - var Pos = CodeMirror.Pos; - - var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"}; - - function findMatchingBracket(cm, where, strict, config) { - var line = cm.getLineHandle(where.line), pos = where.ch - 1; - var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)]; - if (!match) return null; - var dir = match.charAt(1) == ">" ? 1 : -1; - if (strict && (dir > 0) != (pos == where.ch)) return null; - var style = cm.getTokenTypeAt(Pos(where.line, pos + 1)); - - var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config); - return {from: Pos(where.line, pos), to: found && found.pos, - match: found && found.ch == match.charAt(0), forward: dir > 0}; - } - - function scanForBracket(cm, where, dir, style, config) { - var maxScanLen = (config && config.maxScanLineLength) || 10000; - var maxScanLines = (config && config.maxScanLines) || 500; - - var stack = [], re = /[(){}[\]]/; - var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1) - : Math.max(cm.firstLine() - 1, where.line - maxScanLines); - for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) { - var line = cm.getLine(lineNo); - if (!line) continue; - var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1; - if (line.length > maxScanLen) continue; - if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0); - for (; pos != end; pos += dir) { - var ch = line.charAt(pos); - if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) { - var match = matching[ch]; - if ((match.charAt(1) == ">") == (dir > 0)) stack.push(ch); - else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch}; - else stack.pop(); - } - } - } - } - - function matchBrackets(cm, autoclear, config) { - // Disable brace matching in long lines, since it'll cause hugely slow updates - var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000; - var marks = [], ranges = cm.listSelections(); - for (var i = 0; i < ranges.length; i++) { - var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config); - if (match && cm.getLine(match.from.line).length <= maxHighlightLen && - match.to && cm.getLine(match.to.line).length <= maxHighlightLen) { - var style = match.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket"; - marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style})); - if (match.to) - marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style})); - } - } - - if (marks.length) { - // Kludge to work around the IE bug from issue #1193, where text - // input stops going to the textare whever this fires. - if (ie_lt8 && cm.state.focused) cm.display.input.focus(); - - var clear = function() { - cm.operation(function() { - for (var i = 0; i < marks.length; i++) marks[i].clear(); - }); - }; - if (autoclear) setTimeout(clear, 800); - else return clear; - } - } - - var currentlyHighlighted = null; - function doMatchBrackets(cm) { - cm.operation(function() { - if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;} - currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets); - }); - } - - CodeMirror.defineOption("matchBrackets", false, function(cm, val, old) { - if (old && old != CodeMirror.Init) - cm.off("cursorActivity", doMatchBrackets); - if (val) { - cm.state.matchBrackets = typeof val == "object" ? val : {}; - cm.on("cursorActivity", doMatchBrackets); - } - }); - - CodeMirror.defineExtension("matchBrackets", function() {matchBrackets(this, true);}); - CodeMirror.defineExtension("findMatchingBracket", function(pos, strict){ - return findMatchingBracket(this, pos, strict); - }); - CodeMirror.defineExtension("scanForBracket", function(pos, dir, style){ - return scanForBracket(this, pos, dir, style); - }); -}); diff --git a/vendor/codemirror/addon/edit/matchtags.js b/vendor/codemirror/addon/edit/matchtags.js deleted file mode 100644 index 76a7b87c..00000000 --- a/vendor/codemirror/addon/edit/matchtags.js +++ /dev/null @@ -1,63 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../fold/xml-fold")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../fold/xml-fold"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineOption("matchTags", false, function(cm, val, old) { - if (old && old != CodeMirror.Init) { - cm.off("cursorActivity", doMatchTags); - cm.off("viewportChange", maybeUpdateMatch); - clear(cm); - } - if (val) { - cm.state.matchBothTags = typeof val == "object" && val.bothTags; - cm.on("cursorActivity", doMatchTags); - cm.on("viewportChange", maybeUpdateMatch); - doMatchTags(cm); - } - }); - - function clear(cm) { - if (cm.state.tagHit) cm.state.tagHit.clear(); - if (cm.state.tagOther) cm.state.tagOther.clear(); - cm.state.tagHit = cm.state.tagOther = null; - } - - function doMatchTags(cm) { - cm.state.failedTagMatch = false; - cm.operation(function() { - clear(cm); - if (cm.somethingSelected()) return; - var cur = cm.getCursor(), range = cm.getViewport(); - range.from = Math.min(range.from, cur.line); range.to = Math.max(cur.line + 1, range.to); - var match = CodeMirror.findMatchingTag(cm, cur, range); - if (!match) return; - if (cm.state.matchBothTags) { - var hit = match.at == "open" ? match.open : match.close; - if (hit) cm.state.tagHit = cm.markText(hit.from, hit.to, {className: "CodeMirror-matchingtag"}); - } - var other = match.at == "close" ? match.open : match.close; - if (other) - cm.state.tagOther = cm.markText(other.from, other.to, {className: "CodeMirror-matchingtag"}); - else - cm.state.failedTagMatch = true; - }); - } - - function maybeUpdateMatch(cm) { - if (cm.state.failedTagMatch) doMatchTags(cm); - } - - CodeMirror.commands.toMatchingTag = function(cm) { - var found = CodeMirror.findMatchingTag(cm, cm.getCursor()); - if (found) { - var other = found.at == "close" ? found.open : found.close; - if (other) cm.extendSelection(other.to, other.from); - } - }; -}); diff --git a/vendor/codemirror/addon/edit/trailingspace.js b/vendor/codemirror/addon/edit/trailingspace.js deleted file mode 100644 index ec07221e..00000000 --- a/vendor/codemirror/addon/edit/trailingspace.js +++ /dev/null @@ -1,24 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - CodeMirror.defineOption("showTrailingSpace", false, function(cm, val, prev) { - if (prev == CodeMirror.Init) prev = false; - if (prev && !val) - cm.removeOverlay("trailingspace"); - else if (!prev && val) - cm.addOverlay({ - token: function(stream) { - for (var l = stream.string.length, i = l; i && /\s/.test(stream.string.charAt(i - 1)); --i) {} - if (i > stream.pos) { stream.pos = i; return null; } - stream.pos = l; - return "trailingspace"; - }, - name: "trailingspace" - }); - }); -}); diff --git a/vendor/codemirror/addon/fold/brace-fold.js b/vendor/codemirror/addon/fold/brace-fold.js deleted file mode 100644 index f0ee6202..00000000 --- a/vendor/codemirror/addon/fold/brace-fold.js +++ /dev/null @@ -1,102 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.registerHelper("fold", "brace", function(cm, start) { - var line = start.line, lineText = cm.getLine(line); - var startCh, tokenType; - - function findOpening(openCh) { - for (var at = start.ch, pass = 0;;) { - var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1); - if (found == -1) { - if (pass == 1) break; - pass = 1; - at = lineText.length; - continue; - } - if (pass == 1 && found < start.ch) break; - tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1)); - if (!/^(comment|string)/.test(tokenType)) return found + 1; - at = found - 1; - } - } - - var startToken = "{", endToken = "}", startCh = findOpening("{"); - if (startCh == null) { - startToken = "[", endToken = "]"; - startCh = findOpening("["); - } - - if (startCh == null) return; - var count = 1, lastLine = cm.lastLine(), end, endCh; - outer: for (var i = line; i <= lastLine; ++i) { - var text = cm.getLine(i), pos = i == line ? startCh : 0; - for (;;) { - var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos); - if (nextOpen < 0) nextOpen = text.length; - if (nextClose < 0) nextClose = text.length; - pos = Math.min(nextOpen, nextClose); - if (pos == text.length) break; - if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) { - if (pos == nextOpen) ++count; - else if (!--count) { end = i; endCh = pos; break outer; } - } - ++pos; - } - } - if (end == null || line == end && endCh == startCh) return; - return {from: CodeMirror.Pos(line, startCh), - to: CodeMirror.Pos(end, endCh)}; -}); - -CodeMirror.registerHelper("fold", "import", function(cm, start) { - function hasImport(line) { - if (line < cm.firstLine() || line > cm.lastLine()) return null; - var start = cm.getTokenAt(CodeMirror.Pos(line, 1)); - if (!/\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1)); - if (start.type != "keyword" || start.string != "import") return null; - // Now find closing semicolon, return its position - for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) { - var text = cm.getLine(i), semi = text.indexOf(";"); - if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)}; - } - } - - var start = start.line, has = hasImport(start), prev; - if (!has || hasImport(start - 1) || ((prev = hasImport(start - 2)) && prev.end.line == start - 1)) - return null; - for (var end = has.end;;) { - var next = hasImport(end.line + 1); - if (next == null) break; - end = next.end; - } - return {from: cm.clipPos(CodeMirror.Pos(start, has.startCh + 1)), to: end}; -}); - -CodeMirror.registerHelper("fold", "include", function(cm, start) { - function hasInclude(line) { - if (line < cm.firstLine() || line > cm.lastLine()) return null; - var start = cm.getTokenAt(CodeMirror.Pos(line, 1)); - if (!/\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1)); - if (start.type == "meta" && start.string.slice(0, 8) == "#include") return start.start + 8; - } - - var start = start.line, has = hasInclude(start); - if (has == null || hasInclude(start - 1) != null) return null; - for (var end = start;;) { - var next = hasInclude(end + 1); - if (next == null) break; - ++end; - } - return {from: CodeMirror.Pos(start, has + 1), - to: cm.clipPos(CodeMirror.Pos(end))}; -}); - -}); diff --git a/vendor/codemirror/addon/fold/comment-fold.js b/vendor/codemirror/addon/fold/comment-fold.js deleted file mode 100644 index d72c5479..00000000 --- a/vendor/codemirror/addon/fold/comment-fold.js +++ /dev/null @@ -1,54 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.registerGlobalHelper("fold", "comment", function(mode) { - return mode.blockCommentStart && mode.blockCommentEnd; -}, function(cm, start) { - var mode = cm.getModeAt(start), startToken = mode.blockCommentStart, endToken = mode.blockCommentEnd; - if (!startToken || !endToken) return; - var line = start.line, lineText = cm.getLine(line); - - var startCh; - for (var at = start.ch, pass = 0;;) { - var found = at <= 0 ? -1 : lineText.lastIndexOf(startToken, at - 1); - if (found == -1) { - if (pass == 1) return; - pass = 1; - at = lineText.length; - continue; - } - if (pass == 1 && found < start.ch) return; - if (/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1)))) { - startCh = found + startToken.length; - break; - } - at = found - 1; - } - - var depth = 1, lastLine = cm.lastLine(), end, endCh; - outer: for (var i = line; i <= lastLine; ++i) { - var text = cm.getLine(i), pos = i == line ? startCh : 0; - for (;;) { - var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos); - if (nextOpen < 0) nextOpen = text.length; - if (nextClose < 0) nextClose = text.length; - pos = Math.min(nextOpen, nextClose); - if (pos == text.length) break; - if (pos == nextOpen) ++depth; - else if (!--depth) { end = i; endCh = pos; break outer; } - ++pos; - } - } - if (end == null || line == end && endCh == startCh) return; - return {from: CodeMirror.Pos(line, startCh), - to: CodeMirror.Pos(end, endCh)}; -}); - -}); diff --git a/vendor/codemirror/addon/fold/foldcode.js b/vendor/codemirror/addon/fold/foldcode.js deleted file mode 100644 index d7a0bb5e..00000000 --- a/vendor/codemirror/addon/fold/foldcode.js +++ /dev/null @@ -1,117 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - function doFold(cm, pos, options, force) { - var finder = options && (options.call ? options : options.rangeFinder); - if (!finder) finder = CodeMirror.fold.auto; - if (typeof pos == "number") pos = CodeMirror.Pos(pos, 0); - var minSize = options && options.minFoldSize || 0; - - function getRange(allowFolded) { - var range = finder(cm, pos); - if (!range || range.to.line - range.from.line < minSize) return null; - var marks = cm.findMarksAt(range.from); - for (var i = 0; i < marks.length; ++i) { - if (marks[i].__isFold && force !== "fold") { - if (!allowFolded) return null; - range.cleared = true; - marks[i].clear(); - } - } - return range; - } - - var range = getRange(true); - if (options && options.scanUp) while (!range && pos.line > cm.firstLine()) { - pos = CodeMirror.Pos(pos.line - 1, 0); - range = getRange(false); - } - if (!range || range.cleared || force === "unfold") return; - - var myWidget = makeWidget(options); - CodeMirror.on(myWidget, "mousedown", function() { myRange.clear(); }); - var myRange = cm.markText(range.from, range.to, { - replacedWith: myWidget, - clearOnEnter: true, - __isFold: true - }); - myRange.on("clear", function(from, to) { - CodeMirror.signal(cm, "unfold", cm, from, to); - }); - CodeMirror.signal(cm, "fold", cm, range.from, range.to); - } - - function makeWidget(options) { - var widget = (options && options.widget) || "\u2194"; - if (typeof widget == "string") { - var text = document.createTextNode(widget); - widget = document.createElement("span"); - widget.appendChild(text); - widget.className = "CodeMirror-foldmarker"; - } - return widget; - } - - // Clumsy backwards-compatible interface - CodeMirror.newFoldFunction = function(rangeFinder, widget) { - return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); }; - }; - - // New-style interface - CodeMirror.defineExtension("foldCode", function(pos, options, force) { - doFold(this, pos, options, force); - }); - - CodeMirror.defineExtension("isFolded", function(pos) { - var marks = this.findMarksAt(pos); - for (var i = 0; i < marks.length; ++i) - if (marks[i].__isFold) return true; - }); - - CodeMirror.commands.toggleFold = function(cm) { - cm.foldCode(cm.getCursor()); - }; - CodeMirror.commands.fold = function(cm) { - cm.foldCode(cm.getCursor(), null, "fold"); - }; - CodeMirror.commands.unfold = function(cm) { - cm.foldCode(cm.getCursor(), null, "unfold"); - }; - CodeMirror.commands.foldAll = function(cm) { - cm.operation(function() { - for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++) - cm.foldCode(CodeMirror.Pos(i, 0), null, "fold"); - }); - }; - CodeMirror.commands.unfoldAll = function(cm) { - cm.operation(function() { - for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++) - cm.foldCode(CodeMirror.Pos(i, 0), null, "unfold"); - }); - }; - - CodeMirror.registerHelper("fold", "combine", function() { - var funcs = Array.prototype.slice.call(arguments, 0); - return function(cm, start) { - for (var i = 0; i < funcs.length; ++i) { - var found = funcs[i](cm, start); - if (found) return found; - } - }; - }); - - CodeMirror.registerHelper("fold", "auto", function(cm, start) { - var helpers = cm.getHelpers(start, "fold"); - for (var i = 0; i < helpers.length; i++) { - var cur = helpers[i](cm, start); - if (cur) return cur; - } - }); -}); diff --git a/vendor/codemirror/addon/fold/foldgutter.css b/vendor/codemirror/addon/fold/foldgutter.css deleted file mode 100644 index 49805393..00000000 --- a/vendor/codemirror/addon/fold/foldgutter.css +++ /dev/null @@ -1,21 +0,0 @@ -.CodeMirror-foldmarker { - color: blue; - text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; - font-family: arial; - line-height: .3; - cursor: pointer; -} -.CodeMirror-foldgutter { - width: .7em; -} -.CodeMirror-foldgutter-open, -.CodeMirror-foldgutter-folded { - color: #555; - cursor: pointer; -} -.CodeMirror-foldgutter-open:after { - content: "\25BE"; -} -.CodeMirror-foldgutter-folded:after { - content: "\25B8"; -} diff --git a/vendor/codemirror/addon/fold/foldgutter.js b/vendor/codemirror/addon/fold/foldgutter.js deleted file mode 100644 index 9caba59a..00000000 --- a/vendor/codemirror/addon/fold/foldgutter.js +++ /dev/null @@ -1,131 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("./foldcode")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "./foldcode"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineOption("foldGutter", false, function(cm, val, old) { - if (old && old != CodeMirror.Init) { - cm.clearGutter(cm.state.foldGutter.options.gutter); - cm.state.foldGutter = null; - cm.off("gutterClick", onGutterClick); - cm.off("change", onChange); - cm.off("viewportChange", onViewportChange); - cm.off("fold", onFold); - cm.off("unfold", onFold); - cm.off("swapDoc", updateInViewport); - } - if (val) { - cm.state.foldGutter = new State(parseOptions(val)); - updateInViewport(cm); - cm.on("gutterClick", onGutterClick); - cm.on("change", onChange); - cm.on("viewportChange", onViewportChange); - cm.on("fold", onFold); - cm.on("unfold", onFold); - cm.on("swapDoc", updateInViewport); - } - }); - - var Pos = CodeMirror.Pos; - - function State(options) { - this.options = options; - this.from = this.to = 0; - } - - function parseOptions(opts) { - if (opts === true) opts = {}; - if (opts.gutter == null) opts.gutter = "CodeMirror-foldgutter"; - if (opts.indicatorOpen == null) opts.indicatorOpen = "CodeMirror-foldgutter-open"; - if (opts.indicatorFolded == null) opts.indicatorFolded = "CodeMirror-foldgutter-folded"; - return opts; - } - - function isFolded(cm, line) { - var marks = cm.findMarksAt(Pos(line)); - for (var i = 0; i < marks.length; ++i) - if (marks[i].__isFold && marks[i].find().from.line == line) return true; - } - - function marker(spec) { - if (typeof spec == "string") { - var elt = document.createElement("div"); - elt.className = spec; - return elt; - } else { - return spec.cloneNode(true); - } - } - - function updateFoldInfo(cm, from, to) { - var opts = cm.state.foldGutter.options, cur = from; - cm.eachLine(from, to, function(line) { - var mark = null; - if (isFolded(cm, cur)) { - mark = marker(opts.indicatorFolded); - } else { - var pos = Pos(cur, 0), func = opts.rangeFinder || CodeMirror.fold.auto; - var range = func && func(cm, pos); - if (range && range.from.line + 1 < range.to.line) - mark = marker(opts.indicatorOpen); - } - cm.setGutterMarker(line, opts.gutter, mark); - ++cur; - }); - } - - function updateInViewport(cm) { - var vp = cm.getViewport(), state = cm.state.foldGutter; - if (!state) return; - cm.operation(function() { - updateFoldInfo(cm, vp.from, vp.to); - }); - state.from = vp.from; state.to = vp.to; - } - - function onGutterClick(cm, line, gutter) { - var opts = cm.state.foldGutter.options; - if (gutter != opts.gutter) return; - cm.foldCode(Pos(line, 0), opts.rangeFinder); - } - - function onChange(cm) { - var state = cm.state.foldGutter, opts = cm.state.foldGutter.options; - state.from = state.to = 0; - clearTimeout(state.changeUpdate); - state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600); - } - - function onViewportChange(cm) { - var state = cm.state.foldGutter, opts = cm.state.foldGutter.options; - clearTimeout(state.changeUpdate); - state.changeUpdate = setTimeout(function() { - var vp = cm.getViewport(); - if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) { - updateInViewport(cm); - } else { - cm.operation(function() { - if (vp.from < state.from) { - updateFoldInfo(cm, vp.from, state.from); - state.from = vp.from; - } - if (vp.to > state.to) { - updateFoldInfo(cm, state.to, vp.to); - state.to = vp.to; - } - }); - } - }, opts.updateViewportTimeSpan || 400); - } - - function onFold(cm, from) { - var state = cm.state.foldGutter, line = from.line; - if (line >= state.from && line < state.to) - updateFoldInfo(cm, line, line + 1); - } -}); diff --git a/vendor/codemirror/addon/fold/indent-fold.js b/vendor/codemirror/addon/fold/indent-fold.js deleted file mode 100644 index d0130836..00000000 --- a/vendor/codemirror/addon/fold/indent-fold.js +++ /dev/null @@ -1,41 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.registerHelper("fold", "indent", function(cm, start) { - var tabSize = cm.getOption("tabSize"), firstLine = cm.getLine(start.line); - if (!/\S/.test(firstLine)) return; - var getIndent = function(line) { - return CodeMirror.countColumn(line, null, tabSize); - }; - var myIndent = getIndent(firstLine); - var lastLineInFold = null; - // Go through lines until we find a line that definitely doesn't belong in - // the block we're folding, or to the end. - for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) { - var curLine = cm.getLine(i); - var curIndent = getIndent(curLine); - if (curIndent > myIndent) { - // Lines with a greater indent are considered part of the block. - lastLineInFold = i; - } else if (!/\S/.test(curLine)) { - // Empty lines might be breaks within the block we're trying to fold. - } else { - // A non-empty line at an indent equal to or less than ours marks the - // start of another block. - break; - } - } - if (lastLineInFold) return { - from: CodeMirror.Pos(start.line, firstLine.length), - to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length) - }; -}); - -}); diff --git a/vendor/codemirror/addon/fold/markdown-fold.js b/vendor/codemirror/addon/fold/markdown-fold.js deleted file mode 100644 index 3bbf5b60..00000000 --- a/vendor/codemirror/addon/fold/markdown-fold.js +++ /dev/null @@ -1,46 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.registerHelper("fold", "markdown", function(cm, start) { - var maxDepth = 100; - - function isHeader(lineNo) { - var tokentype = cm.getTokenTypeAt(CodeMirror.Pos(lineNo, 0)); - return tokentype && /\bheader\b/.test(tokentype); - } - - function headerLevel(lineNo, line, nextLine) { - var match = line && line.match(/^#+/); - if (match && isHeader(lineNo)) return match[0].length; - match = nextLine && nextLine.match(/^[=\-]+\s*$/); - if (match && isHeader(lineNo + 1)) return nextLine[0] == "=" ? 1 : 2; - return maxDepth; - } - - var firstLine = cm.getLine(start.line), nextLine = cm.getLine(start.line + 1); - var level = headerLevel(start.line, firstLine, nextLine); - if (level === maxDepth) return undefined; - - var lastLineNo = cm.lastLine(); - var end = start.line, nextNextLine = cm.getLine(end + 2); - while (end < lastLineNo) { - if (headerLevel(end + 1, nextLine, nextNextLine) <= level) break; - ++end; - nextLine = nextNextLine; - nextNextLine = cm.getLine(end + 2); - } - - return { - from: CodeMirror.Pos(start.line, firstLine.length), - to: CodeMirror.Pos(end, cm.getLine(end).length) - }; -}); - -}); diff --git a/vendor/codemirror/addon/fold/xml-fold.js b/vendor/codemirror/addon/fold/xml-fold.js deleted file mode 100644 index d554e2fc..00000000 --- a/vendor/codemirror/addon/fold/xml-fold.js +++ /dev/null @@ -1,178 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var Pos = CodeMirror.Pos; - function cmp(a, b) { return a.line - b.line || a.ch - b.ch; } - - var nameStartChar = "A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD"; - var nameChar = nameStartChar + "\-\:\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040"; - var xmlTagStart = new RegExp("<(/?)([" + nameStartChar + "][" + nameChar + "]*)", "g"); - - function Iter(cm, line, ch, range) { - this.line = line; this.ch = ch; - this.cm = cm; this.text = cm.getLine(line); - this.min = range ? range.from : cm.firstLine(); - this.max = range ? range.to - 1 : cm.lastLine(); - } - - function tagAt(iter, ch) { - var type = iter.cm.getTokenTypeAt(Pos(iter.line, ch)); - return type && /\btag\b/.test(type); - } - - function nextLine(iter) { - if (iter.line >= iter.max) return; - iter.ch = 0; - iter.text = iter.cm.getLine(++iter.line); - return true; - } - function prevLine(iter) { - if (iter.line <= iter.min) return; - iter.text = iter.cm.getLine(--iter.line); - iter.ch = iter.text.length; - return true; - } - - function toTagEnd(iter) { - for (;;) { - var gt = iter.text.indexOf(">", iter.ch); - if (gt == -1) { if (nextLine(iter)) continue; else return; } - if (!tagAt(iter, gt + 1)) { iter.ch = gt + 1; continue; } - var lastSlash = iter.text.lastIndexOf("/", gt); - var selfClose = lastSlash > -1 && !/\S/.test(iter.text.slice(lastSlash + 1, gt)); - iter.ch = gt + 1; - return selfClose ? "selfClose" : "regular"; - } - } - function toTagStart(iter) { - for (;;) { - var lt = iter.ch ? iter.text.lastIndexOf("<", iter.ch - 1) : -1; - if (lt == -1) { if (prevLine(iter)) continue; else return; } - if (!tagAt(iter, lt + 1)) { iter.ch = lt; continue; } - xmlTagStart.lastIndex = lt; - iter.ch = lt; - var match = xmlTagStart.exec(iter.text); - if (match && match.index == lt) return match; - } - } - - function toNextTag(iter) { - for (;;) { - xmlTagStart.lastIndex = iter.ch; - var found = xmlTagStart.exec(iter.text); - if (!found) { if (nextLine(iter)) continue; else return; } - if (!tagAt(iter, found.index + 1)) { iter.ch = found.index + 1; continue; } - iter.ch = found.index + found[0].length; - return found; - } - } - function toPrevTag(iter) { - for (;;) { - var gt = iter.ch ? iter.text.lastIndexOf(">", iter.ch - 1) : -1; - if (gt == -1) { if (prevLine(iter)) continue; else return; } - if (!tagAt(iter, gt + 1)) { iter.ch = gt; continue; } - var lastSlash = iter.text.lastIndexOf("/", gt); - var selfClose = lastSlash > -1 && !/\S/.test(iter.text.slice(lastSlash + 1, gt)); - iter.ch = gt + 1; - return selfClose ? "selfClose" : "regular"; - } - } - - function findMatchingClose(iter, tag) { - var stack = []; - for (;;) { - var next = toNextTag(iter), end, startLine = iter.line, startCh = iter.ch - (next ? next[0].length : 0); - if (!next || !(end = toTagEnd(iter))) return; - if (end == "selfClose") continue; - if (next[1]) { // closing tag - for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == next[2]) { - stack.length = i; - break; - } - if (i < 0 && (!tag || tag == next[2])) return { - tag: next[2], - from: Pos(startLine, startCh), - to: Pos(iter.line, iter.ch) - }; - } else { // opening tag - stack.push(next[2]); - } - } - } - function findMatchingOpen(iter, tag) { - var stack = []; - for (;;) { - var prev = toPrevTag(iter); - if (!prev) return; - if (prev == "selfClose") { toTagStart(iter); continue; } - var endLine = iter.line, endCh = iter.ch; - var start = toTagStart(iter); - if (!start) return; - if (start[1]) { // closing tag - stack.push(start[2]); - } else { // opening tag - for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == start[2]) { - stack.length = i; - break; - } - if (i < 0 && (!tag || tag == start[2])) return { - tag: start[2], - from: Pos(iter.line, iter.ch), - to: Pos(endLine, endCh) - }; - } - } - } - - CodeMirror.registerHelper("fold", "xml", function(cm, start) { - var iter = new Iter(cm, start.line, 0); - for (;;) { - var openTag = toNextTag(iter), end; - if (!openTag || iter.line != start.line || !(end = toTagEnd(iter))) return; - if (!openTag[1] && end != "selfClose") { - var start = Pos(iter.line, iter.ch); - var close = findMatchingClose(iter, openTag[2]); - return close && {from: start, to: close.from}; - } - } - }); - CodeMirror.findMatchingTag = function(cm, pos, range) { - var iter = new Iter(cm, pos.line, pos.ch, range); - if (iter.text.indexOf(">") == -1 && iter.text.indexOf("<") == -1) return; - var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch); - var start = end && toTagStart(iter); - if (!end || end == "selfClose" || !start || cmp(iter, pos) > 0) return; - var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]}; - - if (start[1]) { // closing tag - return {open: findMatchingOpen(iter, start[2]), close: here, at: "close"}; - } else { // opening tag - iter = new Iter(cm, to.line, to.ch, range); - return {open: here, close: findMatchingClose(iter, start[2]), at: "open"}; - } - }; - - CodeMirror.findEnclosingTag = function(cm, pos, range) { - var iter = new Iter(cm, pos.line, pos.ch, range); - for (;;) { - var open = findMatchingOpen(iter); - if (!open) break; - var forward = new Iter(cm, pos.line, pos.ch, range); - var close = findMatchingClose(forward, open.tag); - if (close) return {open: open, close: close}; - } - }; - - // Used by addon/edit/closetag.js - CodeMirror.scanForClosingTag = function(cm, pos, name, end) { - var iter = new Iter(cm, pos.line, pos.ch, end ? {from: 0, to: end} : null); - return !!findMatchingClose(iter, name); - }; -}); diff --git a/vendor/codemirror/addon/hint/anyword-hint.js b/vendor/codemirror/addon/hint/anyword-hint.js deleted file mode 100644 index 3ef979b5..00000000 --- a/vendor/codemirror/addon/hint/anyword-hint.js +++ /dev/null @@ -1,39 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var WORD = /[\w$]+/, RANGE = 500; - - CodeMirror.registerHelper("hint", "anyword", function(editor, options) { - var word = options && options.word || WORD; - var range = options && options.range || RANGE; - var cur = editor.getCursor(), curLine = editor.getLine(cur.line); - var start = cur.ch, end = start; - while (end < curLine.length && word.test(curLine.charAt(end))) ++end; - while (start && word.test(curLine.charAt(start - 1))) --start; - var curWord = start != end && curLine.slice(start, end); - - var list = [], seen = {}; - var re = new RegExp(word.source, "g"); - for (var dir = -1; dir <= 1; dir += 2) { - var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir; - for (; line != endLine; line += dir) { - var text = editor.getLine(line), m; - while (m = re.exec(text)) { - if (line == cur.line && m[0] === curWord) continue; - if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) { - seen[m[0]] = true; - list.push(m[0]); - } - } - } - } - return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)}; - }); -}); diff --git a/vendor/codemirror/addon/hint/css-hint.js b/vendor/codemirror/addon/hint/css-hint.js deleted file mode 100644 index 9e5b1e13..00000000 --- a/vendor/codemirror/addon/hint/css-hint.js +++ /dev/null @@ -1,53 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../../mode/css/css")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../../mode/css/css"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var pseudoClasses = {link: 1, visited: 1, active: 1, hover: 1, focus: 1, - "first-letter": 1, "first-line": 1, "first-child": 1, - before: 1, after: 1, lang: 1}; - - CodeMirror.registerHelper("hint", "css", function(cm) { - var cur = cm.getCursor(), token = cm.getTokenAt(cur); - var inner = CodeMirror.innerMode(cm.getMode(), token.state); - if (inner.mode.name != "css") return; - - var word = token.string, start = token.start, end = token.end; - if (/[^\w$_-]/.test(word)) { - word = ""; start = end = cur.ch; - } - - var spec = CodeMirror.resolveMode("text/css"); - - var result = []; - function add(keywords) { - for (var name in keywords) - if (!word || name.lastIndexOf(word, 0) == 0) - result.push(name); - } - - var st = token.state.state; - if (st == "pseudo" || token.type == "variable-3") { - add(pseudoClasses); - } else if (st == "block" || st == "maybeprop") { - add(spec.propertyKeywords); - } else if (st == "prop" || st == "parens" || st == "at" || st == "params") { - add(spec.valueKeywords); - add(spec.colorKeywords); - } else if (st == "media" || st == "media_parens") { - add(spec.mediaTypes); - add(spec.mediaFeatures); - } - - if (result.length) return { - list: result, - from: CodeMirror.Pos(cur.line, start), - to: CodeMirror.Pos(cur.line, end) - }; - }); -}); diff --git a/vendor/codemirror/addon/hint/html-hint.js b/vendor/codemirror/addon/hint/html-hint.js deleted file mode 100755 index cbe7c61a..00000000 --- a/vendor/codemirror/addon/hint/html-hint.js +++ /dev/null @@ -1,345 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var langs = "ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu".split(" "); - var targets = ["_blank", "_self", "_top", "_parent"]; - var charsets = ["ascii", "utf-8", "utf-16", "latin1", "latin1"]; - var methods = ["get", "post", "put", "delete"]; - var encs = ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"]; - var media = ["all", "screen", "print", "embossed", "braille", "handheld", "print", "projection", "screen", "tty", "tv", "speech", - "3d-glasses", "resolution [>][<][=] [X]", "device-aspect-ratio: X/Y", "orientation:portrait", - "orientation:landscape", "device-height: [X]", "device-width: [X]"]; - var s = { attrs: {} }; // Simple tag, reused for a whole lot of tags - - var data = { - a: { - attrs: { - href: null, ping: null, type: null, - media: media, - target: targets, - hreflang: langs - } - }, - abbr: s, - acronym: s, - address: s, - applet: s, - area: { - attrs: { - alt: null, coords: null, href: null, target: null, ping: null, - media: media, hreflang: langs, type: null, - shape: ["default", "rect", "circle", "poly"] - } - }, - article: s, - aside: s, - audio: { - attrs: { - src: null, mediagroup: null, - crossorigin: ["anonymous", "use-credentials"], - preload: ["none", "metadata", "auto"], - autoplay: ["", "autoplay"], - loop: ["", "loop"], - controls: ["", "controls"] - } - }, - b: s, - base: { attrs: { href: null, target: targets } }, - basefont: s, - bdi: s, - bdo: s, - big: s, - blockquote: { attrs: { cite: null } }, - body: s, - br: s, - button: { - attrs: { - form: null, formaction: null, name: null, value: null, - autofocus: ["", "autofocus"], - disabled: ["", "autofocus"], - formenctype: encs, - formmethod: methods, - formnovalidate: ["", "novalidate"], - formtarget: targets, - type: ["submit", "reset", "button"] - } - }, - canvas: { attrs: { width: null, height: null } }, - caption: s, - center: s, - cite: s, - code: s, - col: { attrs: { span: null } }, - colgroup: { attrs: { span: null } }, - command: { - attrs: { - type: ["command", "checkbox", "radio"], - label: null, icon: null, radiogroup: null, command: null, title: null, - disabled: ["", "disabled"], - checked: ["", "checked"] - } - }, - data: { attrs: { value: null } }, - datagrid: { attrs: { disabled: ["", "disabled"], multiple: ["", "multiple"] } }, - datalist: { attrs: { data: null } }, - dd: s, - del: { attrs: { cite: null, datetime: null } }, - details: { attrs: { open: ["", "open"] } }, - dfn: s, - dir: s, - div: s, - dl: s, - dt: s, - em: s, - embed: { attrs: { src: null, type: null, width: null, height: null } }, - eventsource: { attrs: { src: null } }, - fieldset: { attrs: { disabled: ["", "disabled"], form: null, name: null } }, - figcaption: s, - figure: s, - font: s, - footer: s, - form: { - attrs: { - action: null, name: null, - "accept-charset": charsets, - autocomplete: ["on", "off"], - enctype: encs, - method: methods, - novalidate: ["", "novalidate"], - target: targets - } - }, - frame: s, - frameset: s, - h1: s, h2: s, h3: s, h4: s, h5: s, h6: s, - head: { - attrs: {}, - children: ["title", "base", "link", "style", "meta", "script", "noscript", "command"] - }, - header: s, - hgroup: s, - hr: s, - html: { - attrs: { manifest: null }, - children: ["head", "body"] - }, - i: s, - iframe: { - attrs: { - src: null, srcdoc: null, name: null, width: null, height: null, - sandbox: ["allow-top-navigation", "allow-same-origin", "allow-forms", "allow-scripts"], - seamless: ["", "seamless"] - } - }, - img: { - attrs: { - alt: null, src: null, ismap: null, usemap: null, width: null, height: null, - crossorigin: ["anonymous", "use-credentials"] - } - }, - input: { - attrs: { - alt: null, dirname: null, form: null, formaction: null, - height: null, list: null, max: null, maxlength: null, min: null, - name: null, pattern: null, placeholder: null, size: null, src: null, - step: null, value: null, width: null, - accept: ["audio/*", "video/*", "image/*"], - autocomplete: ["on", "off"], - autofocus: ["", "autofocus"], - checked: ["", "checked"], - disabled: ["", "disabled"], - formenctype: encs, - formmethod: methods, - formnovalidate: ["", "novalidate"], - formtarget: targets, - multiple: ["", "multiple"], - readonly: ["", "readonly"], - required: ["", "required"], - type: ["hidden", "text", "search", "tel", "url", "email", "password", "datetime", "date", "month", - "week", "time", "datetime-local", "number", "range", "color", "checkbox", "radio", - "file", "submit", "image", "reset", "button"] - } - }, - ins: { attrs: { cite: null, datetime: null } }, - kbd: s, - keygen: { - attrs: { - challenge: null, form: null, name: null, - autofocus: ["", "autofocus"], - disabled: ["", "disabled"], - keytype: ["RSA"] - } - }, - label: { attrs: { "for": null, form: null } }, - legend: s, - li: { attrs: { value: null } }, - link: { - attrs: { - href: null, type: null, - hreflang: langs, - media: media, - sizes: ["all", "16x16", "16x16 32x32", "16x16 32x32 64x64"] - } - }, - map: { attrs: { name: null } }, - mark: s, - menu: { attrs: { label: null, type: ["list", "context", "toolbar"] } }, - meta: { - attrs: { - content: null, - charset: charsets, - name: ["viewport", "application-name", "author", "description", "generator", "keywords"], - "http-equiv": ["content-language", "content-type", "default-style", "refresh"] - } - }, - meter: { attrs: { value: null, min: null, low: null, high: null, max: null, optimum: null } }, - nav: s, - noframes: s, - noscript: s, - object: { - attrs: { - data: null, type: null, name: null, usemap: null, form: null, width: null, height: null, - typemustmatch: ["", "typemustmatch"] - } - }, - ol: { attrs: { reversed: ["", "reversed"], start: null, type: ["1", "a", "A", "i", "I"] } }, - optgroup: { attrs: { disabled: ["", "disabled"], label: null } }, - option: { attrs: { disabled: ["", "disabled"], label: null, selected: ["", "selected"], value: null } }, - output: { attrs: { "for": null, form: null, name: null } }, - p: s, - param: { attrs: { name: null, value: null } }, - pre: s, - progress: { attrs: { value: null, max: null } }, - q: { attrs: { cite: null } }, - rp: s, - rt: s, - ruby: s, - s: s, - samp: s, - script: { - attrs: { - type: ["text/javascript"], - src: null, - async: ["", "async"], - defer: ["", "defer"], - charset: charsets - } - }, - section: s, - select: { - attrs: { - form: null, name: null, size: null, - autofocus: ["", "autofocus"], - disabled: ["", "disabled"], - multiple: ["", "multiple"] - } - }, - small: s, - source: { attrs: { src: null, type: null, media: null } }, - span: s, - strike: s, - strong: s, - style: { - attrs: { - type: ["text/css"], - media: media, - scoped: null - } - }, - sub: s, - summary: s, - sup: s, - table: s, - tbody: s, - td: { attrs: { colspan: null, rowspan: null, headers: null } }, - textarea: { - attrs: { - dirname: null, form: null, maxlength: null, name: null, placeholder: null, - rows: null, cols: null, - autofocus: ["", "autofocus"], - disabled: ["", "disabled"], - readonly: ["", "readonly"], - required: ["", "required"], - wrap: ["soft", "hard"] - } - }, - tfoot: s, - th: { attrs: { colspan: null, rowspan: null, headers: null, scope: ["row", "col", "rowgroup", "colgroup"] } }, - thead: s, - time: { attrs: { datetime: null } }, - title: s, - tr: s, - track: { - attrs: { - src: null, label: null, "default": null, - kind: ["subtitles", "captions", "descriptions", "chapters", "metadata"], - srclang: langs - } - }, - tt: s, - u: s, - ul: s, - "var": s, - video: { - attrs: { - src: null, poster: null, width: null, height: null, - crossorigin: ["anonymous", "use-credentials"], - preload: ["auto", "metadata", "none"], - autoplay: ["", "autoplay"], - mediagroup: ["movie"], - muted: ["", "muted"], - controls: ["", "controls"] - } - }, - wbr: s - }; - - var globalAttrs = { - accesskey: ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], - "class": null, - contenteditable: ["true", "false"], - contextmenu: null, - dir: ["ltr", "rtl", "auto"], - draggable: ["true", "false", "auto"], - dropzone: ["copy", "move", "link", "string:", "file:"], - hidden: ["hidden"], - id: null, - inert: ["inert"], - itemid: null, - itemprop: null, - itemref: null, - itemscope: ["itemscope"], - itemtype: null, - lang: ["en", "es"], - spellcheck: ["true", "false"], - style: null, - tabindex: ["1", "2", "3", "4", "5", "6", "7", "8", "9"], - title: null, - translate: ["yes", "no"], - onclick: null, - rel: ["stylesheet", "alternate", "author", "bookmark", "help", "license", "next", "nofollow", "noreferrer", "prefetch", "prev", "search", "tag"] - }; - function populate(obj) { - for (var attr in globalAttrs) if (globalAttrs.hasOwnProperty(attr)) - obj.attrs[attr] = globalAttrs[attr]; - } - - populate(s); - for (var tag in data) if (data.hasOwnProperty(tag) && data[tag] != s) - populate(data[tag]); - - CodeMirror.htmlSchema = data; - function htmlHint(cm, options) { - var local = {schemaInfo: data}; - if (options) for (var opt in options) local[opt] = options[opt]; - return CodeMirror.hint.xml(cm, local); - } - CodeMirror.registerHelper("hint", "html", htmlHint); -}); diff --git a/vendor/codemirror/addon/hint/javascript-hint.js b/vendor/codemirror/addon/hint/javascript-hint.js deleted file mode 100644 index 305bb85a..00000000 --- a/vendor/codemirror/addon/hint/javascript-hint.js +++ /dev/null @@ -1,136 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - var Pos = CodeMirror.Pos; - - function forEach(arr, f) { - for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]); - } - - function arrayContains(arr, item) { - if (!Array.prototype.indexOf) { - var i = arr.length; - while (i--) { - if (arr[i] === item) { - return true; - } - } - return false; - } - return arr.indexOf(item) != -1; - } - - function scriptHint(editor, keywords, getToken, options) { - // Find the token at the cursor - var cur = editor.getCursor(), token = getToken(editor, cur), tprop = token; - if (/\b(?:string|comment)\b/.test(token.type)) return; - token.state = CodeMirror.innerMode(editor.getMode(), token.state).state; - - // If it's not a 'word-style' token, ignore the token. - if (!/^[\w$_]*$/.test(token.string)) { - token = tprop = {start: cur.ch, end: cur.ch, string: "", state: token.state, - type: token.string == "." ? "property" : null}; - } - // If it is a property, find out what it is a property of. - while (tprop.type == "property") { - tprop = getToken(editor, Pos(cur.line, tprop.start)); - if (tprop.string != ".") return; - tprop = getToken(editor, Pos(cur.line, tprop.start)); - if (!context) var context = []; - context.push(tprop); - } - return {list: getCompletions(token, context, keywords, options), - from: Pos(cur.line, token.start), - to: Pos(cur.line, token.end)}; - } - - function javascriptHint(editor, options) { - return scriptHint(editor, javascriptKeywords, - function (e, cur) {return e.getTokenAt(cur);}, - options); - }; - CodeMirror.registerHelper("hint", "javascript", javascriptHint); - - function getCoffeeScriptToken(editor, cur) { - // This getToken, it is for coffeescript, imitates the behavior of - // getTokenAt method in javascript.js, that is, returning "property" - // type and treat "." as indepenent token. - var token = editor.getTokenAt(cur); - if (cur.ch == token.start + 1 && token.string.charAt(0) == '.') { - token.end = token.start; - token.string = '.'; - token.type = "property"; - } - else if (/^\.[\w$_]*$/.test(token.string)) { - token.type = "property"; - token.start++; - token.string = token.string.replace(/\./, ''); - } - return token; - } - - function coffeescriptHint(editor, options) { - return scriptHint(editor, coffeescriptKeywords, getCoffeeScriptToken, options); - } - CodeMirror.registerHelper("hint", "coffeescript", coffeescriptHint); - - var stringProps = ("charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight " + - "toUpperCase toLowerCase split concat match replace search").split(" "); - var arrayProps = ("length concat join splice push pop shift unshift slice reverse sort indexOf " + - "lastIndexOf every some filter forEach map reduce reduceRight ").split(" "); - var funcProps = "prototype apply call bind".split(" "); - var javascriptKeywords = ("break case catch continue debugger default delete do else false finally for function " + - "if in instanceof new null return switch throw true try typeof var void while with").split(" "); - var coffeescriptKeywords = ("and break catch class continue delete do else extends false finally for " + - "if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes").split(" "); - - function getCompletions(token, context, keywords, options) { - var found = [], start = token.string; - function maybeAdd(str) { - if (str.lastIndexOf(start, 0) == 0 && !arrayContains(found, str)) found.push(str); - } - function gatherCompletions(obj) { - if (typeof obj == "string") forEach(stringProps, maybeAdd); - else if (obj instanceof Array) forEach(arrayProps, maybeAdd); - else if (obj instanceof Function) forEach(funcProps, maybeAdd); - for (var name in obj) maybeAdd(name); - } - - if (context && context.length) { - // If this is a property, see if it belongs to some object we can - // find in the current environment. - var obj = context.pop(), base; - if (obj.type && obj.type.indexOf("variable") === 0) { - if (options && options.additionalContext) - base = options.additionalContext[obj.string]; - base = base || window[obj.string]; - } else if (obj.type == "string") { - base = ""; - } else if (obj.type == "atom") { - base = 1; - } else if (obj.type == "function") { - if (window.jQuery != null && (obj.string == '$' || obj.string == 'jQuery') && - (typeof window.jQuery == 'function')) - base = window.jQuery(); - else if (window._ != null && (obj.string == '_') && (typeof window._ == 'function')) - base = window._(); - } - while (base != null && context.length) - base = base[context.pop().string]; - if (base != null) gatherCompletions(base); - } else { - // If not, just look in the window object and any local scope - // (reading into JS mode internals to get at the local and global variables) - for (var v = token.state.localVars; v; v = v.next) maybeAdd(v.name); - for (var v = token.state.globalVars; v; v = v.next) maybeAdd(v.name); - gatherCompletions(window); - forEach(keywords, maybeAdd); - } - return found; - } -}); diff --git a/vendor/codemirror/addon/hint/python-hint.js b/vendor/codemirror/addon/hint/python-hint.js deleted file mode 100644 index eebfcc76..00000000 --- a/vendor/codemirror/addon/hint/python-hint.js +++ /dev/null @@ -1,99 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - function forEach(arr, f) { - for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]); - } - - function arrayContains(arr, item) { - if (!Array.prototype.indexOf) { - var i = arr.length; - while (i--) { - if (arr[i] === item) { - return true; - } - } - return false; - } - return arr.indexOf(item) != -1; - } - - function scriptHint(editor, _keywords, getToken) { - // Find the token at the cursor - var cur = editor.getCursor(), token = getToken(editor, cur), tprop = token; - // If it's not a 'word-style' token, ignore the token. - - if (!/^[\w$_]*$/.test(token.string)) { - token = tprop = {start: cur.ch, end: cur.ch, string: "", state: token.state, - className: token.string == ":" ? "python-type" : null}; - } - - if (!context) var context = []; - context.push(tprop); - - var completionList = getCompletions(token, context); - completionList = completionList.sort(); - - return {list: completionList, - from: CodeMirror.Pos(cur.line, token.start), - to: CodeMirror.Pos(cur.line, token.end)}; - } - - function pythonHint(editor) { - return scriptHint(editor, pythonKeywordsU, function (e, cur) {return e.getTokenAt(cur);}); - } - CodeMirror.registerHelper("hint", "python", pythonHint); - - var pythonKeywords = "and del from not while as elif global or with assert else if pass yield" -+ "break except import print class exec in raise continue finally is return def for lambda try"; - var pythonKeywordsL = pythonKeywords.split(" "); - var pythonKeywordsU = pythonKeywords.toUpperCase().split(" "); - - var pythonBuiltins = "abs divmod input open staticmethod all enumerate int ord str " -+ "any eval isinstance pow sum basestring execfile issubclass print super" -+ "bin file iter property tuple bool filter len range type" -+ "bytearray float list raw_input unichr callable format locals reduce unicode" -+ "chr frozenset long reload vars classmethod getattr map repr xrange" -+ "cmp globals max reversed zip compile hasattr memoryview round __import__" -+ "complex hash min set apply delattr help next setattr buffer" -+ "dict hex object slice coerce dir id oct sorted intern "; - var pythonBuiltinsL = pythonBuiltins.split(" ").join("() ").split(" "); - var pythonBuiltinsU = pythonBuiltins.toUpperCase().split(" ").join("() ").split(" "); - - function getCompletions(token, context) { - var found = [], start = token.string; - function maybeAdd(str) { - if (str.lastIndexOf(start, 0) == 0 && !arrayContains(found, str)) found.push(str); - } - - function gatherCompletions(_obj) { - forEach(pythonBuiltinsL, maybeAdd); - forEach(pythonBuiltinsU, maybeAdd); - forEach(pythonKeywordsL, maybeAdd); - forEach(pythonKeywordsU, maybeAdd); - } - - if (context) { - // If this is a property, see if it belongs to some object we can - // find in the current environment. - var obj = context.pop(), base; - - if (obj.type == "variable") - base = obj.string; - else if(obj.type == "variable-3") - base = ":" + obj.string; - - while (base != null && context.length) - base = base[context.pop().string]; - if (base != null) gatherCompletions(base); - } - return found; - } -}); diff --git a/vendor/codemirror/addon/hint/show-hint.css b/vendor/codemirror/addon/hint/show-hint.css deleted file mode 100644 index 8a4ff052..00000000 --- a/vendor/codemirror/addon/hint/show-hint.css +++ /dev/null @@ -1,38 +0,0 @@ -.CodeMirror-hints { - position: absolute; - z-index: 10; - overflow: hidden; - list-style: none; - - margin: 0; - padding: 2px; - - -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); - -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); - box-shadow: 2px 3px 5px rgba(0,0,0,.2); - border-radius: 3px; - border: 1px solid silver; - - background: white; - font-size: 90%; - font-family: monospace; - - max-height: 20em; - overflow-y: auto; -} - -.CodeMirror-hint { - margin: 0; - padding: 0 4px; - border-radius: 2px; - max-width: 19em; - overflow: hidden; - white-space: pre; - color: black; - cursor: pointer; -} - -.CodeMirror-hint-active { - background: #08f; - color: white; -} diff --git a/vendor/codemirror/addon/hint/show-hint.js b/vendor/codemirror/addon/hint/show-hint.js deleted file mode 100644 index 6f04c565..00000000 --- a/vendor/codemirror/addon/hint/show-hint.js +++ /dev/null @@ -1,349 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var HINT_ELEMENT_CLASS = "CodeMirror-hint"; - var ACTIVE_HINT_ELEMENT_CLASS = "CodeMirror-hint-active"; - - CodeMirror.showHint = function(cm, getHints, options) { - // We want a single cursor position. - if (cm.listSelections().length > 1 || cm.somethingSelected()) return; - if (getHints == null) { - if (options && options.async) return; - else getHints = CodeMirror.hint.auto; - } - - if (cm.state.completionActive) cm.state.completionActive.close(); - - var completion = cm.state.completionActive = new Completion(cm, getHints, options || {}); - CodeMirror.signal(cm, "startCompletion", cm); - if (completion.options.async) - getHints(cm, function(hints) { completion.showHints(hints); }, completion.options); - else - return completion.showHints(getHints(cm, completion.options)); - }; - - function Completion(cm, getHints, options) { - this.cm = cm; - this.getHints = getHints; - this.options = options; - this.widget = this.onClose = null; - } - - Completion.prototype = { - close: function() { - if (!this.active()) return; - this.cm.state.completionActive = null; - - if (this.widget) this.widget.close(); - if (this.onClose) this.onClose(); - CodeMirror.signal(this.cm, "endCompletion", this.cm); - }, - - active: function() { - return this.cm.state.completionActive == this; - }, - - pick: function(data, i) { - var completion = data.list[i]; - if (completion.hint) completion.hint(this.cm, data, completion); - else this.cm.replaceRange(getText(completion), completion.from||data.from, completion.to||data.to); - CodeMirror.signal(data, "pick", completion); - this.close(); - }, - - showHints: function(data) { - if (!data || !data.list.length || !this.active()) return this.close(); - - if (this.options.completeSingle != false && data.list.length == 1) - this.pick(data, 0); - else - this.showWidget(data); - }, - - showWidget: function(data) { - this.widget = new Widget(this, data); - CodeMirror.signal(data, "shown"); - - var debounce = 0, completion = this, finished; - var closeOn = this.options.closeCharacters || /[\s()\[\]{};:>,]/; - var startPos = this.cm.getCursor(), startLen = this.cm.getLine(startPos.line).length; - - var requestAnimationFrame = window.requestAnimationFrame || function(fn) { - return setTimeout(fn, 1000/60); - }; - var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout; - - function done() { - if (finished) return; - finished = true; - completion.close(); - completion.cm.off("cursorActivity", activity); - if (data) CodeMirror.signal(data, "close"); - } - - function update() { - if (finished) return; - CodeMirror.signal(data, "update"); - if (completion.options.async) - completion.getHints(completion.cm, finishUpdate, completion.options); - else - finishUpdate(completion.getHints(completion.cm, completion.options)); - } - function finishUpdate(data_) { - data = data_; - if (finished) return; - if (!data || !data.list.length) return done(); - completion.widget = new Widget(completion, data); - } - - function clearDebounce() { - if (debounce) { - cancelAnimationFrame(debounce); - debounce = 0; - } - } - - function activity() { - clearDebounce(); - var pos = completion.cm.getCursor(), line = completion.cm.getLine(pos.line); - if (pos.line != startPos.line || line.length - pos.ch != startLen - startPos.ch || - pos.ch < startPos.ch || completion.cm.somethingSelected() || - (pos.ch && closeOn.test(line.charAt(pos.ch - 1)))) { - completion.close(); - } else { - debounce = requestAnimationFrame(update); - if (completion.widget) completion.widget.close(); - } - } - this.cm.on("cursorActivity", activity); - this.onClose = done; - } - }; - - function getText(completion) { - if (typeof completion == "string") return completion; - else return completion.text; - } - - function buildKeyMap(options, handle) { - var baseMap = { - Up: function() {handle.moveFocus(-1);}, - Down: function() {handle.moveFocus(1);}, - PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);}, - PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);}, - Home: function() {handle.setFocus(0);}, - End: function() {handle.setFocus(handle.length - 1);}, - Enter: handle.pick, - Tab: handle.pick, - Esc: handle.close - }; - var ourMap = options.customKeys ? {} : baseMap; - function addBinding(key, val) { - var bound; - if (typeof val != "string") - bound = function(cm) { return val(cm, handle); }; - // This mechanism is deprecated - else if (baseMap.hasOwnProperty(val)) - bound = baseMap[val]; - else - bound = val; - ourMap[key] = bound; - } - if (options.customKeys) - for (var key in options.customKeys) if (options.customKeys.hasOwnProperty(key)) - addBinding(key, options.customKeys[key]); - if (options.extraKeys) - for (var key in options.extraKeys) if (options.extraKeys.hasOwnProperty(key)) - addBinding(key, options.extraKeys[key]); - return ourMap; - } - - function getHintElement(hintsElement, el) { - while (el && el != hintsElement) { - if (el.nodeName.toUpperCase() === "LI" && el.parentNode == hintsElement) return el; - el = el.parentNode; - } - } - - function Widget(completion, data) { - this.completion = completion; - this.data = data; - var widget = this, cm = completion.cm, options = completion.options; - - var hints = this.hints = document.createElement("ul"); - hints.className = "CodeMirror-hints"; - this.selectedHint = options.getDefaultSelection ? options.getDefaultSelection(cm,options,data) : 0; - - var completions = data.list; - for (var i = 0; i < completions.length; ++i) { - var elt = hints.appendChild(document.createElement("li")), cur = completions[i]; - var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? "" : " " + ACTIVE_HINT_ELEMENT_CLASS); - if (cur.className != null) className = cur.className + " " + className; - elt.className = className; - if (cur.render) cur.render(elt, data, cur); - else elt.appendChild(document.createTextNode(cur.displayText || getText(cur))); - elt.hintId = i; - } - - var pos = cm.cursorCoords(options.alignWithWord !== false ? data.from : null); - var left = pos.left, top = pos.bottom, below = true; - hints.style.left = left + "px"; - hints.style.top = top + "px"; - // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor. - var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth); - var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight); - (options.container || document.body).appendChild(hints); - var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH; - if (overlapY > 0) { - var height = box.bottom - box.top, curTop = box.top - (pos.bottom - pos.top); - if (curTop - height > 0) { // Fits above cursor - hints.style.top = (top = curTop - height) + "px"; - below = false; - } else if (height > winH) { - hints.style.height = (winH - 5) + "px"; - hints.style.top = (top = pos.bottom - box.top) + "px"; - var cursor = cm.getCursor(); - if (data.from.ch != cursor.ch) { - pos = cm.cursorCoords(cursor); - hints.style.left = (left = pos.left) + "px"; - box = hints.getBoundingClientRect(); - } - } - } - var overlapX = box.left - winW; - if (overlapX > 0) { - if (box.right - box.left > winW) { - hints.style.width = (winW - 5) + "px"; - overlapX -= (box.right - box.left) - winW; - } - hints.style.left = (left = pos.left - overlapX) + "px"; - } - - cm.addKeyMap(this.keyMap = buildKeyMap(options, { - moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); }, - setFocus: function(n) { widget.changeActive(n); }, - menuSize: function() { return widget.screenAmount(); }, - length: completions.length, - close: function() { completion.close(); }, - pick: function() { widget.pick(); }, - data: data - })); - - if (options.closeOnUnfocus !== false) { - var closingOnBlur; - cm.on("blur", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); }); - cm.on("focus", this.onFocus = function() { clearTimeout(closingOnBlur); }); - } - - var startScroll = cm.getScrollInfo(); - cm.on("scroll", this.onScroll = function() { - var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect(); - var newTop = top + startScroll.top - curScroll.top; - var point = newTop - (window.pageYOffset || (document.documentElement || document.body).scrollTop); - if (!below) point += hints.offsetHeight; - if (point <= editor.top || point >= editor.bottom) return completion.close(); - hints.style.top = newTop + "px"; - hints.style.left = (left + startScroll.left - curScroll.left) + "px"; - }); - - CodeMirror.on(hints, "dblclick", function(e) { - var t = getHintElement(hints, e.target || e.srcElement); - if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();} - }); - - CodeMirror.on(hints, "click", function(e) { - var t = getHintElement(hints, e.target || e.srcElement); - if (t && t.hintId != null) { - widget.changeActive(t.hintId); - if (options.completeOnSingleClick) widget.pick(); - } - }); - - CodeMirror.on(hints, "mousedown", function() { - setTimeout(function(){cm.focus();}, 20); - }); - - CodeMirror.signal(data, "select", completions[0], hints.firstChild); - return true; - } - - Widget.prototype = { - close: function() { - if (this.completion.widget != this) return; - this.completion.widget = null; - this.hints.parentNode.removeChild(this.hints); - this.completion.cm.removeKeyMap(this.keyMap); - - var cm = this.completion.cm; - if (this.completion.options.closeOnUnfocus !== false) { - cm.off("blur", this.onBlur); - cm.off("focus", this.onFocus); - } - cm.off("scroll", this.onScroll); - }, - - pick: function() { - this.completion.pick(this.data, this.selectedHint); - }, - - changeActive: function(i, avoidWrap) { - if (i >= this.data.list.length) - i = avoidWrap ? this.data.list.length - 1 : 0; - else if (i < 0) - i = avoidWrap ? 0 : this.data.list.length - 1; - if (this.selectedHint == i) return; - var node = this.hints.childNodes[this.selectedHint]; - node.className = node.className.replace(" " + ACTIVE_HINT_ELEMENT_CLASS, ""); - node = this.hints.childNodes[this.selectedHint = i]; - node.className += " " + ACTIVE_HINT_ELEMENT_CLASS; - if (node.offsetTop < this.hints.scrollTop) - this.hints.scrollTop = node.offsetTop - 3; - else if (node.offsetTop + node.offsetHeight > this.hints.scrollTop + this.hints.clientHeight) - this.hints.scrollTop = node.offsetTop + node.offsetHeight - this.hints.clientHeight + 3; - CodeMirror.signal(this.data, "select", this.data.list[this.selectedHint], node); - }, - - screenAmount: function() { - return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1; - } - }; - - CodeMirror.registerHelper("hint", "auto", function(cm, options) { - var helpers = cm.getHelpers(cm.getCursor(), "hint"), words; - if (helpers.length) { - for (var i = 0; i < helpers.length; i++) { - var cur = helpers[i](cm, options); - if (cur && cur.list.length) return cur; - } - } else if (words = cm.getHelper(cm.getCursor(), "hintWords")) { - if (words) return CodeMirror.hint.fromList(cm, {words: words}); - } else if (CodeMirror.hint.anyword) { - return CodeMirror.hint.anyword(cm, options); - } - }); - - CodeMirror.registerHelper("hint", "fromList", function(cm, options) { - var cur = cm.getCursor(), token = cm.getTokenAt(cur); - var found = []; - for (var i = 0; i < options.words.length; i++) { - var word = options.words[i]; - if (word.slice(0, token.string.length) == token.string) - found.push(word); - } - - if (found.length) return { - list: found, - from: CodeMirror.Pos(cur.line, token.start), - to: CodeMirror.Pos(cur.line, token.end) - }; - }); - - CodeMirror.commands.autocomplete = CodeMirror.showHint; -}); diff --git a/vendor/codemirror/addon/hint/sql-hint.js b/vendor/codemirror/addon/hint/sql-hint.js deleted file mode 100644 index a48d2b3c..00000000 --- a/vendor/codemirror/addon/hint/sql-hint.js +++ /dev/null @@ -1,161 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../../mode/sql/sql")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../../mode/sql/sql"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var tables; - var keywords; - var CONS = { - QUERY_DIV: ";", - ALIAS_KEYWORD: "AS" - }; - var Pos = CodeMirror.Pos; - - function getKeywords(editor) { - var mode = editor.doc.modeOption; - if(mode === "sql") mode = "text/x-sql"; - return CodeMirror.resolveMode(mode).keywords; - } - - function match(string, word) { - var len = string.length; - var sub = word.substr(0, len); - return string.toUpperCase() === sub.toUpperCase(); - } - - function addMatches(result, search, wordlist, formatter) { - for(var word in wordlist) { - if(!wordlist.hasOwnProperty(word)) continue; - if(Array.isArray(wordlist)) { - word = wordlist[word]; - } - if(match(search, word)) { - result.push(formatter(word)); - } - } - } - - function columnCompletion(result, editor) { - var cur = editor.getCursor(); - var token = editor.getTokenAt(cur); - var string = token.string.substr(1); - var prevCur = Pos(cur.line, token.start); - var table = editor.getTokenAt(prevCur).string; - if( !tables.hasOwnProperty( table ) ){ - table = findTableByAlias(table, editor); - } - var columns = tables[table]; - if(!columns) { - return; - } - addMatches(result, string, columns, - function(w) {return "." + w;}); - } - - function eachWord(lineText, f) { - if( !lineText ){return;} - var excepted = /[,;]/g; - var words = lineText.split( " " ); - for( var i = 0; i < words.length; i++ ){ - f( words[i]?words[i].replace( excepted, '' ) : '' ); - } - } - - function convertCurToNumber( cur ){ - // max characters of a line is 999,999. - return cur.line + cur.ch / Math.pow( 10, 6 ); - } - - function convertNumberToCur( num ){ - return Pos(Math.floor( num ), +num.toString().split( '.' ).pop()); - } - - function findTableByAlias(alias, editor) { - var doc = editor.doc; - var fullQuery = doc.getValue(); - var aliasUpperCase = alias.toUpperCase(); - var previousWord = ""; - var table = ""; - var separator = []; - var validRange = { - start: Pos( 0, 0 ), - end: Pos( editor.lastLine(), editor.getLineHandle( editor.lastLine() ).length ) - }; - - //add separator - var indexOfSeparator = fullQuery.indexOf( CONS.QUERY_DIV ); - while( indexOfSeparator != -1 ){ - separator.push( doc.posFromIndex(indexOfSeparator)); - indexOfSeparator = fullQuery.indexOf( CONS.QUERY_DIV, indexOfSeparator+1); - } - separator.unshift( Pos( 0, 0 ) ); - separator.push( Pos( editor.lastLine(), editor.getLineHandle( editor.lastLine() ).text.length ) ); - - //find valieRange - var prevItem = 0; - var current = convertCurToNumber( editor.getCursor() ); - for( var i=0; i< separator.length; i++){ - var _v = convertCurToNumber( separator[i] ); - if( current > prevItem && current <= _v ){ - validRange = { start: convertNumberToCur( prevItem ), end: convertNumberToCur( _v ) }; - break; - } - prevItem = _v; - } - - var query = doc.getRange(validRange.start, validRange.end, false); - - for(var i=0; i < query.length; i++){ - var lineText = query[i]; - eachWord( lineText, function( word ){ - var wordUpperCase = word.toUpperCase(); - if( wordUpperCase === aliasUpperCase && tables.hasOwnProperty( previousWord ) ){ - table = previousWord; - } - if( wordUpperCase !== CONS.ALIAS_KEYWORD ){ - previousWord = word; - } - }); - if( table ){ break; } - } - return table; - } - - function sqlHint(editor, options) { - tables = (options && options.tables) || {}; - keywords = keywords || getKeywords(editor); - var cur = editor.getCursor(); - var token = editor.getTokenAt(cur), end = token.end; - var result = []; - var search = token.string.trim(); - - if (search.charAt(0) == ".") { - columnCompletion(result, editor); - if (!result.length) { - while (token.start && search.charAt(0) == ".") { - token = editor.getTokenAt(Pos(cur.line, token.start - 1)); - search = token.string + search; - } - addMatches(result, search, tables, - function(w) {return w;}); - } - } else { - addMatches(result, search, keywords, - function(w) {return w.toUpperCase();}); - addMatches(result, search, tables, - function(w) {return w;}); - } - - return { - list: result, - from: Pos(cur.line, token.start), - to: Pos(cur.line, end) - }; - } - CodeMirror.registerHelper("hint", "sql", sqlHint); -}); diff --git a/vendor/codemirror/addon/hint/xml-hint.js b/vendor/codemirror/addon/hint/xml-hint.js deleted file mode 100644 index 85756490..00000000 --- a/vendor/codemirror/addon/hint/xml-hint.js +++ /dev/null @@ -1,75 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var Pos = CodeMirror.Pos; - - function getHints(cm, options) { - var tags = options && options.schemaInfo; - var quote = (options && options.quoteChar) || '"'; - if (!tags) return; - var cur = cm.getCursor(), token = cm.getTokenAt(cur); - var inner = CodeMirror.innerMode(cm.getMode(), token.state); - if (inner.mode.name != "xml") return; - var result = [], replaceToken = false, prefix; - var isTag = token.string.charAt(0) == "<"; - if (!inner.state.tagName || isTag) { // Tag completion - if (isTag) { - prefix = token.string.slice(1); - replaceToken = true; - } - var cx = inner.state.context, curTag = cx && tags[cx.tagName]; - var childList = cx ? curTag && curTag.children : tags["!top"]; - if (childList) { - for (var i = 0; i < childList.length; ++i) if (!prefix || childList[i].lastIndexOf(prefix, 0) == 0) - result.push("<" + childList[i]); - } else { - for (var name in tags) if (tags.hasOwnProperty(name) && name != "!top" && (!prefix || name.lastIndexOf(prefix, 0) == 0)) - result.push("<" + name); - } - if (cx && (!prefix || ("/" + cx.tagName).lastIndexOf(prefix, 0) == 0)) - result.push(""); - } else { - // Attribute completion - var curTag = tags[inner.state.tagName], attrs = curTag && curTag.attrs; - if (!attrs) return; - if (token.type == "string" || token.string == "=") { // A value - var before = cm.getRange(Pos(cur.line, Math.max(0, cur.ch - 60)), - Pos(cur.line, token.type == "string" ? token.start : token.end)); - var atName = before.match(/([^\s\u00a0=<>\"\']+)=$/), atValues; - if (!atName || !attrs.hasOwnProperty(atName[1]) || !(atValues = attrs[atName[1]])) return; - if (typeof atValues == 'function') atValues = atValues.call(this, cm); // Functions can be used to supply values for autocomplete widget - if (token.type == "string") { - prefix = token.string; - if (/['"]/.test(token.string.charAt(0))) { - quote = token.string.charAt(0); - prefix = token.string.slice(1); - } - replaceToken = true; - } - for (var i = 0; i < atValues.length; ++i) if (!prefix || atValues[i].lastIndexOf(prefix, 0) == 0) - result.push(quote + atValues[i] + quote); - } else { // An attribute name - if (token.type == "attribute") { - prefix = token.string; - replaceToken = true; - } - for (var attr in attrs) if (attrs.hasOwnProperty(attr) && (!prefix || attr.lastIndexOf(prefix, 0) == 0)) - result.push(attr); - } - } - return { - list: result, - from: replaceToken ? Pos(cur.line, token.start) : cur, - to: replaceToken ? Pos(cur.line, token.end) : cur - }; - } - - CodeMirror.registerHelper("hint", "xml", getHints); -}); diff --git a/vendor/codemirror/addon/lint/coffeescript-lint.js b/vendor/codemirror/addon/lint/coffeescript-lint.js deleted file mode 100644 index 6df17f8f..00000000 --- a/vendor/codemirror/addon/lint/coffeescript-lint.js +++ /dev/null @@ -1,38 +0,0 @@ -// Depends on coffeelint.js from http://www.coffeelint.org/js/coffeelint.js - -// declare global: coffeelint - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.registerHelper("lint", "coffeescript", function(text) { - var found = []; - var parseError = function(err) { - var loc = err.lineNumber; - found.push({from: CodeMirror.Pos(loc-1, 0), - to: CodeMirror.Pos(loc, 0), - severity: err.level, - message: err.message}); - }; - try { - var res = coffeelint.lint(text); - for(var i = 0; i < res.length; i++) { - parseError(res[i]); - } - } catch(e) { - found.push({from: CodeMirror.Pos(e.location.first_line, 0), - to: CodeMirror.Pos(e.location.last_line, e.location.last_column), - severity: 'error', - message: e.message}); - } - return found; -}); - -}); diff --git a/vendor/codemirror/addon/lint/css-lint.js b/vendor/codemirror/addon/lint/css-lint.js deleted file mode 100644 index 2a799ddc..00000000 --- a/vendor/codemirror/addon/lint/css-lint.js +++ /dev/null @@ -1,31 +0,0 @@ -// Depends on csslint.js from https://github.com/stubbornella/csslint - -// declare global: CSSLint - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.registerHelper("lint", "css", function(text) { - var found = []; - var results = CSSLint.verify(text), messages = results.messages, message = null; - for ( var i = 0; i < messages.length; i++) { - message = messages[i]; - var startLine = message.line -1, endLine = message.line -1, startCol = message.col -1, endCol = message.col; - found.push({ - from: CodeMirror.Pos(startLine, startCol), - to: CodeMirror.Pos(endLine, endCol), - message: message.message, - severity : message.type - }); - } - return found; -}); - -}); diff --git a/vendor/codemirror/addon/lint/javascript-lint.js b/vendor/codemirror/addon/lint/javascript-lint.js deleted file mode 100644 index bbb51083..00000000 --- a/vendor/codemirror/addon/lint/javascript-lint.js +++ /dev/null @@ -1,132 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - // declare global: JSHINT - - var bogus = [ "Dangerous comment" ]; - - var warnings = [ [ "Expected '{'", - "Statement body should be inside '{ }' braces." ] ]; - - var errors = [ "Missing semicolon", "Extra comma", "Missing property name", - "Unmatched ", " and instead saw", " is not defined", - "Unclosed string", "Stopping, unable to continue" ]; - - function validator(text, options) { - JSHINT(text, options); - var errors = JSHINT.data().errors, result = []; - if (errors) parseErrors(errors, result); - return result; - } - - CodeMirror.registerHelper("lint", "javascript", validator); - - function cleanup(error) { - // All problems are warnings by default - fixWith(error, warnings, "warning", true); - fixWith(error, errors, "error"); - - return isBogus(error) ? null : error; - } - - function fixWith(error, fixes, severity, force) { - var description, fix, find, replace, found; - - description = error.description; - - for ( var i = 0; i < fixes.length; i++) { - fix = fixes[i]; - find = (typeof fix === "string" ? fix : fix[0]); - replace = (typeof fix === "string" ? null : fix[1]); - found = description.indexOf(find) !== -1; - - if (force || found) { - error.severity = severity; - } - if (found && replace) { - error.description = replace; - } - } - } - - function isBogus(error) { - var description = error.description; - for ( var i = 0; i < bogus.length; i++) { - if (description.indexOf(bogus[i]) !== -1) { - return true; - } - } - return false; - } - - function parseErrors(errors, output) { - for ( var i = 0; i < errors.length; i++) { - var error = errors[i]; - if (error) { - var linetabpositions, index; - - linetabpositions = []; - - // This next block is to fix a problem in jshint. Jshint - // replaces - // all tabs with spaces then performs some checks. The error - // positions (character/space) are then reported incorrectly, - // not taking the replacement step into account. Here we look - // at the evidence line and try to adjust the character position - // to the correct value. - if (error.evidence) { - // Tab positions are computed once per line and cached - var tabpositions = linetabpositions[error.line]; - if (!tabpositions) { - var evidence = error.evidence; - tabpositions = []; - // ugggh phantomjs does not like this - // forEachChar(evidence, function(item, index) { - Array.prototype.forEach.call(evidence, function(item, - index) { - if (item === '\t') { - // First col is 1 (not 0) to match error - // positions - tabpositions.push(index + 1); - } - }); - linetabpositions[error.line] = tabpositions; - } - if (tabpositions.length > 0) { - var pos = error.character; - tabpositions.forEach(function(tabposition) { - if (pos > tabposition) pos -= 1; - }); - error.character = pos; - } - } - - var start = error.character - 1, end = start + 1; - if (error.evidence) { - index = error.evidence.substring(start).search(/.\b/); - if (index > -1) { - end += index; - } - } - - // Convert to format expected by validation service - error.description = error.reason;// + "(jshint)"; - error.start = error.character; - error.end = end; - error = cleanup(error); - - if (error) - output.push({message: error.description, - severity: error.severity, - from: CodeMirror.Pos(error.line - 1, start), - to: CodeMirror.Pos(error.line - 1, end)}); - } - } - } -}); diff --git a/vendor/codemirror/addon/lint/json-lint.js b/vendor/codemirror/addon/lint/json-lint.js deleted file mode 100644 index 1f5f82d0..00000000 --- a/vendor/codemirror/addon/lint/json-lint.js +++ /dev/null @@ -1,28 +0,0 @@ -// Depends on jsonlint.js from https://github.com/zaach/jsonlint - -// declare global: jsonlint - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.registerHelper("lint", "json", function(text) { - var found = []; - jsonlint.parseError = function(str, hash) { - var loc = hash.loc; - found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column), - to: CodeMirror.Pos(loc.last_line - 1, loc.last_column), - message: str}); - }; - try { jsonlint.parse(text); } - catch(e) {} - return found; -}); - -}); diff --git a/vendor/codemirror/addon/lint/lint.css b/vendor/codemirror/addon/lint/lint.css deleted file mode 100644 index 414a9a0e..00000000 --- a/vendor/codemirror/addon/lint/lint.css +++ /dev/null @@ -1,73 +0,0 @@ -/* The lint marker gutter */ -.CodeMirror-lint-markers { - width: 16px; -} - -.CodeMirror-lint-tooltip { - background-color: infobackground; - border: 1px solid black; - border-radius: 4px 4px 4px 4px; - color: infotext; - font-family: monospace; - font-size: 10pt; - overflow: hidden; - padding: 2px 5px; - position: fixed; - white-space: pre; - white-space: pre-wrap; - z-index: 100; - max-width: 600px; - opacity: 0; - transition: opacity .4s; - -moz-transition: opacity .4s; - -webkit-transition: opacity .4s; - -o-transition: opacity .4s; - -ms-transition: opacity .4s; -} - -.CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning { - background-position: left bottom; - background-repeat: repeat-x; -} - -.CodeMirror-lint-mark-error { - background-image: - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==") - ; -} - -.CodeMirror-lint-mark-warning { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII="); -} - -.CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning { - background-position: center center; - background-repeat: no-repeat; - cursor: pointer; - display: inline-block; - height: 16px; - width: 16px; - vertical-align: middle; - position: relative; -} - -.CodeMirror-lint-message-error, .CodeMirror-lint-message-warning { - padding-left: 18px; - background-position: top left; - background-repeat: no-repeat; -} - -.CodeMirror-lint-marker-error, .CodeMirror-lint-message-error { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII="); -} - -.CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII="); -} - -.CodeMirror-lint-marker-multiple { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC"); - background-repeat: no-repeat; - background-position: right bottom; - width: 100%; height: 100%; -} diff --git a/vendor/codemirror/addon/lint/lint.js b/vendor/codemirror/addon/lint/lint.js deleted file mode 100644 index db5162ee..00000000 --- a/vendor/codemirror/addon/lint/lint.js +++ /dev/null @@ -1,207 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - var GUTTER_ID = "CodeMirror-lint-markers"; - var SEVERITIES = /^(?:error|warning)$/; - - function showTooltip(e, content) { - var tt = document.createElement("div"); - tt.className = "CodeMirror-lint-tooltip"; - tt.appendChild(content.cloneNode(true)); - document.body.appendChild(tt); - - function position(e) { - if (!tt.parentNode) return CodeMirror.off(document, "mousemove", position); - tt.style.top = Math.max(0, e.clientY - tt.offsetHeight - 5) + "px"; - tt.style.left = (e.clientX + 5) + "px"; - } - CodeMirror.on(document, "mousemove", position); - position(e); - if (tt.style.opacity != null) tt.style.opacity = 1; - return tt; - } - function rm(elt) { - if (elt.parentNode) elt.parentNode.removeChild(elt); - } - function hideTooltip(tt) { - if (!tt.parentNode) return; - if (tt.style.opacity == null) rm(tt); - tt.style.opacity = 0; - setTimeout(function() { rm(tt); }, 600); - } - - function showTooltipFor(e, content, node) { - var tooltip = showTooltip(e, content); - function hide() { - CodeMirror.off(node, "mouseout", hide); - if (tooltip) { hideTooltip(tooltip); tooltip = null; } - } - var poll = setInterval(function() { - if (tooltip) for (var n = node;; n = n.parentNode) { - if (n == document.body) return; - if (!n) { hide(); break; } - } - if (!tooltip) return clearInterval(poll); - }, 400); - CodeMirror.on(node, "mouseout", hide); - } - - function LintState(cm, options, hasGutter) { - this.marked = []; - this.options = options; - this.timeout = null; - this.hasGutter = hasGutter; - this.onMouseOver = function(e) { onMouseOver(cm, e); }; - } - - function parseOptions(cm, options) { - if (options instanceof Function) return {getAnnotations: options}; - if (!options || options === true) options = {}; - if (!options.getAnnotations) options.getAnnotations = cm.getHelper(CodeMirror.Pos(0, 0), "lint"); - if (!options.getAnnotations) throw new Error("Required option 'getAnnotations' missing (lint addon)"); - return options; - } - - function clearMarks(cm) { - var state = cm.state.lint; - if (state.hasGutter) cm.clearGutter(GUTTER_ID); - for (var i = 0; i < state.marked.length; ++i) - state.marked[i].clear(); - state.marked.length = 0; - } - - function makeMarker(labels, severity, multiple, tooltips) { - var marker = document.createElement("div"), inner = marker; - marker.className = "CodeMirror-lint-marker-" + severity; - if (multiple) { - inner = marker.appendChild(document.createElement("div")); - inner.className = "CodeMirror-lint-marker-multiple"; - } - - if (tooltips != false) CodeMirror.on(inner, "mouseover", function(e) { - showTooltipFor(e, labels, inner); - }); - - return marker; - } - - function getMaxSeverity(a, b) { - if (a == "error") return a; - else return b; - } - - function groupByLine(annotations) { - var lines = []; - for (var i = 0; i < annotations.length; ++i) { - var ann = annotations[i], line = ann.from.line; - (lines[line] || (lines[line] = [])).push(ann); - } - return lines; - } - - function annotationTooltip(ann) { - var severity = ann.severity; - if (!SEVERITIES.test(severity)) severity = "error"; - var tip = document.createElement("div"); - tip.className = "CodeMirror-lint-message-" + severity; - tip.appendChild(document.createTextNode(ann.message)); - return tip; - } - - function startLinting(cm) { - var state = cm.state.lint, options = state.options; - if (options.async) - options.getAnnotations(cm, updateLinting, options); - else - updateLinting(cm, options.getAnnotations(cm.getValue(), options.options)); - } - - function updateLinting(cm, annotationsNotSorted) { - clearMarks(cm); - var state = cm.state.lint, options = state.options; - - var annotations = groupByLine(annotationsNotSorted); - - for (var line = 0; line < annotations.length; ++line) { - var anns = annotations[line]; - if (!anns) continue; - - var maxSeverity = null; - var tipLabel = state.hasGutter && document.createDocumentFragment(); - - for (var i = 0; i < anns.length; ++i) { - var ann = anns[i]; - var severity = ann.severity; - if (!SEVERITIES.test(severity)) severity = "error"; - maxSeverity = getMaxSeverity(maxSeverity, severity); - - if (options.formatAnnotation) ann = options.formatAnnotation(ann); - if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann)); - - if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, { - className: "CodeMirror-lint-mark-" + severity, - __annotation: ann - })); - } - - if (state.hasGutter) - cm.setGutterMarker(line, GUTTER_ID, makeMarker(tipLabel, maxSeverity, anns.length > 1, - state.options.tooltips)); - } - if (options.onUpdateLinting) options.onUpdateLinting(annotationsNotSorted, annotations, cm); - } - - function onChange(cm) { - var state = cm.state.lint; - clearTimeout(state.timeout); - state.timeout = setTimeout(function(){startLinting(cm);}, state.options.delay || 500); - } - - function popupSpanTooltip(ann, e) { - var target = e.target || e.srcElement; - showTooltipFor(e, annotationTooltip(ann), target); - } - - // When the mouseover fires, the cursor might not actually be over - // the character itself yet. These pairs of x,y offsets are used to - // probe a few nearby points when no suitable marked range is found. - var nearby = [0, 0, 0, 5, 0, -5, 5, 0, -5, 0]; - - function onMouseOver(cm, e) { - if (!/\bCodeMirror-lint-mark-/.test((e.target || e.srcElement).className)) return; - for (var i = 0; i < nearby.length; i += 2) { - var spans = cm.findMarksAt(cm.coordsChar({left: e.clientX + nearby[i], - top: e.clientY + nearby[i + 1]})); - for (var j = 0; j < spans.length; ++j) { - var span = spans[j], ann = span.__annotation; - if (ann) return popupSpanTooltip(ann, e); - } - } - } - - CodeMirror.defineOption("lint", false, function(cm, val, old) { - if (old && old != CodeMirror.Init) { - clearMarks(cm); - cm.off("change", onChange); - CodeMirror.off(cm.getWrapperElement(), "mouseover", cm.state.lint.onMouseOver); - delete cm.state.lint; - } - - if (val) { - var gutters = cm.getOption("gutters"), hasLintGutter = false; - for (var i = 0; i < gutters.length; ++i) if (gutters[i] == GUTTER_ID) hasLintGutter = true; - var state = cm.state.lint = new LintState(cm, parseOptions(cm, val), hasLintGutter); - cm.on("change", onChange); - if (state.options.tooltips != false) - CodeMirror.on(cm.getWrapperElement(), "mouseover", state.onMouseOver); - - startLinting(cm); - } - }); -}); diff --git a/vendor/codemirror/addon/lint/yaml-lint.js b/vendor/codemirror/addon/lint/yaml-lint.js deleted file mode 100644 index b53673af..00000000 --- a/vendor/codemirror/addon/lint/yaml-lint.js +++ /dev/null @@ -1,25 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -// Depends on js-yaml.js from https://github.com/nodeca/js-yaml - -// declare global: jsyaml - -CodeMirror.registerHelper("lint", "yaml", function(text) { - var found = []; - try { jsyaml.load(text); } - catch(e) { - var loc = e.mark; - found.push({ from: CodeMirror.Pos(loc.line, loc.column), to: CodeMirror.Pos(loc.line, loc.column), message: e.message }); - } - return found; -}); - -}); diff --git a/vendor/codemirror/addon/merge/dep/diff_match_patch.js b/vendor/codemirror/addon/merge/dep/diff_match_patch.js deleted file mode 100644 index 9d615dc9..00000000 --- a/vendor/codemirror/addon/merge/dep/diff_match_patch.js +++ /dev/null @@ -1,50 +0,0 @@ -// From https://code.google.com/p/google-diff-match-patch/ , licensed under the Apache License 2.0 -(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=0.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=0.5;this.Patch_Margin=4;this.Match_MaxBits=32} -diff_match_patch.prototype.diff_main=function(a,b,c,d){"undefined"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error("Null input. (diff_main)");if(a==b)return a?[[0,a]]:[];"undefined"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);var f=this.diff_commonSuffix(a,b),g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a, -b,e,d);c&&a.unshift([0,c]);g&&a.push([0,g]);this.diff_cleanupMerge(a);return a}; -diff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[1,b]];if(!b)return[[-1,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[1,e.substring(0,g)],[0,f],[1,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=-1),c):1==f.length?[[-1,a],[1,b]]:(e=this.diff_halfMatch_(a,b))?(f=e[0],a=e[1],g=e[2],b=e[3],e=e[4],f=this.diff_main(f,g,c,d),c=this.diff_main(a,b,c,d),f.concat([[0,e]],c)):c&&100c);v++){for(var n=-v+r;n<=v-t;n+=2){var l=g+n,m;m=n==-v||n!=v&&j[l-1]d)t+=2;else if(s>e)r+=2;else if(q&&(l=g+k-n,0<=l&&l= -u)return this.diff_bisectSplit_(a,b,m,s,c)}}for(n=-v+p;n<=v-w;n+=2){l=g+n;u=n==-v||n!=v&&i[l-1]d)w+=2;else if(m>e)p+=2;else if(!q&&(l=g+k-n,0<=l&&(l=u)))return this.diff_bisectSplit_(a,b,m,s,c)}}return[[-1,a],[1,b]]}; -diff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)}; -diff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b="",c=0,f=-1,g=d.length;fd?a=a.substring(c-d):c=a.length?[h,j,n,l,g]:null}if(0>=this.Diff_Timeout)return null; -var d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.lengthd[4].length?g:d:d:g;var j;a.length>b.length?(g=h[0],d=h[1],e=h[2],j=h[3]):(e=h[0],j=h[1],g=h[2],d=h[3]);h=h[4];return[g,d,e,j,h]}; -diff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,j=0,i=0;f=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[0,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[0,b.substring(0,e)]),a[f-1][0]=1,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=-1,a[f+1][1]=b.substring(e),f++;f++}f++}}; -diff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_),c=g&&c.match(diff_match_patch.linebreakRegex_),d=h&&d.match(diff_match_patch.linebreakRegex_),i=c&&a.match(diff_match_patch.blanklineEndRegex_),j=d&&b.match(diff_match_patch.blanklineStartRegex_); -return i||j?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c=i&&(i=k,g=d,h=e,j=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-1,1),c--),a[c][1]= -h,j?a[c+1][1]=j:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\s/;diff_match_patch.linebreakRegex_=/[\r\n]/;diff_match_patch.blanklineEndRegex_=/\n\r?\n$/;diff_match_patch.blanklineStartRegex_=/^\r?\n\r?\n/; -diff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,j=!1,i=!1;fb)break;e=c;f=d}return a.length!=g&&-1===a[g][0]?f:f+(b-e)}; -diff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=//g,f=/\n/g,g=0;g");switch(h){case 1:b[g]=''+j+"";break;case -1:b[g]=''+j+"";break;case 0:b[g]=""+j+""}}return b.join("")}; -diff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;cthis.Match_MaxBits)throw Error("Pattern too long for this browser.");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));for(var j=1<=i;p--){var w=e[a.charAt(p-1)];k[p]=0===t?(k[p+1]<<1|1)&w:(k[p+1]<<1|1)&w|((r[p+1]|r[p])<<1|1)|r[p+1];if(k[p]&j&&(w=d(t,p-1),w<=g))if(g=w,h=p-1,h>c)i=Math.max(1,2*c-h);else break}if(d(t+1,c)>g)break;r=k}return h}; -diff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c=2*this.Patch_Margin&& -e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}1!==i&&(f+=k.length);-1!==i&&(g+=k.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};diff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;cthis.Match_MaxBits){if(j=this.match_main(b,h.substring(0,this.Match_MaxBits),g),-1!=j&&(i=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==i||j>=i))j=-1}else j=this.match_main(b,h,g); -if(-1==j)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=j-g,g=-1==i?b.substring(j,j+h.length):b.substring(j,i+this.Match_MaxBits),h==g)b=b.substring(0,j)+this.diff_text2(a[f].diffs)+b.substring(j+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);for(var h=0,k,i=0;ie[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||0!=e[e.length-1][0]?(e.push([0, -c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c}; -diff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c2*b?(h.length1+=i.length,e+=i.length,j=!1,h.diffs.push([g,i]),d.diffs.shift()):(i=i.substring(0,b-h.length1-this.Patch_Margin),h.length1+=i.length,e+=i.length,0===g?(h.length2+=i.length,f+=i.length):j=!1,h.diffs.push([g,i]),i==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(i.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);i=this.diff_text1(d.diffs).substring(0,this.Patch_Margin);""!==i&& -(h.length1+=i.length,h.length2+=i.length,0!==h.diffs.length&&0===h.diffs[h.diffs.length-1][0]?h.diffs[h.diffs.length-1][1]+=i:h.diffs.push([0,i]));j||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c now) return false; - - var sInfo = editor.getScrollInfo(), halfScreen = .5 * sInfo.clientHeight, midY = sInfo.top + halfScreen; - var mid = editor.lineAtHeight(midY, "local"); - var around = chunkBoundariesAround(dv.diff, mid, type == DIFF_INSERT); - var off = getOffsets(editor, type == DIFF_INSERT ? around.edit : around.orig); - var offOther = getOffsets(other, type == DIFF_INSERT ? around.orig : around.edit); - var ratio = (midY - off.top) / (off.bot - off.top); - var targetPos = (offOther.top - halfScreen) + ratio * (offOther.bot - offOther.top); - - var botDist, mix; - // Some careful tweaking to make sure no space is left out of view - // when scrolling to top or bottom. - if (targetPos > sInfo.top && (mix = sInfo.top / halfScreen) < 1) { - targetPos = targetPos * mix + sInfo.top * (1 - mix); - } else if ((botDist = sInfo.height - sInfo.clientHeight - sInfo.top) < halfScreen) { - var otherInfo = other.getScrollInfo(); - var botDistOther = otherInfo.height - otherInfo.clientHeight - targetPos; - if (botDistOther > botDist && (mix = botDist / halfScreen) < 1) - targetPos = targetPos * mix + (otherInfo.height - otherInfo.clientHeight - botDist) * (1 - mix); - } - - other.scrollTo(sInfo.left, targetPos); - other.state.scrollSetAt = now; - other.state.scrollSetBy = dv; - return true; - } - - function getOffsets(editor, around) { - var bot = around.after; - if (bot == null) bot = editor.lastLine() + 1; - return {top: editor.heightAtLine(around.before || 0, "local"), - bot: editor.heightAtLine(bot, "local")}; - } - - function setScrollLock(dv, val, action) { - dv.lockScroll = val; - if (val && action != false) syncScroll(dv, DIFF_INSERT) && drawConnectors(dv); - dv.lockButton.innerHTML = val ? "\u21db\u21da" : "\u21db  \u21da"; - } - - // Updating the marks for editor content - - function clearMarks(editor, arr, classes) { - for (var i = 0; i < arr.length; ++i) { - var mark = arr[i]; - if (mark instanceof CodeMirror.TextMarker) { - mark.clear(); - } else { - editor.removeLineClass(mark, "background", classes.chunk); - editor.removeLineClass(mark, "background", classes.start); - editor.removeLineClass(mark, "background", classes.end); - } - } - arr.length = 0; - } - - // FIXME maybe add a margin around viewport to prevent too many updates - function updateMarks(editor, diff, state, type, classes) { - var vp = editor.getViewport(); - editor.operation(function() { - if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) { - clearMarks(editor, state.marked, classes); - markChanges(editor, diff, type, state.marked, vp.from, vp.to, classes); - state.from = vp.from; state.to = vp.to; - } else { - if (vp.from < state.from) { - markChanges(editor, diff, type, state.marked, vp.from, state.from, classes); - state.from = vp.from; - } - if (vp.to > state.to) { - markChanges(editor, diff, type, state.marked, state.to, vp.to, classes); - state.to = vp.to; - } - } - }); - } - - function markChanges(editor, diff, type, marks, from, to, classes) { - var pos = Pos(0, 0); - var top = Pos(from, 0), bot = editor.clipPos(Pos(to - 1)); - var cls = type == DIFF_DELETE ? classes.del : classes.insert; - function markChunk(start, end) { - var bfrom = Math.max(from, start), bto = Math.min(to, end); - for (var i = bfrom; i < bto; ++i) { - var line = editor.addLineClass(i, "background", classes.chunk); - if (i == start) editor.addLineClass(line, "background", classes.start); - if (i == end - 1) editor.addLineClass(line, "background", classes.end); - marks.push(line); - } - // When the chunk is empty, make sure a horizontal line shows up - if (start == end && bfrom == end && bto == end) { - if (bfrom) - marks.push(editor.addLineClass(bfrom - 1, "background", classes.end)); - else - marks.push(editor.addLineClass(bfrom, "background", classes.start)); - } - } - - var chunkStart = 0; - for (var i = 0; i < diff.length; ++i) { - var part = diff[i], tp = part[0], str = part[1]; - if (tp == DIFF_EQUAL) { - var cleanFrom = pos.line + (startOfLineClean(diff, i) ? 0 : 1); - moveOver(pos, str); - var cleanTo = pos.line + (endOfLineClean(diff, i) ? 1 : 0); - if (cleanTo > cleanFrom) { - if (i) markChunk(chunkStart, cleanFrom); - chunkStart = cleanTo; - } - } else { - if (tp == type) { - var end = moveOver(pos, str, true); - var a = posMax(top, pos), b = posMin(bot, end); - if (!posEq(a, b)) - marks.push(editor.markText(a, b, {className: cls})); - pos = end; - } - } - } - if (chunkStart <= pos.line) markChunk(chunkStart, pos.line + 1); - } - - // Updating the gap between editor and original - - function drawConnectors(dv) { - if (!dv.showDifferences) return; - - if (dv.svg) { - clear(dv.svg); - var w = dv.gap.offsetWidth; - attrs(dv.svg, "width", w, "height", dv.gap.offsetHeight); - } - clear(dv.copyButtons); - - var flip = dv.type == "left"; - var vpEdit = dv.edit.getViewport(), vpOrig = dv.orig.getViewport(); - var sTopEdit = dv.edit.getScrollInfo().top, sTopOrig = dv.orig.getScrollInfo().top; - iterateChunks(dv.diff, function(topOrig, botOrig, topEdit, botEdit) { - if (topEdit > vpEdit.to || botEdit < vpEdit.from || - topOrig > vpOrig.to || botOrig < vpOrig.from) - return; - var topLpx = dv.orig.heightAtLine(topOrig, "local") - sTopOrig, top = topLpx; - if (dv.svg) { - var topRpx = dv.edit.heightAtLine(topEdit, "local") - sTopEdit; - if (flip) { var tmp = topLpx; topLpx = topRpx; topRpx = tmp; } - var botLpx = dv.orig.heightAtLine(botOrig, "local") - sTopOrig; - var botRpx = dv.edit.heightAtLine(botEdit, "local") - sTopEdit; - if (flip) { var tmp = botLpx; botLpx = botRpx; botRpx = tmp; } - var curveTop = " C " + w/2 + " " + topRpx + " " + w/2 + " " + topLpx + " " + (w + 2) + " " + topLpx; - var curveBot = " C " + w/2 + " " + botLpx + " " + w/2 + " " + botRpx + " -1 " + botRpx; - attrs(dv.svg.appendChild(document.createElementNS(svgNS, "path")), - "d", "M -1 " + topRpx + curveTop + " L " + (w + 2) + " " + botLpx + curveBot + " z", - "class", dv.classes.connect); - } - var copy = dv.copyButtons.appendChild(elt("div", dv.type == "left" ? "\u21dd" : "\u21dc", - "CodeMirror-merge-copy")); - copy.title = "Revert chunk"; - copy.chunk = {topEdit: topEdit, botEdit: botEdit, topOrig: topOrig, botOrig: botOrig}; - copy.style.top = top + "px"; - }); - } - - function copyChunk(dv, chunk) { - if (dv.diffOutOfDate) return; - dv.edit.replaceRange(dv.orig.getRange(Pos(chunk.topOrig, 0), Pos(chunk.botOrig, 0)), - Pos(chunk.topEdit, 0), Pos(chunk.botEdit, 0)); - } - - // Merge view, containing 0, 1, or 2 diff views. - - var MergeView = CodeMirror.MergeView = function(node, options) { - if (!(this instanceof MergeView)) return new MergeView(node, options); - - var origLeft = options.origLeft, origRight = options.origRight == null ? options.orig : options.origRight; - var hasLeft = origLeft != null, hasRight = origRight != null; - var panes = 1 + (hasLeft ? 1 : 0) + (hasRight ? 1 : 0); - var wrap = [], left = this.left = null, right = this.right = null; - - if (hasLeft) { - left = this.left = new DiffView(this, "left"); - var leftPane = elt("div", null, "CodeMirror-merge-pane"); - wrap.push(leftPane); - wrap.push(buildGap(left)); - } - - var editPane = elt("div", null, "CodeMirror-merge-pane"); - wrap.push(editPane); - - if (hasRight) { - right = this.right = new DiffView(this, "right"); - wrap.push(buildGap(right)); - var rightPane = elt("div", null, "CodeMirror-merge-pane"); - wrap.push(rightPane); - } - - (hasRight ? rightPane : editPane).className += " CodeMirror-merge-pane-rightmost"; - - wrap.push(elt("div", null, null, "height: 0; clear: both;")); - var wrapElt = this.wrap = node.appendChild(elt("div", wrap, "CodeMirror-merge CodeMirror-merge-" + panes + "pane")); - this.edit = CodeMirror(editPane, copyObj(options)); - - if (left) left.init(leftPane, origLeft, options); - if (right) right.init(rightPane, origRight, options); - - var onResize = function() { - if (left) drawConnectors(left); - if (right) drawConnectors(right); - }; - CodeMirror.on(window, "resize", onResize); - var resizeInterval = setInterval(function() { - for (var p = wrapElt.parentNode; p && p != document.body; p = p.parentNode) {} - if (!p) { clearInterval(resizeInterval); CodeMirror.off(window, "resize", onResize); } - }, 5000); - }; - - function buildGap(dv) { - var lock = dv.lockButton = elt("div", null, "CodeMirror-merge-scrolllock"); - lock.title = "Toggle locked scrolling"; - var lockWrap = elt("div", [lock], "CodeMirror-merge-scrolllock-wrap"); - CodeMirror.on(lock, "click", function() { setScrollLock(dv, !dv.lockScroll); }); - dv.copyButtons = elt("div", null, "CodeMirror-merge-copybuttons-" + dv.type); - CodeMirror.on(dv.copyButtons, "click", function(e) { - var node = e.target || e.srcElement; - if (node.chunk) copyChunk(dv, node.chunk); - }); - var gapElts = [dv.copyButtons, lockWrap]; - var svg = document.createElementNS && document.createElementNS(svgNS, "svg"); - if (svg && !svg.createSVGRect) svg = null; - dv.svg = svg; - if (svg) gapElts.push(svg); - - return dv.gap = elt("div", gapElts, "CodeMirror-merge-gap"); - } - - MergeView.prototype = { - constuctor: MergeView, - editor: function() { return this.edit; }, - rightOriginal: function() { return this.right && this.right.orig; }, - leftOriginal: function() { return this.left && this.left.orig; }, - setShowDifferences: function(val) { - if (this.right) this.right.setShowDifferences(val); - if (this.left) this.left.setShowDifferences(val); - }, - rightChunks: function() { - return this.right && getChunks(this.right.diff); - }, - leftChunks: function() { - return this.left && getChunks(this.left.diff); - } - }; - - function asString(obj) { - if (typeof obj == "string") return obj; - else return obj.getValue(); - } - - // Operations on diffs - - var dmp = new diff_match_patch(); - function getDiff(a, b) { - var diff = dmp.diff_main(a, b); - dmp.diff_cleanupSemantic(diff); - // The library sometimes leaves in empty parts, which confuse the algorithm - for (var i = 0; i < diff.length; ++i) { - var part = diff[i]; - if (!part[1]) { - diff.splice(i--, 1); - } else if (i && diff[i - 1][0] == part[0]) { - diff.splice(i--, 1); - diff[i][1] += part[1]; - } - } - return diff; - } - - function iterateChunks(diff, f) { - var startEdit = 0, startOrig = 0; - var edit = Pos(0, 0), orig = Pos(0, 0); - for (var i = 0; i < diff.length; ++i) { - var part = diff[i], tp = part[0]; - if (tp == DIFF_EQUAL) { - var startOff = startOfLineClean(diff, i) ? 0 : 1; - var cleanFromEdit = edit.line + startOff, cleanFromOrig = orig.line + startOff; - moveOver(edit, part[1], null, orig); - var endOff = endOfLineClean(diff, i) ? 1 : 0; - var cleanToEdit = edit.line + endOff, cleanToOrig = orig.line + endOff; - if (cleanToEdit > cleanFromEdit) { - if (i) f(startOrig, cleanFromOrig, startEdit, cleanFromEdit); - startEdit = cleanToEdit; startOrig = cleanToOrig; - } - } else { - moveOver(tp == DIFF_INSERT ? edit : orig, part[1]); - } - } - if (startEdit <= edit.line || startOrig <= orig.line) - f(startOrig, orig.line + 1, startEdit, edit.line + 1); - } - - function getChunks(diff) { - var collect = []; - iterateChunks(diff, function(topOrig, botOrig, topEdit, botEdit) { - collect.push({origFrom: topOrig, origTo: botOrig, - editFrom: topEdit, editTo: botEdit}); - }); - return collect; - } - - function endOfLineClean(diff, i) { - if (i == diff.length - 1) return true; - var next = diff[i + 1][1]; - if (next.length == 1 || next.charCodeAt(0) != 10) return false; - if (i == diff.length - 2) return true; - next = diff[i + 2][1]; - return next.length > 1 && next.charCodeAt(0) == 10; - } - - function startOfLineClean(diff, i) { - if (i == 0) return true; - var last = diff[i - 1][1]; - if (last.charCodeAt(last.length - 1) != 10) return false; - if (i == 1) return true; - last = diff[i - 2][1]; - return last.charCodeAt(last.length - 1) == 10; - } - - function chunkBoundariesAround(diff, n, nInEdit) { - var beforeE, afterE, beforeO, afterO; - iterateChunks(diff, function(fromOrig, toOrig, fromEdit, toEdit) { - var fromLocal = nInEdit ? fromEdit : fromOrig; - var toLocal = nInEdit ? toEdit : toOrig; - if (afterE == null) { - if (fromLocal > n) { afterE = fromEdit; afterO = fromOrig; } - else if (toLocal > n) { afterE = toEdit; afterO = toOrig; } - } - if (toLocal <= n) { beforeE = toEdit; beforeO = toOrig; } - else if (fromLocal <= n) { beforeE = fromEdit; beforeO = fromOrig; } - }); - return {edit: {before: beforeE, after: afterE}, orig: {before: beforeO, after: afterO}}; - } - - // General utilities - - function elt(tag, content, className, style) { - var e = document.createElement(tag); - if (className) e.className = className; - if (style) e.style.cssText = style; - if (typeof content == "string") e.appendChild(document.createTextNode(content)); - else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]); - return e; - } - - function clear(node) { - for (var count = node.childNodes.length; count > 0; --count) - node.removeChild(node.firstChild); - } - - function attrs(elt) { - for (var i = 1; i < arguments.length; i += 2) - elt.setAttribute(arguments[i], arguments[i+1]); - } - - function copyObj(obj, target) { - if (!target) target = {}; - for (var prop in obj) if (obj.hasOwnProperty(prop)) target[prop] = obj[prop]; - return target; - } - - function moveOver(pos, str, copy, other) { - var out = copy ? Pos(pos.line, pos.ch) : pos, at = 0; - for (;;) { - var nl = str.indexOf("\n", at); - if (nl == -1) break; - ++out.line; - if (other) ++other.line; - at = nl + 1; - } - out.ch = (at ? 0 : out.ch) + (str.length - at); - if (other) other.ch = (at ? 0 : other.ch) + (str.length - at); - return out; - } - - function posMin(a, b) { return (a.line - b.line || a.ch - b.ch) < 0 ? a : b; } - function posMax(a, b) { return (a.line - b.line || a.ch - b.ch) > 0 ? a : b; } - function posEq(a, b) { return a.line == b.line && a.ch == b.ch; } -}); diff --git a/vendor/codemirror/addon/mode/loadmode.js b/vendor/codemirror/addon/mode/loadmode.js deleted file mode 100644 index e08c2813..00000000 --- a/vendor/codemirror/addon/mode/loadmode.js +++ /dev/null @@ -1,58 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - if (!CodeMirror.modeURL) CodeMirror.modeURL = "../mode/%N/%N.js"; - - var loading = {}; - function splitCallback(cont, n) { - var countDown = n; - return function() { if (--countDown == 0) cont(); }; - } - function ensureDeps(mode, cont) { - var deps = CodeMirror.modes[mode].dependencies; - if (!deps) return cont(); - var missing = []; - for (var i = 0; i < deps.length; ++i) { - if (!CodeMirror.modes.hasOwnProperty(deps[i])) - missing.push(deps[i]); - } - if (!missing.length) return cont(); - var split = splitCallback(cont, missing.length); - for (var i = 0; i < missing.length; ++i) - CodeMirror.requireMode(missing[i], split); - } - - CodeMirror.requireMode = function(mode, cont) { - if (typeof mode != "string") mode = mode.name; - if (CodeMirror.modes.hasOwnProperty(mode)) return ensureDeps(mode, cont); - if (loading.hasOwnProperty(mode)) return loading[mode].push(cont); - - var script = document.createElement("script"); - script.src = CodeMirror.modeURL.replace(/%N/g, mode); - var others = document.getElementsByTagName("script")[0]; - others.parentNode.insertBefore(script, others); - var list = loading[mode] = [cont]; - var count = 0, poll = setInterval(function() { - if (++count > 100) return clearInterval(poll); - if (CodeMirror.modes.hasOwnProperty(mode)) { - clearInterval(poll); - loading[mode] = null; - ensureDeps(mode, function() { - for (var i = 0; i < list.length; ++i) list[i](); - }); - } - }, 200); - }; - - CodeMirror.autoLoadMode = function(instance, mode) { - if (!CodeMirror.modes.hasOwnProperty(mode)) - CodeMirror.requireMode(mode, function() { - instance.setOption("mode", instance.getOption("mode")); - }); - }; -}); diff --git a/vendor/codemirror/addon/mode/multiplex.js b/vendor/codemirror/addon/mode/multiplex.js deleted file mode 100644 index 07385c35..00000000 --- a/vendor/codemirror/addon/mode/multiplex.js +++ /dev/null @@ -1,115 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.multiplexingMode = function(outer /*, others */) { - // Others should be {open, close, mode [, delimStyle] [, innerStyle]} objects - var others = Array.prototype.slice.call(arguments, 1); - var n_others = others.length; - - function indexOf(string, pattern, from) { - if (typeof pattern == "string") return string.indexOf(pattern, from); - var m = pattern.exec(from ? string.slice(from) : string); - return m ? m.index + from : -1; - } - - return { - startState: function() { - return { - outer: CodeMirror.startState(outer), - innerActive: null, - inner: null - }; - }, - - copyState: function(state) { - return { - outer: CodeMirror.copyState(outer, state.outer), - innerActive: state.innerActive, - inner: state.innerActive && CodeMirror.copyState(state.innerActive.mode, state.inner) - }; - }, - - token: function(stream, state) { - if (!state.innerActive) { - var cutOff = Infinity, oldContent = stream.string; - for (var i = 0; i < n_others; ++i) { - var other = others[i]; - var found = indexOf(oldContent, other.open, stream.pos); - if (found == stream.pos) { - stream.match(other.open); - state.innerActive = other; - state.inner = CodeMirror.startState(other.mode, outer.indent ? outer.indent(state.outer, "") : 0); - return other.delimStyle; - } else if (found != -1 && found < cutOff) { - cutOff = found; - } - } - if (cutOff != Infinity) stream.string = oldContent.slice(0, cutOff); - var outerToken = outer.token(stream, state.outer); - if (cutOff != Infinity) stream.string = oldContent; - return outerToken; - } else { - var curInner = state.innerActive, oldContent = stream.string; - if (!curInner.close && stream.sol()) { - state.innerActive = state.inner = null; - return this.token(stream, state); - } - var found = curInner.close ? indexOf(oldContent, curInner.close, stream.pos) : -1; - if (found == stream.pos) { - stream.match(curInner.close); - state.innerActive = state.inner = null; - return curInner.delimStyle; - } - if (found > -1) stream.string = oldContent.slice(0, found); - var innerToken = curInner.mode.token(stream, state.inner); - if (found > -1) stream.string = oldContent; - - if (curInner.innerStyle) { - if (innerToken) innerToken = innerToken + ' ' + curInner.innerStyle; - else innerToken = curInner.innerStyle; - } - - return innerToken; - } - }, - - indent: function(state, textAfter) { - var mode = state.innerActive ? state.innerActive.mode : outer; - if (!mode.indent) return CodeMirror.Pass; - return mode.indent(state.innerActive ? state.inner : state.outer, textAfter); - }, - - blankLine: function(state) { - var mode = state.innerActive ? state.innerActive.mode : outer; - if (mode.blankLine) { - mode.blankLine(state.innerActive ? state.inner : state.outer); - } - if (!state.innerActive) { - for (var i = 0; i < n_others; ++i) { - var other = others[i]; - if (other.open === "\n") { - state.innerActive = other; - state.inner = CodeMirror.startState(other.mode, mode.indent ? mode.indent(state.outer, "") : 0); - } - } - } else if (state.innerActive.close === "\n") { - state.innerActive = state.inner = null; - } - }, - - electricChars: outer.electricChars, - - innerMode: function(state) { - return state.inner ? {state: state.inner, mode: state.innerActive.mode} : {state: state.outer, mode: outer}; - } - }; -}; - -}); diff --git a/vendor/codemirror/addon/mode/multiplex_test.js b/vendor/codemirror/addon/mode/multiplex_test.js deleted file mode 100644 index c0656357..00000000 --- a/vendor/codemirror/addon/mode/multiplex_test.js +++ /dev/null @@ -1,30 +0,0 @@ -(function() { - CodeMirror.defineMode("markdown_with_stex", function(){ - var inner = CodeMirror.getMode({}, "stex"); - var outer = CodeMirror.getMode({}, "markdown"); - - var innerOptions = { - open: '$', - close: '$', - mode: inner, - delimStyle: 'delim', - innerStyle: 'inner' - }; - - return CodeMirror.multiplexingMode(outer, innerOptions); - }); - - var mode = CodeMirror.getMode({}, "markdown_with_stex"); - - function MT(name) { - test.mode( - name, - mode, - Array.prototype.slice.call(arguments, 1), - 'multiplexing'); - } - - MT( - "stexInsideMarkdown", - "[strong **Equation:**] [delim $][inner&tag \\pi][delim $]"); -})(); diff --git a/vendor/codemirror/addon/mode/overlay.js b/vendor/codemirror/addon/mode/overlay.js deleted file mode 100644 index 6f556a13..00000000 --- a/vendor/codemirror/addon/mode/overlay.js +++ /dev/null @@ -1,70 +0,0 @@ -// Utility function that allows modes to be combined. The mode given -// as the base argument takes care of most of the normal mode -// functionality, but a second (typically simple) mode is used, which -// can override the style of text. Both modes get to parse all of the -// text, but when both assign a non-null style to a piece of code, the -// overlay wins, unless the combine argument was true, in which case -// the styles are combined. - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.overlayMode = function(base, overlay, combine) { - return { - startState: function() { - return { - base: CodeMirror.startState(base), - overlay: CodeMirror.startState(overlay), - basePos: 0, baseCur: null, - overlayPos: 0, overlayCur: null - }; - }, - copyState: function(state) { - return { - base: CodeMirror.copyState(base, state.base), - overlay: CodeMirror.copyState(overlay, state.overlay), - basePos: state.basePos, baseCur: null, - overlayPos: state.overlayPos, overlayCur: null - }; - }, - - token: function(stream, state) { - if (stream.start == state.basePos) { - state.baseCur = base.token(stream, state.base); - state.basePos = stream.pos; - } - if (stream.start == state.overlayPos) { - stream.pos = stream.start; - state.overlayCur = overlay.token(stream, state.overlay); - state.overlayPos = stream.pos; - } - stream.pos = Math.min(state.basePos, state.overlayPos); - if (stream.eol()) state.basePos = state.overlayPos = 0; - - if (state.overlayCur == null) return state.baseCur; - if (state.baseCur != null && combine) return state.baseCur + " " + state.overlayCur; - else return state.overlayCur; - }, - - indent: base.indent && function(state, textAfter) { - return base.indent(state.base, textAfter); - }, - electricChars: base.electricChars, - - innerMode: function(state) { return {state: state.base, mode: base}; }, - - blankLine: function(state) { - if (base.blankLine) base.blankLine(state.base); - if (overlay.blankLine) overlay.blankLine(state.overlay); - } - }; -}; - -}); diff --git a/vendor/codemirror/addon/runmode/colorize.js b/vendor/codemirror/addon/runmode/colorize.js deleted file mode 100644 index 0f9530b1..00000000 --- a/vendor/codemirror/addon/runmode/colorize.js +++ /dev/null @@ -1,37 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("./runmode")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "./runmode"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var isBlock = /^(p|li|div|h\\d|pre|blockquote|td)$/; - - function textContent(node, out) { - if (node.nodeType == 3) return out.push(node.nodeValue); - for (var ch = node.firstChild; ch; ch = ch.nextSibling) { - textContent(ch, out); - if (isBlock.test(node.nodeType)) out.push("\n"); - } - } - - CodeMirror.colorize = function(collection, defaultMode) { - if (!collection) collection = document.body.getElementsByTagName("pre"); - - for (var i = 0; i < collection.length; ++i) { - var node = collection[i]; - var mode = node.getAttribute("data-lang") || defaultMode; - if (!mode) continue; - - var text = []; - textContent(node, text); - node.innerHTML = ""; - CodeMirror.runMode(text.join(""), mode, node); - - node.className += " cm-s-default"; - } - }; -}); diff --git a/vendor/codemirror/addon/runmode/runmode-standalone.js b/vendor/codemirror/addon/runmode/runmode-standalone.js deleted file mode 100644 index eaa2b8f2..00000000 --- a/vendor/codemirror/addon/runmode/runmode-standalone.js +++ /dev/null @@ -1,149 +0,0 @@ -window.CodeMirror = {}; - -(function() { -"use strict"; - -function splitLines(string){ return string.split(/\r?\n|\r/); }; - -function StringStream(string) { - this.pos = this.start = 0; - this.string = string; - this.lineStart = 0; -} -StringStream.prototype = { - eol: function() {return this.pos >= this.string.length;}, - sol: function() {return this.pos == 0;}, - peek: function() {return this.string.charAt(this.pos) || null;}, - next: function() { - if (this.pos < this.string.length) - return this.string.charAt(this.pos++); - }, - eat: function(match) { - var ch = this.string.charAt(this.pos); - if (typeof match == "string") var ok = ch == match; - else var ok = ch && (match.test ? match.test(ch) : match(ch)); - if (ok) {++this.pos; return ch;} - }, - eatWhile: function(match) { - var start = this.pos; - while (this.eat(match)){} - return this.pos > start; - }, - eatSpace: function() { - var start = this.pos; - while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; - return this.pos > start; - }, - skipToEnd: function() {this.pos = this.string.length;}, - skipTo: function(ch) { - var found = this.string.indexOf(ch, this.pos); - if (found > -1) {this.pos = found; return true;} - }, - backUp: function(n) {this.pos -= n;}, - column: function() {return this.start - this.lineStart;}, - indentation: function() {return 0;}, - match: function(pattern, consume, caseInsensitive) { - if (typeof pattern == "string") { - var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; - var substr = this.string.substr(this.pos, pattern.length); - if (cased(substr) == cased(pattern)) { - if (consume !== false) this.pos += pattern.length; - return true; - } - } else { - var match = this.string.slice(this.pos).match(pattern); - if (match && match.index > 0) return null; - if (match && consume !== false) this.pos += match[0].length; - return match; - } - }, - current: function(){return this.string.slice(this.start, this.pos);}, - hideFirstChars: function(n, inner) { - this.lineStart += n; - try { return inner(); } - finally { this.lineStart -= n; } - } -}; -CodeMirror.StringStream = StringStream; - -CodeMirror.startState = function (mode, a1, a2) { - return mode.startState ? mode.startState(a1, a2) : true; -}; - -var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {}; -CodeMirror.defineMode = function (name, mode) { modes[name] = mode; }; -CodeMirror.defineMIME = function (mime, spec) { mimeModes[mime] = spec; }; -CodeMirror.resolveMode = function(spec) { - if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { - spec = mimeModes[spec]; - } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { - spec = mimeModes[spec.name]; - } - if (typeof spec == "string") return {name: spec}; - else return spec || {name: "null"}; -}; -CodeMirror.getMode = function (options, spec) { - spec = CodeMirror.resolveMode(spec); - var mfactory = modes[spec.name]; - if (!mfactory) throw new Error("Unknown mode: " + spec); - return mfactory(options, spec); -}; -CodeMirror.registerHelper = CodeMirror.registerGlobalHelper = Math.min; -CodeMirror.defineMode("null", function() { - return {token: function(stream) {stream.skipToEnd();}}; -}); -CodeMirror.defineMIME("text/plain", "null"); - -CodeMirror.runMode = function (string, modespec, callback, options) { - var mode = CodeMirror.getMode({ indentUnit: 2 }, modespec); - - if (callback.nodeType == 1) { - var tabSize = (options && options.tabSize) || 4; - var node = callback, col = 0; - node.innerHTML = ""; - callback = function (text, style) { - if (text == "\n") { - node.appendChild(document.createElement("br")); - col = 0; - return; - } - var content = ""; - // replace tabs - for (var pos = 0; ;) { - var idx = text.indexOf("\t", pos); - if (idx == -1) { - content += text.slice(pos); - col += text.length - pos; - break; - } else { - col += idx - pos; - content += text.slice(pos, idx); - var size = tabSize - col % tabSize; - col += size; - for (var i = 0; i < size; ++i) content += " "; - pos = idx + 1; - } - } - - if (style) { - var sp = node.appendChild(document.createElement("span")); - sp.className = "cm-" + style.replace(/ +/g, " cm-"); - sp.appendChild(document.createTextNode(content)); - } else { - node.appendChild(document.createTextNode(content)); - } - }; - } - - var lines = splitLines(string), state = (options && options.state) || CodeMirror.startState(mode); - for (var i = 0, e = lines.length; i < e; ++i) { - if (i) callback("\n"); - var stream = new CodeMirror.StringStream(lines[i]); - while (!stream.eol()) { - var style = mode.token(stream, state); - callback(stream.current(), style, i, stream.start, state); - stream.start = stream.pos; - } - } -}; -})(); diff --git a/vendor/codemirror/addon/runmode/runmode.js b/vendor/codemirror/addon/runmode/runmode.js deleted file mode 100644 index 351840e0..00000000 --- a/vendor/codemirror/addon/runmode/runmode.js +++ /dev/null @@ -1,68 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.runMode = function(string, modespec, callback, options) { - var mode = CodeMirror.getMode(CodeMirror.defaults, modespec); - var ie = /MSIE \d/.test(navigator.userAgent); - var ie_lt9 = ie && (document.documentMode == null || document.documentMode < 9); - - if (callback.nodeType == 1) { - var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize; - var node = callback, col = 0; - node.innerHTML = ""; - callback = function(text, style) { - if (text == "\n") { - // Emitting LF or CRLF on IE8 or earlier results in an incorrect display. - // Emitting a carriage return makes everything ok. - node.appendChild(document.createTextNode(ie_lt9 ? '\r' : text)); - col = 0; - return; - } - var content = ""; - // replace tabs - for (var pos = 0;;) { - var idx = text.indexOf("\t", pos); - if (idx == -1) { - content += text.slice(pos); - col += text.length - pos; - break; - } else { - col += idx - pos; - content += text.slice(pos, idx); - var size = tabSize - col % tabSize; - col += size; - for (var i = 0; i < size; ++i) content += " "; - pos = idx + 1; - } - } - - if (style) { - var sp = node.appendChild(document.createElement("span")); - sp.className = "cm-" + style.replace(/ +/g, " cm-"); - sp.appendChild(document.createTextNode(content)); - } else { - node.appendChild(document.createTextNode(content)); - } - }; - } - - var lines = CodeMirror.splitLines(string), state = (options && options.state) || CodeMirror.startState(mode); - for (var i = 0, e = lines.length; i < e; ++i) { - if (i) callback("\n"); - var stream = new CodeMirror.StringStream(lines[i]); - while (!stream.eol()) { - var style = mode.token(stream, state); - callback(stream.current(), style, i, stream.start, state); - stream.start = stream.pos; - } - } -}; - -}); diff --git a/vendor/codemirror/addon/runmode/runmode.node.js b/vendor/codemirror/addon/runmode/runmode.node.js deleted file mode 100644 index 74c39be7..00000000 --- a/vendor/codemirror/addon/runmode/runmode.node.js +++ /dev/null @@ -1,118 +0,0 @@ -/* Just enough of CodeMirror to run runMode under node.js */ - -// declare global: StringStream - -function splitLines(string){ return string.split(/\r?\n|\r/); }; - -function StringStream(string) { - this.pos = this.start = 0; - this.string = string; - this.lineStart = 0; -} -StringStream.prototype = { - eol: function() {return this.pos >= this.string.length;}, - sol: function() {return this.pos == 0;}, - peek: function() {return this.string.charAt(this.pos) || null;}, - next: function() { - if (this.pos < this.string.length) - return this.string.charAt(this.pos++); - }, - eat: function(match) { - var ch = this.string.charAt(this.pos); - if (typeof match == "string") var ok = ch == match; - else var ok = ch && (match.test ? match.test(ch) : match(ch)); - if (ok) {++this.pos; return ch;} - }, - eatWhile: function(match) { - var start = this.pos; - while (this.eat(match)){} - return this.pos > start; - }, - eatSpace: function() { - var start = this.pos; - while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; - return this.pos > start; - }, - skipToEnd: function() {this.pos = this.string.length;}, - skipTo: function(ch) { - var found = this.string.indexOf(ch, this.pos); - if (found > -1) {this.pos = found; return true;} - }, - backUp: function(n) {this.pos -= n;}, - column: function() {return this.start - this.lineStart;}, - indentation: function() {return 0;}, - match: function(pattern, consume, caseInsensitive) { - if (typeof pattern == "string") { - var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; - var substr = this.string.substr(this.pos, pattern.length); - if (cased(substr) == cased(pattern)) { - if (consume !== false) this.pos += pattern.length; - return true; - } - } else { - var match = this.string.slice(this.pos).match(pattern); - if (match && match.index > 0) return null; - if (match && consume !== false) this.pos += match[0].length; - return match; - } - }, - current: function(){return this.string.slice(this.start, this.pos);}, - hideFirstChars: function(n, inner) { - this.lineStart += n; - try { return inner(); } - finally { this.lineStart -= n; } - } -}; -exports.StringStream = StringStream; - -exports.startState = function(mode, a1, a2) { - return mode.startState ? mode.startState(a1, a2) : true; -}; - -var modes = exports.modes = {}, mimeModes = exports.mimeModes = {}; -exports.defineMode = function(name, mode) { - if (arguments.length > 2) { - mode.dependencies = []; - for (var i = 2; i < arguments.length; ++i) mode.dependencies.push(arguments[i]); - } - modes[name] = mode; -}; -exports.defineMIME = function(mime, spec) { mimeModes[mime] = spec; }; - -exports.defineMode("null", function() { - return {token: function(stream) {stream.skipToEnd();}}; -}); -exports.defineMIME("text/plain", "null"); - -exports.resolveMode = function(spec) { - if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { - spec = mimeModes[spec]; - } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { - spec = mimeModes[spec.name]; - } - if (typeof spec == "string") return {name: spec}; - else return spec || {name: "null"}; -}; -exports.getMode = function(options, spec) { - spec = exports.resolveMode(spec); - var mfactory = modes[spec.name]; - if (!mfactory) throw new Error("Unknown mode: " + spec); - return mfactory(options, spec); -}; -exports.registerHelper = exports.registerGlobalHelper = Math.min; - -exports.runMode = function(string, modespec, callback, options) { - var mode = exports.getMode({indentUnit: 2}, modespec); - var lines = splitLines(string), state = (options && options.state) || exports.startState(mode); - for (var i = 0, e = lines.length; i < e; ++i) { - if (i) callback("\n"); - var stream = new exports.StringStream(lines[i]); - while (!stream.eol()) { - var style = mode.token(stream, state); - callback(stream.current(), style, i, stream.start, state); - stream.start = stream.pos; - } - } -}; - -require.cache[require.resolve("../../lib/codemirror")] = require.cache[require.resolve("./runmode.node")]; diff --git a/vendor/codemirror/addon/scroll/scrollpastend.js b/vendor/codemirror/addon/scroll/scrollpastend.js deleted file mode 100644 index 467b7aa1..00000000 --- a/vendor/codemirror/addon/scroll/scrollpastend.js +++ /dev/null @@ -1,43 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineOption("scrollPastEnd", false, function(cm, val, old) { - if (old && old != CodeMirror.Init) { - cm.off("change", onChange); - cm.off("refresh", updateBottomMargin); - cm.display.lineSpace.parentNode.style.paddingBottom = ""; - cm.state.scrollPastEndPadding = null; - } - if (val) { - cm.on("change", onChange); - cm.on("refresh", updateBottomMargin); - updateBottomMargin(cm); - } - }); - - function onChange(cm, change) { - if (CodeMirror.changeEnd(change).line == cm.lastLine()) - updateBottomMargin(cm); - } - - function updateBottomMargin(cm) { - var padding = ""; - if (cm.lineCount() > 1) { - var totalH = cm.display.scroller.clientHeight - 30, - lastLineH = cm.getLineHandle(cm.lastLine()).height; - padding = (totalH - lastLineH) + "px"; - } - if (cm.state.scrollPastEndPadding != padding) { - cm.state.scrollPastEndPadding = padding; - cm.display.lineSpace.parentNode.style.paddingBottom = padding; - cm.setSize(); - } - } -}); diff --git a/vendor/codemirror/addon/search/match-highlighter.js b/vendor/codemirror/addon/search/match-highlighter.js deleted file mode 100644 index d9c818b8..00000000 --- a/vendor/codemirror/addon/search/match-highlighter.js +++ /dev/null @@ -1,100 +0,0 @@ -// Highlighting text that matches the selection -// -// Defines an option highlightSelectionMatches, which, when enabled, -// will style strings that match the selection throughout the -// document. -// -// The option can be set to true to simply enable it, or to a -// {minChars, style, showToken} object to explicitly configure it. -// minChars is the minimum amount of characters that should be -// selected for the behavior to occur, and style is the token style to -// apply to the matches. This will be prefixed by "cm-" to create an -// actual CSS class name. showToken, when enabled, will cause the -// current token to be highlighted when nothing is selected. - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var DEFAULT_MIN_CHARS = 2; - var DEFAULT_TOKEN_STYLE = "matchhighlight"; - var DEFAULT_DELAY = 100; - - function State(options) { - if (typeof options == "object") { - this.minChars = options.minChars; - this.style = options.style; - this.showToken = options.showToken; - this.delay = options.delay; - } - if (this.style == null) this.style = DEFAULT_TOKEN_STYLE; - if (this.minChars == null) this.minChars = DEFAULT_MIN_CHARS; - if (this.delay == null) this.delay = DEFAULT_DELAY; - this.overlay = this.timeout = null; - } - - CodeMirror.defineOption("highlightSelectionMatches", false, function(cm, val, old) { - if (old && old != CodeMirror.Init) { - var over = cm.state.matchHighlighter.overlay; - if (over) cm.removeOverlay(over); - clearTimeout(cm.state.matchHighlighter.timeout); - cm.state.matchHighlighter = null; - cm.off("cursorActivity", cursorActivity); - } - if (val) { - cm.state.matchHighlighter = new State(val); - highlightMatches(cm); - cm.on("cursorActivity", cursorActivity); - } - }); - - function cursorActivity(cm) { - var state = cm.state.matchHighlighter; - clearTimeout(state.timeout); - state.timeout = setTimeout(function() {highlightMatches(cm);}, state.delay); - } - - function highlightMatches(cm) { - cm.operation(function() { - var state = cm.state.matchHighlighter; - if (state.overlay) { - cm.removeOverlay(state.overlay); - state.overlay = null; - } - if (!cm.somethingSelected() && state.showToken) { - var re = state.showToken === true ? /[\w$]/ : state.showToken; - var cur = cm.getCursor(), line = cm.getLine(cur.line), start = cur.ch, end = start; - while (start && re.test(line.charAt(start - 1))) --start; - while (end < line.length && re.test(line.charAt(end))) ++end; - if (start < end) - cm.addOverlay(state.overlay = makeOverlay(line.slice(start, end), re, state.style)); - return; - } - if (cm.getCursor("head").line != cm.getCursor("anchor").line) return; - var selection = cm.getSelections()[0].replace(/^\s+|\s+$/g, ""); - if (selection.length >= state.minChars) - cm.addOverlay(state.overlay = makeOverlay(selection, false, state.style)); - }); - } - - function boundariesAround(stream, re) { - return (!stream.start || !re.test(stream.string.charAt(stream.start - 1))) && - (stream.pos == stream.string.length || !re.test(stream.string.charAt(stream.pos))); - } - - function makeOverlay(query, hasBoundary, style) { - return {token: function(stream) { - if (stream.match(query) && - (!hasBoundary || boundariesAround(stream, hasBoundary))) - return style; - stream.next(); - stream.skipTo(query.charAt(0)) || stream.skipToEnd(); - }}; - } -}); diff --git a/vendor/codemirror/addon/search/search.js b/vendor/codemirror/addon/search/search.js deleted file mode 100644 index 19f51f1d..00000000 --- a/vendor/codemirror/addon/search/search.js +++ /dev/null @@ -1,155 +0,0 @@ -// Define search commands. Depends on dialog.js or another -// implementation of the openDialog method. - -// Replace works a little oddly -- it will do the replace on the next -// Ctrl-G (or whatever is bound to findNext) press. You prevent a -// replace by making sure the match is no longer selected when hitting -// Ctrl-G. - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("./searchcursor"), require("../dialog/dialog")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "./searchcursor", "../dialog/dialog"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - function searchOverlay(query, caseInsensitive) { - var startChar; - if (typeof query == "string") { - startChar = query.charAt(0); - query = new RegExp("^" + query.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), - caseInsensitive ? "i" : ""); - } else { - query = new RegExp("^(?:" + query.source + ")", query.ignoreCase ? "i" : ""); - } - return {token: function(stream) { - if (stream.match(query)) return "searching"; - while (!stream.eol()) { - stream.next(); - if (startChar && !caseInsensitive) - stream.skipTo(startChar) || stream.skipToEnd(); - if (stream.match(query, false)) break; - } - }}; - } - - function SearchState() { - this.posFrom = this.posTo = this.query = null; - this.overlay = null; - } - function getSearchState(cm) { - return cm.state.search || (cm.state.search = new SearchState()); - } - function queryCaseInsensitive(query) { - return typeof query == "string" && query == query.toLowerCase(); - } - function getSearchCursor(cm, query, pos) { - // Heuristic: if the query string is all lowercase, do a case insensitive search. - return cm.getSearchCursor(query, pos, queryCaseInsensitive(query)); - } - function dialog(cm, text, shortText, deflt, f) { - if (cm.openDialog) cm.openDialog(text, f, {value: deflt}); - else f(prompt(shortText, deflt)); - } - function confirmDialog(cm, text, shortText, fs) { - if (cm.openConfirm) cm.openConfirm(text, fs); - else if (confirm(shortText)) fs[0](); - } - function parseQuery(query) { - var isRE = query.match(/^\/(.*)\/([a-z]*)$/); - if (isRE) { - query = new RegExp(isRE[1], isRE[2].indexOf("i") == -1 ? "" : "i"); - if (query.test("")) query = /x^/; - } else if (query == "") { - query = /x^/; - } - return query; - } - var queryDialog = - 'Search: (Use /re/ syntax for regexp search)'; - function doSearch(cm, rev) { - var state = getSearchState(cm); - if (state.query) return findNext(cm, rev); - dialog(cm, queryDialog, "Search for:", cm.getSelection(), function(query) { - cm.operation(function() { - if (!query || state.query) return; - state.query = parseQuery(query); - cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query)); - state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query)); - cm.addOverlay(state.overlay); - state.posFrom = state.posTo = cm.getCursor(); - findNext(cm, rev); - }); - }); - } - function findNext(cm, rev) {cm.operation(function() { - var state = getSearchState(cm); - var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo); - if (!cursor.find(rev)) { - cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0)); - if (!cursor.find(rev)) return; - } - cm.setSelection(cursor.from(), cursor.to()); - cm.scrollIntoView({from: cursor.from(), to: cursor.to()}); - state.posFrom = cursor.from(); state.posTo = cursor.to(); - });} - function clearSearch(cm) {cm.operation(function() { - var state = getSearchState(cm); - if (!state.query) return; - state.query = null; - cm.removeOverlay(state.overlay); - });} - - var replaceQueryDialog = - 'Replace: (Use /re/ syntax for regexp search)'; - var replacementQueryDialog = 'With: '; - var doReplaceConfirm = "Replace? "; - function replace(cm, all) { - dialog(cm, replaceQueryDialog, "Replace:", cm.getSelection(), function(query) { - if (!query) return; - query = parseQuery(query); - dialog(cm, replacementQueryDialog, "Replace with:", "", function(text) { - if (all) { - cm.operation(function() { - for (var cursor = getSearchCursor(cm, query); cursor.findNext();) { - if (typeof query != "string") { - var match = cm.getRange(cursor.from(), cursor.to()).match(query); - cursor.replace(text.replace(/\$(\d)/g, function(_, i) {return match[i];})); - } else cursor.replace(text); - } - }); - } else { - clearSearch(cm); - var cursor = getSearchCursor(cm, query, cm.getCursor()); - var advance = function() { - var start = cursor.from(), match; - if (!(match = cursor.findNext())) { - cursor = getSearchCursor(cm, query); - if (!(match = cursor.findNext()) || - (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return; - } - cm.setSelection(cursor.from(), cursor.to()); - cm.scrollIntoView({from: cursor.from(), to: cursor.to()}); - confirmDialog(cm, doReplaceConfirm, "Replace?", - [function() {doReplace(match);}, advance]); - }; - var doReplace = function(match) { - cursor.replace(typeof query == "string" ? text : - text.replace(/\$(\d)/g, function(_, i) {return match[i];})); - advance(); - }; - advance(); - } - }); - }); - } - - CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);}; - CodeMirror.commands.findNext = doSearch; - CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);}; - CodeMirror.commands.clearSearch = clearSearch; - CodeMirror.commands.replace = replace; - CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);}; -}); diff --git a/vendor/codemirror/addon/search/searchcursor.js b/vendor/codemirror/addon/search/searchcursor.js deleted file mode 100644 index 899f44c4..00000000 --- a/vendor/codemirror/addon/search/searchcursor.js +++ /dev/null @@ -1,186 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - var Pos = CodeMirror.Pos; - - function SearchCursor(doc, query, pos, caseFold) { - this.atOccurrence = false; this.doc = doc; - if (caseFold == null && typeof query == "string") caseFold = false; - - pos = pos ? doc.clipPos(pos) : Pos(0, 0); - this.pos = {from: pos, to: pos}; - - // The matches method is filled in based on the type of query. - // It takes a position and a direction, and returns an object - // describing the next occurrence of the query, or null if no - // more matches were found. - if (typeof query != "string") { // Regexp match - if (!query.global) query = new RegExp(query.source, query.ignoreCase ? "ig" : "g"); - this.matches = function(reverse, pos) { - if (reverse) { - query.lastIndex = 0; - var line = doc.getLine(pos.line).slice(0, pos.ch), cutOff = 0, match, start; - for (;;) { - query.lastIndex = cutOff; - var newMatch = query.exec(line); - if (!newMatch) break; - match = newMatch; - start = match.index; - cutOff = match.index + (match[0].length || 1); - if (cutOff == line.length) break; - } - var matchLen = (match && match[0].length) || 0; - if (!matchLen) { - if (start == 0 && line.length == 0) {match = undefined;} - else if (start != doc.getLine(pos.line).length) { - matchLen++; - } - } - } else { - query.lastIndex = pos.ch; - var line = doc.getLine(pos.line), match = query.exec(line); - var matchLen = (match && match[0].length) || 0; - var start = match && match.index; - if (start + matchLen != line.length && !matchLen) matchLen = 1; - } - if (match && matchLen) - return {from: Pos(pos.line, start), - to: Pos(pos.line, start + matchLen), - match: match}; - }; - } else { // String query - var origQuery = query; - if (caseFold) query = query.toLowerCase(); - var fold = caseFold ? function(str){return str.toLowerCase();} : function(str){return str;}; - var target = query.split("\n"); - // Different methods for single-line and multi-line queries - if (target.length == 1) { - if (!query.length) { - // Empty string would match anything and never progress, so - // we define it to match nothing instead. - this.matches = function() {}; - } else { - this.matches = function(reverse, pos) { - if (reverse) { - var orig = doc.getLine(pos.line).slice(0, pos.ch), line = fold(orig); - var match = line.lastIndexOf(query); - if (match > -1) { - match = adjustPos(orig, line, match); - return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)}; - } - } else { - var orig = doc.getLine(pos.line).slice(pos.ch), line = fold(orig); - var match = line.indexOf(query); - if (match > -1) { - match = adjustPos(orig, line, match) + pos.ch; - return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)}; - } - } - }; - } - } else { - var origTarget = origQuery.split("\n"); - this.matches = function(reverse, pos) { - var last = target.length - 1; - if (reverse) { - if (pos.line - (target.length - 1) < doc.firstLine()) return; - if (fold(doc.getLine(pos.line).slice(0, origTarget[last].length)) != target[target.length - 1]) return; - var to = Pos(pos.line, origTarget[last].length); - for (var ln = pos.line - 1, i = last - 1; i >= 1; --i, --ln) - if (target[i] != fold(doc.getLine(ln))) return; - var line = doc.getLine(ln), cut = line.length - origTarget[0].length; - if (fold(line.slice(cut)) != target[0]) return; - return {from: Pos(ln, cut), to: to}; - } else { - if (pos.line + (target.length - 1) > doc.lastLine()) return; - var line = doc.getLine(pos.line), cut = line.length - origTarget[0].length; - if (fold(line.slice(cut)) != target[0]) return; - var from = Pos(pos.line, cut); - for (var ln = pos.line + 1, i = 1; i < last; ++i, ++ln) - if (target[i] != fold(doc.getLine(ln))) return; - if (doc.getLine(ln).slice(0, origTarget[last].length) != target[last]) return; - return {from: from, to: Pos(ln, origTarget[last].length)}; - } - }; - } - } - } - - SearchCursor.prototype = { - findNext: function() {return this.find(false);}, - findPrevious: function() {return this.find(true);}, - - find: function(reverse) { - var self = this, pos = this.doc.clipPos(reverse ? this.pos.from : this.pos.to); - function savePosAndFail(line) { - var pos = Pos(line, 0); - self.pos = {from: pos, to: pos}; - self.atOccurrence = false; - return false; - } - - for (;;) { - if (this.pos = this.matches(reverse, pos)) { - this.atOccurrence = true; - return this.pos.match || true; - } - if (reverse) { - if (!pos.line) return savePosAndFail(0); - pos = Pos(pos.line-1, this.doc.getLine(pos.line-1).length); - } - else { - var maxLine = this.doc.lineCount(); - if (pos.line == maxLine - 1) return savePosAndFail(maxLine); - pos = Pos(pos.line + 1, 0); - } - } - }, - - from: function() {if (this.atOccurrence) return this.pos.from;}, - to: function() {if (this.atOccurrence) return this.pos.to;}, - - replace: function(newText) { - if (!this.atOccurrence) return; - var lines = CodeMirror.splitLines(newText); - this.doc.replaceRange(lines, this.pos.from, this.pos.to); - this.pos.to = Pos(this.pos.from.line + lines.length - 1, - lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0)); - } - }; - - // Maps a position in a case-folded line back to a position in the original line - // (compensating for codepoints increasing in number during folding) - function adjustPos(orig, folded, pos) { - if (orig.length == folded.length) return pos; - for (var pos1 = Math.min(pos, orig.length);;) { - var len1 = orig.slice(0, pos1).toLowerCase().length; - if (len1 < pos) ++pos1; - else if (len1 > pos) --pos1; - else return pos1; - } - } - - CodeMirror.defineExtension("getSearchCursor", function(query, pos, caseFold) { - return new SearchCursor(this.doc, query, pos, caseFold); - }); - CodeMirror.defineDocExtension("getSearchCursor", function(query, pos, caseFold) { - return new SearchCursor(this, query, pos, caseFold); - }); - - CodeMirror.defineExtension("selectMatches", function(query, caseFold) { - var ranges = [], next; - var cur = this.getSearchCursor(query, this.getCursor("from"), caseFold); - while (next = cur.findNext()) { - if (CodeMirror.cmpPos(cur.to(), this.getCursor("to")) > 0) break; - ranges.push({anchor: cur.from(), head: cur.to()}); - } - if (ranges.length) - this.setSelections(ranges, 0); - }); -}); diff --git a/vendor/codemirror/addon/selection/active-line.js b/vendor/codemirror/addon/selection/active-line.js deleted file mode 100644 index a818f109..00000000 --- a/vendor/codemirror/addon/selection/active-line.js +++ /dev/null @@ -1,66 +0,0 @@ -// Because sometimes you need to style the cursor's line. -// -// Adds an option 'styleActiveLine' which, when enabled, gives the -// active line's wrapping
the CSS class "CodeMirror-activeline", -// and gives its background
the class "CodeMirror-activeline-background". - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - var WRAP_CLASS = "CodeMirror-activeline"; - var BACK_CLASS = "CodeMirror-activeline-background"; - - CodeMirror.defineOption("styleActiveLine", false, function(cm, val, old) { - var prev = old && old != CodeMirror.Init; - if (val && !prev) { - cm.state.activeLines = []; - updateActiveLines(cm, cm.listSelections()); - cm.on("beforeSelectionChange", selectionChange); - } else if (!val && prev) { - cm.off("beforeSelectionChange", selectionChange); - clearActiveLines(cm); - delete cm.state.activeLines; - } - }); - - function clearActiveLines(cm) { - for (var i = 0; i < cm.state.activeLines.length; i++) { - cm.removeLineClass(cm.state.activeLines[i], "wrap", WRAP_CLASS); - cm.removeLineClass(cm.state.activeLines[i], "background", BACK_CLASS); - } - } - - function sameArray(a, b) { - if (a.length != b.length) return false; - for (var i = 0; i < a.length; i++) - if (a[i] != b[i]) return false; - return true; - } - - function updateActiveLines(cm, ranges) { - var active = []; - for (var i = 0; i < ranges.length; i++) { - var line = cm.getLineHandleVisualStart(ranges[i].head.line); - if (active[active.length - 1] != line) active.push(line); - } - if (sameArray(cm.state.activeLines, active)) return; - cm.operation(function() { - clearActiveLines(cm); - for (var i = 0; i < active.length; i++) { - cm.addLineClass(active[i], "wrap", WRAP_CLASS); - cm.addLineClass(active[i], "background", BACK_CLASS); - } - cm.state.activeLines = active; - }); - } - - function selectionChange(cm, sel) { - updateActiveLines(cm, sel.ranges); - } -}); diff --git a/vendor/codemirror/addon/selection/mark-selection.js b/vendor/codemirror/addon/selection/mark-selection.js deleted file mode 100644 index ae0d3931..00000000 --- a/vendor/codemirror/addon/selection/mark-selection.js +++ /dev/null @@ -1,115 +0,0 @@ -// Because sometimes you need to mark the selected *text*. -// -// Adds an option 'styleSelectedText' which, when enabled, gives -// selected text the CSS class given as option value, or -// "CodeMirror-selectedtext" when the value is not a string. - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineOption("styleSelectedText", false, function(cm, val, old) { - var prev = old && old != CodeMirror.Init; - if (val && !prev) { - cm.state.markedSelection = []; - cm.state.markedSelectionStyle = typeof val == "string" ? val : "CodeMirror-selectedtext"; - reset(cm); - cm.on("cursorActivity", onCursorActivity); - cm.on("change", onChange); - } else if (!val && prev) { - cm.off("cursorActivity", onCursorActivity); - cm.off("change", onChange); - clear(cm); - cm.state.markedSelection = cm.state.markedSelectionStyle = null; - } - }); - - function onCursorActivity(cm) { - cm.operation(function() { update(cm); }); - } - - function onChange(cm) { - if (cm.state.markedSelection.length) - cm.operation(function() { clear(cm); }); - } - - var CHUNK_SIZE = 8; - var Pos = CodeMirror.Pos; - var cmp = CodeMirror.cmpPos; - - function coverRange(cm, from, to, addAt) { - if (cmp(from, to) == 0) return; - var array = cm.state.markedSelection; - var cls = cm.state.markedSelectionStyle; - for (var line = from.line;;) { - var start = line == from.line ? from : Pos(line, 0); - var endLine = line + CHUNK_SIZE, atEnd = endLine >= to.line; - var end = atEnd ? to : Pos(endLine, 0); - var mark = cm.markText(start, end, {className: cls}); - if (addAt == null) array.push(mark); - else array.splice(addAt++, 0, mark); - if (atEnd) break; - line = endLine; - } - } - - function clear(cm) { - var array = cm.state.markedSelection; - for (var i = 0; i < array.length; ++i) array[i].clear(); - array.length = 0; - } - - function reset(cm) { - clear(cm); - var ranges = cm.listSelections(); - for (var i = 0; i < ranges.length; i++) - coverRange(cm, ranges[i].from(), ranges[i].to()); - } - - function update(cm) { - if (!cm.somethingSelected()) return clear(cm); - if (cm.listSelections().length > 1) return reset(cm); - - var from = cm.getCursor("start"), to = cm.getCursor("end"); - - var array = cm.state.markedSelection; - if (!array.length) return coverRange(cm, from, to); - - var coverStart = array[0].find(), coverEnd = array[array.length - 1].find(); - if (!coverStart || !coverEnd || to.line - from.line < CHUNK_SIZE || - cmp(from, coverEnd.to) >= 0 || cmp(to, coverStart.from) <= 0) - return reset(cm); - - while (cmp(from, coverStart.from) > 0) { - array.shift().clear(); - coverStart = array[0].find(); - } - if (cmp(from, coverStart.from) < 0) { - if (coverStart.to.line - from.line < CHUNK_SIZE) { - array.shift().clear(); - coverRange(cm, from, coverStart.to, 0); - } else { - coverRange(cm, from, coverStart.from, 0); - } - } - - while (cmp(to, coverEnd.to) < 0) { - array.pop().clear(); - coverEnd = array[array.length - 1].find(); - } - if (cmp(to, coverEnd.to) > 0) { - if (to.line - coverEnd.from.line < CHUNK_SIZE) { - array.pop().clear(); - coverRange(cm, coverEnd.from, to); - } else { - coverRange(cm, coverEnd.to, to); - } - } - } -}); diff --git a/vendor/codemirror/addon/tern/tern.css b/vendor/codemirror/addon/tern/tern.css deleted file mode 100644 index eacc2f05..00000000 --- a/vendor/codemirror/addon/tern/tern.css +++ /dev/null @@ -1,85 +0,0 @@ -.CodeMirror-Tern-completion { - padding-left: 22px; - position: relative; -} -.CodeMirror-Tern-completion:before { - position: absolute; - left: 2px; - bottom: 2px; - border-radius: 50%; - font-size: 12px; - font-weight: bold; - height: 15px; - width: 15px; - line-height: 16px; - text-align: center; - color: white; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.CodeMirror-Tern-completion-unknown:before { - content: "?"; - background: #4bb; -} -.CodeMirror-Tern-completion-object:before { - content: "O"; - background: #77c; -} -.CodeMirror-Tern-completion-fn:before { - content: "F"; - background: #7c7; -} -.CodeMirror-Tern-completion-array:before { - content: "A"; - background: #c66; -} -.CodeMirror-Tern-completion-number:before { - content: "1"; - background: #999; -} -.CodeMirror-Tern-completion-string:before { - content: "S"; - background: #999; -} -.CodeMirror-Tern-completion-bool:before { - content: "B"; - background: #999; -} - -.CodeMirror-Tern-completion-guess { - color: #999; -} - -.CodeMirror-Tern-tooltip { - border: 1px solid silver; - border-radius: 3px; - color: #444; - padding: 2px 5px; - font-size: 90%; - font-family: monospace; - background-color: white; - white-space: pre-wrap; - - max-width: 40em; - position: absolute; - z-index: 10; - -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); - -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); - box-shadow: 2px 3px 5px rgba(0,0,0,.2); - - transition: opacity 1s; - -moz-transition: opacity 1s; - -webkit-transition: opacity 1s; - -o-transition: opacity 1s; - -ms-transition: opacity 1s; -} - -.CodeMirror-Tern-hint-doc { - max-width: 25em; -} - -.CodeMirror-Tern-fname { color: black; } -.CodeMirror-Tern-farg { color: #70a; } -.CodeMirror-Tern-farg-current { text-decoration: underline; } -.CodeMirror-Tern-type { color: #07c; } -.CodeMirror-Tern-fhint-guess { opacity: .7; } diff --git a/vendor/codemirror/addon/tern/tern.js b/vendor/codemirror/addon/tern/tern.js deleted file mode 100644 index 6fbd10c5..00000000 --- a/vendor/codemirror/addon/tern/tern.js +++ /dev/null @@ -1,660 +0,0 @@ -// Glue code between CodeMirror and Tern. -// -// Create a CodeMirror.TernServer to wrap an actual Tern server, -// register open documents (CodeMirror.Doc instances) with it, and -// call its methods to activate the assisting functions that Tern -// provides. -// -// Options supported (all optional): -// * defs: An array of JSON definition data structures. -// * plugins: An object mapping plugin names to configuration -// options. -// * getFile: A function(name, c) that can be used to access files in -// the project that haven't been loaded yet. Simply do c(null) to -// indicate that a file is not available. -// * fileFilter: A function(value, docName, doc) that will be applied -// to documents before passing them on to Tern. -// * switchToDoc: A function(name) that should, when providing a -// multi-file view, switch the view or focus to the named file. -// * showError: A function(editor, message) that can be used to -// override the way errors are displayed. -// * completionTip: Customize the content in tooltips for completions. -// Is passed a single argument—the completion's data as returned by -// Tern—and may return a string, DOM node, or null to indicate that -// no tip should be shown. By default the docstring is shown. -// * typeTip: Like completionTip, but for the tooltips shown for type -// queries. -// * responseFilter: A function(doc, query, request, error, data) that -// will be applied to the Tern responses before treating them -// -// -// It is possible to run the Tern server in a web worker by specifying -// these additional options: -// * useWorker: Set to true to enable web worker mode. You'll probably -// want to feature detect the actual value you use here, for example -// !!window.Worker. -// * workerScript: The main script of the worker. Point this to -// wherever you are hosting worker.js from this directory. -// * workerDeps: An array of paths pointing (relative to workerScript) -// to the Acorn and Tern libraries and any Tern plugins you want to -// load. Or, if you minified those into a single script and included -// them in the workerScript, simply leave this undefined. - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - // declare global: tern - - CodeMirror.TernServer = function(options) { - var self = this; - this.options = options || {}; - var plugins = this.options.plugins || (this.options.plugins = {}); - if (!plugins.doc_comment) plugins.doc_comment = true; - if (this.options.useWorker) { - this.server = new WorkerServer(this); - } else { - this.server = new tern.Server({ - getFile: function(name, c) { return getFile(self, name, c); }, - async: true, - defs: this.options.defs || [], - plugins: plugins - }); - } - this.docs = Object.create(null); - this.trackChange = function(doc, change) { trackChange(self, doc, change); }; - - this.cachedArgHints = null; - this.activeArgHints = null; - this.jumpStack = []; - }; - - CodeMirror.TernServer.prototype = { - addDoc: function(name, doc) { - var data = {doc: doc, name: name, changed: null}; - this.server.addFile(name, docValue(this, data)); - CodeMirror.on(doc, "change", this.trackChange); - return this.docs[name] = data; - }, - - delDoc: function(name) { - var found = this.docs[name]; - if (!found) return; - CodeMirror.off(found.doc, "change", this.trackChange); - delete this.docs[name]; - this.server.delFile(name); - }, - - hideDoc: function(name) { - closeArgHints(this); - var found = this.docs[name]; - if (found && found.changed) sendDoc(this, found); - }, - - complete: function(cm) { - var self = this; - CodeMirror.showHint(cm, function(cm, c) { return hint(self, cm, c); }, {async: true}); - }, - - getHint: function(cm, c) { return hint(this, cm, c); }, - - showType: function(cm, pos) { showType(this, cm, pos); }, - - updateArgHints: function(cm) { updateArgHints(this, cm); }, - - jumpToDef: function(cm) { jumpToDef(this, cm); }, - - jumpBack: function(cm) { jumpBack(this, cm); }, - - rename: function(cm) { rename(this, cm); }, - - selectName: function(cm) { selectName(this, cm); }, - - request: function (cm, query, c, pos) { - var self = this; - var doc = findDoc(this, cm.getDoc()); - var request = buildRequest(this, doc, query, pos); - - this.server.request(request, function (error, data) { - if (!error && self.options.responseFilter) - data = self.options.responseFilter(doc, query, request, error, data); - c(error, data); - }); - } - }; - - var Pos = CodeMirror.Pos; - var cls = "CodeMirror-Tern-"; - var bigDoc = 250; - - function getFile(ts, name, c) { - var buf = ts.docs[name]; - if (buf) - c(docValue(ts, buf)); - else if (ts.options.getFile) - ts.options.getFile(name, c); - else - c(null); - } - - function findDoc(ts, doc, name) { - for (var n in ts.docs) { - var cur = ts.docs[n]; - if (cur.doc == doc) return cur; - } - if (!name) for (var i = 0;; ++i) { - n = "[doc" + (i || "") + "]"; - if (!ts.docs[n]) { name = n; break; } - } - return ts.addDoc(name, doc); - } - - function trackChange(ts, doc, change) { - var data = findDoc(ts, doc); - - var argHints = ts.cachedArgHints; - if (argHints && argHints.doc == doc && cmpPos(argHints.start, change.to) <= 0) - ts.cachedArgHints = null; - - var changed = data.changed; - if (changed == null) - data.changed = changed = {from: change.from.line, to: change.from.line}; - var end = change.from.line + (change.text.length - 1); - if (change.from.line < changed.to) changed.to = changed.to - (change.to.line - end); - if (end >= changed.to) changed.to = end + 1; - if (changed.from > change.from.line) changed.from = change.from.line; - - if (doc.lineCount() > bigDoc && change.to - changed.from > 100) setTimeout(function() { - if (data.changed && data.changed.to - data.changed.from > 100) sendDoc(ts, data); - }, 200); - } - - function sendDoc(ts, doc) { - ts.server.request({files: [{type: "full", name: doc.name, text: docValue(ts, doc)}]}, function(error) { - if (error) window.console.error(error); - else doc.changed = null; - }); - } - - // Completion - - function hint(ts, cm, c) { - ts.request(cm, {type: "completions", types: true, docs: true, urls: true}, function(error, data) { - if (error) return showError(ts, cm, error); - var completions = [], after = ""; - var from = data.start, to = data.end; - if (cm.getRange(Pos(from.line, from.ch - 2), from) == "[\"" && - cm.getRange(to, Pos(to.line, to.ch + 2)) != "\"]") - after = "\"]"; - - for (var i = 0; i < data.completions.length; ++i) { - var completion = data.completions[i], className = typeToIcon(completion.type); - if (data.guess) className += " " + cls + "guess"; - completions.push({text: completion.name + after, - displayText: completion.name, - className: className, - data: completion}); - } - - var obj = {from: from, to: to, list: completions}; - var tooltip = null; - CodeMirror.on(obj, "close", function() { remove(tooltip); }); - CodeMirror.on(obj, "update", function() { remove(tooltip); }); - CodeMirror.on(obj, "select", function(cur, node) { - remove(tooltip); - var content = ts.options.completionTip ? ts.options.completionTip(cur.data) : cur.data.doc; - if (content) { - tooltip = makeTooltip(node.parentNode.getBoundingClientRect().right + window.pageXOffset, - node.getBoundingClientRect().top + window.pageYOffset, content); - tooltip.className += " " + cls + "hint-doc"; - } - }); - c(obj); - }); - } - - function typeToIcon(type) { - var suffix; - if (type == "?") suffix = "unknown"; - else if (type == "number" || type == "string" || type == "bool") suffix = type; - else if (/^fn\(/.test(type)) suffix = "fn"; - else if (/^\[/.test(type)) suffix = "array"; - else suffix = "object"; - return cls + "completion " + cls + "completion-" + suffix; - } - - // Type queries - - function showType(ts, cm, pos) { - ts.request(cm, "type", function(error, data) { - if (error) return showError(ts, cm, error); - if (ts.options.typeTip) { - var tip = ts.options.typeTip(data); - } else { - var tip = elt("span", null, elt("strong", null, data.type || "not found")); - if (data.doc) - tip.appendChild(document.createTextNode(" — " + data.doc)); - if (data.url) { - tip.appendChild(document.createTextNode(" ")); - tip.appendChild(elt("a", null, "[docs]")).href = data.url; - } - } - tempTooltip(cm, tip); - }, pos); - } - - // Maintaining argument hints - - function updateArgHints(ts, cm) { - closeArgHints(ts); - - if (cm.somethingSelected()) return; - var state = cm.getTokenAt(cm.getCursor()).state; - var inner = CodeMirror.innerMode(cm.getMode(), state); - if (inner.mode.name != "javascript") return; - var lex = inner.state.lexical; - if (lex.info != "call") return; - - var ch, argPos = lex.pos || 0, tabSize = cm.getOption("tabSize"); - for (var line = cm.getCursor().line, e = Math.max(0, line - 9), found = false; line >= e; --line) { - var str = cm.getLine(line), extra = 0; - for (var pos = 0;;) { - var tab = str.indexOf("\t", pos); - if (tab == -1) break; - extra += tabSize - (tab + extra) % tabSize - 1; - pos = tab + 1; - } - ch = lex.column - extra; - if (str.charAt(ch) == "(") {found = true; break;} - } - if (!found) return; - - var start = Pos(line, ch); - var cache = ts.cachedArgHints; - if (cache && cache.doc == cm.getDoc() && cmpPos(start, cache.start) == 0) - return showArgHints(ts, cm, argPos); - - ts.request(cm, {type: "type", preferFunction: true, end: start}, function(error, data) { - if (error || !data.type || !(/^fn\(/).test(data.type)) return; - ts.cachedArgHints = { - start: pos, - type: parseFnType(data.type), - name: data.exprName || data.name || "fn", - guess: data.guess, - doc: cm.getDoc() - }; - showArgHints(ts, cm, argPos); - }); - } - - function showArgHints(ts, cm, pos) { - closeArgHints(ts); - - var cache = ts.cachedArgHints, tp = cache.type; - var tip = elt("span", cache.guess ? cls + "fhint-guess" : null, - elt("span", cls + "fname", cache.name), "("); - for (var i = 0; i < tp.args.length; ++i) { - if (i) tip.appendChild(document.createTextNode(", ")); - var arg = tp.args[i]; - tip.appendChild(elt("span", cls + "farg" + (i == pos ? " " + cls + "farg-current" : ""), arg.name || "?")); - if (arg.type != "?") { - tip.appendChild(document.createTextNode(":\u00a0")); - tip.appendChild(elt("span", cls + "type", arg.type)); - } - } - tip.appendChild(document.createTextNode(tp.rettype ? ") ->\u00a0" : ")")); - if (tp.rettype) tip.appendChild(elt("span", cls + "type", tp.rettype)); - var place = cm.cursorCoords(null, "page"); - ts.activeArgHints = makeTooltip(place.right + 1, place.bottom, tip); - } - - function parseFnType(text) { - var args = [], pos = 3; - - function skipMatching(upto) { - var depth = 0, start = pos; - for (;;) { - var next = text.charAt(pos); - if (upto.test(next) && !depth) return text.slice(start, pos); - if (/[{\[\(]/.test(next)) ++depth; - else if (/[}\]\)]/.test(next)) --depth; - ++pos; - } - } - - // Parse arguments - if (text.charAt(pos) != ")") for (;;) { - var name = text.slice(pos).match(/^([^, \(\[\{]+): /); - if (name) { - pos += name[0].length; - name = name[1]; - } - args.push({name: name, type: skipMatching(/[\),]/)}); - if (text.charAt(pos) == ")") break; - pos += 2; - } - - var rettype = text.slice(pos).match(/^\) -> (.*)$/); - - return {args: args, rettype: rettype && rettype[1]}; - } - - // Moving to the definition of something - - function jumpToDef(ts, cm) { - function inner(varName) { - var req = {type: "definition", variable: varName || null}; - var doc = findDoc(ts, cm.getDoc()); - ts.server.request(buildRequest(ts, doc, req), function(error, data) { - if (error) return showError(ts, cm, error); - if (!data.file && data.url) { window.open(data.url); return; } - - if (data.file) { - var localDoc = ts.docs[data.file], found; - if (localDoc && (found = findContext(localDoc.doc, data))) { - ts.jumpStack.push({file: doc.name, - start: cm.getCursor("from"), - end: cm.getCursor("to")}); - moveTo(ts, doc, localDoc, found.start, found.end); - return; - } - } - showError(ts, cm, "Could not find a definition."); - }); - } - - if (!atInterestingExpression(cm)) - dialog(cm, "Jump to variable", function(name) { if (name) inner(name); }); - else - inner(); - } - - function jumpBack(ts, cm) { - var pos = ts.jumpStack.pop(), doc = pos && ts.docs[pos.file]; - if (!doc) return; - moveTo(ts, findDoc(ts, cm.getDoc()), doc, pos.start, pos.end); - } - - function moveTo(ts, curDoc, doc, start, end) { - doc.doc.setSelection(end, start); - if (curDoc != doc && ts.options.switchToDoc) { - closeArgHints(ts); - ts.options.switchToDoc(doc.name); - } - } - - // The {line,ch} representation of positions makes this rather awkward. - function findContext(doc, data) { - var before = data.context.slice(0, data.contextOffset).split("\n"); - var startLine = data.start.line - (before.length - 1); - var start = Pos(startLine, (before.length == 1 ? data.start.ch : doc.getLine(startLine).length) - before[0].length); - - var text = doc.getLine(startLine).slice(start.ch); - for (var cur = startLine + 1; cur < doc.lineCount() && text.length < data.context.length; ++cur) - text += "\n" + doc.getLine(cur); - if (text.slice(0, data.context.length) == data.context) return data; - - var cursor = doc.getSearchCursor(data.context, 0, false); - var nearest, nearestDist = Infinity; - while (cursor.findNext()) { - var from = cursor.from(), dist = Math.abs(from.line - start.line) * 10000; - if (!dist) dist = Math.abs(from.ch - start.ch); - if (dist < nearestDist) { nearest = from; nearestDist = dist; } - } - if (!nearest) return null; - - if (before.length == 1) - nearest.ch += before[0].length; - else - nearest = Pos(nearest.line + (before.length - 1), before[before.length - 1].length); - if (data.start.line == data.end.line) - var end = Pos(nearest.line, nearest.ch + (data.end.ch - data.start.ch)); - else - var end = Pos(nearest.line + (data.end.line - data.start.line), data.end.ch); - return {start: nearest, end: end}; - } - - function atInterestingExpression(cm) { - var pos = cm.getCursor("end"), tok = cm.getTokenAt(pos); - if (tok.start < pos.ch && (tok.type == "comment" || tok.type == "string")) return false; - return /\w/.test(cm.getLine(pos.line).slice(Math.max(pos.ch - 1, 0), pos.ch + 1)); - } - - // Variable renaming - - function rename(ts, cm) { - var token = cm.getTokenAt(cm.getCursor()); - if (!/\w/.test(token.string)) showError(ts, cm, "Not at a variable"); - dialog(cm, "New name for " + token.string, function(newName) { - ts.request(cm, {type: "rename", newName: newName, fullDocs: true}, function(error, data) { - if (error) return showError(ts, cm, error); - applyChanges(ts, data.changes); - }); - }); - } - - function selectName(ts, cm) { - var cur = cm.getCursor(), token = cm.getTokenAt(cur); - if (!/\w/.test(token.string)) showError(ts, cm, "Not at a variable"); - var name = findDoc(ts, cm.doc).name; - ts.request(cm, {type: "refs"}, function(error, data) { - if (error) return showError(ts, cm, error); - var ranges = [], cur = 0; - for (var i = 0; i < data.refs.length; i++) { - var ref = data.refs[i]; - if (ref.file == name) { - ranges.push({anchor: ref.start, head: ref.end}); - if (cmpPos(cur, ref.start) >= 0 && cmpPos(cur, ref.end) <= 0) - cur = ranges.length - 1; - } - } - cm.setSelections(ranges, cur); - }); - } - - var nextChangeOrig = 0; - function applyChanges(ts, changes) { - var perFile = Object.create(null); - for (var i = 0; i < changes.length; ++i) { - var ch = changes[i]; - (perFile[ch.file] || (perFile[ch.file] = [])).push(ch); - } - for (var file in perFile) { - var known = ts.docs[file], chs = perFile[file];; - if (!known) continue; - chs.sort(function(a, b) { return cmpPos(b.start, a.start); }); - var origin = "*rename" + (++nextChangeOrig); - for (var i = 0; i < chs.length; ++i) { - var ch = chs[i]; - known.doc.replaceRange(ch.text, ch.start, ch.end, origin); - } - } - } - - // Generic request-building helper - - function buildRequest(ts, doc, query, pos) { - var files = [], offsetLines = 0, allowFragments = !query.fullDocs; - if (!allowFragments) delete query.fullDocs; - if (typeof query == "string") query = {type: query}; - query.lineCharPositions = true; - if (query.end == null) { - query.end = pos || doc.doc.getCursor("end"); - if (doc.doc.somethingSelected()) - query.start = doc.doc.getCursor("start"); - } - var startPos = query.start || query.end; - - if (doc.changed) { - if (doc.doc.lineCount() > bigDoc && allowFragments !== false && - doc.changed.to - doc.changed.from < 100 && - doc.changed.from <= startPos.line && doc.changed.to > query.end.line) { - files.push(getFragmentAround(doc, startPos, query.end)); - query.file = "#0"; - var offsetLines = files[0].offsetLines; - if (query.start != null) query.start = Pos(query.start.line - -offsetLines, query.start.ch); - query.end = Pos(query.end.line - offsetLines, query.end.ch); - } else { - files.push({type: "full", - name: doc.name, - text: docValue(ts, doc)}); - query.file = doc.name; - doc.changed = null; - } - } else { - query.file = doc.name; - } - for (var name in ts.docs) { - var cur = ts.docs[name]; - if (cur.changed && cur != doc) { - files.push({type: "full", name: cur.name, text: docValue(ts, cur)}); - cur.changed = null; - } - } - - return {query: query, files: files}; - } - - function getFragmentAround(data, start, end) { - var doc = data.doc; - var minIndent = null, minLine = null, endLine, tabSize = 4; - for (var p = start.line - 1, min = Math.max(0, p - 50); p >= min; --p) { - var line = doc.getLine(p), fn = line.search(/\bfunction\b/); - if (fn < 0) continue; - var indent = CodeMirror.countColumn(line, null, tabSize); - if (minIndent != null && minIndent <= indent) continue; - minIndent = indent; - minLine = p; - } - if (minLine == null) minLine = min; - var max = Math.min(doc.lastLine(), end.line + 20); - if (minIndent == null || minIndent == CodeMirror.countColumn(doc.getLine(start.line), null, tabSize)) - endLine = max; - else for (endLine = end.line + 1; endLine < max; ++endLine) { - var indent = CodeMirror.countColumn(doc.getLine(endLine), null, tabSize); - if (indent <= minIndent) break; - } - var from = Pos(minLine, 0); - - return {type: "part", - name: data.name, - offsetLines: from.line, - text: doc.getRange(from, Pos(endLine, 0))}; - } - - // Generic utilities - - var cmpPos = CodeMirror.cmpPos; - - function elt(tagname, cls /*, ... elts*/) { - var e = document.createElement(tagname); - if (cls) e.className = cls; - for (var i = 2; i < arguments.length; ++i) { - var elt = arguments[i]; - if (typeof elt == "string") elt = document.createTextNode(elt); - e.appendChild(elt); - } - return e; - } - - function dialog(cm, text, f) { - if (cm.openDialog) - cm.openDialog(text + ": ", f); - else - f(prompt(text, "")); - } - - // Tooltips - - function tempTooltip(cm, content) { - var where = cm.cursorCoords(); - var tip = makeTooltip(where.right + 1, where.bottom, content); - function clear() { - if (!tip.parentNode) return; - cm.off("cursorActivity", clear); - fadeOut(tip); - } - setTimeout(clear, 1700); - cm.on("cursorActivity", clear); - } - - function makeTooltip(x, y, content) { - var node = elt("div", cls + "tooltip", content); - node.style.left = x + "px"; - node.style.top = y + "px"; - document.body.appendChild(node); - return node; - } - - function remove(node) { - var p = node && node.parentNode; - if (p) p.removeChild(node); - } - - function fadeOut(tooltip) { - tooltip.style.opacity = "0"; - setTimeout(function() { remove(tooltip); }, 1100); - } - - function showError(ts, cm, msg) { - if (ts.options.showError) - ts.options.showError(cm, msg); - else - tempTooltip(cm, String(msg)); - } - - function closeArgHints(ts) { - if (ts.activeArgHints) { remove(ts.activeArgHints); ts.activeArgHints = null; } - } - - function docValue(ts, doc) { - var val = doc.doc.getValue(); - if (ts.options.fileFilter) val = ts.options.fileFilter(val, doc.name, doc.doc); - return val; - } - - // Worker wrapper - - function WorkerServer(ts) { - var worker = new Worker(ts.options.workerScript); - worker.postMessage({type: "init", - defs: ts.options.defs, - plugins: ts.options.plugins, - scripts: ts.options.workerDeps}); - var msgId = 0, pending = {}; - - function send(data, c) { - if (c) { - data.id = ++msgId; - pending[msgId] = c; - } - worker.postMessage(data); - } - worker.onmessage = function(e) { - var data = e.data; - if (data.type == "getFile") { - getFile(ts, data.name, function(err, text) { - send({type: "getFile", err: String(err), text: text, id: data.id}); - }); - } else if (data.type == "debug") { - window.console.log(data.message); - } else if (data.id && pending[data.id]) { - pending[data.id](data.err, data.body); - delete pending[data.id]; - } - }; - worker.onerror = function(e) { - for (var id in pending) pending[id](e); - pending = {}; - }; - - this.addFile = function(name, text) { send({type: "add", name: name, text: text}); }; - this.delFile = function(name) { send({type: "del", name: name}); }; - this.request = function(body, c) { send({type: "req", body: body}, c); }; - } -}); diff --git a/vendor/codemirror/addon/tern/worker.js b/vendor/codemirror/addon/tern/worker.js deleted file mode 100644 index 1ff63de4..00000000 --- a/vendor/codemirror/addon/tern/worker.js +++ /dev/null @@ -1,41 +0,0 @@ -// declare global: tern, server - -var server; - -this.onmessage = function(e) { - var data = e.data; - switch (data.type) { - case "init": return startServer(data.defs, data.plugins, data.scripts); - case "add": return server.addFile(data.name, data.text); - case "del": return server.delFile(data.name); - case "req": return server.request(data.body, function(err, reqData) { - postMessage({id: data.id, body: reqData, err: err && String(err)}); - }); - case "getFile": - var c = pending[data.id]; - delete pending[data.id]; - return c(data.err, data.text); - default: throw new Error("Unknown message type: " + data.type); - } -}; - -var nextId = 0, pending = {}; -function getFile(file, c) { - postMessage({type: "getFile", name: file, id: ++nextId}); - pending[nextId] = c; -} - -function startServer(defs, plugins, scripts) { - if (scripts) importScripts.apply(null, scripts); - - server = new tern.Server({ - getFile: getFile, - async: true, - defs: defs, - plugins: plugins - }); -} - -var console = { - log: function(v) { postMessage({type: "debug", message: v}); } -}; diff --git a/vendor/codemirror/addon/wrap/hardwrap.js b/vendor/codemirror/addon/wrap/hardwrap.js deleted file mode 100644 index 87aab1b8..00000000 --- a/vendor/codemirror/addon/wrap/hardwrap.js +++ /dev/null @@ -1,136 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var Pos = CodeMirror.Pos; - - function findParagraph(cm, pos, options) { - var startRE = options.paragraphStart || cm.getHelper(pos, "paragraphStart"); - for (var start = pos.line, first = cm.firstLine(); start > first; --start) { - var line = cm.getLine(start); - if (startRE && startRE.test(line)) break; - if (!/\S/.test(line)) { ++start; break; } - } - var endRE = options.paragraphEnd || cm.getHelper(pos, "paragraphEnd"); - for (var end = pos.line + 1, last = cm.lastLine(); end <= last; ++end) { - var line = cm.getLine(end); - if (endRE && endRE.test(line)) { ++end; break; } - if (!/\S/.test(line)) break; - } - return {from: start, to: end}; - } - - function findBreakPoint(text, column, wrapOn, killTrailingSpace) { - for (var at = column; at > 0; --at) - if (wrapOn.test(text.slice(at - 1, at + 1))) break; - if (at == 0) at = column; - var endOfText = at; - if (killTrailingSpace) - while (text.charAt(endOfText - 1) == " ") --endOfText; - return {from: endOfText, to: at}; - } - - function wrapRange(cm, from, to, options) { - from = cm.clipPos(from); to = cm.clipPos(to); - var column = options.column || 80; - var wrapOn = options.wrapOn || /\s\S|-[^\.\d]/; - var killTrailing = options.killTrailingSpace !== false; - var changes = [], curLine = "", curNo = from.line; - var lines = cm.getRange(from, to, false); - if (!lines.length) return null; - var leadingSpace = lines[0].match(/^[ \t]*/)[0]; - - for (var i = 0; i < lines.length; ++i) { - var text = lines[i], oldLen = curLine.length, spaceInserted = 0; - if (curLine && text && !wrapOn.test(curLine.charAt(curLine.length - 1) + text.charAt(0))) { - curLine += " "; - spaceInserted = 1; - } - var spaceTrimmed = ""; - if (i) { - spaceTrimmed = text.match(/^\s*/)[0]; - text = text.slice(spaceTrimmed.length); - } - curLine += text; - if (i) { - var firstBreak = curLine.length > column && leadingSpace == spaceTrimmed && - findBreakPoint(curLine, column, wrapOn, killTrailing); - // If this isn't broken, or is broken at a different point, remove old break - if (!firstBreak || firstBreak.from != oldLen || firstBreak.to != oldLen + spaceInserted) { - changes.push({text: [spaceInserted ? " " : ""], - from: Pos(curNo, oldLen), - to: Pos(curNo + 1, spaceTrimmed.length)}); - } else { - curLine = leadingSpace + text; - ++curNo; - } - } - while (curLine.length > column) { - var bp = findBreakPoint(curLine, column, wrapOn, killTrailing); - changes.push({text: ["", leadingSpace], - from: Pos(curNo, bp.from), - to: Pos(curNo, bp.to)}); - curLine = leadingSpace + curLine.slice(bp.to); - ++curNo; - } - } - if (changes.length) cm.operation(function() { - for (var i = 0; i < changes.length; ++i) { - var change = changes[i]; - cm.replaceRange(change.text, change.from, change.to); - } - }); - return changes.length ? {from: changes[0].from, to: CodeMirror.changeEnd(changes[changes.length - 1])} : null; - } - - CodeMirror.defineExtension("wrapParagraph", function(pos, options) { - options = options || {}; - if (!pos) pos = this.getCursor(); - var para = findParagraph(this, pos, options); - return wrapRange(this, Pos(para.from, 0), Pos(para.to - 1), options); - }); - - CodeMirror.commands.wrapLines = function(cm) { - cm.operation(function() { - var ranges = cm.listSelections(), at = cm.lastLine() + 1; - for (var i = ranges.length - 1; i >= 0; i--) { - var range = ranges[i], span; - if (range.empty()) { - var para = findParagraph(cm, range.head, {}); - span = {from: Pos(para.from, 0), to: Pos(para.to - 1)}; - } else { - span = {from: range.from(), to: range.to()}; - } - if (span.to.line >= at) continue; - at = span.from.line; - wrapRange(cm, span.from, span.to, {}); - } - }); - }; - - CodeMirror.defineExtension("wrapRange", function(from, to, options) { - return wrapRange(this, from, to, options || {}); - }); - - CodeMirror.defineExtension("wrapParagraphsInRange", function(from, to, options) { - options = options || {}; - var cm = this, paras = []; - for (var line = from.line; line <= to.line;) { - var para = findParagraph(cm, Pos(line, 0), options); - paras.push(para); - line = para.to; - } - var madeChange = false; - if (paras.length) cm.operation(function() { - for (var i = paras.length - 1; i >= 0; --i) - madeChange = madeChange || wrapRange(cm, Pos(paras[i].from, 0), Pos(paras[i].to - 1), options); - }); - return madeChange; - }); -}); diff --git a/vendor/codemirror/bower.json b/vendor/codemirror/bower.json deleted file mode 100644 index 66e049df..00000000 --- a/vendor/codemirror/bower.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "CodeMirror", - "main": ["lib/codemirror.js", "lib/codemirror.css"], - "ignore": [ - "**/.*", - "node_modules", - "components", - "bin", - "demo", - "doc", - "test", - "index.html", - "package.json" - ] -} diff --git a/vendor/codemirror/keymap/emacs.js b/vendor/codemirror/keymap/emacs.js deleted file mode 100644 index 8d3ab62d..00000000 --- a/vendor/codemirror/keymap/emacs.js +++ /dev/null @@ -1,405 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var Pos = CodeMirror.Pos; - function posEq(a, b) { return a.line == b.line && a.ch == b.ch; } - - // Kill 'ring' - - var killRing = []; - function addToRing(str) { - killRing.push(str); - if (killRing.length > 50) killRing.shift(); - } - function growRingTop(str) { - if (!killRing.length) return addToRing(str); - killRing[killRing.length - 1] += str; - } - function getFromRing(n) { return killRing[killRing.length - (n ? Math.min(n, 1) : 1)] || ""; } - function popFromRing() { if (killRing.length > 1) killRing.pop(); return getFromRing(); } - - var lastKill = null; - - function kill(cm, from, to, mayGrow, text) { - if (text == null) text = cm.getRange(from, to); - - if (mayGrow && lastKill && lastKill.cm == cm && posEq(from, lastKill.pos) && cm.isClean(lastKill.gen)) - growRingTop(text); - else - addToRing(text); - cm.replaceRange("", from, to, "+delete"); - - if (mayGrow) lastKill = {cm: cm, pos: from, gen: cm.changeGeneration()}; - else lastKill = null; - } - - // Boundaries of various units - - function byChar(cm, pos, dir) { - return cm.findPosH(pos, dir, "char", true); - } - - function byWord(cm, pos, dir) { - return cm.findPosH(pos, dir, "word", true); - } - - function byLine(cm, pos, dir) { - return cm.findPosV(pos, dir, "line", cm.doc.sel.goalColumn); - } - - function byPage(cm, pos, dir) { - return cm.findPosV(pos, dir, "page", cm.doc.sel.goalColumn); - } - - function byParagraph(cm, pos, dir) { - var no = pos.line, line = cm.getLine(no); - var sawText = /\S/.test(dir < 0 ? line.slice(0, pos.ch) : line.slice(pos.ch)); - var fst = cm.firstLine(), lst = cm.lastLine(); - for (;;) { - no += dir; - if (no < fst || no > lst) - return cm.clipPos(Pos(no - dir, dir < 0 ? 0 : null)); - line = cm.getLine(no); - var hasText = /\S/.test(line); - if (hasText) sawText = true; - else if (sawText) return Pos(no, 0); - } - } - - function bySentence(cm, pos, dir) { - var line = pos.line, ch = pos.ch; - var text = cm.getLine(pos.line), sawWord = false; - for (;;) { - var next = text.charAt(ch + (dir < 0 ? -1 : 0)); - if (!next) { // End/beginning of line reached - if (line == (dir < 0 ? cm.firstLine() : cm.lastLine())) return Pos(line, ch); - text = cm.getLine(line + dir); - if (!/\S/.test(text)) return Pos(line, ch); - line += dir; - ch = dir < 0 ? text.length : 0; - continue; - } - if (sawWord && /[!?.]/.test(next)) return Pos(line, ch + (dir > 0 ? 1 : 0)); - if (!sawWord) sawWord = /\w/.test(next); - ch += dir; - } - } - - function byExpr(cm, pos, dir) { - var wrap; - if (cm.findMatchingBracket && (wrap = cm.findMatchingBracket(pos, true)) - && wrap.match && (wrap.forward ? 1 : -1) == dir) - return dir > 0 ? Pos(wrap.to.line, wrap.to.ch + 1) : wrap.to; - - for (var first = true;; first = false) { - var token = cm.getTokenAt(pos); - var after = Pos(pos.line, dir < 0 ? token.start : token.end); - if (first && dir > 0 && token.end == pos.ch || !/\w/.test(token.string)) { - var newPos = cm.findPosH(after, dir, "char"); - if (posEq(after, newPos)) return pos; - else pos = newPos; - } else { - return after; - } - } - } - - // Prefixes (only crudely supported) - - function getPrefix(cm, precise) { - var digits = cm.state.emacsPrefix; - if (!digits) return precise ? null : 1; - clearPrefix(cm); - return digits == "-" ? -1 : Number(digits); - } - - function repeated(cmd) { - var f = typeof cmd == "string" ? function(cm) { cm.execCommand(cmd); } : cmd; - return function(cm) { - var prefix = getPrefix(cm); - f(cm); - for (var i = 1; i < prefix; ++i) f(cm); - }; - } - - function findEnd(cm, by, dir) { - var pos = cm.getCursor(), prefix = getPrefix(cm); - if (prefix < 0) { dir = -dir; prefix = -prefix; } - for (var i = 0; i < prefix; ++i) { - var newPos = by(cm, pos, dir); - if (posEq(newPos, pos)) break; - pos = newPos; - } - return pos; - } - - function move(by, dir) { - var f = function(cm) { - cm.extendSelection(findEnd(cm, by, dir)); - }; - f.motion = true; - return f; - } - - function killTo(cm, by, dir) { - kill(cm, cm.getCursor(), findEnd(cm, by, dir), true); - } - - function addPrefix(cm, digit) { - if (cm.state.emacsPrefix) { - if (digit != "-") cm.state.emacsPrefix += digit; - return; - } - // Not active yet - cm.state.emacsPrefix = digit; - cm.on("keyHandled", maybeClearPrefix); - cm.on("inputRead", maybeDuplicateInput); - } - - var prefixPreservingKeys = {"Alt-G": true, "Ctrl-X": true, "Ctrl-Q": true, "Ctrl-U": true}; - - function maybeClearPrefix(cm, arg) { - if (!cm.state.emacsPrefixMap && !prefixPreservingKeys.hasOwnProperty(arg)) - clearPrefix(cm); - } - - function clearPrefix(cm) { - cm.state.emacsPrefix = null; - cm.off("keyHandled", maybeClearPrefix); - cm.off("inputRead", maybeDuplicateInput); - } - - function maybeDuplicateInput(cm, event) { - var dup = getPrefix(cm); - if (dup > 1 && event.origin == "+input") { - var one = event.text.join("\n"), txt = ""; - for (var i = 1; i < dup; ++i) txt += one; - cm.replaceSelection(txt); - } - } - - function addPrefixMap(cm) { - cm.state.emacsPrefixMap = true; - cm.addKeyMap(prefixMap); - cm.on("keyHandled", maybeRemovePrefixMap); - cm.on("inputRead", maybeRemovePrefixMap); - } - - function maybeRemovePrefixMap(cm, arg) { - if (typeof arg == "string" && (/^\d$/.test(arg) || arg == "Ctrl-U")) return; - cm.removeKeyMap(prefixMap); - cm.state.emacsPrefixMap = false; - cm.off("keyHandled", maybeRemovePrefixMap); - cm.off("inputRead", maybeRemovePrefixMap); - } - - // Utilities - - function setMark(cm) { - cm.setCursor(cm.getCursor()); - cm.setExtending(!cm.getExtending()); - cm.on("change", function() { cm.setExtending(false); }); - } - - function clearMark(cm) { - cm.setExtending(false); - cm.setCursor(cm.getCursor()); - } - - function getInput(cm, msg, f) { - if (cm.openDialog) - cm.openDialog(msg + ": ", f, {bottom: true}); - else - f(prompt(msg, "")); - } - - function operateOnWord(cm, op) { - var start = cm.getCursor(), end = cm.findPosH(start, 1, "word"); - cm.replaceRange(op(cm.getRange(start, end)), start, end); - cm.setCursor(end); - } - - function toEnclosingExpr(cm) { - var pos = cm.getCursor(), line = pos.line, ch = pos.ch; - var stack = []; - while (line >= cm.firstLine()) { - var text = cm.getLine(line); - for (var i = ch == null ? text.length : ch; i > 0;) { - var ch = text.charAt(--i); - if (ch == ")") - stack.push("("); - else if (ch == "]") - stack.push("["); - else if (ch == "}") - stack.push("{"); - else if (/[\(\{\[]/.test(ch) && (!stack.length || stack.pop() != ch)) - return cm.extendSelection(Pos(line, i)); - } - --line; ch = null; - } - } - - function quit(cm) { - cm.execCommand("clearSearch"); - clearMark(cm); - } - - // Actual keymap - - var keyMap = CodeMirror.keyMap.emacs = { - "Ctrl-W": function(cm) {kill(cm, cm.getCursor("start"), cm.getCursor("end"));}, - "Ctrl-K": repeated(function(cm) { - var start = cm.getCursor(), end = cm.clipPos(Pos(start.line)); - var text = cm.getRange(start, end); - if (!/\S/.test(text)) { - text += "\n"; - end = Pos(start.line + 1, 0); - } - kill(cm, start, end, true, text); - }), - "Alt-W": function(cm) { - addToRing(cm.getSelection()); - clearMark(cm); - }, - "Ctrl-Y": function(cm) { - var start = cm.getCursor(); - cm.replaceRange(getFromRing(getPrefix(cm)), start, start, "paste"); - cm.setSelection(start, cm.getCursor()); - }, - "Alt-Y": function(cm) {cm.replaceSelection(popFromRing(), "around", "paste");}, - - "Ctrl-Space": setMark, "Ctrl-Shift-2": setMark, - - "Ctrl-F": move(byChar, 1), "Ctrl-B": move(byChar, -1), - "Right": move(byChar, 1), "Left": move(byChar, -1), - "Ctrl-D": function(cm) { killTo(cm, byChar, 1); }, - "Delete": function(cm) { killTo(cm, byChar, 1); }, - "Ctrl-H": function(cm) { killTo(cm, byChar, -1); }, - "Backspace": function(cm) { killTo(cm, byChar, -1); }, - - "Alt-F": move(byWord, 1), "Alt-B": move(byWord, -1), - "Alt-D": function(cm) { killTo(cm, byWord, 1); }, - "Alt-Backspace": function(cm) { killTo(cm, byWord, -1); }, - - "Ctrl-N": move(byLine, 1), "Ctrl-P": move(byLine, -1), - "Down": move(byLine, 1), "Up": move(byLine, -1), - "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", - "End": "goLineEnd", "Home": "goLineStart", - - "Alt-V": move(byPage, -1), "Ctrl-V": move(byPage, 1), - "PageUp": move(byPage, -1), "PageDown": move(byPage, 1), - - "Ctrl-Up": move(byParagraph, -1), "Ctrl-Down": move(byParagraph, 1), - - "Alt-A": move(bySentence, -1), "Alt-E": move(bySentence, 1), - "Alt-K": function(cm) { killTo(cm, bySentence, 1); }, - - "Ctrl-Alt-K": function(cm) { killTo(cm, byExpr, 1); }, - "Ctrl-Alt-Backspace": function(cm) { killTo(cm, byExpr, -1); }, - "Ctrl-Alt-F": move(byExpr, 1), "Ctrl-Alt-B": move(byExpr, -1), - - "Shift-Ctrl-Alt-2": function(cm) { - cm.setSelection(findEnd(cm, byExpr, 1), cm.getCursor()); - }, - "Ctrl-Alt-T": function(cm) { - var leftStart = byExpr(cm, cm.getCursor(), -1), leftEnd = byExpr(cm, leftStart, 1); - var rightEnd = byExpr(cm, leftEnd, 1), rightStart = byExpr(cm, rightEnd, -1); - cm.replaceRange(cm.getRange(rightStart, rightEnd) + cm.getRange(leftEnd, rightStart) + - cm.getRange(leftStart, leftEnd), leftStart, rightEnd); - }, - "Ctrl-Alt-U": repeated(toEnclosingExpr), - - "Alt-Space": function(cm) { - var pos = cm.getCursor(), from = pos.ch, to = pos.ch, text = cm.getLine(pos.line); - while (from && /\s/.test(text.charAt(from - 1))) --from; - while (to < text.length && /\s/.test(text.charAt(to))) ++to; - cm.replaceRange(" ", Pos(pos.line, from), Pos(pos.line, to)); - }, - "Ctrl-O": repeated(function(cm) { cm.replaceSelection("\n", "start"); }), - "Ctrl-T": repeated(function(cm) { - var pos = cm.getCursor(); - if (pos.ch < cm.getLine(pos.line).length) pos = Pos(pos.line, pos.ch + 1); - var from = cm.findPosH(pos, -2, "char"); - var range = cm.getRange(from, pos); - if (range.length != 2) return; - cm.setSelection(from, pos); - cm.replaceSelection(range.charAt(1) + range.charAt(0), null, "+transpose"); - }), - - "Alt-C": repeated(function(cm) { - operateOnWord(cm, function(w) { - var letter = w.search(/\w/); - if (letter == -1) return w; - return w.slice(0, letter) + w.charAt(letter).toUpperCase() + w.slice(letter + 1).toLowerCase(); - }); - }), - "Alt-U": repeated(function(cm) { - operateOnWord(cm, function(w) { return w.toUpperCase(); }); - }), - "Alt-L": repeated(function(cm) { - operateOnWord(cm, function(w) { return w.toLowerCase(); }); - }), - - "Alt-;": "toggleComment", - - "Ctrl-/": repeated("undo"), "Shift-Ctrl--": repeated("undo"), - "Ctrl-Z": repeated("undo"), "Cmd-Z": repeated("undo"), - "Shift-Alt-,": "goDocStart", "Shift-Alt-.": "goDocEnd", - "Ctrl-S": "findNext", "Ctrl-R": "findPrev", "Ctrl-G": quit, "Shift-Alt-5": "replace", - "Alt-/": "autocomplete", - "Ctrl-J": "newlineAndIndent", "Enter": false, "Tab": "indentAuto", - - "Alt-G": function(cm) {cm.setOption("keyMap", "emacs-Alt-G");}, - "Ctrl-X": function(cm) {cm.setOption("keyMap", "emacs-Ctrl-X");}, - "Ctrl-Q": function(cm) {cm.setOption("keyMap", "emacs-Ctrl-Q");}, - "Ctrl-U": addPrefixMap - }; - - CodeMirror.keyMap["emacs-Ctrl-X"] = { - "Tab": function(cm) { - cm.indentSelection(getPrefix(cm, true) || cm.getOption("indentUnit")); - }, - "Ctrl-X": function(cm) { - cm.setSelection(cm.getCursor("head"), cm.getCursor("anchor")); - }, - - "Ctrl-S": "save", "Ctrl-W": "save", "S": "saveAll", "F": "open", "U": repeated("undo"), "K": "close", - "Delete": function(cm) { kill(cm, cm.getCursor(), bySentence(cm, cm.getCursor(), 1), true); }, - auto: "emacs", nofallthrough: true, disableInput: true - }; - - CodeMirror.keyMap["emacs-Alt-G"] = { - "G": function(cm) { - var prefix = getPrefix(cm, true); - if (prefix != null && prefix > 0) return cm.setCursor(prefix - 1); - - getInput(cm, "Goto line", function(str) { - var num; - if (str && !isNaN(num = Number(str)) && num == num|0 && num > 0) - cm.setCursor(num - 1); - }); - }, - auto: "emacs", nofallthrough: true, disableInput: true - }; - - CodeMirror.keyMap["emacs-Ctrl-Q"] = { - "Tab": repeated("insertTab"), - auto: "emacs", nofallthrough: true - }; - - var prefixMap = {"Ctrl-G": clearPrefix}; - function regPrefix(d) { - prefixMap[d] = function(cm) { addPrefix(cm, d); }; - keyMap["Ctrl-" + d] = function(cm) { addPrefix(cm, d); }; - prefixPreservingKeys["Ctrl-" + d] = true; - } - for (var i = 0; i < 10; ++i) regPrefix(String(i)); - regPrefix("-"); -}); diff --git a/vendor/codemirror/keymap/extra.js b/vendor/codemirror/keymap/extra.js deleted file mode 100644 index 18dd5a97..00000000 --- a/vendor/codemirror/keymap/extra.js +++ /dev/null @@ -1,43 +0,0 @@ -// A number of additional default bindings that are too obscure to -// include in the core codemirror.js file. - -(function() { - "use strict"; - - var Pos = CodeMirror.Pos; - - function moveLines(cm, start, end, dist) { - if (!dist || start > end) return 0; - - var from = cm.clipPos(Pos(start, 0)), to = cm.clipPos(Pos(end)); - var text = cm.getRange(from, to); - - if (start <= cm.firstLine()) - cm.replaceRange("", from, Pos(to.line + 1, 0)); - else - cm.replaceRange("", Pos(from.line - 1), to); - var target = from.line + dist; - if (target <= cm.firstLine()) { - cm.replaceRange(text + "\n", Pos(target, 0)); - return cm.firstLine() - from.line; - } else { - var targetPos = cm.clipPos(Pos(target - 1)); - cm.replaceRange("\n" + text, targetPos); - return targetPos.line + 1 - from.line; - } - } - - function moveSelectedLines(cm, dist) { - var head = cm.getCursor("head"), anchor = cm.getCursor("anchor"); - cm.operation(function() { - var moved = moveLines(cm, Math.min(head.line, anchor.line), Math.max(head.line, anchor.line), dist); - cm.setSelection(Pos(anchor.line + moved, anchor.ch), Pos(head.line + moved, head.ch)); - }); - } - - CodeMirror.commands.moveLinesUp = function(cm) { moveSelectedLines(cm, -1); }; - CodeMirror.commands.moveLinesDown = function(cm) { moveSelectedLines(cm, 1); }; - - CodeMirror.keyMap["default"]["Alt-Up"] = "moveLinesUp"; - CodeMirror.keyMap["default"]["Alt-Down"] = "moveLinesDown"; -})(); diff --git a/vendor/codemirror/keymap/sublime.js b/vendor/codemirror/keymap/sublime.js deleted file mode 100644 index b2ba0ce3..00000000 --- a/vendor/codemirror/keymap/sublime.js +++ /dev/null @@ -1,425 +0,0 @@ -// A rough approximation of Sublime Text's keybindings -// Depends on addon/search/searchcursor.js and optionally addon/dialog/dialogs.js - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../lib/codemirror"), require("../addon/search/searchcursor"), require("../addon/edit/matchbrackets")); - else if (typeof define == "function" && define.amd) // AMD - define(["../lib/codemirror", "../addon/search/searchcursor", "../addon/edit/matchbrackets"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - var map = CodeMirror.keyMap.sublime = {fallthrough: "default"}; - var cmds = CodeMirror.commands; - var Pos = CodeMirror.Pos; - var ctrl = CodeMirror.keyMap["default"] == CodeMirror.keyMap.pcDefault ? "Ctrl-" : "Cmd-"; - - // This is not exactly Sublime's algorithm. I couldn't make heads or tails of that. - function findPosSubword(doc, start, dir) { - if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1)); - var line = doc.getLine(start.line); - if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0)); - var state = "start", type; - for (var pos = start.ch, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) { - var next = line.charAt(dir < 0 ? pos - 1 : pos); - var cat = next != "_" && CodeMirror.isWordChar(next) ? "w" : "o"; - if (cat == "w" && next.toUpperCase() == next) cat = "W"; - if (state == "start") { - if (cat != "o") { state = "in"; type = cat; } - } else if (state == "in") { - if (type != cat) { - if (type == "w" && cat == "W" && dir < 0) pos--; - if (type == "W" && cat == "w" && dir > 0) { type = "w"; continue; } - break; - } - } - } - return Pos(start.line, pos); - } - - function moveSubword(cm, dir) { - cm.extendSelectionsBy(function(range) { - if (cm.display.shift || cm.doc.extend || range.empty()) - return findPosSubword(cm.doc, range.head, dir); - else - return dir < 0 ? range.from() : range.to(); - }); - } - - cmds[map["Alt-Left"] = "goSubwordLeft"] = function(cm) { moveSubword(cm, -1); }; - cmds[map["Alt-Right"] = "goSubwordRight"] = function(cm) { moveSubword(cm, 1); }; - - cmds[map[ctrl + "Up"] = "scrollLineUp"] = function(cm) { - cm.scrollTo(null, cm.getScrollInfo().top - cm.defaultTextHeight()); - }; - cmds[map[ctrl + "Down"] = "scrollLineDown"] = function(cm) { - cm.scrollTo(null, cm.getScrollInfo().top + cm.defaultTextHeight()); - }; - - cmds[map["Shift-" + ctrl + "L"] = "splitSelectionByLine"] = function(cm) { - var ranges = cm.listSelections(), lineRanges = []; - for (var i = 0; i < ranges.length; i++) { - var from = ranges[i].from(), to = ranges[i].to(); - for (var line = from.line; line <= to.line; ++line) - if (!(to.line > from.line && line == to.line && to.ch == 0)) - lineRanges.push({anchor: line == from.line ? from : Pos(line, 0), - head: line == to.line ? to : Pos(line)}); - } - cm.setSelections(lineRanges, 0); - }; - - map["Shift-Tab"] = "indentLess"; - - cmds[map[ctrl + "L"] = "selectLine"] = function(cm) { - var ranges = cm.listSelections(), prim = cm.getCursor(), primIndex, extended = []; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.head == prim) primIndex = i; - extended.push({anchor: Pos(range.from().line, 0), - head: Pos(range.to().line + 1, 0)}); - } - cm.setSelections(extended, primIndex); - }; - - function wordAt(cm, pos) { - var start = pos.ch, end = start, line = cm.getLine(pos.line); - while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start; - while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end; - return {from: Pos(pos.line, start), to: Pos(pos.line, end), word: line.slice(start, end)}; - } - - cmds[map[ctrl + "D"] = "selectNextOccurrence"] = function(cm) { - var from = cm.getCursor("from"), to = cm.getCursor("to"); - var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel; - if (CodeMirror.cmpPos(from, to) == 0) { - var word = wordAt(cm, from); - if (!word.word) return; - cm.setSelection(word.from, word.to); - fullWord = true; - } else { - var query = cm.getRange(from, to); - var cur = cm.getSearchCursor(fullWord ? new RegExp("\\b" + query + "\\b") : query, to); - if (cur.findNext()) - cm.addSelection(cur.from(), cur.to()); - } - if (fullWord) - cm.state.sublimeFindFullWord = cm.doc.sel; - }; - - var mirror = "(){}[]"; - function selectBetweenBrackets(cm) { - var pos = cm.getCursor(), opening = cm.scanForBracket(pos, -1); - if (!opening) return; - for (;;) { - var closing = cm.scanForBracket(pos, 1); - if (!closing) return; - if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) { - cm.setSelection(Pos(opening.pos.line, opening.pos.ch + 1), closing.pos, false); - return true; - } - pos = Pos(closing.pos.line, closing.pos.ch + 1); - } - } - - cmds[map["Shift-" + ctrl + "Space"] = "selectScope"] = function(cm) { - selectBetweenBrackets(cm) || cm.execCommand("selectAll"); - }; - cmds[map["Shift-" + ctrl + "M"] = "selectBetweenBrackets"] = function(cm) { - if (!selectBetweenBrackets(cm)) return CodeMirror.Pass; - }; - - cmds[map[ctrl + "M"] = "goToBracket"] = function(cm) { - cm.extendSelectionsBy(function(range) { - var next = cm.scanForBracket(range.head, 1); - if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos; - var prev = cm.scanForBracket(range.head, -1); - return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head; - }); - }; - - cmds[map["Shift-" + ctrl + "Up"] = "swapLineUp"] = function(cm) { - var ranges = cm.listSelections(), linesToMove = [], at = cm.firstLine() - 1; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i], from = range.from().line - 1, to = range.to().line; - if (from > at) linesToMove.push(from, to); - else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to; - at = to; - } - cm.operation(function() { - for (var i = 0; i < linesToMove.length; i += 2) { - var from = linesToMove[i], to = linesToMove[i + 1]; - var line = cm.getLine(from); - cm.replaceRange("", Pos(from, 0), Pos(from + 1, 0)); - cm.replaceRange(line + "\n", Pos(to, 0)); - } - }); - }; - - cmds[map["Shift-" + ctrl + "Down"] = "swapLineDown"] = function(cm) { - var ranges = cm.listSelections(), linesToMove = [], at = cm.lastLine() + 1; - for (var i = ranges.length - 1; i >= 0; i--) { - var range = ranges[i], from = range.to().line + 1, to = range.from().line; - if (from < at) linesToMove.push(from, to); - else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to; - at = to; - } - cm.operation(function() { - for (var i = linesToMove.length - 2; i >= 0; i -= 2) { - var from = linesToMove[i], to = linesToMove[i + 1]; - var line = cm.getLine(from); - if (from == cm.lastLine()) - cm.replaceRange("", Pos(from - 1), Pos(from)); - else - cm.replaceRange("", Pos(from, 0), Pos(from + 1, 0)); - cm.replaceRange(line + "\n", Pos(to, 0)); - } - }); - }; - - map[ctrl + "/"] = "toggleComment"; - - cmds[map[ctrl + "J"] = "joinLines"] = function(cm) { - var ranges = cm.listSelections(), joined = []; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i], from = range.from(); - var start = from.line, end = range.to().line; - while (i < ranges.length - 1 && ranges[i + 1].from().line == end) - end = ranges[++i].to().line; - joined.push({start: start, end: end, anchor: !range.empty() && from}); - } - cm.operation(function() { - var offset = 0, ranges = []; - for (var i = 0; i < joined.length; i++) { - var obj = joined[i]; - var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch), head; - for (var line = obj.start; line <= obj.end; line++) { - var actual = line - offset; - if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1); - if (actual < cm.lastLine()) { - cm.replaceRange(" ", Pos(actual), Pos(actual + 1, /^\s*/.exec(cm.getLine(actual + 1))[0].length)); - ++offset; - } - } - ranges.push({anchor: anchor || head, head: head}); - } - cm.setSelections(ranges, 0); - }); - }; - - cmds[map["Shift-" + ctrl + "D"] = "duplicateLine"] = function(cm) { - cm.operation(function() { - var rangeCount = cm.listSelections().length; - for (var i = 0; i < rangeCount; i++) { - var range = cm.listSelections()[i]; - if (range.empty()) - cm.replaceRange(cm.getLine(range.head.line) + "\n", Pos(range.head.line, 0)); - else - cm.replaceRange(cm.getRange(range.from(), range.to()), range.from()); - } - }); - }; - - map[ctrl + "T"] = "transposeChars"; - - function sortLines(cm, caseSensitive) { - var ranges = cm.listSelections(), toSort = [], selected; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.empty()) continue; - var from = range.from().line, to = range.to().line; - while (i < ranges.length - 1 && ranges[i + 1].from().line == to) - to = range[++i].to().line; - toSort.push(from, to); - } - if (toSort.length) selected = true; - else toSort.push(cm.firstLine(), cm.lastLine()); - - cm.operation(function() { - var ranges = []; - for (var i = 0; i < toSort.length; i += 2) { - var from = toSort[i], to = toSort[i + 1]; - var start = Pos(from, 0), end = Pos(to); - var lines = cm.getRange(start, end, false); - if (caseSensitive) - lines.sort(); - else - lines.sort(function(a, b) { - var au = a.toUpperCase(), bu = b.toUpperCase(); - if (au != bu) { a = au; b = bu; } - return a < b ? -1 : a == b ? 0 : 1; - }); - cm.replaceRange(lines, start, end); - if (selected) ranges.push({anchor: start, head: end}); - } - if (selected) cm.setSelections(ranges, 0); - }); - } - - cmds[map["F9"] = "sortLines"] = function(cm) { sortLines(cm, true); }; - cmds[map[ctrl + "F9"] = "sortLinesInsensitive"] = function(cm) { sortLines(cm, false); }; - - cmds[map["F2"] = "nextBookmark"] = function(cm) { - var marks = cm.state.sublimeBookmarks; - if (marks) while (marks.length) { - var current = marks.shift(); - var found = current.find(); - if (found) { - marks.push(current); - return cm.setSelection(found.from, found.to); - } - } - }; - - cmds[map["Shift-F2"] = "prevBookmark"] = function(cm) { - var marks = cm.state.sublimeBookmarks; - if (marks) while (marks.length) { - marks.unshift(marks.pop()); - var found = marks[marks.length - 1].find(); - if (!found) - marks.pop(); - else - return cm.setSelection(found.from, found.to); - } - }; - - cmds[map[ctrl + "F2"] = "toggleBookmark"] = function(cm) { - var ranges = cm.listSelections(); - var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []); - for (var i = 0; i < ranges.length; i++) { - var from = ranges[i].from(), to = ranges[i].to(); - var found = cm.findMarks(from, to); - for (var j = 0; j < found.length; j++) { - if (found[j].sublimeBookmark) { - found[j].clear(); - for (var k = 0; k < marks.length; k++) - if (marks[k] == found[j]) - marks.splice(k--, 1); - break; - } - } - if (j == found.length) - marks.push(cm.markText(from, to, {sublimeBookmark: true, clearWhenEmpty: false})); - } - }; - - cmds[map["Shift-" + ctrl + "F2"] = "clearBookmarks"] = function(cm) { - var marks = cm.state.sublimeBookmarks; - if (marks) for (var i = 0; i < marks.length; i++) marks[i].clear(); - marks.length = 0; - }; - - cmds[map["Alt-F2"] = "selectBookmarks"] = function(cm) { - var marks = cm.state.sublimeBookmarks, ranges = []; - if (marks) for (var i = 0; i < marks.length; i++) { - var found = marks[i].find(); - if (!found) - marks.splice(i--, 0); - else - ranges.push({anchor: found.from, head: found.to}); - } - if (ranges.length) - cm.setSelections(ranges, 0); - }; - - map["Alt-Q"] = "wrapLines"; - - var mapK = CodeMirror.keyMap["sublime-Ctrl-K"] = {auto: "sublime", nofallthrough: true}; - - map[ctrl + "K"] = function(cm) {cm.setOption("keyMap", "sublime-Ctrl-K");}; - - function modifyWordOrSelection(cm, mod) { - cm.operation(function() { - var ranges = cm.listSelections(), indices = [], replacements = []; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.empty()) { indices.push(i); replacements.push(""); } - else replacements.push(mod(cm.getRange(range.from(), range.to()))); - } - cm.replaceSelections(replacements, "around", "case"); - for (var i = indices.length - 1, at; i >= 0; i--) { - var range = ranges[indices[i]]; - if (at && CodeMirror.cmpPos(range.head, at) > 0) continue; - var word = wordAt(cm, range.head); - at = word.from; - cm.replaceRange(mod(word.word), word.from, word.to); - } - }); - } - - cmds[mapK[ctrl + "U"] = "upcaseAtCursor"] = function(cm) { - modifyWordOrSelection(cm, function(str) { return str.toUpperCase(); }); - }; - cmds[mapK[ctrl + "L"] = "downcaseAtCursor"] = function(cm) { - modifyWordOrSelection(cm, function(str) { return str.toLowerCase(); }); - }; - - cmds[mapK[ctrl + "Space"] = "setSublimeMark"] = function(cm) { - if (cm.state.sublimeMark) cm.state.sublimeMark.clear(); - cm.state.sublimeMark = cm.setBookmark(cm.getCursor()); - }; - cmds[mapK[ctrl + "A"] = "selectToSublimeMark"] = function(cm) { - var found = cm.state.sublimeMark && cm.state.sublimeMark.find(); - if (found) cm.setSelection(cm.getCursor(), found); - }; - cmds[mapK[ctrl + "W"] = "deleteToSublimeMark"] = function(cm) { - var found = cm.state.sublimeMark && cm.state.sublimeMark.find(); - if (found) { - var from = cm.getCursor(), to = found; - if (CodeMirror.cmpPos(from, to) > 0) { var tmp = to; to = from; from = tmp; } - cm.state.sublimeKilled = cm.getRange(from, to); - cm.replaceRange("", from, to); - } - }; - cmds[mapK[ctrl + "X"] = "swapWithSublimeMark"] = function(cm) { - var found = cm.state.sublimeMark && cm.state.sublimeMark.find(); - if (found) { - cm.state.sublimeMark.clear(); - cm.state.sublimeMark = cm.setBookmark(cm.getCursor()); - cm.setCursor(found); - } - }; - cmds[mapK[ctrl + "Y"] = "sublimeYank"] = function(cm) { - if (cm.state.sublimeKilled != null) - cm.replaceSelection(cm.state.sublimeKilled, null, "paste"); - }; - - mapK[ctrl + "G"] = "clearBookmarks"; - cmds[mapK[ctrl + "C"] = "showInCenter"] = function(cm) { - var pos = cm.cursorCoords(null, "local"); - cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2); - }; - - cmds[map["Shift-Alt-Up"] = "selectLinesUpward"] = function(cm) { - cm.operation(function() { - var ranges = cm.listSelections(); - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.head.line > cm.firstLine()) - cm.addSelection(Pos(range.head.line - 1, range.head.ch)); - } - }); - }; - cmds[map["Shift-Alt-Down"] = "selectLinesDownward"] = function(cm) { - cm.operation(function() { - var ranges = cm.listSelections(); - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.head.line < cm.lastLine()) - cm.addSelection(Pos(range.head.line + 1, range.head.ch)); - } - }); - }; - - map["Shift-" + ctrl + "["] = "fold"; - map["Shift-" + ctrl + "]"] = "unfold"; - mapK[ctrl + "0"] = mapK[ctrl + "j"] = "unfoldAll"; - - map[ctrl + "I"] = "findIncremental"; - map["Shift-" + ctrl + "I"] = "findIncrementalReverse"; - map[ctrl + "H"] = "replace"; - map["F3"] = "findNext"; - map["Shift-F3"] = "findPrev"; - -}); diff --git a/vendor/codemirror/keymap/vim.js b/vendor/codemirror/keymap/vim.js deleted file mode 100644 index f9cdfd54..00000000 --- a/vendor/codemirror/keymap/vim.js +++ /dev/null @@ -1,4123 +0,0 @@ -/** - * Supported keybindings: - * - * Motion: - * h, j, k, l - * gj, gk - * e, E, w, W, b, B, ge, gE - * f, F, t, T - * $, ^, 0, -, +, _ - * gg, G - * % - * ', ` - * - * Operator: - * d, y, c - * dd, yy, cc - * g~, g~g~ - * >, <, >>, << - * - * Operator-Motion: - * x, X, D, Y, C, ~ - * - * Action: - * a, i, s, A, I, S, o, O - * zz, z., z, zt, zb, z- - * J - * u, Ctrl-r - * m - * r - * - * Modes: - * ESC - leave insert mode, visual mode, and clear input state. - * Ctrl-[, Ctrl-c - same as ESC. - * - * Registers: unnamed, -, a-z, A-Z, 0-9 - * (Does not respect the special case for number registers when delete - * operator is made with these commands: %, (, ), , /, ?, n, N, {, } ) - * TODO: Implement the remaining registers. - * Marks: a-z, A-Z, and 0-9 - * TODO: Implement the remaining special marks. They have more complex - * behavior. - * - * Events: - * 'vim-mode-change' - raised on the editor anytime the current mode changes, - * Event object: {mode: "visual", subMode: "linewise"} - * - * Code structure: - * 1. Default keymap - * 2. Variable declarations and short basic helpers - * 3. Instance (External API) implementation - * 4. Internal state tracking objects (input state, counter) implementation - * and instanstiation - * 5. Key handler (the main command dispatcher) implementation - * 6. Motion, operator, and action implementations - * 7. Helper functions for the key handler, motions, operators, and actions - * 8. Set up Vim to work as a keymap for CodeMirror. - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../lib/codemirror"), require("../addon/search/searchcursor"), require("../addon/dialog/dialog")); - else if (typeof define == "function" && define.amd) // AMD - define(["../lib/codemirror", "../addon/search/searchcursor", "../addon/dialog/dialog"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - 'use strict'; - - var defaultKeymap = [ - // Key to key mapping. This goes first to make it possible to override - // existing mappings. - { keys: [''], type: 'keyToKey', toKeys: ['h'] }, - { keys: [''], type: 'keyToKey', toKeys: ['l'] }, - { keys: [''], type: 'keyToKey', toKeys: ['k'] }, - { keys: [''], type: 'keyToKey', toKeys: ['j'] }, - { keys: [''], type: 'keyToKey', toKeys: ['l'] }, - { keys: [''], type: 'keyToKey', toKeys: ['h'] }, - { keys: [''], type: 'keyToKey', toKeys: ['W'] }, - { keys: [''], type: 'keyToKey', toKeys: ['B'] }, - { keys: [''], type: 'keyToKey', toKeys: ['w'] }, - { keys: [''], type: 'keyToKey', toKeys: ['b'] }, - { keys: [''], type: 'keyToKey', toKeys: ['j'] }, - { keys: [''], type: 'keyToKey', toKeys: ['k'] }, - { keys: [''], type: 'keyToKey', toKeys: [''] }, - { keys: [''], type: 'keyToKey', toKeys: [''] }, - { keys: ['s'], type: 'keyToKey', toKeys: ['c', 'l'], context: 'normal' }, - { keys: ['s'], type: 'keyToKey', toKeys: ['x', 'i'], context: 'visual'}, - { keys: ['S'], type: 'keyToKey', toKeys: ['c', 'c'], context: 'normal' }, - { keys: ['S'], type: 'keyToKey', toKeys: ['d', 'c', 'c'], context: 'visual' }, - { keys: [''], type: 'keyToKey', toKeys: ['0'] }, - { keys: [''], type: 'keyToKey', toKeys: ['$'] }, - { keys: [''], type: 'keyToKey', toKeys: [''] }, - { keys: [''], type: 'keyToKey', toKeys: [''] }, - { keys: [''], type: 'keyToKey', toKeys: ['j', '^'], context: 'normal' }, - // Motions - { keys: ['H'], type: 'motion', - motion: 'moveToTopLine', - motionArgs: { linewise: true, toJumplist: true }}, - { keys: ['M'], type: 'motion', - motion: 'moveToMiddleLine', - motionArgs: { linewise: true, toJumplist: true }}, - { keys: ['L'], type: 'motion', - motion: 'moveToBottomLine', - motionArgs: { linewise: true, toJumplist: true }}, - { keys: ['h'], type: 'motion', - motion: 'moveByCharacters', - motionArgs: { forward: false }}, - { keys: ['l'], type: 'motion', - motion: 'moveByCharacters', - motionArgs: { forward: true }}, - { keys: ['j'], type: 'motion', - motion: 'moveByLines', - motionArgs: { forward: true, linewise: true }}, - { keys: ['k'], type: 'motion', - motion: 'moveByLines', - motionArgs: { forward: false, linewise: true }}, - { keys: ['g','j'], type: 'motion', - motion: 'moveByDisplayLines', - motionArgs: { forward: true }}, - { keys: ['g','k'], type: 'motion', - motion: 'moveByDisplayLines', - motionArgs: { forward: false }}, - { keys: ['w'], type: 'motion', - motion: 'moveByWords', - motionArgs: { forward: true, wordEnd: false }}, - { keys: ['W'], type: 'motion', - motion: 'moveByWords', - motionArgs: { forward: true, wordEnd: false, bigWord: true }}, - { keys: ['e'], type: 'motion', - motion: 'moveByWords', - motionArgs: { forward: true, wordEnd: true, inclusive: true }}, - { keys: ['E'], type: 'motion', - motion: 'moveByWords', - motionArgs: { forward: true, wordEnd: true, bigWord: true, - inclusive: true }}, - { keys: ['b'], type: 'motion', - motion: 'moveByWords', - motionArgs: { forward: false, wordEnd: false }}, - { keys: ['B'], type: 'motion', - motion: 'moveByWords', - motionArgs: { forward: false, wordEnd: false, bigWord: true }}, - { keys: ['g', 'e'], type: 'motion', - motion: 'moveByWords', - motionArgs: { forward: false, wordEnd: true, inclusive: true }}, - { keys: ['g', 'E'], type: 'motion', - motion: 'moveByWords', - motionArgs: { forward: false, wordEnd: true, bigWord: true, - inclusive: true }}, - { keys: ['{'], type: 'motion', motion: 'moveByParagraph', - motionArgs: { forward: false, toJumplist: true }}, - { keys: ['}'], type: 'motion', motion: 'moveByParagraph', - motionArgs: { forward: true, toJumplist: true }}, - { keys: [''], type: 'motion', - motion: 'moveByPage', motionArgs: { forward: true }}, - { keys: [''], type: 'motion', - motion: 'moveByPage', motionArgs: { forward: false }}, - { keys: [''], type: 'motion', - motion: 'moveByScroll', - motionArgs: { forward: true, explicitRepeat: true }}, - { keys: [''], type: 'motion', - motion: 'moveByScroll', - motionArgs: { forward: false, explicitRepeat: true }}, - { keys: ['g', 'g'], type: 'motion', - motion: 'moveToLineOrEdgeOfDocument', - motionArgs: { forward: false, explicitRepeat: true, linewise: true, toJumplist: true }}, - { keys: ['G'], type: 'motion', - motion: 'moveToLineOrEdgeOfDocument', - motionArgs: { forward: true, explicitRepeat: true, linewise: true, toJumplist: true }}, - { keys: ['0'], type: 'motion', motion: 'moveToStartOfLine' }, - { keys: ['^'], type: 'motion', - motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: ['+'], type: 'motion', - motion: 'moveByLines', - motionArgs: { forward: true, toFirstChar:true }}, - { keys: ['-'], type: 'motion', - motion: 'moveByLines', - motionArgs: { forward: false, toFirstChar:true }}, - { keys: ['_'], type: 'motion', - motion: 'moveByLines', - motionArgs: { forward: true, toFirstChar:true, repeatOffset:-1 }}, - { keys: ['$'], type: 'motion', - motion: 'moveToEol', - motionArgs: { inclusive: true }}, - { keys: ['%'], type: 'motion', - motion: 'moveToMatchedSymbol', - motionArgs: { inclusive: true, toJumplist: true }}, - { keys: ['f', 'character'], type: 'motion', - motion: 'moveToCharacter', - motionArgs: { forward: true , inclusive: true }}, - { keys: ['F', 'character'], type: 'motion', - motion: 'moveToCharacter', - motionArgs: { forward: false }}, - { keys: ['t', 'character'], type: 'motion', - motion: 'moveTillCharacter', - motionArgs: { forward: true, inclusive: true }}, - { keys: ['T', 'character'], type: 'motion', - motion: 'moveTillCharacter', - motionArgs: { forward: false }}, - { keys: [';'], type: 'motion', motion: 'repeatLastCharacterSearch', - motionArgs: { forward: true }}, - { keys: [','], type: 'motion', motion: 'repeatLastCharacterSearch', - motionArgs: { forward: false }}, - { keys: ['\'', 'character'], type: 'motion', motion: 'goToMark', - motionArgs: {toJumplist: true}}, - { keys: ['`', 'character'], type: 'motion', motion: 'goToMark', - motionArgs: {toJumplist: true}}, - { keys: [']', '`'], type: 'motion', motion: 'jumpToMark', motionArgs: { forward: true } }, - { keys: ['[', '`'], type: 'motion', motion: 'jumpToMark', motionArgs: { forward: false } }, - { keys: [']', '\''], type: 'motion', motion: 'jumpToMark', motionArgs: { forward: true, linewise: true } }, - { keys: ['[', '\''], type: 'motion', motion: 'jumpToMark', motionArgs: { forward: false, linewise: true } }, - { keys: [']', 'character'], type: 'motion', - motion: 'moveToSymbol', - motionArgs: { forward: true, toJumplist: true}}, - { keys: ['[', 'character'], type: 'motion', - motion: 'moveToSymbol', - motionArgs: { forward: false, toJumplist: true}}, - { keys: ['|'], type: 'motion', - motion: 'moveToColumn', - motionArgs: { }}, - { keys: ['o'], type: 'motion', motion: 'moveToOtherHighlightedEnd', motionArgs: { },context:'visual'}, - // Operators - { keys: ['d'], type: 'operator', operator: 'delete' }, - { keys: ['y'], type: 'operator', operator: 'yank' }, - { keys: ['c'], type: 'operator', operator: 'change' }, - { keys: ['>'], type: 'operator', operator: 'indent', - operatorArgs: { indentRight: true }}, - { keys: ['<'], type: 'operator', operator: 'indent', - operatorArgs: { indentRight: false }}, - { keys: ['g', '~'], type: 'operator', operator: 'swapcase' }, - { keys: ['n'], type: 'motion', motion: 'findNext', - motionArgs: { forward: true, toJumplist: true }}, - { keys: ['N'], type: 'motion', motion: 'findNext', - motionArgs: { forward: false, toJumplist: true }}, - // Operator-Motion dual commands - { keys: ['x'], type: 'operatorMotion', operator: 'delete', - motion: 'moveByCharacters', motionArgs: { forward: true }, - operatorMotionArgs: { visualLine: false }}, - { keys: ['X'], type: 'operatorMotion', operator: 'delete', - motion: 'moveByCharacters', motionArgs: { forward: false }, - operatorMotionArgs: { visualLine: true }}, - { keys: ['D'], type: 'operatorMotion', operator: 'delete', - motion: 'moveToEol', motionArgs: { inclusive: true }, - operatorMotionArgs: { visualLine: true }}, - { keys: ['Y'], type: 'operatorMotion', operator: 'yank', - motion: 'moveToEol', motionArgs: { inclusive: true }, - operatorMotionArgs: { visualLine: true }}, - { keys: ['C'], type: 'operatorMotion', - operator: 'change', - motion: 'moveToEol', motionArgs: { inclusive: true }, - operatorMotionArgs: { visualLine: true }}, - { keys: ['~'], type: 'operatorMotion', - operator: 'swapcase', operatorArgs: { shouldMoveCursor: true }, - motion: 'moveByCharacters', motionArgs: { forward: true }}, - // Actions - { keys: [''], type: 'action', action: 'jumpListWalk', - actionArgs: { forward: true }}, - { keys: [''], type: 'action', action: 'jumpListWalk', - actionArgs: { forward: false }}, - { keys: [''], type: 'action', - action: 'scroll', - actionArgs: { forward: true, linewise: true }}, - { keys: [''], type: 'action', - action: 'scroll', - actionArgs: { forward: false, linewise: true }}, - { keys: ['a'], type: 'action', action: 'enterInsertMode', isEdit: true, - actionArgs: { insertAt: 'charAfter' }}, - { keys: ['A'], type: 'action', action: 'enterInsertMode', isEdit: true, - actionArgs: { insertAt: 'eol' }}, - { keys: ['i'], type: 'action', action: 'enterInsertMode', isEdit: true, - actionArgs: { insertAt: 'inplace' }}, - { keys: ['I'], type: 'action', action: 'enterInsertMode', isEdit: true, - actionArgs: { insertAt: 'firstNonBlank' }}, - { keys: ['o'], type: 'action', action: 'newLineAndEnterInsertMode', - isEdit: true, interlaceInsertRepeat: true, - actionArgs: { after: true }}, - { keys: ['O'], type: 'action', action: 'newLineAndEnterInsertMode', - isEdit: true, interlaceInsertRepeat: true, - actionArgs: { after: false }}, - { keys: ['v'], type: 'action', action: 'toggleVisualMode' }, - { keys: ['V'], type: 'action', action: 'toggleVisualMode', - actionArgs: { linewise: true }}, - { keys: ['g', 'v'], type: 'action', action: 'reselectLastSelection' }, - { keys: ['J'], type: 'action', action: 'joinLines', isEdit: true }, - { keys: ['p'], type: 'action', action: 'paste', isEdit: true, - actionArgs: { after: true, isEdit: true }}, - { keys: ['P'], type: 'action', action: 'paste', isEdit: true, - actionArgs: { after: false, isEdit: true }}, - { keys: ['r', 'character'], type: 'action', action: 'replace', isEdit: true }, - { keys: ['@', 'character'], type: 'action', action: 'replayMacro' }, - { keys: ['q', 'character'], type: 'action', action: 'enterMacroRecordMode' }, - // Handle Replace-mode as a special case of insert mode. - { keys: ['R'], type: 'action', action: 'enterInsertMode', isEdit: true, - actionArgs: { replace: true }}, - { keys: ['u'], type: 'action', action: 'undo' }, - { keys: [''], type: 'action', action: 'redo' }, - { keys: ['m', 'character'], type: 'action', action: 'setMark' }, - { keys: ['"', 'character'], type: 'action', action: 'setRegister' }, - { keys: ['z', 'z'], type: 'action', action: 'scrollToCursor', - actionArgs: { position: 'center' }}, - { keys: ['z', '.'], type: 'action', action: 'scrollToCursor', - actionArgs: { position: 'center' }, - motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: ['z', 't'], type: 'action', action: 'scrollToCursor', - actionArgs: { position: 'top' }}, - { keys: ['z', ''], type: 'action', action: 'scrollToCursor', - actionArgs: { position: 'top' }, - motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: ['z', '-'], type: 'action', action: 'scrollToCursor', - actionArgs: { position: 'bottom' }}, - { keys: ['z', 'b'], type: 'action', action: 'scrollToCursor', - actionArgs: { position: 'bottom' }, - motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: ['.'], type: 'action', action: 'repeatLastEdit' }, - { keys: [''], type: 'action', action: 'incrementNumberToken', - isEdit: true, - actionArgs: {increase: true, backtrack: false}}, - { keys: [''], type: 'action', action: 'incrementNumberToken', - isEdit: true, - actionArgs: {increase: false, backtrack: false}}, - // Text object motions - { keys: ['a', 'character'], type: 'motion', - motion: 'textObjectManipulation' }, - { keys: ['i', 'character'], type: 'motion', - motion: 'textObjectManipulation', - motionArgs: { textObjectInner: true }}, - // Search - { keys: ['/'], type: 'search', - searchArgs: { forward: true, querySrc: 'prompt', toJumplist: true }}, - { keys: ['?'], type: 'search', - searchArgs: { forward: false, querySrc: 'prompt', toJumplist: true }}, - { keys: ['*'], type: 'search', - searchArgs: { forward: true, querySrc: 'wordUnderCursor', toJumplist: true }}, - { keys: ['#'], type: 'search', - searchArgs: { forward: false, querySrc: 'wordUnderCursor', toJumplist: true }}, - // Ex command - { keys: [':'], type: 'ex' } - ]; - - var Pos = CodeMirror.Pos; - - var Vim = function() { - CodeMirror.defineOption('vimMode', false, function(cm, val) { - if (val) { - cm.setOption('keyMap', 'vim'); - cm.setOption('disableInput', true); - CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); - cm.on('beforeSelectionChange', beforeSelectionChange); - maybeInitVimState(cm); - CodeMirror.on(cm.getInputField(), 'paste', getOnPasteFn(cm)); - } else if (cm.state.vim) { - cm.setOption('keyMap', 'default'); - cm.setOption('disableInput', false); - cm.off('beforeSelectionChange', beforeSelectionChange); - CodeMirror.off(cm.getInputField(), 'paste', getOnPasteFn(cm)); - cm.state.vim = null; - } - }); - function beforeSelectionChange(cm, obj) { - var vim = cm.state.vim; - if (vim.insertMode || vim.exMode) return; - - var head = obj.ranges[0].head; - var anchor = obj.ranges[0].anchor; - if (head.ch && head.ch == cm.doc.getLine(head.line).length) { - var pos = Pos(head.line, head.ch - 1); - obj.update([{anchor: cursorEqual(head, anchor) ? pos : anchor, - head: pos}]); - } - } - function getOnPasteFn(cm) { - var vim = cm.state.vim; - if (!vim.onPasteFn) { - vim.onPasteFn = function() { - if (!vim.insertMode) { - cm.setCursor(offsetCursor(cm.getCursor(), 0, 1)); - actions.enterInsertMode(cm, {}, vim); - } - }; - } - return vim.onPasteFn; - } - - var numberRegex = /[\d]/; - var wordRegexp = [(/\w/), (/[^\w\s]/)], bigWordRegexp = [(/\S/)]; - function makeKeyRange(start, size) { - var keys = []; - for (var i = start; i < start + size; i++) { - keys.push(String.fromCharCode(i)); - } - return keys; - } - var upperCaseAlphabet = makeKeyRange(65, 26); - var lowerCaseAlphabet = makeKeyRange(97, 26); - var numbers = makeKeyRange(48, 10); - var specialSymbols = '~`!@#$%^&*()_-+=[{}]\\|/?.,<>:;"\''.split(''); - var specialKeys = ['Left', 'Right', 'Up', 'Down', 'Space', 'Backspace', - 'Esc', 'Home', 'End', 'PageUp', 'PageDown', 'Enter']; - var validMarks = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['<', '>']); - var validRegisters = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['-', '"']); - - function isLine(cm, line) { - return line >= cm.firstLine() && line <= cm.lastLine(); - } - function isLowerCase(k) { - return (/^[a-z]$/).test(k); - } - function isMatchableSymbol(k) { - return '()[]{}'.indexOf(k) != -1; - } - function isNumber(k) { - return numberRegex.test(k); - } - function isUpperCase(k) { - return (/^[A-Z]$/).test(k); - } - function isWhiteSpaceString(k) { - return (/^\s*$/).test(k); - } - function inArray(val, arr) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] == val) { - return true; - } - } - return false; - } - - var options = {}; - function defineOption(name, defaultValue, type) { - if (defaultValue === undefined) { throw Error('defaultValue is required'); } - if (!type) { type = 'string'; } - options[name] = { - type: type, - defaultValue: defaultValue - }; - setOption(name, defaultValue); - } - - function setOption(name, value) { - var option = options[name]; - if (!option) { - throw Error('Unknown option: ' + name); - } - if (option.type == 'boolean') { - if (value && value !== true) { - throw Error('Invalid argument: ' + name + '=' + value); - } else if (value !== false) { - // Boolean options are set to true if value is not defined. - value = true; - } - } - option.value = option.type == 'boolean' ? !!value : value; - } - - function getOption(name) { - var option = options[name]; - if (!option) { - throw Error('Unknown option: ' + name); - } - return option.value; - } - - var createCircularJumpList = function() { - var size = 100; - var pointer = -1; - var head = 0; - var tail = 0; - var buffer = new Array(size); - function add(cm, oldCur, newCur) { - var current = pointer % size; - var curMark = buffer[current]; - function useNextSlot(cursor) { - var next = ++pointer % size; - var trashMark = buffer[next]; - if (trashMark) { - trashMark.clear(); - } - buffer[next] = cm.setBookmark(cursor); - } - if (curMark) { - var markPos = curMark.find(); - // avoid recording redundant cursor position - if (markPos && !cursorEqual(markPos, oldCur)) { - useNextSlot(oldCur); - } - } else { - useNextSlot(oldCur); - } - useNextSlot(newCur); - head = pointer; - tail = pointer - size + 1; - if (tail < 0) { - tail = 0; - } - } - function move(cm, offset) { - pointer += offset; - if (pointer > head) { - pointer = head; - } else if (pointer < tail) { - pointer = tail; - } - var mark = buffer[(size + pointer) % size]; - // skip marks that are temporarily removed from text buffer - if (mark && !mark.find()) { - var inc = offset > 0 ? 1 : -1; - var newCur; - var oldCur = cm.getCursor(); - do { - pointer += inc; - mark = buffer[(size + pointer) % size]; - // skip marks that are the same as current position - if (mark && - (newCur = mark.find()) && - !cursorEqual(oldCur, newCur)) { - break; - } - } while (pointer < head && pointer > tail); - } - return mark; - } - return { - cachedCursor: undefined, //used for # and * jumps - add: add, - move: move - }; - }; - - // Returns an object to track the changes associated insert mode. It - // clones the object that is passed in, or creates an empty object one if - // none is provided. - var createInsertModeChanges = function(c) { - if (c) { - // Copy construction - return { - changes: c.changes, - expectCursorActivityForChange: c.expectCursorActivityForChange - }; - } - return { - // Change list - changes: [], - // Set to true on change, false on cursorActivity. - expectCursorActivityForChange: false - }; - }; - - function MacroModeState() { - this.latestRegister = undefined; - this.isPlaying = false; - this.isRecording = false; - this.onRecordingDone = undefined; - this.lastInsertModeChanges = createInsertModeChanges(); - } - MacroModeState.prototype = { - exitMacroRecordMode: function() { - var macroModeState = vimGlobalState.macroModeState; - macroModeState.onRecordingDone(); // close dialog - macroModeState.onRecordingDone = undefined; - macroModeState.isRecording = false; - }, - enterMacroRecordMode: function(cm, registerName) { - var register = - vimGlobalState.registerController.getRegister(registerName); - if (register) { - register.clear(); - this.latestRegister = registerName; - this.onRecordingDone = cm.openDialog( - '(recording)['+registerName+']', null, {bottom:true}); - this.isRecording = true; - } - } - }; - - function maybeInitVimState(cm) { - if (!cm.state.vim) { - // Store instance state in the CodeMirror object. - cm.state.vim = { - inputState: new InputState(), - // Vim's input state that triggered the last edit, used to repeat - // motions and operators with '.'. - lastEditInputState: undefined, - // Vim's action command before the last edit, used to repeat actions - // with '.' and insert mode repeat. - lastEditActionCommand: undefined, - // When using jk for navigation, if you move from a longer line to a - // shorter line, the cursor may clip to the end of the shorter line. - // If j is pressed again and cursor goes to the next line, the - // cursor should go back to its horizontal position on the longer - // line if it can. This is to keep track of the horizontal position. - lastHPos: -1, - // Doing the same with screen-position for gj/gk - lastHSPos: -1, - // The last motion command run. Cleared if a non-motion command gets - // executed in between. - lastMotion: null, - marks: {}, - insertMode: false, - // Repeat count for changes made in insert mode, triggered by key - // sequences like 3,i. Only exists when insertMode is true. - insertModeRepeat: undefined, - visualMode: false, - // If we are in visual line mode. No effect if visualMode is false. - visualLine: false, - lastSelection: null - }; - } - return cm.state.vim; - } - var vimGlobalState; - function resetVimGlobalState() { - vimGlobalState = { - // The current search query. - searchQuery: null, - // Whether we are searching backwards. - searchIsReversed: false, - jumpList: createCircularJumpList(), - macroModeState: new MacroModeState, - // Recording latest f, t, F or T motion command. - lastChararacterSearch: {increment:0, forward:true, selectedCharacter:''}, - registerController: new RegisterController({}) - }; - for (var optionName in options) { - var option = options[optionName]; - option.value = option.defaultValue; - } - } - - var vimApi= { - buildKeyMap: function() { - // TODO: Convert keymap into dictionary format for fast lookup. - }, - // Testing hook, though it might be useful to expose the register - // controller anyways. - getRegisterController: function() { - return vimGlobalState.registerController; - }, - // Testing hook. - resetVimGlobalState_: resetVimGlobalState, - - // Testing hook. - getVimGlobalState_: function() { - return vimGlobalState; - }, - - // Testing hook. - maybeInitVimState_: maybeInitVimState, - - InsertModeKey: InsertModeKey, - map: function(lhs, rhs, ctx) { - // Add user defined key bindings. - exCommandDispatcher.map(lhs, rhs, ctx); - }, - setOption: setOption, - getOption: getOption, - defineOption: defineOption, - defineEx: function(name, prefix, func){ - if (name.indexOf(prefix) !== 0) { - throw new Error('(Vim.defineEx) "'+prefix+'" is not a prefix of "'+name+'", command not registered'); - } - exCommands[name]=func; - exCommandDispatcher.commandMap_[prefix]={name:name, shortName:prefix, type:'api'}; - }, - // This is the outermost function called by CodeMirror, after keys have - // been mapped to their Vim equivalents. - handleKey: function(cm, key) { - var command; - var vim = maybeInitVimState(cm); - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isRecording) { - if (key == 'q') { - macroModeState.exitMacroRecordMode(); - vim.inputState = new InputState(); - return; - } - } - if (key == '') { - // Clear input state and get back to normal mode. - vim.inputState = new InputState(); - if (vim.visualMode) { - exitVisualMode(cm); - } - return; - } - // Enter visual mode when the mouse selects text. - if (!vim.visualMode && - !cursorEqual(cm.getCursor('head'), cm.getCursor('anchor'))) { - vim.visualMode = true; - vim.visualLine = false; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual"}); - cm.on('mousedown', exitVisualMode); - } - if (key != '0' || (key == '0' && vim.inputState.getRepeat() === 0)) { - // Have to special case 0 since it's both a motion and a number. - command = commandDispatcher.matchCommand(key, defaultKeymap, vim); - } - if (!command) { - if (isNumber(key)) { - // Increment count unless count is 0 and key is 0. - vim.inputState.pushRepeatDigit(key); - } - if (macroModeState.isRecording) { - logKey(macroModeState, key); - } - return; - } - if (command.type == 'keyToKey') { - // TODO: prevent infinite recursion. - for (var i = 0; i < command.toKeys.length; i++) { - this.handleKey(cm, command.toKeys[i]); - } - } else { - if (macroModeState.isRecording) { - logKey(macroModeState, key); - } - commandDispatcher.processCommand(cm, vim, command); - } - }, - handleEx: function(cm, input) { - exCommandDispatcher.processCommand(cm, input); - } - }; - - // Represents the current input state. - function InputState() { - this.prefixRepeat = []; - this.motionRepeat = []; - - this.operator = null; - this.operatorArgs = null; - this.motion = null; - this.motionArgs = null; - this.keyBuffer = []; // For matching multi-key commands. - this.registerName = null; // Defaults to the unnamed register. - } - InputState.prototype.pushRepeatDigit = function(n) { - if (!this.operator) { - this.prefixRepeat = this.prefixRepeat.concat(n); - } else { - this.motionRepeat = this.motionRepeat.concat(n); - } - }; - InputState.prototype.getRepeat = function() { - var repeat = 0; - if (this.prefixRepeat.length > 0 || this.motionRepeat.length > 0) { - repeat = 1; - if (this.prefixRepeat.length > 0) { - repeat *= parseInt(this.prefixRepeat.join(''), 10); - } - if (this.motionRepeat.length > 0) { - repeat *= parseInt(this.motionRepeat.join(''), 10); - } - } - return repeat; - }; - - /* - * Register stores information about copy and paste registers. Besides - * text, a register must store whether it is linewise (i.e., when it is - * pasted, should it insert itself into a new line, or should the text be - * inserted at the cursor position.) - */ - function Register(text, linewise) { - this.clear(); - this.keyBuffer = [text || '']; - this.insertModeChanges = []; - this.linewise = !!linewise; - } - Register.prototype = { - setText: function(text, linewise) { - this.keyBuffer = [text || '']; - this.linewise = !!linewise; - }, - pushText: function(text, linewise) { - // if this register has ever been set to linewise, use linewise. - if (linewise || this.linewise) { - this.keyBuffer.push('\n'); - this.linewise = true; - } - this.keyBuffer.push(text); - }, - pushInsertModeChanges: function(changes) { - this.insertModeChanges.push(createInsertModeChanges(changes)); - }, - clear: function() { - this.keyBuffer = []; - this.insertModeChanges = []; - this.linewise = false; - }, - toString: function() { - return this.keyBuffer.join(''); - } - }; - - /* - * vim registers allow you to keep many independent copy and paste buffers. - * See http://usevim.com/2012/04/13/registers/ for an introduction. - * - * RegisterController keeps the state of all the registers. An initial - * state may be passed in. The unnamed register '"' will always be - * overridden. - */ - function RegisterController(registers) { - this.registers = registers; - this.unnamedRegister = registers['"'] = new Register(); - } - RegisterController.prototype = { - pushText: function(registerName, operator, text, linewise) { - if (linewise && text.charAt(0) == '\n') { - text = text.slice(1) + '\n'; - } - if (linewise && text.charAt(text.length - 1) !== '\n'){ - text += '\n'; - } - // Lowercase and uppercase registers refer to the same register. - // Uppercase just means append. - var register = this.isValidRegister(registerName) ? - this.getRegister(registerName) : null; - // if no register/an invalid register was specified, things go to the - // default registers - if (!register) { - switch (operator) { - case 'yank': - // The 0 register contains the text from the most recent yank. - this.registers['0'] = new Register(text, linewise); - break; - case 'delete': - case 'change': - if (text.indexOf('\n') == -1) { - // Delete less than 1 line. Update the small delete register. - this.registers['-'] = new Register(text, linewise); - } else { - // Shift down the contents of the numbered registers and put the - // deleted text into register 1. - this.shiftNumericRegisters_(); - this.registers['1'] = new Register(text, linewise); - } - break; - } - // Make sure the unnamed register is set to what just happened - this.unnamedRegister.setText(text, linewise); - return; - } - - // If we've gotten to this point, we've actually specified a register - var append = isUpperCase(registerName); - if (append) { - register.append(text, linewise); - // The unnamed register always has the same value as the last used - // register. - this.unnamedRegister.append(text, linewise); - } else { - register.setText(text, linewise); - this.unnamedRegister.setText(text, linewise); - } - }, - // Gets the register named @name. If one of @name doesn't already exist, - // create it. If @name is invalid, return the unnamedRegister. - getRegister: function(name) { - if (!this.isValidRegister(name)) { - return this.unnamedRegister; - } - name = name.toLowerCase(); - if (!this.registers[name]) { - this.registers[name] = new Register(); - } - return this.registers[name]; - }, - isValidRegister: function(name) { - return name && inArray(name, validRegisters); - }, - shiftNumericRegisters_: function() { - for (var i = 9; i >= 2; i--) { - this.registers[i] = this.getRegister('' + (i - 1)); - } - } - }; - - var commandDispatcher = { - matchCommand: function(key, keyMap, vim) { - var inputState = vim.inputState; - var keys = inputState.keyBuffer.concat(key); - var matchedCommands = []; - var selectedCharacter; - for (var i = 0; i < keyMap.length; i++) { - var command = keyMap[i]; - if (matchKeysPartial(keys, command.keys)) { - if (inputState.operator && command.type == 'action') { - // Ignore matched action commands after an operator. Operators - // only operate on motions. This check is really for text - // objects since aW, a[ etcs conflicts with a. - continue; - } - // Match commands that take as an argument. - if (command.keys[keys.length - 1] == 'character') { - selectedCharacter = keys[keys.length - 1]; - if (selectedCharacter.length>1){ - switch(selectedCharacter){ - case '': - selectedCharacter='\n'; - break; - case '': - selectedCharacter=' '; - break; - default: - continue; - } - } - } - // Add the command to the list of matched commands. Choose the best - // command later. - matchedCommands.push(command); - } - } - - // Returns the command if it is a full match, or null if not. - function getFullyMatchedCommandOrNull(command) { - if (keys.length < command.keys.length) { - // Matches part of a multi-key command. Buffer and wait for next - // stroke. - inputState.keyBuffer.push(key); - return null; - } else { - if (command.keys[keys.length - 1] == 'character') { - inputState.selectedCharacter = selectedCharacter; - } - // Clear the buffer since a full match was found. - inputState.keyBuffer = []; - return command; - } - } - - if (!matchedCommands.length) { - // Clear the buffer since there were no matches. - inputState.keyBuffer = []; - return null; - } else if (matchedCommands.length == 1) { - return getFullyMatchedCommandOrNull(matchedCommands[0]); - } else { - // Find the best match in the list of matchedCommands. - var context = vim.visualMode ? 'visual' : 'normal'; - var bestMatch; // Default to first in the list. - for (var i = 0; i < matchedCommands.length; i++) { - var current = matchedCommands[i]; - if (current.context == context) { - bestMatch = current; - break; - } else if (!bestMatch && !current.context) { - // Only set an imperfect match to best match if no best match is - // set and the imperfect match is not restricted to another - // context. - bestMatch = current; - } - } - return getFullyMatchedCommandOrNull(bestMatch); - } - }, - processCommand: function(cm, vim, command) { - vim.inputState.repeatOverride = command.repeatOverride; - switch (command.type) { - case 'motion': - this.processMotion(cm, vim, command); - break; - case 'operator': - this.processOperator(cm, vim, command); - break; - case 'operatorMotion': - this.processOperatorMotion(cm, vim, command); - break; - case 'action': - this.processAction(cm, vim, command); - break; - case 'search': - this.processSearch(cm, vim, command); - break; - case 'ex': - case 'keyToEx': - this.processEx(cm, vim, command); - break; - default: - break; - } - }, - processMotion: function(cm, vim, command) { - vim.inputState.motion = command.motion; - vim.inputState.motionArgs = copyArgs(command.motionArgs); - this.evalInput(cm, vim); - }, - processOperator: function(cm, vim, command) { - var inputState = vim.inputState; - if (inputState.operator) { - if (inputState.operator == command.operator) { - // Typing an operator twice like 'dd' makes the operator operate - // linewise - inputState.motion = 'expandToLine'; - inputState.motionArgs = { linewise: true }; - this.evalInput(cm, vim); - return; - } else { - // 2 different operators in a row doesn't make sense. - vim.inputState = new InputState(); - } - } - inputState.operator = command.operator; - inputState.operatorArgs = copyArgs(command.operatorArgs); - if (vim.visualMode) { - // Operating on a selection in visual mode. We don't need a motion. - this.evalInput(cm, vim); - } - }, - processOperatorMotion: function(cm, vim, command) { - var visualMode = vim.visualMode; - var operatorMotionArgs = copyArgs(command.operatorMotionArgs); - if (operatorMotionArgs) { - // Operator motions may have special behavior in visual mode. - if (visualMode && operatorMotionArgs.visualLine) { - vim.visualLine = true; - } - } - this.processOperator(cm, vim, command); - if (!visualMode) { - this.processMotion(cm, vim, command); - } - }, - processAction: function(cm, vim, command) { - var inputState = vim.inputState; - var repeat = inputState.getRepeat(); - var repeatIsExplicit = !!repeat; - var actionArgs = copyArgs(command.actionArgs) || {}; - if (inputState.selectedCharacter) { - actionArgs.selectedCharacter = inputState.selectedCharacter; - } - // Actions may or may not have motions and operators. Do these first. - if (command.operator) { - this.processOperator(cm, vim, command); - } - if (command.motion) { - this.processMotion(cm, vim, command); - } - if (command.motion || command.operator) { - this.evalInput(cm, vim); - } - actionArgs.repeat = repeat || 1; - actionArgs.repeatIsExplicit = repeatIsExplicit; - actionArgs.registerName = inputState.registerName; - vim.inputState = new InputState(); - vim.lastMotion = null; - if (command.isEdit) { - this.recordLastEdit(vim, inputState, command); - } - actions[command.action](cm, actionArgs, vim); - }, - processSearch: function(cm, vim, command) { - if (!cm.getSearchCursor) { - // Search depends on SearchCursor. - return; - } - var forward = command.searchArgs.forward; - getSearchState(cm).setReversed(!forward); - var promptPrefix = (forward) ? '/' : '?'; - var originalQuery = getSearchState(cm).getQuery(); - var originalScrollPos = cm.getScrollInfo(); - function handleQuery(query, ignoreCase, smartCase) { - try { - updateSearchQuery(cm, query, ignoreCase, smartCase); - } catch (e) { - showConfirm(cm, 'Invalid regex: ' + query); - return; - } - commandDispatcher.processMotion(cm, vim, { - type: 'motion', - motion: 'findNext', - motionArgs: { forward: true, toJumplist: command.searchArgs.toJumplist } - }); - } - function onPromptClose(query) { - cm.scrollTo(originalScrollPos.left, originalScrollPos.top); - handleQuery(query, true /** ignoreCase */, true /** smartCase */); - } - function onPromptKeyUp(_e, query) { - var parsedQuery; - try { - parsedQuery = updateSearchQuery(cm, query, - true /** ignoreCase */, true /** smartCase */); - } catch (e) { - // Swallow bad regexes for incremental search. - } - if (parsedQuery) { - cm.scrollIntoView(findNext(cm, !forward, parsedQuery), 30); - } else { - clearSearchHighlight(cm); - cm.scrollTo(originalScrollPos.left, originalScrollPos.top); - } - } - function onPromptKeyDown(e, _query, close) { - var keyName = CodeMirror.keyName(e); - if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[') { - updateSearchQuery(cm, originalQuery); - clearSearchHighlight(cm); - cm.scrollTo(originalScrollPos.left, originalScrollPos.top); - - CodeMirror.e_stop(e); - close(); - cm.focus(); - } - } - switch (command.searchArgs.querySrc) { - case 'prompt': - showPrompt(cm, { - onClose: onPromptClose, - prefix: promptPrefix, - desc: searchPromptDesc, - onKeyUp: onPromptKeyUp, - onKeyDown: onPromptKeyDown - }); - break; - case 'wordUnderCursor': - var word = expandWordUnderCursor(cm, false /** inclusive */, - true /** forward */, false /** bigWord */, - true /** noSymbol */); - var isKeyword = true; - if (!word) { - word = expandWordUnderCursor(cm, false /** inclusive */, - true /** forward */, false /** bigWord */, - false /** noSymbol */); - isKeyword = false; - } - if (!word) { - return; - } - var query = cm.getLine(word.start.line).substring(word.start.ch, - word.end.ch); - if (isKeyword) { - query = '\\b' + query + '\\b'; - } else { - query = escapeRegex(query); - } - - // cachedCursor is used to save the old position of the cursor - // when * or # causes vim to seek for the nearest word and shift - // the cursor before entering the motion. - vimGlobalState.jumpList.cachedCursor = cm.getCursor(); - cm.setCursor(word.start); - - handleQuery(query, true /** ignoreCase */, false /** smartCase */); - break; - } - }, - processEx: function(cm, vim, command) { - function onPromptClose(input) { - // Give the prompt some time to close so that if processCommand shows - // an error, the elements don't overlap. - exCommandDispatcher.processCommand(cm, input); - } - function onPromptKeyDown(e, _input, close) { - var keyName = CodeMirror.keyName(e); - if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[') { - CodeMirror.e_stop(e); - close(); - cm.focus(); - } - } - if (command.type == 'keyToEx') { - // Handle user defined Ex to Ex mappings - exCommandDispatcher.processCommand(cm, command.exArgs.input); - } else { - if (vim.visualMode) { - showPrompt(cm, { onClose: onPromptClose, prefix: ':', value: '\'<,\'>', - onKeyDown: onPromptKeyDown}); - } else { - showPrompt(cm, { onClose: onPromptClose, prefix: ':', - onKeyDown: onPromptKeyDown}); - } - } - }, - evalInput: function(cm, vim) { - // If the motion comand is set, execute both the operator and motion. - // Otherwise return. - var inputState = vim.inputState; - var motion = inputState.motion; - var motionArgs = inputState.motionArgs || {}; - var operator = inputState.operator; - var operatorArgs = inputState.operatorArgs || {}; - var registerName = inputState.registerName; - var selectionEnd = copyCursor(cm.getCursor('head')); - var selectionStart = copyCursor(cm.getCursor('anchor')); - // The difference between cur and selection cursors are that cur is - // being operated on and ignores that there is a selection. - var curStart = copyCursor(selectionEnd); - var curOriginal = copyCursor(curStart); - var curEnd; - var repeat; - if (operator) { - this.recordLastEdit(vim, inputState); - } - if (inputState.repeatOverride !== undefined) { - // If repeatOverride is specified, that takes precedence over the - // input state's repeat. Used by Ex mode and can be user defined. - repeat = inputState.repeatOverride; - } else { - repeat = inputState.getRepeat(); - } - if (repeat > 0 && motionArgs.explicitRepeat) { - motionArgs.repeatIsExplicit = true; - } else if (motionArgs.noRepeat || - (!motionArgs.explicitRepeat && repeat === 0)) { - repeat = 1; - motionArgs.repeatIsExplicit = false; - } - if (inputState.selectedCharacter) { - // If there is a character input, stick it in all of the arg arrays. - motionArgs.selectedCharacter = operatorArgs.selectedCharacter = - inputState.selectedCharacter; - } - motionArgs.repeat = repeat; - vim.inputState = new InputState(); - if (motion) { - var motionResult = motions[motion](cm, motionArgs, vim); - vim.lastMotion = motions[motion]; - if (!motionResult) { - return; - } - if (motionArgs.toJumplist) { - var jumpList = vimGlobalState.jumpList; - // if the current motion is # or *, use cachedCursor - var cachedCursor = jumpList.cachedCursor; - if (cachedCursor) { - recordJumpPosition(cm, cachedCursor, motionResult); - delete jumpList.cachedCursor; - } else { - recordJumpPosition(cm, curOriginal, motionResult); - } - } - if (motionResult instanceof Array) { - curStart = motionResult[0]; - curEnd = motionResult[1]; - } else { - curEnd = motionResult; - } - // TODO: Handle null returns from motion commands better. - if (!curEnd) { - curEnd = Pos(curStart.line, curStart.ch); - } - if (vim.visualMode) { - // Check if the selection crossed over itself. Will need to shift - // the start point if that happened. - if (cursorIsBefore(selectionStart, selectionEnd) && - (cursorEqual(selectionStart, curEnd) || - cursorIsBefore(curEnd, selectionStart))) { - // The end of the selection has moved from after the start to - // before the start. We will shift the start right by 1. - selectionStart.ch += 1; - } else if (cursorIsBefore(selectionEnd, selectionStart) && - (cursorEqual(selectionStart, curEnd) || - cursorIsBefore(selectionStart, curEnd))) { - // The opposite happened. We will shift the start left by 1. - selectionStart.ch -= 1; - } - selectionEnd = curEnd; - selectionStart = (motionResult instanceof Array) ? curStart : selectionStart; - if (vim.visualLine) { - if (cursorIsBefore(selectionStart, selectionEnd)) { - selectionStart.ch = 0; - - var lastLine = cm.lastLine(); - if (selectionEnd.line > lastLine) { - selectionEnd.line = lastLine; - } - selectionEnd.ch = lineLength(cm, selectionEnd.line); - } else { - selectionEnd.ch = 0; - selectionStart.ch = lineLength(cm, selectionStart.line); - } - } - cm.setSelection(selectionStart, selectionEnd); - updateMark(cm, vim, '<', - cursorIsBefore(selectionStart, selectionEnd) ? selectionStart - : selectionEnd); - updateMark(cm, vim, '>', - cursorIsBefore(selectionStart, selectionEnd) ? selectionEnd - : selectionStart); - } else if (!operator) { - curEnd = clipCursorToContent(cm, curEnd); - cm.setCursor(curEnd.line, curEnd.ch); - } - } - - if (operator) { - var inverted = false; - vim.lastMotion = null; - operatorArgs.repeat = repeat; // Indent in visual mode needs this. - if (vim.visualMode) { - curStart = selectionStart; - curEnd = selectionEnd; - motionArgs.inclusive = true; - } - // Swap start and end if motion was backward. - if (cursorIsBefore(curEnd, curStart)) { - var tmp = curStart; - curStart = curEnd; - curEnd = tmp; - inverted = true; - } - if (motionArgs.inclusive && !(vim.visualMode && inverted)) { - // Move the selection end one to the right to include the last - // character. - curEnd.ch++; - } - var linewise = motionArgs.linewise || - (vim.visualMode && vim.visualLine); - if (linewise) { - // Expand selection to entire line. - expandSelectionToLine(cm, curStart, curEnd); - } else if (motionArgs.forward) { - // Clip to trailing newlines only if the motion goes forward. - clipToLine(cm, curStart, curEnd); - } - operatorArgs.registerName = registerName; - // Keep track of linewise as it affects how paste and change behave. - operatorArgs.linewise = linewise; - operators[operator](cm, operatorArgs, vim, curStart, - curEnd, curOriginal); - if (vim.visualMode) { - exitVisualMode(cm); - } - } - }, - recordLastEdit: function(vim, inputState, actionCommand) { - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isPlaying) { return; } - vim.lastEditInputState = inputState; - vim.lastEditActionCommand = actionCommand; - macroModeState.lastInsertModeChanges.changes = []; - macroModeState.lastInsertModeChanges.expectCursorActivityForChange = false; - } - }; - - /** - * typedef {Object{line:number,ch:number}} Cursor An object containing the - * position of the cursor. - */ - // All of the functions below return Cursor objects. - var motions = { - moveToTopLine: function(cm, motionArgs) { - var line = getUserVisibleLines(cm).top + motionArgs.repeat -1; - return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); - }, - moveToMiddleLine: function(cm) { - var range = getUserVisibleLines(cm); - var line = Math.floor((range.top + range.bottom) * 0.5); - return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); - }, - moveToBottomLine: function(cm, motionArgs) { - var line = getUserVisibleLines(cm).bottom - motionArgs.repeat +1; - return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); - }, - expandToLine: function(cm, motionArgs) { - // Expands forward to end of line, and then to next line if repeat is - // >1. Does not handle backward motion! - var cur = cm.getCursor(); - return Pos(cur.line + motionArgs.repeat - 1, Infinity); - }, - findNext: function(cm, motionArgs) { - var state = getSearchState(cm); - var query = state.getQuery(); - if (!query) { - return; - } - var prev = !motionArgs.forward; - // If search is initiated with ? instead of /, negate direction. - prev = (state.isReversed()) ? !prev : prev; - highlightSearchMatches(cm, query); - return findNext(cm, prev/** prev */, query, motionArgs.repeat); - }, - goToMark: function(_cm, motionArgs, vim) { - var mark = vim.marks[motionArgs.selectedCharacter]; - if (mark) { - return mark.find(); - } - return null; - }, - moveToOtherHighlightedEnd: function(cm) { - var curEnd = copyCursor(cm.getCursor('head')); - var curStart = copyCursor(cm.getCursor('anchor')); - if (cursorIsBefore(curStart, curEnd)) { - curEnd.ch += 1; - } else if (cursorIsBefore(curEnd, curStart)) { - curStart.ch -= 1; - } - return ([curEnd,curStart]); - }, - jumpToMark: function(cm, motionArgs, vim) { - var best = cm.getCursor(); - for (var i = 0; i < motionArgs.repeat; i++) { - var cursor = best; - for (var key in vim.marks) { - if (!isLowerCase(key)) { - continue; - } - var mark = vim.marks[key].find(); - var isWrongDirection = (motionArgs.forward) ? - cursorIsBefore(mark, cursor) : cursorIsBefore(cursor, mark); - - if (isWrongDirection) { - continue; - } - if (motionArgs.linewise && (mark.line == cursor.line)) { - continue; - } - - var equal = cursorEqual(cursor, best); - var between = (motionArgs.forward) ? - cusrorIsBetween(cursor, mark, best) : - cusrorIsBetween(best, mark, cursor); - - if (equal || between) { - best = mark; - } - } - } - - if (motionArgs.linewise) { - // Vim places the cursor on the first non-whitespace character of - // the line if there is one, else it places the cursor at the end - // of the line, regardless of whether a mark was found. - best = Pos(best.line, findFirstNonWhiteSpaceCharacter(cm.getLine(best.line))); - } - return best; - }, - moveByCharacters: function(cm, motionArgs) { - var cur = cm.getCursor(); - var repeat = motionArgs.repeat; - var ch = motionArgs.forward ? cur.ch + repeat : cur.ch - repeat; - return Pos(cur.line, ch); - }, - moveByLines: function(cm, motionArgs, vim) { - var cur = cm.getCursor(); - var endCh = cur.ch; - // Depending what our last motion was, we may want to do different - // things. If our last motion was moving vertically, we want to - // preserve the HPos from our last horizontal move. If our last motion - // was going to the end of a line, moving vertically we should go to - // the end of the line, etc. - switch (vim.lastMotion) { - case this.moveByLines: - case this.moveByDisplayLines: - case this.moveByScroll: - case this.moveToColumn: - case this.moveToEol: - endCh = vim.lastHPos; - break; - default: - vim.lastHPos = endCh; - } - var repeat = motionArgs.repeat+(motionArgs.repeatOffset||0); - var line = motionArgs.forward ? cur.line + repeat : cur.line - repeat; - var first = cm.firstLine(); - var last = cm.lastLine(); - // Vim cancels linewise motions that start on an edge and move beyond - // that edge. It does not cancel motions that do not start on an edge. - if ((line < first && cur.line == first) || - (line > last && cur.line == last)) { - return; - } - if (motionArgs.toFirstChar){ - endCh=findFirstNonWhiteSpaceCharacter(cm.getLine(line)); - vim.lastHPos = endCh; - } - vim.lastHSPos = cm.charCoords(Pos(line, endCh),'div').left; - return Pos(line, endCh); - }, - moveByDisplayLines: function(cm, motionArgs, vim) { - var cur = cm.getCursor(); - switch (vim.lastMotion) { - case this.moveByDisplayLines: - case this.moveByScroll: - case this.moveByLines: - case this.moveToColumn: - case this.moveToEol: - break; - default: - vim.lastHSPos = cm.charCoords(cur,'div').left; - } - var repeat = motionArgs.repeat; - var res=cm.findPosV(cur,(motionArgs.forward ? repeat : -repeat),'line',vim.lastHSPos); - if (res.hitSide) { - if (motionArgs.forward) { - var lastCharCoords = cm.charCoords(res, 'div'); - var goalCoords = { top: lastCharCoords.top + 8, left: vim.lastHSPos }; - var res = cm.coordsChar(goalCoords, 'div'); - } else { - var resCoords = cm.charCoords(Pos(cm.firstLine(), 0), 'div'); - resCoords.left = vim.lastHSPos; - res = cm.coordsChar(resCoords, 'div'); - } - } - vim.lastHPos = res.ch; - return res; - }, - moveByPage: function(cm, motionArgs) { - // CodeMirror only exposes functions that move the cursor page down, so - // doing this bad hack to move the cursor and move it back. evalInput - // will move the cursor to where it should be in the end. - var curStart = cm.getCursor(); - var repeat = motionArgs.repeat; - cm.moveV((motionArgs.forward ? repeat : -repeat), 'page'); - var curEnd = cm.getCursor(); - cm.setCursor(curStart); - return curEnd; - }, - moveByParagraph: function(cm, motionArgs) { - var line = cm.getCursor().line; - var repeat = motionArgs.repeat; - var inc = motionArgs.forward ? 1 : -1; - for (var i = 0; i < repeat; i++) { - if ((!motionArgs.forward && line === cm.firstLine() ) || - (motionArgs.forward && line == cm.lastLine())) { - break; - } - line += inc; - while (line !== cm.firstLine() && line != cm.lastLine() && cm.getLine(line)) { - line += inc; - } - } - return Pos(line, 0); - }, - moveByScroll: function(cm, motionArgs, vim) { - var scrollbox = cm.getScrollInfo(); - var curEnd = null; - var repeat = motionArgs.repeat; - if (!repeat) { - repeat = scrollbox.clientHeight / (2 * cm.defaultTextHeight()); - } - var orig = cm.charCoords(cm.getCursor(), 'local'); - motionArgs.repeat = repeat; - var curEnd = motions.moveByDisplayLines(cm, motionArgs, vim); - if (!curEnd) { - return null; - } - var dest = cm.charCoords(curEnd, 'local'); - cm.scrollTo(null, scrollbox.top + dest.top - orig.top); - return curEnd; - }, - moveByWords: function(cm, motionArgs) { - return moveToWord(cm, motionArgs.repeat, !!motionArgs.forward, - !!motionArgs.wordEnd, !!motionArgs.bigWord); - }, - moveTillCharacter: function(cm, motionArgs) { - var repeat = motionArgs.repeat; - var curEnd = moveToCharacter(cm, repeat, motionArgs.forward, - motionArgs.selectedCharacter); - var increment = motionArgs.forward ? -1 : 1; - recordLastCharacterSearch(increment, motionArgs); - if (!curEnd) return null; - curEnd.ch += increment; - return curEnd; - }, - moveToCharacter: function(cm, motionArgs) { - var repeat = motionArgs.repeat; - recordLastCharacterSearch(0, motionArgs); - return moveToCharacter(cm, repeat, motionArgs.forward, - motionArgs.selectedCharacter) || cm.getCursor(); - }, - moveToSymbol: function(cm, motionArgs) { - var repeat = motionArgs.repeat; - return findSymbol(cm, repeat, motionArgs.forward, - motionArgs.selectedCharacter) || cm.getCursor(); - }, - moveToColumn: function(cm, motionArgs, vim) { - var repeat = motionArgs.repeat; - // repeat is equivalent to which column we want to move to! - vim.lastHPos = repeat - 1; - vim.lastHSPos = cm.charCoords(cm.getCursor(),'div').left; - return moveToColumn(cm, repeat); - }, - moveToEol: function(cm, motionArgs, vim) { - var cur = cm.getCursor(); - vim.lastHPos = Infinity; - var retval= Pos(cur.line + motionArgs.repeat - 1, Infinity); - var end=cm.clipPos(retval); - end.ch--; - vim.lastHSPos = cm.charCoords(end,'div').left; - return retval; - }, - moveToFirstNonWhiteSpaceCharacter: function(cm) { - // Go to the start of the line where the text begins, or the end for - // whitespace-only lines - var cursor = cm.getCursor(); - return Pos(cursor.line, - findFirstNonWhiteSpaceCharacter(cm.getLine(cursor.line))); - }, - moveToMatchedSymbol: function(cm) { - var cursor = cm.getCursor(); - var line = cursor.line; - var ch = cursor.ch; - var lineText = cm.getLine(line); - var symbol; - var startContext = cm.getTokenAt(cursor).type; - var startCtxLevel = getContextLevel(startContext); - do { - symbol = lineText.charAt(ch++); - if (symbol && isMatchableSymbol(symbol)) { - var endContext = cm.getTokenAt(Pos(line, ch)).type; - var endCtxLevel = getContextLevel(endContext); - if (startCtxLevel >= endCtxLevel) { - break; - } - } - } while (symbol); - if (symbol) { - return findMatchedSymbol(cm, Pos(line, ch-1), symbol); - } else { - return cursor; - } - }, - moveToStartOfLine: function(cm) { - var cursor = cm.getCursor(); - return Pos(cursor.line, 0); - }, - moveToLineOrEdgeOfDocument: function(cm, motionArgs) { - var lineNum = motionArgs.forward ? cm.lastLine() : cm.firstLine(); - if (motionArgs.repeatIsExplicit) { - lineNum = motionArgs.repeat - cm.getOption('firstLineNumber'); - } - return Pos(lineNum, - findFirstNonWhiteSpaceCharacter(cm.getLine(lineNum))); - }, - textObjectManipulation: function(cm, motionArgs) { - // TODO: lots of possible exceptions that can be thrown here. Try da( - // outside of a () block. - - // TODO: adding <> >< to this map doesn't work, presumably because - // they're operators - var mirroredPairs = {'(': ')', ')': '(', - '{': '}', '}': '{', - '[': ']', ']': '['}; - var selfPaired = {'\'': true, '"': true}; - - var character = motionArgs.selectedCharacter; - - // Inclusive is the difference between a and i - // TODO: Instead of using the additional text object map to perform text - // object operations, merge the map into the defaultKeyMap and use - // motionArgs to define behavior. Define separate entries for 'aw', - // 'iw', 'a[', 'i[', etc. - var inclusive = !motionArgs.textObjectInner; - - var tmp; - if (mirroredPairs[character]) { - tmp = selectCompanionObject(cm, mirroredPairs[character], inclusive); - } else if (selfPaired[character]) { - tmp = findBeginningAndEnd(cm, character, inclusive); - } else if (character === 'W') { - tmp = expandWordUnderCursor(cm, inclusive, true /** forward */, - true /** bigWord */); - } else if (character === 'w') { - tmp = expandWordUnderCursor(cm, inclusive, true /** forward */, - false /** bigWord */); - } else { - // No text object defined for this, don't move. - return null; - } - - return [tmp.start, tmp.end]; - }, - - repeatLastCharacterSearch: function(cm, motionArgs) { - var lastSearch = vimGlobalState.lastChararacterSearch; - var repeat = motionArgs.repeat; - var forward = motionArgs.forward === lastSearch.forward; - var increment = (lastSearch.increment ? 1 : 0) * (forward ? -1 : 1); - cm.moveH(-increment, 'char'); - motionArgs.inclusive = forward ? true : false; - var curEnd = moveToCharacter(cm, repeat, forward, lastSearch.selectedCharacter); - if (!curEnd) { - cm.moveH(increment, 'char'); - return cm.getCursor(); - } - curEnd.ch += increment; - return curEnd; - } - }; - - var operators = { - change: function(cm, operatorArgs, _vim, curStart, curEnd) { - vimGlobalState.registerController.pushText( - operatorArgs.registerName, 'change', cm.getRange(curStart, curEnd), - operatorArgs.linewise); - if (operatorArgs.linewise) { - // Push the next line back down, if there is a next line. - var replacement = curEnd.line > cm.lastLine() ? '' : '\n'; - cm.replaceRange(replacement, curStart, curEnd); - cm.indentLine(curStart.line, 'smart'); - // null ch so setCursor moves to end of line. - curStart.ch = null; - } else { - // Exclude trailing whitespace if the range is not all whitespace. - var text = cm.getRange(curStart, curEnd); - if (!isWhiteSpaceString(text)) { - var match = (/\s+$/).exec(text); - if (match) { - curEnd = offsetCursor(curEnd, 0, - match[0].length); - } - } - cm.replaceRange('', curStart, curEnd); - } - actions.enterInsertMode(cm, {}, cm.state.vim); - cm.setCursor(curStart); - }, - // delete is a javascript keyword. - 'delete': function(cm, operatorArgs, _vim, curStart, curEnd) { - // If the ending line is past the last line, inclusive, instead of - // including the trailing \n, include the \n before the starting line - if (operatorArgs.linewise && - curEnd.line > cm.lastLine() && curStart.line > cm.firstLine()) { - curStart.line--; - curStart.ch = lineLength(cm, curStart.line); - } - vimGlobalState.registerController.pushText( - operatorArgs.registerName, 'delete', cm.getRange(curStart, curEnd), - operatorArgs.linewise); - cm.replaceRange('', curStart, curEnd); - if (operatorArgs.linewise) { - cm.setCursor(motions.moveToFirstNonWhiteSpaceCharacter(cm)); - } else { - cm.setCursor(curStart); - } - }, - indent: function(cm, operatorArgs, vim, curStart, curEnd) { - var startLine = curStart.line; - var endLine = curEnd.line; - // In visual mode, n> shifts the selection right n times, instead of - // shifting n lines right once. - var repeat = (vim.visualMode) ? operatorArgs.repeat : 1; - if (operatorArgs.linewise) { - // The only way to delete a newline is to delete until the start of - // the next line, so in linewise mode evalInput will include the next - // line. We don't want this in indent, so we go back a line. - endLine--; - } - for (var i = startLine; i <= endLine; i++) { - for (var j = 0; j < repeat; j++) { - cm.indentLine(i, operatorArgs.indentRight); - } - } - cm.setCursor(curStart); - cm.setCursor(motions.moveToFirstNonWhiteSpaceCharacter(cm)); - }, - swapcase: function(cm, operatorArgs, _vim, curStart, curEnd, curOriginal) { - var toSwap = cm.getRange(curStart, curEnd); - var swapped = ''; - for (var i = 0; i < toSwap.length; i++) { - var character = toSwap.charAt(i); - swapped += isUpperCase(character) ? character.toLowerCase() : - character.toUpperCase(); - } - cm.replaceRange(swapped, curStart, curEnd); - if (!operatorArgs.shouldMoveCursor) { - cm.setCursor(curOriginal); - } - }, - yank: function(cm, operatorArgs, _vim, curStart, curEnd, curOriginal) { - vimGlobalState.registerController.pushText( - operatorArgs.registerName, 'yank', - cm.getRange(curStart, curEnd), operatorArgs.linewise); - cm.setCursor(curOriginal); - } - }; - - var actions = { - jumpListWalk: function(cm, actionArgs, vim) { - if (vim.visualMode) { - return; - } - var repeat = actionArgs.repeat; - var forward = actionArgs.forward; - var jumpList = vimGlobalState.jumpList; - - var mark = jumpList.move(cm, forward ? repeat : -repeat); - var markPos = mark ? mark.find() : undefined; - markPos = markPos ? markPos : cm.getCursor(); - cm.setCursor(markPos); - }, - scroll: function(cm, actionArgs, vim) { - if (vim.visualMode) { - return; - } - var repeat = actionArgs.repeat || 1; - var lineHeight = cm.defaultTextHeight(); - var top = cm.getScrollInfo().top; - var delta = lineHeight * repeat; - var newPos = actionArgs.forward ? top + delta : top - delta; - var cursor = copyCursor(cm.getCursor()); - var cursorCoords = cm.charCoords(cursor, 'local'); - if (actionArgs.forward) { - if (newPos > cursorCoords.top) { - cursor.line += (newPos - cursorCoords.top) / lineHeight; - cursor.line = Math.ceil(cursor.line); - cm.setCursor(cursor); - cursorCoords = cm.charCoords(cursor, 'local'); - cm.scrollTo(null, cursorCoords.top); - } else { - // Cursor stays within bounds. Just reposition the scroll window. - cm.scrollTo(null, newPos); - } - } else { - var newBottom = newPos + cm.getScrollInfo().clientHeight; - if (newBottom < cursorCoords.bottom) { - cursor.line -= (cursorCoords.bottom - newBottom) / lineHeight; - cursor.line = Math.floor(cursor.line); - cm.setCursor(cursor); - cursorCoords = cm.charCoords(cursor, 'local'); - cm.scrollTo( - null, cursorCoords.bottom - cm.getScrollInfo().clientHeight); - } else { - // Cursor stays within bounds. Just reposition the scroll window. - cm.scrollTo(null, newPos); - } - } - }, - scrollToCursor: function(cm, actionArgs) { - var lineNum = cm.getCursor().line; - var charCoords = cm.charCoords(Pos(lineNum, 0), 'local'); - var height = cm.getScrollInfo().clientHeight; - var y = charCoords.top; - var lineHeight = charCoords.bottom - y; - switch (actionArgs.position) { - case 'center': y = y - (height / 2) + lineHeight; - break; - case 'bottom': y = y - height + lineHeight*1.4; - break; - case 'top': y = y + lineHeight*0.4; - break; - } - cm.scrollTo(null, y); - }, - replayMacro: function(cm, actionArgs, vim) { - var registerName = actionArgs.selectedCharacter; - var repeat = actionArgs.repeat; - var macroModeState = vimGlobalState.macroModeState; - if (registerName == '@') { - registerName = macroModeState.latestRegister; - } - while(repeat--){ - executeMacroRegister(cm, vim, macroModeState, registerName); - } - }, - enterMacroRecordMode: function(cm, actionArgs) { - var macroModeState = vimGlobalState.macroModeState; - var registerName = actionArgs.selectedCharacter; - macroModeState.enterMacroRecordMode(cm, registerName); - }, - enterInsertMode: function(cm, actionArgs, vim) { - if (cm.getOption('readOnly')) { return; } - vim.insertMode = true; - vim.insertModeRepeat = actionArgs && actionArgs.repeat || 1; - var insertAt = (actionArgs) ? actionArgs.insertAt : null; - if (insertAt == 'eol') { - var cursor = cm.getCursor(); - cursor = Pos(cursor.line, lineLength(cm, cursor.line)); - cm.setCursor(cursor); - } else if (insertAt == 'charAfter') { - cm.setCursor(offsetCursor(cm.getCursor(), 0, 1)); - } else if (insertAt == 'firstNonBlank') { - cm.setCursor(motions.moveToFirstNonWhiteSpaceCharacter(cm)); - } - cm.setOption('keyMap', 'vim-insert'); - cm.setOption('disableInput', false); - if (actionArgs && actionArgs.replace) { - // Handle Replace-mode as a special case of insert mode. - cm.toggleOverwrite(true); - cm.setOption('keyMap', 'vim-replace'); - CodeMirror.signal(cm, "vim-mode-change", {mode: "replace"}); - } else { - cm.setOption('keyMap', 'vim-insert'); - CodeMirror.signal(cm, "vim-mode-change", {mode: "insert"}); - } - if (!vimGlobalState.macroModeState.isPlaying) { - // Only record if not replaying. - cm.on('change', onChange); - cm.on('cursorActivity', onCursorActivity); - CodeMirror.on(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); - } - }, - toggleVisualMode: function(cm, actionArgs, vim) { - var repeat = actionArgs.repeat; - var curStart = cm.getCursor(); - var curEnd; - // TODO: The repeat should actually select number of characters/lines - // equal to the repeat times the size of the previous visual - // operation. - if (!vim.visualMode) { - cm.on('mousedown', exitVisualMode); - vim.visualMode = true; - vim.visualLine = !!actionArgs.linewise; - if (vim.visualLine) { - curStart.ch = 0; - curEnd = clipCursorToContent( - cm, Pos(curStart.line + repeat - 1, lineLength(cm, curStart.line)), - true /** includeLineBreak */); - } else { - curEnd = clipCursorToContent( - cm, Pos(curStart.line, curStart.ch + repeat), - true /** includeLineBreak */); - } - // Make the initial selection. - if (!actionArgs.repeatIsExplicit && !vim.visualLine) { - // This is a strange case. Here the implicit repeat is 1. The - // following commands lets the cursor hover over the 1 character - // selection. - cm.setCursor(curEnd); - cm.setSelection(curEnd, curStart); - } else { - cm.setSelection(curStart, curEnd); - } - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: vim.visualLine ? "linewise" : ""}); - } else { - curStart = cm.getCursor('anchor'); - curEnd = cm.getCursor('head'); - if (!vim.visualLine && actionArgs.linewise) { - // Shift-V pressed in characterwise visual mode. Switch to linewise - // visual mode instead of exiting visual mode. - vim.visualLine = true; - curStart.ch = cursorIsBefore(curStart, curEnd) ? 0 : - lineLength(cm, curStart.line); - curEnd.ch = cursorIsBefore(curStart, curEnd) ? - lineLength(cm, curEnd.line) : 0; - cm.setSelection(curStart, curEnd); - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: "linewise"}); - } else if (vim.visualLine && !actionArgs.linewise) { - // v pressed in linewise visual mode. Switch to characterwise visual - // mode instead of exiting visual mode. - vim.visualLine = false; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual"}); - } else { - exitVisualMode(cm); - } - } - updateMark(cm, vim, '<', cursorIsBefore(curStart, curEnd) ? curStart - : curEnd); - updateMark(cm, vim, '>', cursorIsBefore(curStart, curEnd) ? curEnd - : curStart); - }, - reselectLastSelection: function(cm, _actionArgs, vim) { - if (vim.lastSelection) { - var lastSelection = vim.lastSelection; - cm.setSelection(lastSelection.curStart, lastSelection.curEnd); - if (lastSelection.visualLine) { - vim.visualMode = true; - vim.visualLine = true; - } - else { - vim.visualMode = true; - vim.visualLine = false; - } - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: vim.visualLine ? "linewise" : ""}); - } - }, - joinLines: function(cm, actionArgs, vim) { - var curStart, curEnd; - if (vim.visualMode) { - curStart = cm.getCursor('anchor'); - curEnd = cm.getCursor('head'); - curEnd.ch = lineLength(cm, curEnd.line) - 1; - } else { - // Repeat is the number of lines to join. Minimum 2 lines. - var repeat = Math.max(actionArgs.repeat, 2); - curStart = cm.getCursor(); - curEnd = clipCursorToContent(cm, Pos(curStart.line + repeat - 1, - Infinity)); - } - var finalCh = 0; - cm.operation(function() { - for (var i = curStart.line; i < curEnd.line; i++) { - finalCh = lineLength(cm, curStart.line); - var tmp = Pos(curStart.line + 1, - lineLength(cm, curStart.line + 1)); - var text = cm.getRange(curStart, tmp); - text = text.replace(/\n\s*/g, ' '); - cm.replaceRange(text, curStart, tmp); - } - var curFinalPos = Pos(curStart.line, finalCh); - cm.setCursor(curFinalPos); - }); - }, - newLineAndEnterInsertMode: function(cm, actionArgs, vim) { - vim.insertMode = true; - var insertAt = copyCursor(cm.getCursor()); - if (insertAt.line === cm.firstLine() && !actionArgs.after) { - // Special case for inserting newline before start of document. - cm.replaceRange('\n', Pos(cm.firstLine(), 0)); - cm.setCursor(cm.firstLine(), 0); - } else { - insertAt.line = (actionArgs.after) ? insertAt.line : - insertAt.line - 1; - insertAt.ch = lineLength(cm, insertAt.line); - cm.setCursor(insertAt); - var newlineFn = CodeMirror.commands.newlineAndIndentContinueComment || - CodeMirror.commands.newlineAndIndent; - newlineFn(cm); - } - this.enterInsertMode(cm, { repeat: actionArgs.repeat }, vim); - }, - paste: function(cm, actionArgs) { - var cur = copyCursor(cm.getCursor()); - var register = vimGlobalState.registerController.getRegister( - actionArgs.registerName); - var text = register.toString(); - if (!text) { - return; - } - if (actionArgs.repeat > 1) { - var text = Array(actionArgs.repeat + 1).join(text); - } - var linewise = register.linewise; - if (linewise) { - if (actionArgs.after) { - // Move the newline at the end to the start instead, and paste just - // before the newline character of the line we are on right now. - text = '\n' + text.slice(0, text.length - 1); - cur.ch = lineLength(cm, cur.line); - } else { - cur.ch = 0; - } - } else { - cur.ch += actionArgs.after ? 1 : 0; - } - cm.replaceRange(text, cur); - // Now fine tune the cursor to where we want it. - var curPosFinal; - var idx; - if (linewise && actionArgs.after) { - curPosFinal = Pos( - cur.line + 1, - findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line + 1))); - } else if (linewise && !actionArgs.after) { - curPosFinal = Pos( - cur.line, - findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line))); - } else if (!linewise && actionArgs.after) { - idx = cm.indexFromPos(cur); - curPosFinal = cm.posFromIndex(idx + text.length - 1); - } else { - idx = cm.indexFromPos(cur); - curPosFinal = cm.posFromIndex(idx + text.length); - } - cm.setCursor(curPosFinal); - }, - undo: function(cm, actionArgs) { - cm.operation(function() { - repeatFn(cm, CodeMirror.commands.undo, actionArgs.repeat)(); - cm.setCursor(cm.getCursor('anchor')); - }); - }, - redo: function(cm, actionArgs) { - repeatFn(cm, CodeMirror.commands.redo, actionArgs.repeat)(); - }, - setRegister: function(_cm, actionArgs, vim) { - vim.inputState.registerName = actionArgs.selectedCharacter; - }, - setMark: function(cm, actionArgs, vim) { - var markName = actionArgs.selectedCharacter; - updateMark(cm, vim, markName, cm.getCursor()); - }, - replace: function(cm, actionArgs, vim) { - var replaceWith = actionArgs.selectedCharacter; - var curStart = cm.getCursor(); - var replaceTo; - var curEnd; - if (vim.visualMode){ - curStart=cm.getCursor('start'); - curEnd=cm.getCursor('end'); - // workaround to catch the character under the cursor - // existing workaround doesn't cover actions - curEnd=cm.clipPos(Pos(curEnd.line, curEnd.ch+1)); - }else{ - var line = cm.getLine(curStart.line); - replaceTo = curStart.ch + actionArgs.repeat; - if (replaceTo > line.length) { - replaceTo=line.length; - } - curEnd = Pos(curStart.line, replaceTo); - } - if (replaceWith=='\n'){ - if (!vim.visualMode) cm.replaceRange('', curStart, curEnd); - // special case, where vim help says to replace by just one line-break - (CodeMirror.commands.newlineAndIndentContinueComment || CodeMirror.commands.newlineAndIndent)(cm); - }else { - var replaceWithStr=cm.getRange(curStart, curEnd); - //replace all characters in range by selected, but keep linebreaks - replaceWithStr=replaceWithStr.replace(/[^\n]/g,replaceWith); - cm.replaceRange(replaceWithStr, curStart, curEnd); - if (vim.visualMode){ - cm.setCursor(curStart); - exitVisualMode(cm); - }else{ - cm.setCursor(offsetCursor(curEnd, 0, -1)); - } - } - }, - incrementNumberToken: function(cm, actionArgs) { - var cur = cm.getCursor(); - var lineStr = cm.getLine(cur.line); - var re = /-?\d+/g; - var match; - var start; - var end; - var numberStr; - var token; - while ((match = re.exec(lineStr)) !== null) { - token = match[0]; - start = match.index; - end = start + token.length; - if (cur.ch < end)break; - } - if (!actionArgs.backtrack && (end <= cur.ch))return; - if (token) { - var increment = actionArgs.increase ? 1 : -1; - var number = parseInt(token) + (increment * actionArgs.repeat); - var from = Pos(cur.line, start); - var to = Pos(cur.line, end); - numberStr = number.toString(); - cm.replaceRange(numberStr, from, to); - } else { - return; - } - cm.setCursor(Pos(cur.line, start + numberStr.length - 1)); - }, - repeatLastEdit: function(cm, actionArgs, vim) { - var lastEditInputState = vim.lastEditInputState; - if (!lastEditInputState) { return; } - var repeat = actionArgs.repeat; - if (repeat && actionArgs.repeatIsExplicit) { - vim.lastEditInputState.repeatOverride = repeat; - } else { - repeat = vim.lastEditInputState.repeatOverride || repeat; - } - repeatLastEdit(cm, vim, repeat, false /** repeatForInsert */); - } - }; - - /* - * Below are miscellaneous utility functions used by vim.js - */ - - /** - * Clips cursor to ensure that line is within the buffer's range - * If includeLineBreak is true, then allow cur.ch == lineLength. - */ - function clipCursorToContent(cm, cur, includeLineBreak) { - var line = Math.min(Math.max(cm.firstLine(), cur.line), cm.lastLine() ); - var maxCh = lineLength(cm, line) - 1; - maxCh = (includeLineBreak) ? maxCh + 1 : maxCh; - var ch = Math.min(Math.max(0, cur.ch), maxCh); - return Pos(line, ch); - } - function copyArgs(args) { - var ret = {}; - for (var prop in args) { - if (args.hasOwnProperty(prop)) { - ret[prop] = args[prop]; - } - } - return ret; - } - function offsetCursor(cur, offsetLine, offsetCh) { - return Pos(cur.line + offsetLine, cur.ch + offsetCh); - } - function matchKeysPartial(pressed, mapped) { - for (var i = 0; i < pressed.length; i++) { - // 'character' means any character. For mark, register commads, etc. - if (pressed[i] != mapped[i] && mapped[i] != 'character') { - return false; - } - } - return true; - } - function repeatFn(cm, fn, repeat) { - return function() { - for (var i = 0; i < repeat; i++) { - fn(cm); - } - }; - } - function copyCursor(cur) { - return Pos(cur.line, cur.ch); - } - function cursorEqual(cur1, cur2) { - return cur1.ch == cur2.ch && cur1.line == cur2.line; - } - function cursorIsBefore(cur1, cur2) { - if (cur1.line < cur2.line) { - return true; - } - if (cur1.line == cur2.line && cur1.ch < cur2.ch) { - return true; - } - return false; - } - function cusrorIsBetween(cur1, cur2, cur3) { - // returns true if cur2 is between cur1 and cur3. - var cur1before2 = cursorIsBefore(cur1, cur2); - var cur2before3 = cursorIsBefore(cur2, cur3); - return cur1before2 && cur2before3; - } - function lineLength(cm, lineNum) { - return cm.getLine(lineNum).length; - } - function reverse(s){ - return s.split('').reverse().join(''); - } - function trim(s) { - if (s.trim) { - return s.trim(); - } - return s.replace(/^\s+|\s+$/g, ''); - } - function escapeRegex(s) { - return s.replace(/([.?*+$\[\]\/\\(){}|\-])/g, '\\$1'); - } - - function exitVisualMode(cm) { - cm.off('mousedown', exitVisualMode); - var vim = cm.state.vim; - // can't use selection state here because yank has already reset its cursor - vim.lastSelection = {'curStart': vim.marks['<'].find(), - 'curEnd': vim.marks['>'].find(), 'visualMode': vim.visualMode, - 'visualLine': vim.visualLine}; - vim.visualMode = false; - vim.visualLine = false; - var selectionStart = cm.getCursor('anchor'); - var selectionEnd = cm.getCursor('head'); - if (!cursorEqual(selectionStart, selectionEnd)) { - // Clear the selection and set the cursor only if the selection has not - // already been cleared. Otherwise we risk moving the cursor somewhere - // it's not supposed to be. - cm.setCursor(clipCursorToContent(cm, selectionEnd)); - } - CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); - } - - // Remove any trailing newlines from the selection. For - // example, with the caret at the start of the last word on the line, - // 'dw' should word, but not the newline, while 'w' should advance the - // caret to the first character of the next line. - function clipToLine(cm, curStart, curEnd) { - var selection = cm.getRange(curStart, curEnd); - // Only clip if the selection ends with trailing newline + whitespace - if (/\n\s*$/.test(selection)) { - var lines = selection.split('\n'); - // We know this is all whitepsace. - lines.pop(); - - // Cases: - // 1. Last word is an empty line - do not clip the trailing '\n' - // 2. Last word is not an empty line - clip the trailing '\n' - var line; - // Find the line containing the last word, and clip all whitespace up - // to it. - for (var line = lines.pop(); lines.length > 0 && line && isWhiteSpaceString(line); line = lines.pop()) { - curEnd.line--; - curEnd.ch = 0; - } - // If the last word is not an empty line, clip an additional newline - if (line) { - curEnd.line--; - curEnd.ch = lineLength(cm, curEnd.line); - } else { - curEnd.ch = 0; - } - } - } - - // Expand the selection to line ends. - function expandSelectionToLine(_cm, curStart, curEnd) { - curStart.ch = 0; - curEnd.ch = 0; - curEnd.line++; - } - - function findFirstNonWhiteSpaceCharacter(text) { - if (!text) { - return 0; - } - var firstNonWS = text.search(/\S/); - return firstNonWS == -1 ? text.length : firstNonWS; - } - - function expandWordUnderCursor(cm, inclusive, _forward, bigWord, noSymbol) { - var cur = cm.getCursor(); - var line = cm.getLine(cur.line); - var idx = cur.ch; - - // Seek to first word or non-whitespace character, depending on if - // noSymbol is true. - var textAfterIdx = line.substring(idx); - var firstMatchedChar; - if (noSymbol) { - firstMatchedChar = textAfterIdx.search(/\w/); - } else { - firstMatchedChar = textAfterIdx.search(/\S/); - } - if (firstMatchedChar == -1) { - return null; - } - idx += firstMatchedChar; - textAfterIdx = line.substring(idx); - var textBeforeIdx = line.substring(0, idx); - - var matchRegex; - // Greedy matchers for the "word" we are trying to expand. - if (bigWord) { - matchRegex = /^\S+/; - } else { - if ((/\w/).test(line.charAt(idx))) { - matchRegex = /^\w+/; - } else { - matchRegex = /^[^\w\s]+/; - } - } - - var wordAfterRegex = matchRegex.exec(textAfterIdx); - var wordStart = idx; - var wordEnd = idx + wordAfterRegex[0].length; - // TODO: Find a better way to do this. It will be slow on very long lines. - var revTextBeforeIdx = reverse(textBeforeIdx); - var wordBeforeRegex = matchRegex.exec(revTextBeforeIdx); - if (wordBeforeRegex) { - wordStart -= wordBeforeRegex[0].length; - } - - if (inclusive) { - // If present, trim all whitespace after word. - // Otherwise, trim all whitespace before word. - var textAfterWordEnd = line.substring(wordEnd); - var whitespacesAfterWord = textAfterWordEnd.match(/^\s*/)[0].length; - if (whitespacesAfterWord > 0) { - wordEnd += whitespacesAfterWord; - } else { - var revTrim = revTextBeforeIdx.length - wordStart; - var textBeforeWordStart = revTextBeforeIdx.substring(revTrim); - var whitespacesBeforeWord = textBeforeWordStart.match(/^\s*/)[0].length; - wordStart -= whitespacesBeforeWord; - } - } - - return { start: Pos(cur.line, wordStart), - end: Pos(cur.line, wordEnd) }; - } - - function recordJumpPosition(cm, oldCur, newCur) { - if (!cursorEqual(oldCur, newCur)) { - vimGlobalState.jumpList.add(cm, oldCur, newCur); - } - } - - function recordLastCharacterSearch(increment, args) { - vimGlobalState.lastChararacterSearch.increment = increment; - vimGlobalState.lastChararacterSearch.forward = args.forward; - vimGlobalState.lastChararacterSearch.selectedCharacter = args.selectedCharacter; - } - - var symbolToMode = { - '(': 'bracket', ')': 'bracket', '{': 'bracket', '}': 'bracket', - '[': 'section', ']': 'section', - '*': 'comment', '/': 'comment', - 'm': 'method', 'M': 'method', - '#': 'preprocess' - }; - var findSymbolModes = { - bracket: { - isComplete: function(state) { - if (state.nextCh === state.symb) { - state.depth++; - if (state.depth >= 1)return true; - } else if (state.nextCh === state.reverseSymb) { - state.depth--; - } - return false; - } - }, - section: { - init: function(state) { - state.curMoveThrough = true; - state.symb = (state.forward ? ']' : '[') === state.symb ? '{' : '}'; - }, - isComplete: function(state) { - return state.index === 0 && state.nextCh === state.symb; - } - }, - comment: { - isComplete: function(state) { - var found = state.lastCh === '*' && state.nextCh === '/'; - state.lastCh = state.nextCh; - return found; - } - }, - // TODO: The original Vim implementation only operates on level 1 and 2. - // The current implementation doesn't check for code block level and - // therefore it operates on any levels. - method: { - init: function(state) { - state.symb = (state.symb === 'm' ? '{' : '}'); - state.reverseSymb = state.symb === '{' ? '}' : '{'; - }, - isComplete: function(state) { - if (state.nextCh === state.symb)return true; - return false; - } - }, - preprocess: { - init: function(state) { - state.index = 0; - }, - isComplete: function(state) { - if (state.nextCh === '#') { - var token = state.lineText.match(/#(\w+)/)[1]; - if (token === 'endif') { - if (state.forward && state.depth === 0) { - return true; - } - state.depth++; - } else if (token === 'if') { - if (!state.forward && state.depth === 0) { - return true; - } - state.depth--; - } - if (token === 'else' && state.depth === 0)return true; - } - return false; - } - } - }; - function findSymbol(cm, repeat, forward, symb) { - var cur = copyCursor(cm.getCursor()); - var increment = forward ? 1 : -1; - var endLine = forward ? cm.lineCount() : -1; - var curCh = cur.ch; - var line = cur.line; - var lineText = cm.getLine(line); - var state = { - lineText: lineText, - nextCh: lineText.charAt(curCh), - lastCh: null, - index: curCh, - symb: symb, - reverseSymb: (forward ? { ')': '(', '}': '{' } : { '(': ')', '{': '}' })[symb], - forward: forward, - depth: 0, - curMoveThrough: false - }; - var mode = symbolToMode[symb]; - if (!mode)return cur; - var init = findSymbolModes[mode].init; - var isComplete = findSymbolModes[mode].isComplete; - if (init) { init(state); } - while (line !== endLine && repeat) { - state.index += increment; - state.nextCh = state.lineText.charAt(state.index); - if (!state.nextCh) { - line += increment; - state.lineText = cm.getLine(line) || ''; - if (increment > 0) { - state.index = 0; - } else { - var lineLen = state.lineText.length; - state.index = (lineLen > 0) ? (lineLen-1) : 0; - } - state.nextCh = state.lineText.charAt(state.index); - } - if (isComplete(state)) { - cur.line = line; - cur.ch = state.index; - repeat--; - } - } - if (state.nextCh || state.curMoveThrough) { - return Pos(line, state.index); - } - return cur; - } - - /* - * Returns the boundaries of the next word. If the cursor in the middle of - * the word, then returns the boundaries of the current word, starting at - * the cursor. If the cursor is at the start/end of a word, and we are going - * forward/backward, respectively, find the boundaries of the next word. - * - * @param {CodeMirror} cm CodeMirror object. - * @param {Cursor} cur The cursor position. - * @param {boolean} forward True to search forward. False to search - * backward. - * @param {boolean} bigWord True if punctuation count as part of the word. - * False if only [a-zA-Z0-9] characters count as part of the word. - * @param {boolean} emptyLineIsWord True if empty lines should be treated - * as words. - * @return {Object{from:number, to:number, line: number}} The boundaries of - * the word, or null if there are no more words. - */ - function findWord(cm, cur, forward, bigWord, emptyLineIsWord) { - var lineNum = cur.line; - var pos = cur.ch; - var line = cm.getLine(lineNum); - var dir = forward ? 1 : -1; - var regexps = bigWord ? bigWordRegexp : wordRegexp; - - if (emptyLineIsWord && line == '') { - lineNum += dir; - line = cm.getLine(lineNum); - if (!isLine(cm, lineNum)) { - return null; - } - pos = (forward) ? 0 : line.length; - } - - while (true) { - if (emptyLineIsWord && line == '') { - return { from: 0, to: 0, line: lineNum }; - } - var stop = (dir > 0) ? line.length : -1; - var wordStart = stop, wordEnd = stop; - // Find bounds of next word. - while (pos != stop) { - var foundWord = false; - for (var i = 0; i < regexps.length && !foundWord; ++i) { - if (regexps[i].test(line.charAt(pos))) { - wordStart = pos; - // Advance to end of word. - while (pos != stop && regexps[i].test(line.charAt(pos))) { - pos += dir; - } - wordEnd = pos; - foundWord = wordStart != wordEnd; - if (wordStart == cur.ch && lineNum == cur.line && - wordEnd == wordStart + dir) { - // We started at the end of a word. Find the next one. - continue; - } else { - return { - from: Math.min(wordStart, wordEnd + 1), - to: Math.max(wordStart, wordEnd), - line: lineNum }; - } - } - } - if (!foundWord) { - pos += dir; - } - } - // Advance to next/prev line. - lineNum += dir; - if (!isLine(cm, lineNum)) { - return null; - } - line = cm.getLine(lineNum); - pos = (dir > 0) ? 0 : line.length; - } - // Should never get here. - throw new Error('The impossible happened.'); - } - - /** - * @param {CodeMirror} cm CodeMirror object. - * @param {int} repeat Number of words to move past. - * @param {boolean} forward True to search forward. False to search - * backward. - * @param {boolean} wordEnd True to move to end of word. False to move to - * beginning of word. - * @param {boolean} bigWord True if punctuation count as part of the word. - * False if only alphabet characters count as part of the word. - * @return {Cursor} The position the cursor should move to. - */ - function moveToWord(cm, repeat, forward, wordEnd, bigWord) { - var cur = cm.getCursor(); - var curStart = copyCursor(cur); - var words = []; - if (forward && !wordEnd || !forward && wordEnd) { - repeat++; - } - // For 'e', empty lines are not considered words, go figure. - var emptyLineIsWord = !(forward && wordEnd); - for (var i = 0; i < repeat; i++) { - var word = findWord(cm, cur, forward, bigWord, emptyLineIsWord); - if (!word) { - var eodCh = lineLength(cm, cm.lastLine()); - words.push(forward - ? {line: cm.lastLine(), from: eodCh, to: eodCh} - : {line: 0, from: 0, to: 0}); - break; - } - words.push(word); - cur = Pos(word.line, forward ? (word.to - 1) : word.from); - } - var shortCircuit = words.length != repeat; - var firstWord = words[0]; - var lastWord = words.pop(); - if (forward && !wordEnd) { - // w - if (!shortCircuit && (firstWord.from != curStart.ch || firstWord.line != curStart.line)) { - // We did not start in the middle of a word. Discard the extra word at the end. - lastWord = words.pop(); - } - return Pos(lastWord.line, lastWord.from); - } else if (forward && wordEnd) { - return Pos(lastWord.line, lastWord.to - 1); - } else if (!forward && wordEnd) { - // ge - if (!shortCircuit && (firstWord.to != curStart.ch || firstWord.line != curStart.line)) { - // We did not start in the middle of a word. Discard the extra word at the end. - lastWord = words.pop(); - } - return Pos(lastWord.line, lastWord.to); - } else { - // b - return Pos(lastWord.line, lastWord.from); - } - } - - function moveToCharacter(cm, repeat, forward, character) { - var cur = cm.getCursor(); - var start = cur.ch; - var idx; - for (var i = 0; i < repeat; i ++) { - var line = cm.getLine(cur.line); - idx = charIdxInLine(start, line, character, forward, true); - if (idx == -1) { - return null; - } - start = idx; - } - return Pos(cm.getCursor().line, idx); - } - - function moveToColumn(cm, repeat) { - // repeat is always >= 1, so repeat - 1 always corresponds - // to the column we want to go to. - var line = cm.getCursor().line; - return clipCursorToContent(cm, Pos(line, repeat - 1)); - } - - function updateMark(cm, vim, markName, pos) { - if (!inArray(markName, validMarks)) { - return; - } - if (vim.marks[markName]) { - vim.marks[markName].clear(); - } - vim.marks[markName] = cm.setBookmark(pos); - } - - function charIdxInLine(start, line, character, forward, includeChar) { - // Search for char in line. - // motion_options: {forward, includeChar} - // If includeChar = true, include it too. - // If forward = true, search forward, else search backwards. - // If char is not found on this line, do nothing - var idx; - if (forward) { - idx = line.indexOf(character, start + 1); - if (idx != -1 && !includeChar) { - idx -= 1; - } - } else { - idx = line.lastIndexOf(character, start - 1); - if (idx != -1 && !includeChar) { - idx += 1; - } - } - return idx; - } - - function getContextLevel(ctx) { - return (ctx === 'string' || ctx === 'comment') ? 1 : 0; - } - - function findMatchedSymbol(cm, cur, symb) { - var line = cur.line; - var ch = cur.ch; - symb = symb ? symb : cm.getLine(line).charAt(ch); - - var symbContext = cm.getTokenAt(Pos(line, ch + 1)).type; - var symbCtxLevel = getContextLevel(symbContext); - - var reverseSymb = ({ - '(': ')', ')': '(', - '[': ']', ']': '[', - '{': '}', '}': '{'})[symb]; - - // Couldn't find a matching symbol, abort - if (!reverseSymb) { - return cur; - } - - // set our increment to move forward (+1) or backwards (-1) - // depending on which bracket we're matching - var increment = ({'(': 1, '{': 1, '[': 1})[symb] || -1; - var endLine = increment === 1 ? cm.lineCount() : -1; - var depth = 1, nextCh = symb, index = ch, lineText = cm.getLine(line); - // Simple search for closing paren--just count openings and closings till - // we find our match - // TODO: use info from CodeMirror to ignore closing brackets in comments - // and quotes, etc. - while (line !== endLine && depth > 0) { - index += increment; - nextCh = lineText.charAt(index); - if (!nextCh) { - line += increment; - lineText = cm.getLine(line) || ''; - if (increment > 0) { - index = 0; - } else { - var lineLen = lineText.length; - index = (lineLen > 0) ? (lineLen-1) : 0; - } - nextCh = lineText.charAt(index); - } - var revSymbContext = cm.getTokenAt(Pos(line, index + 1)).type; - var revSymbCtxLevel = getContextLevel(revSymbContext); - if (symbCtxLevel >= revSymbCtxLevel) { - if (nextCh === symb) { - depth++; - } else if (nextCh === reverseSymb) { - depth--; - } - } - } - - if (nextCh) { - return Pos(line, index); - } - return cur; - } - - // TODO: perhaps this finagling of start and end positions belonds - // in codmirror/replaceRange? - function selectCompanionObject(cm, revSymb, inclusive) { - var cur = copyCursor(cm.getCursor()); - var end = findMatchedSymbol(cm, cur, revSymb); - var start = findMatchedSymbol(cm, end); - - if ((start.line == end.line && start.ch > end.ch) - || (start.line > end.line)) { - var tmp = start; - start = end; - end = tmp; - } - - if (inclusive) { - end.ch += 1; - } else { - start.ch += 1; - } - - return { start: start, end: end }; - } - - // Takes in a symbol and a cursor and tries to simulate text objects that - // have identical opening and closing symbols - // TODO support across multiple lines - function findBeginningAndEnd(cm, symb, inclusive) { - var cur = copyCursor(cm.getCursor()); - var line = cm.getLine(cur.line); - var chars = line.split(''); - var start, end, i, len; - var firstIndex = chars.indexOf(symb); - - // the decision tree is to always look backwards for the beginning first, - // but if the cursor is in front of the first instance of the symb, - // then move the cursor forward - if (cur.ch < firstIndex) { - cur.ch = firstIndex; - // Why is this line even here??? - // cm.setCursor(cur.line, firstIndex+1); - } - // otherwise if the cursor is currently on the closing symbol - else if (firstIndex < cur.ch && chars[cur.ch] == symb) { - end = cur.ch; // assign end to the current cursor - --cur.ch; // make sure to look backwards - } - - // if we're currently on the symbol, we've got a start - if (chars[cur.ch] == symb && !end) { - start = cur.ch + 1; // assign start to ahead of the cursor - } else { - // go backwards to find the start - for (i = cur.ch; i > -1 && !start; i--) { - if (chars[i] == symb) { - start = i + 1; - } - } - } - - // look forwards for the end symbol - if (start && !end) { - for (i = start, len = chars.length; i < len && !end; i++) { - if (chars[i] == symb) { - end = i; - } - } - } - - // nothing found - if (!start || !end) { - return { start: cur, end: cur }; - } - - // include the symbols - if (inclusive) { - --start; ++end; - } - - return { - start: Pos(cur.line, start), - end: Pos(cur.line, end) - }; - } - - // Search functions - defineOption('pcre', true, 'boolean'); - function SearchState() {} - SearchState.prototype = { - getQuery: function() { - return vimGlobalState.query; - }, - setQuery: function(query) { - vimGlobalState.query = query; - }, - getOverlay: function() { - return this.searchOverlay; - }, - setOverlay: function(overlay) { - this.searchOverlay = overlay; - }, - isReversed: function() { - return vimGlobalState.isReversed; - }, - setReversed: function(reversed) { - vimGlobalState.isReversed = reversed; - } - }; - function getSearchState(cm) { - var vim = cm.state.vim; - return vim.searchState_ || (vim.searchState_ = new SearchState()); - } - function dialog(cm, template, shortText, onClose, options) { - if (cm.openDialog) { - cm.openDialog(template, onClose, { bottom: true, value: options.value, - onKeyDown: options.onKeyDown, onKeyUp: options.onKeyUp }); - } - else { - onClose(prompt(shortText, '')); - } - } - - function findUnescapedSlashes(str) { - var escapeNextChar = false; - var slashes = []; - for (var i = 0; i < str.length; i++) { - var c = str.charAt(i); - if (!escapeNextChar && c == '/') { - slashes.push(i); - } - escapeNextChar = !escapeNextChar && (c == '\\'); - } - return slashes; - } - - // Translates a search string from ex (vim) syntax into javascript form. - function translateRegex(str) { - // When these match, add a '\' if unescaped or remove one if escaped. - var specials = ['|', '(', ')', '{']; - // Remove, but never add, a '\' for these. - var unescape = ['}']; - var escapeNextChar = false; - var out = []; - for (var i = -1; i < str.length; i++) { - var c = str.charAt(i) || ''; - var n = str.charAt(i+1) || ''; - var specialComesNext = (specials.indexOf(n) != -1); - if (escapeNextChar) { - if (c !== '\\' || !specialComesNext) { - out.push(c); - } - escapeNextChar = false; - } else { - if (c === '\\') { - escapeNextChar = true; - // Treat the unescape list as special for removing, but not adding '\'. - if (unescape.indexOf(n) != -1) { - specialComesNext = true; - } - // Not passing this test means removing a '\'. - if (!specialComesNext || n === '\\') { - out.push(c); - } - } else { - out.push(c); - if (specialComesNext && n !== '\\') { - out.push('\\'); - } - } - } - } - return out.join(''); - } - - // Translates the replace part of a search and replace from ex (vim) syntax into - // javascript form. Similar to translateRegex, but additionally fixes back references - // (translates '\[0..9]' to '$[0..9]') and follows different rules for escaping '$'. - function translateRegexReplace(str) { - var escapeNextChar = false; - var out = []; - for (var i = -1; i < str.length; i++) { - var c = str.charAt(i) || ''; - var n = str.charAt(i+1) || ''; - if (escapeNextChar) { - // At any point in the loop, escapeNextChar is true if the previous - // character was a '\' and was not escaped. - out.push(c); - escapeNextChar = false; - } else { - if (c === '\\') { - escapeNextChar = true; - if ((isNumber(n) || n === '$')) { - out.push('$'); - } else if (n !== '/' && n !== '\\') { - out.push('\\'); - } - } else { - if (c === '$') { - out.push('$'); - } - out.push(c); - if (n === '/') { - out.push('\\'); - } - } - } - } - return out.join(''); - } - - // Unescape \ and / in the replace part, for PCRE mode. - function unescapeRegexReplace(str) { - var stream = new CodeMirror.StringStream(str); - var output = []; - while (!stream.eol()) { - // Search for \. - while (stream.peek() && stream.peek() != '\\') { - output.push(stream.next()); - } - if (stream.match('\\/', true)) { - // \/ => / - output.push('/'); - } else if (stream.match('\\\\', true)) { - // \\ => \ - output.push('\\'); - } else { - // Don't change anything - output.push(stream.next()); - } - } - return output.join(''); - } - - /** - * Extract the regular expression from the query and return a Regexp object. - * Returns null if the query is blank. - * If ignoreCase is passed in, the Regexp object will have the 'i' flag set. - * If smartCase is passed in, and the query contains upper case letters, - * then ignoreCase is overridden, and the 'i' flag will not be set. - * If the query contains the /i in the flag part of the regular expression, - * then both ignoreCase and smartCase are ignored, and 'i' will be passed - * through to the Regex object. - */ - function parseQuery(query, ignoreCase, smartCase) { - // Check if the query is already a regex. - if (query instanceof RegExp) { return query; } - // First try to extract regex + flags from the input. If no flags found, - // extract just the regex. IE does not accept flags directly defined in - // the regex string in the form /regex/flags - var slashes = findUnescapedSlashes(query); - var regexPart; - var forceIgnoreCase; - if (!slashes.length) { - // Query looks like 'regexp' - regexPart = query; - } else { - // Query looks like 'regexp/...' - regexPart = query.substring(0, slashes[0]); - var flagsPart = query.substring(slashes[0]); - forceIgnoreCase = (flagsPart.indexOf('i') != -1); - } - if (!regexPart) { - return null; - } - if (!getOption('pcre')) { - regexPart = translateRegex(regexPart); - } - if (smartCase) { - ignoreCase = (/^[^A-Z]*$/).test(regexPart); - } - var regexp = new RegExp(regexPart, - (ignoreCase || forceIgnoreCase) ? 'i' : undefined); - return regexp; - } - function showConfirm(cm, text) { - if (cm.openNotification) { - cm.openNotification('' + text + '', - {bottom: true, duration: 5000}); - } else { - alert(text); - } - } - function makePrompt(prefix, desc) { - var raw = ''; - if (prefix) { - raw += '' + prefix + ''; - } - raw += ' ' + - ''; - if (desc) { - raw += ''; - raw += desc; - raw += ''; - } - return raw; - } - var searchPromptDesc = '(Javascript regexp)'; - function showPrompt(cm, options) { - var shortText = (options.prefix || '') + ' ' + (options.desc || ''); - var prompt = makePrompt(options.prefix, options.desc); - dialog(cm, prompt, shortText, options.onClose, options); - } - function regexEqual(r1, r2) { - if (r1 instanceof RegExp && r2 instanceof RegExp) { - var props = ['global', 'multiline', 'ignoreCase', 'source']; - for (var i = 0; i < props.length; i++) { - var prop = props[i]; - if (r1[prop] !== r2[prop]) { - return false; - } - } - return true; - } - return false; - } - // Returns true if the query is valid. - function updateSearchQuery(cm, rawQuery, ignoreCase, smartCase) { - if (!rawQuery) { - return; - } - var state = getSearchState(cm); - var query = parseQuery(rawQuery, !!ignoreCase, !!smartCase); - if (!query) { - return; - } - highlightSearchMatches(cm, query); - if (regexEqual(query, state.getQuery())) { - return query; - } - state.setQuery(query); - return query; - } - function searchOverlay(query) { - if (query.source.charAt(0) == '^') { - var matchSol = true; - } - return { - token: function(stream) { - if (matchSol && !stream.sol()) { - stream.skipToEnd(); - return; - } - var match = stream.match(query, false); - if (match) { - if (match[0].length == 0) { - // Matched empty string, skip to next. - stream.next(); - return 'searching'; - } - if (!stream.sol()) { - // Backtrack 1 to match \b - stream.backUp(1); - if (!query.exec(stream.next() + match[0])) { - stream.next(); - return null; - } - } - stream.match(query); - return 'searching'; - } - while (!stream.eol()) { - stream.next(); - if (stream.match(query, false)) break; - } - }, - query: query - }; - } - function highlightSearchMatches(cm, query) { - var overlay = getSearchState(cm).getOverlay(); - if (!overlay || query != overlay.query) { - if (overlay) { - cm.removeOverlay(overlay); - } - overlay = searchOverlay(query); - cm.addOverlay(overlay); - getSearchState(cm).setOverlay(overlay); - } - } - function findNext(cm, prev, query, repeat) { - if (repeat === undefined) { repeat = 1; } - return cm.operation(function() { - var pos = cm.getCursor(); - var cursor = cm.getSearchCursor(query, pos); - for (var i = 0; i < repeat; i++) { - var found = cursor.find(prev); - if (i == 0 && found && cursorEqual(cursor.from(), pos)) { found = cursor.find(prev); } - if (!found) { - // SearchCursor may have returned null because it hit EOF, wrap - // around and try again. - cursor = cm.getSearchCursor(query, - (prev) ? Pos(cm.lastLine()) : Pos(cm.firstLine(), 0) ); - if (!cursor.find(prev)) { - return; - } - } - } - return cursor.from(); - }); - } - function clearSearchHighlight(cm) { - cm.removeOverlay(getSearchState(cm).getOverlay()); - getSearchState(cm).setOverlay(null); - } - /** - * Check if pos is in the specified range, INCLUSIVE. - * Range can be specified with 1 or 2 arguments. - * If the first range argument is an array, treat it as an array of line - * numbers. Match pos against any of the lines. - * If the first range argument is a number, - * if there is only 1 range argument, check if pos has the same line - * number - * if there are 2 range arguments, then check if pos is in between the two - * range arguments. - */ - function isInRange(pos, start, end) { - if (typeof pos != 'number') { - // Assume it is a cursor position. Get the line number. - pos = pos.line; - } - if (start instanceof Array) { - return inArray(pos, start); - } else { - if (end) { - return (pos >= start && pos <= end); - } else { - return pos == start; - } - } - } - function getUserVisibleLines(cm) { - var scrollInfo = cm.getScrollInfo(); - var occludeToleranceTop = 6; - var occludeToleranceBottom = 10; - var from = cm.coordsChar({left:0, top: occludeToleranceTop + scrollInfo.top}, 'local'); - var bottomY = scrollInfo.clientHeight - occludeToleranceBottom + scrollInfo.top; - var to = cm.coordsChar({left:0, top: bottomY}, 'local'); - return {top: from.line, bottom: to.line}; - } - - // Ex command handling - // Care must be taken when adding to the default Ex command map. For any - // pair of commands that have a shared prefix, at least one of their - // shortNames must not match the prefix of the other command. - var defaultExCommandMap = [ - { name: 'map' }, - { name: 'nmap', shortName: 'nm' }, - { name: 'vmap', shortName: 'vm' }, - { name: 'unmap' }, - { name: 'write', shortName: 'w' }, - { name: 'undo', shortName: 'u' }, - { name: 'redo', shortName: 'red' }, - { name: 'set', shortName: 'set' }, - { name: 'sort', shortName: 'sor' }, - { name: 'substitute', shortName: 's' }, - { name: 'nohlsearch', shortName: 'noh' }, - { name: 'delmarks', shortName: 'delm' }, - { name: 'registers', shortName: 'reg' } - ]; - Vim.ExCommandDispatcher = function() { - this.buildCommandMap_(); - }; - Vim.ExCommandDispatcher.prototype = { - processCommand: function(cm, input) { - var vim = cm.state.vim; - if (vim.visualMode) { - exitVisualMode(cm); - } - var inputStream = new CodeMirror.StringStream(input); - var params = {}; - params.input = input; - try { - this.parseInput_(cm, inputStream, params); - } catch(e) { - showConfirm(cm, e); - throw e; - } - var commandName; - if (!params.commandName) { - // If only a line range is defined, move to the line. - if (params.line !== undefined) { - commandName = 'move'; - } - } else { - var command = this.matchCommand_(params.commandName); - if (command) { - commandName = command.name; - this.parseCommandArgs_(inputStream, params, command); - if (command.type == 'exToKey') { - // Handle Ex to Key mapping. - for (var i = 0; i < command.toKeys.length; i++) { - CodeMirror.Vim.handleKey(cm, command.toKeys[i]); - } - return; - } else if (command.type == 'exToEx') { - // Handle Ex to Ex mapping. - this.processCommand(cm, command.toInput); - return; - } - } - } - if (!commandName) { - showConfirm(cm, 'Not an editor command ":' + input + '"'); - return; - } - try { - exCommands[commandName](cm, params); - } catch(e) { - showConfirm(cm, e); - throw e; - } - }, - parseInput_: function(cm, inputStream, result) { - inputStream.eatWhile(':'); - // Parse range. - if (inputStream.eat('%')) { - result.line = cm.firstLine(); - result.lineEnd = cm.lastLine(); - } else { - result.line = this.parseLineSpec_(cm, inputStream); - if (result.line !== undefined && inputStream.eat(',')) { - result.lineEnd = this.parseLineSpec_(cm, inputStream); - } - } - - // Parse command name. - var commandMatch = inputStream.match(/^(\w+)/); - if (commandMatch) { - result.commandName = commandMatch[1]; - } else { - result.commandName = inputStream.match(/.*/)[0]; - } - - return result; - }, - parseLineSpec_: function(cm, inputStream) { - var numberMatch = inputStream.match(/^(\d+)/); - if (numberMatch) { - return parseInt(numberMatch[1], 10) - 1; - } - switch (inputStream.next()) { - case '.': - return cm.getCursor().line; - case '$': - return cm.lastLine(); - case '\'': - var mark = cm.state.vim.marks[inputStream.next()]; - if (mark && mark.find()) { - return mark.find().line; - } - throw new Error('Mark not set'); - default: - inputStream.backUp(1); - return undefined; - } - }, - parseCommandArgs_: function(inputStream, params, command) { - if (inputStream.eol()) { - return; - } - params.argString = inputStream.match(/.*/)[0]; - // Parse command-line arguments - var delim = command.argDelimiter || /\s+/; - var args = trim(params.argString).split(delim); - if (args.length && args[0]) { - params.args = args; - } - }, - matchCommand_: function(commandName) { - // Return the command in the command map that matches the shortest - // prefix of the passed in command name. The match is guaranteed to be - // unambiguous if the defaultExCommandMap's shortNames are set up - // correctly. (see @code{defaultExCommandMap}). - for (var i = commandName.length; i > 0; i--) { - var prefix = commandName.substring(0, i); - if (this.commandMap_[prefix]) { - var command = this.commandMap_[prefix]; - if (command.name.indexOf(commandName) === 0) { - return command; - } - } - } - return null; - }, - buildCommandMap_: function() { - this.commandMap_ = {}; - for (var i = 0; i < defaultExCommandMap.length; i++) { - var command = defaultExCommandMap[i]; - var key = command.shortName || command.name; - this.commandMap_[key] = command; - } - }, - map: function(lhs, rhs, ctx) { - if (lhs != ':' && lhs.charAt(0) == ':') { - if (ctx) { throw Error('Mode not supported for ex mappings'); } - var commandName = lhs.substring(1); - if (rhs != ':' && rhs.charAt(0) == ':') { - // Ex to Ex mapping - this.commandMap_[commandName] = { - name: commandName, - type: 'exToEx', - toInput: rhs.substring(1), - user: true - }; - } else { - // Ex to key mapping - this.commandMap_[commandName] = { - name: commandName, - type: 'exToKey', - toKeys: parseKeyString(rhs), - user: true - }; - } - } else { - if (rhs != ':' && rhs.charAt(0) == ':') { - // Key to Ex mapping. - var mapping = { - keys: parseKeyString(lhs), - type: 'keyToEx', - exArgs: { input: rhs.substring(1) }, - user: true}; - if (ctx) { mapping.context = ctx; } - defaultKeymap.unshift(mapping); - } else { - // Key to key mapping - var mapping = { - keys: parseKeyString(lhs), - type: 'keyToKey', - toKeys: parseKeyString(rhs), - user: true - }; - if (ctx) { mapping.context = ctx; } - defaultKeymap.unshift(mapping); - } - } - }, - unmap: function(lhs, ctx) { - var arrayEquals = function(a, b) { - if (a === b) return true; - if (a == null || b == null) return true; - if (a.length != b.length) return false; - for (var i = 0; i < a.length; i++) { - if (a[i] !== b[i]) return false; - } - return true; - }; - if (lhs != ':' && lhs.charAt(0) == ':') { - // Ex to Ex or Ex to key mapping - if (ctx) { throw Error('Mode not supported for ex mappings'); } - var commandName = lhs.substring(1); - if (this.commandMap_[commandName] && this.commandMap_[commandName].user) { - delete this.commandMap_[commandName]; - return; - } - } else { - // Key to Ex or key to key mapping - var keys = parseKeyString(lhs); - for (var i = 0; i < defaultKeymap.length; i++) { - if (arrayEquals(keys, defaultKeymap[i].keys) - && defaultKeymap[i].context === ctx - && defaultKeymap[i].user) { - defaultKeymap.splice(i, 1); - return; - } - } - } - throw Error('No such mapping.'); - } - }; - - // Converts a key string sequence of the form abd into Vim's - // keymap representation. - function parseKeyString(str) { - var key, match; - var keys = []; - while (str) { - match = (/<\w+-.+?>|<\w+>|./).exec(str); - if (match === null)break; - key = match[0]; - str = str.substring(match.index + key.length); - keys.push(key); - } - return keys; - } - - var exCommands = { - map: function(cm, params, ctx) { - var mapArgs = params.args; - if (!mapArgs || mapArgs.length < 2) { - if (cm) { - showConfirm(cm, 'Invalid mapping: ' + params.input); - } - return; - } - exCommandDispatcher.map(mapArgs[0], mapArgs[1], ctx); - }, - nmap: function(cm, params) { this.map(cm, params, 'normal'); }, - vmap: function(cm, params) { this.map(cm, params, 'visual'); }, - unmap: function(cm, params, ctx) { - var mapArgs = params.args; - if (!mapArgs || mapArgs.length < 1) { - if (cm) { - showConfirm(cm, 'No such mapping: ' + params.input); - } - return; - } - exCommandDispatcher.unmap(mapArgs[0], ctx); - }, - move: function(cm, params) { - commandDispatcher.processCommand(cm, cm.state.vim, { - type: 'motion', - motion: 'moveToLineOrEdgeOfDocument', - motionArgs: { forward: false, explicitRepeat: true, - linewise: true }, - repeatOverride: params.line+1}); - }, - set: function(cm, params) { - var setArgs = params.args; - if (!setArgs || setArgs.length < 1) { - if (cm) { - showConfirm(cm, 'Invalid mapping: ' + params.input); - } - return; - } - var expr = setArgs[0].split('='); - var optionName = expr[0]; - var value = expr[1]; - var forceGet = false; - - if (optionName.charAt(optionName.length - 1) == '?') { - // If post-fixed with ?, then the set is actually a get. - if (value) { throw Error('Trailing characters: ' + params.argString); } - optionName = optionName.substring(0, optionName.length - 1); - forceGet = true; - } - if (value === undefined && optionName.substring(0, 2) == 'no') { - // To set boolean options to false, the option name is prefixed with - // 'no'. - optionName = optionName.substring(2); - value = false; - } - var optionIsBoolean = options[optionName] && options[optionName].type == 'boolean'; - if (optionIsBoolean && value == undefined) { - // Calling set with a boolean option sets it to true. - value = true; - } - if (!optionIsBoolean && !value || forceGet) { - var oldValue = getOption(optionName); - // If no value is provided, then we assume this is a get. - if (oldValue === true || oldValue === false) { - showConfirm(cm, ' ' + (oldValue ? '' : 'no') + optionName); - } else { - showConfirm(cm, ' ' + optionName + '=' + oldValue); - } - } else { - setOption(optionName, value); - } - }, - registers: function(cm,params) { - var regArgs = params.args; - var registers = vimGlobalState.registerController.registers; - var regInfo = '----------Registers----------

'; - if (!regArgs) { - for (var registerName in registers) { - var text = registers[registerName].toString(); - if (text.length) { - regInfo += '"' + registerName + ' ' + text + '
'; - } - } - } else { - var registerName; - regArgs = regArgs.join(''); - for (var i = 0; i < regArgs.length; i++) { - registerName = regArgs.charAt(i); - if (!vimGlobalState.registerController.isValidRegister(registerName)) { - continue; - } - var register = registers[registerName] || new Register(); - regInfo += '"' + registerName + ' ' + register.text + '
'; - } - } - showConfirm(cm, regInfo); - }, - sort: function(cm, params) { - var reverse, ignoreCase, unique, number; - function parseArgs() { - if (params.argString) { - var args = new CodeMirror.StringStream(params.argString); - if (args.eat('!')) { reverse = true; } - if (args.eol()) { return; } - if (!args.eatSpace()) { return 'Invalid arguments'; } - var opts = args.match(/[a-z]+/); - if (opts) { - opts = opts[0]; - ignoreCase = opts.indexOf('i') != -1; - unique = opts.indexOf('u') != -1; - var decimal = opts.indexOf('d') != -1 && 1; - var hex = opts.indexOf('x') != -1 && 1; - var octal = opts.indexOf('o') != -1 && 1; - if (decimal + hex + octal > 1) { return 'Invalid arguments'; } - number = decimal && 'decimal' || hex && 'hex' || octal && 'octal'; - } - if (args.eatSpace() && args.match(/\/.*\//)) { 'patterns not supported'; } - } - } - var err = parseArgs(); - if (err) { - showConfirm(cm, err + ': ' + params.argString); - return; - } - var lineStart = params.line || cm.firstLine(); - var lineEnd = params.lineEnd || params.line || cm.lastLine(); - if (lineStart == lineEnd) { return; } - var curStart = Pos(lineStart, 0); - var curEnd = Pos(lineEnd, lineLength(cm, lineEnd)); - var text = cm.getRange(curStart, curEnd).split('\n'); - var numberRegex = (number == 'decimal') ? /(-?)([\d]+)/ : - (number == 'hex') ? /(-?)(?:0x)?([0-9a-f]+)/i : - (number == 'octal') ? /([0-7]+)/ : null; - var radix = (number == 'decimal') ? 10 : (number == 'hex') ? 16 : (number == 'octal') ? 8 : null; - var numPart = [], textPart = []; - if (number) { - for (var i = 0; i < text.length; i++) { - if (numberRegex.exec(text[i])) { - numPart.push(text[i]); - } else { - textPart.push(text[i]); - } - } - } else { - textPart = text; - } - function compareFn(a, b) { - if (reverse) { var tmp; tmp = a; a = b; b = tmp; } - if (ignoreCase) { a = a.toLowerCase(); b = b.toLowerCase(); } - var anum = number && numberRegex.exec(a); - var bnum = number && numberRegex.exec(b); - if (!anum) { return a < b ? -1 : 1; } - anum = parseInt((anum[1] + anum[2]).toLowerCase(), radix); - bnum = parseInt((bnum[1] + bnum[2]).toLowerCase(), radix); - return anum - bnum; - } - numPart.sort(compareFn); - textPart.sort(compareFn); - text = (!reverse) ? textPart.concat(numPart) : numPart.concat(textPart); - if (unique) { // Remove duplicate lines - var textOld = text; - var lastLine; - text = []; - for (var i = 0; i < textOld.length; i++) { - if (textOld[i] != lastLine) { - text.push(textOld[i]); - } - lastLine = textOld[i]; - } - } - cm.replaceRange(text.join('\n'), curStart, curEnd); - }, - substitute: function(cm, params) { - if (!cm.getSearchCursor) { - throw new Error('Search feature not available. Requires searchcursor.js or ' + - 'any other getSearchCursor implementation.'); - } - var argString = params.argString; - var slashes = findUnescapedSlashes(argString); - if (slashes[0] !== 0) { - showConfirm(cm, 'Substitutions should be of the form ' + - ':s/pattern/replace/'); - return; - } - var regexPart = argString.substring(slashes[0] + 1, slashes[1]); - var replacePart = ''; - var flagsPart; - var count; - var confirm = false; // Whether to confirm each replace. - if (slashes[1]) { - replacePart = argString.substring(slashes[1] + 1, slashes[2]); - if (getOption('pcre')) { - replacePart = unescapeRegexReplace(replacePart); - } else { - replacePart = translateRegexReplace(replacePart); - } - } - if (slashes[2]) { - // After the 3rd slash, we can have flags followed by a space followed - // by count. - var trailing = argString.substring(slashes[2] + 1).split(' '); - flagsPart = trailing[0]; - count = parseInt(trailing[1]); - } - if (flagsPart) { - if (flagsPart.indexOf('c') != -1) { - confirm = true; - flagsPart.replace('c', ''); - } - regexPart = regexPart + '/' + flagsPart; - } - if (regexPart) { - // If regex part is empty, then use the previous query. Otherwise use - // the regex part as the new query. - try { - updateSearchQuery(cm, regexPart, true /** ignoreCase */, - true /** smartCase */); - } catch (e) { - showConfirm(cm, 'Invalid regex: ' + regexPart); - return; - } - } - var state = getSearchState(cm); - var query = state.getQuery(); - var lineStart = (params.line !== undefined) ? params.line : cm.getCursor().line; - var lineEnd = params.lineEnd || lineStart; - if (count) { - lineStart = lineEnd; - lineEnd = lineStart + count - 1; - } - var startPos = clipCursorToContent(cm, Pos(lineStart, 0)); - var cursor = cm.getSearchCursor(query, startPos); - doReplace(cm, confirm, lineStart, lineEnd, cursor, query, replacePart); - }, - redo: CodeMirror.commands.redo, - undo: CodeMirror.commands.undo, - write: function(cm) { - if (CodeMirror.commands.save) { - // If a save command is defined, call it. - CodeMirror.commands.save(cm); - } else { - // Saves to text area if no save command is defined. - cm.save(); - } - }, - nohlsearch: function(cm) { - clearSearchHighlight(cm); - }, - delmarks: function(cm, params) { - if (!params.argString || !trim(params.argString)) { - showConfirm(cm, 'Argument required'); - return; - } - - var state = cm.state.vim; - var stream = new CodeMirror.StringStream(trim(params.argString)); - while (!stream.eol()) { - stream.eatSpace(); - - // Record the streams position at the beginning of the loop for use - // in error messages. - var count = stream.pos; - - if (!stream.match(/[a-zA-Z]/, false)) { - showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); - return; - } - - var sym = stream.next(); - // Check if this symbol is part of a range - if (stream.match('-', true)) { - // This symbol is part of a range. - - // The range must terminate at an alphabetic character. - if (!stream.match(/[a-zA-Z]/, false)) { - showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); - return; - } - - var startMark = sym; - var finishMark = stream.next(); - // The range must terminate at an alphabetic character which - // shares the same case as the start of the range. - if (isLowerCase(startMark) && isLowerCase(finishMark) || - isUpperCase(startMark) && isUpperCase(finishMark)) { - var start = startMark.charCodeAt(0); - var finish = finishMark.charCodeAt(0); - if (start >= finish) { - showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); - return; - } - - // Because marks are always ASCII values, and we have - // determined that they are the same case, we can use - // their char codes to iterate through the defined range. - for (var j = 0; j <= finish - start; j++) { - var mark = String.fromCharCode(start + j); - delete state.marks[mark]; - } - } else { - showConfirm(cm, 'Invalid argument: ' + startMark + '-'); - return; - } - } else { - // This symbol is a valid mark, and is not part of a range. - delete state.marks[sym]; - } - } - } - }; - - var exCommandDispatcher = new Vim.ExCommandDispatcher(); - - /** - * @param {CodeMirror} cm CodeMirror instance we are in. - * @param {boolean} confirm Whether to confirm each replace. - * @param {Cursor} lineStart Line to start replacing from. - * @param {Cursor} lineEnd Line to stop replacing at. - * @param {RegExp} query Query for performing matches with. - * @param {string} replaceWith Text to replace matches with. May contain $1, - * $2, etc for replacing captured groups using Javascript replace. - */ - function doReplace(cm, confirm, lineStart, lineEnd, searchCursor, query, - replaceWith) { - // Set up all the functions. - cm.state.vim.exMode = true; - var done = false; - var lastPos = searchCursor.from(); - function replaceAll() { - cm.operation(function() { - while (!done) { - replace(); - next(); - } - stop(); - }); - } - function replace() { - var text = cm.getRange(searchCursor.from(), searchCursor.to()); - var newText = text.replace(query, replaceWith); - searchCursor.replace(newText); - } - function next() { - var found = searchCursor.findNext(); - if (!found) { - done = true; - } else if (isInRange(searchCursor.from(), lineStart, lineEnd)) { - cm.scrollIntoView(searchCursor.from(), 30); - cm.setSelection(searchCursor.from(), searchCursor.to()); - lastPos = searchCursor.from(); - done = false; - } else { - done = true; - } - } - function stop(close) { - if (close) { close(); } - cm.focus(); - if (lastPos) { - cm.setCursor(lastPos); - var vim = cm.state.vim; - vim.exMode = false; - vim.lastHPos = vim.lastHSPos = lastPos.ch; - } - } - function onPromptKeyDown(e, _value, close) { - // Swallow all keys. - CodeMirror.e_stop(e); - var keyName = CodeMirror.keyName(e); - switch (keyName) { - case 'Y': - replace(); next(); break; - case 'N': - next(); break; - case 'A': - cm.operation(replaceAll); break; - case 'L': - replace(); - // fall through and exit. - case 'Q': - case 'Esc': - case 'Ctrl-C': - case 'Ctrl-[': - stop(close); - break; - } - if (done) { stop(close); } - } - - // Actually do replace. - next(); - if (done) { - showConfirm(cm, 'No matches for ' + query.source); - return; - } - if (!confirm) { - replaceAll(); - return; - } - showPrompt(cm, { - prefix: 'replace with ' + replaceWith + ' (y/n/a/q/l)', - onKeyDown: onPromptKeyDown - }); - } - - // Register Vim with CodeMirror - function buildVimKeyMap() { - /** - * Handle the raw key event from CodeMirror. Translate the - * Shift + key modifier to the resulting letter, while preserving other - * modifers. - */ - function cmKeyToVimKey(key, modifier) { - var vimKey = key; - if (isUpperCase(vimKey) && modifier == 'Ctrl') { - vimKey = vimKey.toLowerCase(); - } - if (modifier) { - // Vim will parse modifier+key combination as a single key. - vimKey = modifier.charAt(0) + '-' + vimKey; - } - var specialKey = ({Enter:'CR',Backspace:'BS',Delete:'Del'})[vimKey]; - vimKey = specialKey ? specialKey : vimKey; - vimKey = vimKey.length > 1 ? '<'+ vimKey + '>' : vimKey; - return vimKey; - } - - // Closure to bind CodeMirror, key, modifier. - function keyMapper(vimKey) { - return function(cm) { - CodeMirror.Vim.handleKey(cm, vimKey); - }; - } - - var cmToVimKeymap = { - 'nofallthrough': true, - 'style': 'fat-cursor' - }; - function bindKeys(keys, modifier) { - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!modifier && key.length == 1) { - // Wrap all keys without modifiers with '' to identify them by their - // key characters instead of key identifiers. - key = "'" + key + "'"; - } - var vimKey = cmKeyToVimKey(keys[i], modifier); - var cmKey = modifier ? modifier + '-' + key : key; - cmToVimKeymap[cmKey] = keyMapper(vimKey); - } - } - bindKeys(upperCaseAlphabet); - bindKeys(lowerCaseAlphabet); - bindKeys(upperCaseAlphabet, 'Ctrl'); - bindKeys(specialSymbols); - bindKeys(specialSymbols, 'Ctrl'); - bindKeys(numbers); - bindKeys(numbers, 'Ctrl'); - bindKeys(specialKeys); - bindKeys(specialKeys, 'Ctrl'); - return cmToVimKeymap; - } - CodeMirror.keyMap.vim = buildVimKeyMap(); - - function exitInsertMode(cm) { - var vim = cm.state.vim; - var macroModeState = vimGlobalState.macroModeState; - var isPlaying = macroModeState.isPlaying; - if (!isPlaying) { - cm.off('change', onChange); - cm.off('cursorActivity', onCursorActivity); - CodeMirror.off(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); - } - if (!isPlaying && vim.insertModeRepeat > 1) { - // Perform insert mode repeat for commands like 3,a and 3,o. - repeatLastEdit(cm, vim, vim.insertModeRepeat - 1, - true /** repeatForInsert */); - vim.lastEditInputState.repeatOverride = vim.insertModeRepeat; - } - delete vim.insertModeRepeat; - cm.setCursor(cm.getCursor().line, cm.getCursor().ch-1); - vim.insertMode = false; - cm.setOption('keyMap', 'vim'); - cm.setOption('disableInput', true); - cm.toggleOverwrite(false); // exit replace mode if we were in it. - CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); - if (macroModeState.isRecording) { - logInsertModeChange(macroModeState); - } - } - - CodeMirror.keyMap['vim-insert'] = { - // TODO: override navigation keys so that Esc will cancel automatic - // indentation from o, O, i_ - 'Esc': exitInsertMode, - 'Ctrl-[': exitInsertMode, - 'Ctrl-C': exitInsertMode, - 'Ctrl-N': 'autocomplete', - 'Ctrl-P': 'autocomplete', - 'Enter': function(cm) { - var fn = CodeMirror.commands.newlineAndIndentContinueComment || - CodeMirror.commands.newlineAndIndent; - fn(cm); - }, - fallthrough: ['default'] - }; - - CodeMirror.keyMap['vim-replace'] = { - 'Backspace': 'goCharLeft', - fallthrough: ['vim-insert'] - }; - - function executeMacroRegister(cm, vim, macroModeState, registerName) { - var register = vimGlobalState.registerController.getRegister(registerName); - var keyBuffer = register.keyBuffer; - var imc = 0; - macroModeState.isPlaying = true; - for (var i = 0; i < keyBuffer.length; i++) { - var text = keyBuffer[i]; - var match, key; - while (text) { - // Pull off one command key, which is either a single character - // or a special sequence wrapped in '<' and '>', e.g. ''. - match = (/<\w+-.+?>|<\w+>|./).exec(text); - key = match[0]; - text = text.substring(match.index + key.length); - CodeMirror.Vim.handleKey(cm, key); - if (vim.insertMode) { - repeatInsertModeChanges( - cm, register.insertModeChanges[imc++].changes, 1); - exitInsertMode(cm); - } - } - }; - macroModeState.isPlaying = false; - } - - function logKey(macroModeState, key) { - if (macroModeState.isPlaying) { return; } - var registerName = macroModeState.latestRegister; - var register = vimGlobalState.registerController.getRegister(registerName); - if (register) { - register.pushText(key); - } - } - - function logInsertModeChange(macroModeState) { - if (macroModeState.isPlaying) { return; } - var registerName = macroModeState.latestRegister; - var register = vimGlobalState.registerController.getRegister(registerName); - if (register) { - register.pushInsertModeChanges(macroModeState.lastInsertModeChanges); - } - } - - /** - * Listens for changes made in insert mode. - * Should only be active in insert mode. - */ - function onChange(_cm, changeObj) { - var macroModeState = vimGlobalState.macroModeState; - var lastChange = macroModeState.lastInsertModeChanges; - if (!macroModeState.isPlaying) { - while(changeObj) { - lastChange.expectCursorActivityForChange = true; - if (changeObj.origin == '+input' || changeObj.origin == 'paste' - || changeObj.origin === undefined /* only in testing */) { - var text = changeObj.text.join('\n'); - lastChange.changes.push(text); - } - // Change objects may be chained with next. - changeObj = changeObj.next; - } - } - } - - /** - * Listens for any kind of cursor activity on CodeMirror. - * - For tracking cursor activity in insert mode. - * - Should only be active in insert mode. - */ - function onCursorActivity() { - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isPlaying) { return; } - var lastChange = macroModeState.lastInsertModeChanges; - if (lastChange.expectCursorActivityForChange) { - lastChange.expectCursorActivityForChange = false; - } else { - // Cursor moved outside the context of an edit. Reset the change. - lastChange.changes = []; - } - } - - /** Wrapper for special keys pressed in insert mode */ - function InsertModeKey(keyName) { - this.keyName = keyName; - } - - /** - * Handles raw key down events from the text area. - * - Should only be active in insert mode. - * - For recording deletes in insert mode. - */ - function onKeyEventTargetKeyDown(e) { - var macroModeState = vimGlobalState.macroModeState; - var lastChange = macroModeState.lastInsertModeChanges; - var keyName = CodeMirror.keyName(e); - function onKeyFound() { - lastChange.changes.push(new InsertModeKey(keyName)); - return true; - } - if (keyName.indexOf('Delete') != -1 || keyName.indexOf('Backspace') != -1) { - CodeMirror.lookupKey(keyName, ['vim-insert'], onKeyFound); - } - } - - /** - * Repeats the last edit, which includes exactly 1 command and at most 1 - * insert. Operator and motion commands are read from lastEditInputState, - * while action commands are read from lastEditActionCommand. - * - * If repeatForInsert is true, then the function was called by - * exitInsertMode to repeat the insert mode changes the user just made. The - * corresponding enterInsertMode call was made with a count. - */ - function repeatLastEdit(cm, vim, repeat, repeatForInsert) { - var macroModeState = vimGlobalState.macroModeState; - macroModeState.isPlaying = true; - var isAction = !!vim.lastEditActionCommand; - var cachedInputState = vim.inputState; - function repeatCommand() { - if (isAction) { - commandDispatcher.processAction(cm, vim, vim.lastEditActionCommand); - } else { - commandDispatcher.evalInput(cm, vim); - } - } - function repeatInsert(repeat) { - if (macroModeState.lastInsertModeChanges.changes.length > 0) { - // For some reason, repeat cw in desktop VIM does not repeat - // insert mode changes. Will conform to that behavior. - repeat = !vim.lastEditActionCommand ? 1 : repeat; - var changeObject = macroModeState.lastInsertModeChanges; - // This isn't strictly necessary, but since lastInsertModeChanges is - // supposed to be immutable during replay, this helps catch bugs. - macroModeState.lastInsertModeChanges = {}; - repeatInsertModeChanges(cm, changeObject.changes, repeat); - macroModeState.lastInsertModeChanges = changeObject; - } - } - vim.inputState = vim.lastEditInputState; - if (isAction && vim.lastEditActionCommand.interlaceInsertRepeat) { - // o and O repeat have to be interlaced with insert repeats so that the - // insertions appear on separate lines instead of the last line. - for (var i = 0; i < repeat; i++) { - repeatCommand(); - repeatInsert(1); - } - } else { - if (!repeatForInsert) { - // Hack to get the cursor to end up at the right place. If I is - // repeated in insert mode repeat, cursor will be 1 insert - // change set left of where it should be. - repeatCommand(); - } - repeatInsert(repeat); - } - vim.inputState = cachedInputState; - if (vim.insertMode && !repeatForInsert) { - // Don't exit insert mode twice. If repeatForInsert is set, then we - // were called by an exitInsertMode call lower on the stack. - exitInsertMode(cm); - } - macroModeState.isPlaying = false; - }; - - function repeatInsertModeChanges(cm, changes, repeat) { - function keyHandler(binding) { - if (typeof binding == 'string') { - CodeMirror.commands[binding](cm); - } else { - binding(cm); - } - return true; - } - for (var i = 0; i < repeat; i++) { - for (var j = 0; j < changes.length; j++) { - var change = changes[j]; - if (change instanceof InsertModeKey) { - CodeMirror.lookupKey(change.keyName, ['vim-insert'], keyHandler); - } else { - var cur = cm.getCursor(); - cm.replaceRange(change, cur, cur); - } - } - } - } - - resetVimGlobalState(); - return vimApi; - }; - // Initialize Vim and make it available as an API. - CodeMirror.Vim = Vim(); -}); diff --git a/vendor/codemirror/lib/codemirror.css b/vendor/codemirror/lib/codemirror.css deleted file mode 100644 index d263e44b..00000000 --- a/vendor/codemirror/lib/codemirror.css +++ /dev/null @@ -1,270 +0,0 @@ -/* BASICS */ - -.CodeMirror { - /* Set height, width, borders, and global font properties here */ - font-family: monospace; - height: 300px; -} -.CodeMirror-scroll { - /* Set scrolling behaviour here */ - overflow: auto; -} - -/* PADDING */ - -.CodeMirror-lines { - padding: 4px 0; /* Vertical padding around content */ -} -.CodeMirror pre { - padding: 0 4px; /* Horizontal padding of content */ -} - -.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - background-color: white; /* The little square between H and V scrollbars */ -} - -/* GUTTER */ - -.CodeMirror-gutters { - border-right: 1px solid #ddd; - background-color: #f7f7f7; - white-space: nowrap; -} -.CodeMirror-linenumbers {} -.CodeMirror-linenumber { - padding: 0 3px 0 5px; - min-width: 20px; - text-align: right; - color: #999; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* CURSOR */ - -.CodeMirror div.CodeMirror-cursor { - border-left: 1px solid black; -} -/* Shown when moving in bi-directional text */ -.CodeMirror div.CodeMirror-secondarycursor { - border-left: 1px solid silver; -} -.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor { - width: auto; - border: 0; - background: #7e7; -} -/* Can style cursor different in overwrite (non-insert) mode */ -div.CodeMirror-overwrite div.CodeMirror-cursor {} - -.cm-tab { display: inline-block; } - -.CodeMirror-ruler { - border-left: 1px solid #ccc; - position: absolute; -} - -/* DEFAULT THEME */ - -.cm-s-default .cm-keyword {color: #708;} -.cm-s-default .cm-atom {color: #219;} -.cm-s-default .cm-number {color: #164;} -.cm-s-default .cm-def {color: #00f;} -.cm-s-default .cm-variable {color: black;} -.cm-s-default .cm-variable-2 {color: #05a;} -.cm-s-default .cm-variable-3 {color: #085;} -.cm-s-default .cm-property {color: black;} -.cm-s-default .cm-operator {color: black;} -.cm-s-default .cm-comment {color: #a50;} -.cm-s-default .cm-string {color: #a11;} -.cm-s-default .cm-string-2 {color: #f50;} -.cm-s-default .cm-meta {color: #555;} -.cm-s-default .cm-qualifier {color: #555;} -.cm-s-default .cm-builtin {color: #30a;} -.cm-s-default .cm-bracket {color: #997;} -.cm-s-default .cm-tag {color: #170;} -.cm-s-default .cm-attribute {color: #00c;} -.cm-s-default .cm-header {color: blue;} -.cm-s-default .cm-quote {color: #090;} -.cm-s-default .cm-hr {color: #999;} -.cm-s-default .cm-link {color: #00c;} - -.cm-negative {color: #d44;} -.cm-positive {color: #292;} -.cm-header, .cm-strong {font-weight: bold;} -.cm-em {font-style: italic;} -.cm-link {text-decoration: underline;} - -.cm-s-default .cm-error {color: #f00;} -.cm-invalidchar {color: #f00;} - -div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} -div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} -.CodeMirror-activeline-background {background: #e8f2ff;} - -/* STOP */ - -/* The rest of this file contains styles related to the mechanics of - the editor. You probably shouldn't touch them. */ - -.CodeMirror { - line-height: 1; - position: relative; - overflow: hidden; - background: white; - color: black; -} - -.CodeMirror-scroll { - /* 30px is the magic margin used to hide the element's real scrollbars */ - /* See overflow: hidden in .CodeMirror */ - margin-bottom: -30px; margin-right: -30px; - padding-bottom: 30px; - height: 100%; - outline: none; /* Prevent dragging from highlighting the element */ - position: relative; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -.CodeMirror-sizer { - position: relative; - border-right: 30px solid transparent; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* The fake, visible scrollbars. Used to force redraw during scrolling - before actuall scrolling happens, thus preventing shaking and - flickering artifacts. */ -.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - position: absolute; - z-index: 6; - display: none; -} -.CodeMirror-vscrollbar { - right: 0; top: 0; - overflow-x: hidden; - overflow-y: scroll; -} -.CodeMirror-hscrollbar { - bottom: 0; left: 0; - overflow-y: hidden; - overflow-x: scroll; -} -.CodeMirror-scrollbar-filler { - right: 0; bottom: 0; -} -.CodeMirror-gutter-filler { - left: 0; bottom: 0; -} - -.CodeMirror-gutters { - position: absolute; left: 0; top: 0; - padding-bottom: 30px; - z-index: 3; -} -.CodeMirror-gutter { - white-space: normal; - height: 100%; - -moz-box-sizing: content-box; - box-sizing: content-box; - padding-bottom: 30px; - margin-bottom: -32px; - display: inline-block; - /* Hack to make IE7 behave */ - *zoom:1; - *display:inline; -} -.CodeMirror-gutter-elt { - position: absolute; - cursor: default; - z-index: 4; -} - -.CodeMirror-lines { - cursor: text; -} -.CodeMirror pre { - /* Reset some styles that the rest of the page might have set */ - -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; - border-width: 0; - background: transparent; - font-family: inherit; - font-size: inherit; - margin: 0; - white-space: pre; - word-wrap: normal; - line-height: inherit; - color: inherit; - z-index: 2; - position: relative; - overflow: visible; -} -.CodeMirror-wrap pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: normal; -} - -.CodeMirror-linebackground { - position: absolute; - left: 0; right: 0; top: 0; bottom: 0; - z-index: 0; -} - -.CodeMirror-linewidget { - position: relative; - z-index: 2; - overflow: auto; -} - -.CodeMirror-widget {} - -.CodeMirror-wrap .CodeMirror-scroll { - overflow-x: hidden; -} - -.CodeMirror-measure { - position: absolute; - width: 100%; - height: 0; - overflow: hidden; - visibility: hidden; -} -.CodeMirror-measure pre { position: static; } - -.CodeMirror div.CodeMirror-cursor { - position: absolute; - border-right: none; - width: 0; -} - -div.CodeMirror-cursors { - visibility: hidden; - position: relative; - z-index: 1; -} -.CodeMirror-focused div.CodeMirror-cursors { - visibility: visible; -} - -.CodeMirror-selected { background: #d9d9d9; } -.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } - -.cm-searching { - background: #ffa; - background: rgba(255, 255, 0, .4); -} - -/* IE7 hack to prevent it from returning funny offsetTops on the spans */ -.CodeMirror span { *vertical-align: text-bottom; } - -/* Used to force a border model for a node */ -.cm-force-border { padding-right: .1px; } - -@media print { - /* Hide the cursor when printing */ - .CodeMirror div.CodeMirror-cursors { - visibility: hidden; - } -} diff --git a/vendor/codemirror/lib/codemirror.js b/vendor/codemirror/lib/codemirror.js deleted file mode 100644 index 364c2cb0..00000000 --- a/vendor/codemirror/lib/codemirror.js +++ /dev/null @@ -1,7322 +0,0 @@ -// This is CodeMirror (http://codemirror.net), a code editor -// implemented in JavaScript on top of the browser's DOM. -// -// You can find some technical background for some of the code below -// at http://marijnhaverbeke.nl/blog/#cm-internals . - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - module.exports = mod(); - else if (typeof define == "function" && define.amd) // AMD - return define([], mod); - else // Plain browser env - this.CodeMirror = mod(); -})(function() { - "use strict"; - - // BROWSER SNIFFING - - // Kludges for bugs and behavior differences that can't be feature - // detected are enabled based on userAgent etc sniffing. - - var gecko = /gecko\/\d/i.test(navigator.userAgent); - // ie_uptoN means Internet Explorer version N or lower - var ie_upto10 = /MSIE \d/.test(navigator.userAgent); - var ie_upto7 = ie_upto10 && (document.documentMode == null || document.documentMode < 8); - var ie_upto8 = ie_upto10 && (document.documentMode == null || document.documentMode < 9); - var ie_upto9 = ie_upto10 && (document.documentMode == null || document.documentMode < 10); - var ie_11up = /Trident\/([7-9]|\d{2,})\./.test(navigator.userAgent); - var ie = ie_upto10 || ie_11up; - var webkit = /WebKit\//.test(navigator.userAgent); - var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(navigator.userAgent); - var chrome = /Chrome\//.test(navigator.userAgent); - var presto = /Opera\//.test(navigator.userAgent); - var safari = /Apple Computer/.test(navigator.vendor); - var khtml = /KHTML\//.test(navigator.userAgent); - var mac_geLion = /Mac OS X 1\d\D([7-9]|\d\d)\D/.test(navigator.userAgent); - var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent); - var phantom = /PhantomJS/.test(navigator.userAgent); - - var ios = /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent); - // This is woefully incomplete. Suggestions for alternative methods welcome. - var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent); - var mac = ios || /Mac/.test(navigator.platform); - var windows = /win/i.test(navigator.platform); - - var presto_version = presto && navigator.userAgent.match(/Version\/(\d*\.\d*)/); - if (presto_version) presto_version = Number(presto_version[1]); - if (presto_version && presto_version >= 15) { presto = false; webkit = true; } - // Some browsers use the wrong event properties to signal cmd/ctrl on OS X - var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)); - var captureRightClick = gecko || (ie && !ie_upto8); - - // Optimize some code when these features are not used. - var sawReadOnlySpans = false, sawCollapsedSpans = false; - - // EDITOR CONSTRUCTOR - - // A CodeMirror instance represents an editor. This is the object - // that user code is usually dealing with. - - function CodeMirror(place, options) { - if (!(this instanceof CodeMirror)) return new CodeMirror(place, options); - - this.options = options = options || {}; - // Determine effective options based on given values and defaults. - for (var opt in defaults) if (!options.hasOwnProperty(opt)) - options[opt] = defaults[opt]; - setGuttersForLineNumbers(options); - - var doc = options.value; - if (typeof doc == "string") doc = new Doc(doc, options.mode); - - var display = this.display = new Display(place, doc); - display.wrapper.CodeMirror = this; - updateGutters(this); - themeChanged(this); - if (options.lineWrapping) - this.display.wrapper.className += " CodeMirror-wrap"; - if (options.autofocus && !mobile) focusInput(this); - - this.state = { - keyMaps: [], // stores maps added by addKeyMap - overlays: [], // highlighting overlays, as added by addOverlay - modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info - overwrite: false, focused: false, - suppressEdits: false, // used to disable editing during key handlers when in readOnly mode - pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in readInput - draggingText: false, - highlight: new Delayed() // stores highlight worker timeout - }; - - // Override magic textarea content restore that IE sometimes does - // on our hidden textarea on reload - if (ie_upto10) setTimeout(bind(resetInput, this, true), 20); - - registerEventHandlers(this); - - var cm = this; - runInOp(this, function() { - cm.curOp.forceUpdate = true; - attachDoc(cm, doc); - - if ((options.autofocus && !mobile) || activeElt() == display.input) - setTimeout(bind(onFocus, cm), 20); - else - onBlur(cm); - - for (var opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt)) - optionHandlers[opt](cm, options[opt], Init); - for (var i = 0; i < initHooks.length; ++i) initHooks[i](cm); - }); - } - - // DISPLAY CONSTRUCTOR - - // The display handles the DOM integration, both for input reading - // and content drawing. It holds references to DOM nodes and - // display-related state. - - function Display(place, doc) { - var d = this; - - // The semihidden textarea that is focused when the editor is - // focused, and receives input. - var input = d.input = elt("textarea", null, null, "position: absolute; padding: 0; width: 1px; height: 1em; outline: none"); - // The textarea is kept positioned near the cursor to prevent the - // fact that it'll be scrolled into view on input from scrolling - // our fake cursor out of view. On webkit, when wrap=off, paste is - // very slow. So make the area wide instead. - if (webkit) input.style.width = "1000px"; - else input.setAttribute("wrap", "off"); - // If border: 0; -- iOS fails to open keyboard (issue #1287) - if (ios) input.style.border = "1px solid black"; - input.setAttribute("autocorrect", "off"); input.setAttribute("autocapitalize", "off"); input.setAttribute("spellcheck", "false"); - - // Wraps and hides input textarea - d.inputDiv = elt("div", [input], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); - // The fake scrollbar elements. - d.scrollbarH = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); - d.scrollbarV = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"); - // Covers bottom-right square when both scrollbars are present. - d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); - // Covers bottom of gutter when coverGutterNextToScrollbar is on - // and h scrollbar is present. - d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); - // Will contain the actual code, positioned to cover the viewport. - d.lineDiv = elt("div", null, "CodeMirror-code"); - // Elements are added to these to represent selection and cursors. - d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); - d.cursorDiv = elt("div", null, "CodeMirror-cursors"); - // A visibility: hidden element used to find the size of things. - d.measure = elt("div", null, "CodeMirror-measure"); - // When lines outside of the viewport are measured, they are drawn in this. - d.lineMeasure = elt("div", null, "CodeMirror-measure"); - // Wraps everything that needs to exist inside the vertically-padded coordinate system - d.lineSpace = elt("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], - null, "position: relative; outline: none"); - // Moved around its parent to cover visible view. - d.mover = elt("div", [elt("div", [d.lineSpace], "CodeMirror-lines")], null, "position: relative"); - // Set to the height of the document, allowing scrolling. - d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); - // Behavior of elts with overflow: auto and padding is - // inconsistent across browsers. This is used to ensure the - // scrollable area is big enough. - d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerCutOff + "px; width: 1px;"); - // Will contain the gutters, if any. - d.gutters = elt("div", null, "CodeMirror-gutters"); - d.lineGutter = null; - // Actual scrollable element. - d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); - d.scroller.setAttribute("tabIndex", "-1"); - // The element in which the editor lives. - d.wrapper = elt("div", [d.inputDiv, d.scrollbarH, d.scrollbarV, - d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); - - // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) - if (ie_upto7) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } - // Needed to hide big blue blinking cursor on Mobile Safari - if (ios) input.style.width = "0px"; - if (!webkit) d.scroller.draggable = true; - // Needed to handle Tab key in KHTML - if (khtml) { d.inputDiv.style.height = "1px"; d.inputDiv.style.position = "absolute"; } - // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). - if (ie_upto7) d.scrollbarH.style.minHeight = d.scrollbarV.style.minWidth = "18px"; - - if (place.appendChild) place.appendChild(d.wrapper); - else place(d.wrapper); - - // Current rendered range (may be bigger than the view window). - d.viewFrom = d.viewTo = doc.first; - // Information about the rendered lines. - d.view = []; - // Holds info about a single rendered line when it was rendered - // for measurement, while not in view. - d.externalMeasured = null; - // Empty space (in pixels) above the view - d.viewOffset = 0; - d.lastSizeC = 0; - d.updateLineNumbers = null; - - // Used to only resize the line number gutter when necessary (when - // the amount of lines crosses a boundary that makes its width change) - d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; - // See readInput and resetInput - d.prevInput = ""; - // Set to true when a non-horizontal-scrolling line widget is - // added. As an optimization, line widget aligning is skipped when - // this is false. - d.alignWidgets = false; - // Flag that indicates whether we expect input to appear real soon - // now (after some event like 'keypress' or 'input') and are - // polling intensively. - d.pollingFast = false; - // Self-resetting timeout for the poller - d.poll = new Delayed(); - - d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; - - // Tracks when resetInput has punted to just putting a short - // string into the textarea instead of the full selection. - d.inaccurateSelection = false; - - // Tracks the maximum line length so that the horizontal scrollbar - // can be kept static when scrolling. - d.maxLine = null; - d.maxLineLength = 0; - d.maxLineChanged = false; - - // Used for measuring wheel scrolling granularity - d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; - - // True when shift is held down. - d.shift = false; - } - - // STATE UPDATES - - // Used to get the editor into a consistent state again when options change. - - function loadMode(cm) { - cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption); - resetModeState(cm); - } - - function resetModeState(cm) { - cm.doc.iter(function(line) { - if (line.stateAfter) line.stateAfter = null; - if (line.styles) line.styles = null; - }); - cm.doc.frontier = cm.doc.first; - startWorker(cm, 100); - cm.state.modeGen++; - if (cm.curOp) regChange(cm); - } - - function wrappingChanged(cm) { - if (cm.options.lineWrapping) { - cm.display.wrapper.className += " CodeMirror-wrap"; - cm.display.sizer.style.minWidth = ""; - } else { - cm.display.wrapper.className = cm.display.wrapper.className.replace(" CodeMirror-wrap", ""); - findMaxLine(cm); - } - estimateLineHeights(cm); - regChange(cm); - clearCaches(cm); - setTimeout(function(){updateScrollbars(cm);}, 100); - } - - // Returns a function that estimates the height of a line, to use as - // first approximation until the line becomes visible (and is thus - // properly measurable). - function estimateHeight(cm) { - var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; - var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); - return function(line) { - if (lineIsHidden(cm.doc, line)) return 0; - - var widgetsHeight = 0; - if (line.widgets) for (var i = 0; i < line.widgets.length; i++) { - if (line.widgets[i].height) widgetsHeight += line.widgets[i].height; - } - - if (wrapping) - return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th; - else - return widgetsHeight + th; - }; - } - - function estimateLineHeights(cm) { - var doc = cm.doc, est = estimateHeight(cm); - doc.iter(function(line) { - var estHeight = est(line); - if (estHeight != line.height) updateLineHeight(line, estHeight); - }); - } - - function keyMapChanged(cm) { - var map = keyMap[cm.options.keyMap], style = map.style; - cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-keymap-\S+/g, "") + - (style ? " cm-keymap-" + style : ""); - } - - function themeChanged(cm) { - cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + - cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); - clearCaches(cm); - } - - function guttersChanged(cm) { - updateGutters(cm); - regChange(cm); - setTimeout(function(){alignHorizontally(cm);}, 20); - } - - // Rebuild the gutter elements, ensure the margin to the left of the - // code matches their width. - function updateGutters(cm) { - var gutters = cm.display.gutters, specs = cm.options.gutters; - removeChildren(gutters); - for (var i = 0; i < specs.length; ++i) { - var gutterClass = specs[i]; - var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)); - if (gutterClass == "CodeMirror-linenumbers") { - cm.display.lineGutter = gElt; - gElt.style.width = (cm.display.lineNumWidth || 1) + "px"; - } - } - gutters.style.display = i ? "" : "none"; - var width = gutters.offsetWidth; - cm.display.sizer.style.marginLeft = width + "px"; - if (i) cm.display.scrollbarH.style.left = cm.options.fixedGutter ? width + "px" : 0; - } - - // Compute the character length of a line, taking into account - // collapsed ranges (see markText) that might hide parts, and join - // other lines onto it. - function lineLength(line) { - if (line.height == 0) return 0; - var len = line.text.length, merged, cur = line; - while (merged = collapsedSpanAtStart(cur)) { - var found = merged.find(0, true); - cur = found.from.line; - len += found.from.ch - found.to.ch; - } - cur = line; - while (merged = collapsedSpanAtEnd(cur)) { - var found = merged.find(0, true); - len -= cur.text.length - found.from.ch; - cur = found.to.line; - len += cur.text.length - found.to.ch; - } - return len; - } - - // Find the longest line in the document. - function findMaxLine(cm) { - var d = cm.display, doc = cm.doc; - d.maxLine = getLine(doc, doc.first); - d.maxLineLength = lineLength(d.maxLine); - d.maxLineChanged = true; - doc.iter(function(line) { - var len = lineLength(line); - if (len > d.maxLineLength) { - d.maxLineLength = len; - d.maxLine = line; - } - }); - } - - // Make sure the gutters options contains the element - // "CodeMirror-linenumbers" when the lineNumbers option is true. - function setGuttersForLineNumbers(options) { - var found = indexOf(options.gutters, "CodeMirror-linenumbers"); - if (found == -1 && options.lineNumbers) { - options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]); - } else if (found > -1 && !options.lineNumbers) { - options.gutters = options.gutters.slice(0); - options.gutters.splice(found, 1); - } - } - - // SCROLLBARS - - // Prepare DOM reads needed to update the scrollbars. Done in one - // shot to minimize update/measure roundtrips. - function measureForScrollbars(cm) { - var scroll = cm.display.scroller; - return { - clientHeight: scroll.clientHeight, - barHeight: cm.display.scrollbarV.clientHeight, - scrollWidth: scroll.scrollWidth, clientWidth: scroll.clientWidth, - barWidth: cm.display.scrollbarH.clientWidth, - docHeight: cm.doc.height + paddingVert(cm.display) - }; - } - - // Re-synchronize the fake scrollbars with the actual size of the - // content. - function updateScrollbars(cm, measure) { - if (!measure) measure = measureForScrollbars(cm); - var d = cm.display; - var scrollHeight = measure.docHeight + scrollerCutOff; - var needsH = measure.scrollWidth > measure.clientWidth; - var needsV = scrollHeight > measure.clientHeight; - if (needsV) { - d.scrollbarV.style.display = "block"; - d.scrollbarV.style.bottom = needsH ? scrollbarWidth(d.measure) + "px" : "0"; - // A bug in IE8 can cause this value to be negative, so guard it. - d.scrollbarV.firstChild.style.height = - Math.max(0, scrollHeight - measure.clientHeight + (measure.barHeight || d.scrollbarV.clientHeight)) + "px"; - } else { - d.scrollbarV.style.display = ""; - d.scrollbarV.firstChild.style.height = "0"; - } - if (needsH) { - d.scrollbarH.style.display = "block"; - d.scrollbarH.style.right = needsV ? scrollbarWidth(d.measure) + "px" : "0"; - d.scrollbarH.firstChild.style.width = - (measure.scrollWidth - measure.clientWidth + (measure.barWidth || d.scrollbarH.clientWidth)) + "px"; - } else { - d.scrollbarH.style.display = ""; - d.scrollbarH.firstChild.style.width = "0"; - } - if (needsH && needsV) { - d.scrollbarFiller.style.display = "block"; - d.scrollbarFiller.style.height = d.scrollbarFiller.style.width = scrollbarWidth(d.measure) + "px"; - } else d.scrollbarFiller.style.display = ""; - if (needsH && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { - d.gutterFiller.style.display = "block"; - d.gutterFiller.style.height = scrollbarWidth(d.measure) + "px"; - d.gutterFiller.style.width = d.gutters.offsetWidth + "px"; - } else d.gutterFiller.style.display = ""; - - if (mac_geLion && scrollbarWidth(d.measure) === 0) { - d.scrollbarV.style.minWidth = d.scrollbarH.style.minHeight = mac_geMountainLion ? "18px" : "12px"; - var barMouseDown = function(e) { - if (e_target(e) != d.scrollbarV && e_target(e) != d.scrollbarH) - operation(cm, onMouseDown)(e); - }; - on(d.scrollbarV, "mousedown", barMouseDown); - on(d.scrollbarH, "mousedown", barMouseDown); - } - } - - // Compute the lines that are visible in a given viewport (defaults - // the the current scroll position). viewPort may contain top, - // height, and ensure (see op.scrollToPos) properties. - function visibleLines(display, doc, viewPort) { - var top = viewPort && viewPort.top != null ? viewPort.top : display.scroller.scrollTop; - top = Math.floor(top - paddingTop(display)); - var bottom = viewPort && viewPort.bottom != null ? viewPort.bottom : top + display.wrapper.clientHeight; - - var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom); - // Ensure is a {from: {line, ch}, to: {line, ch}} object, and - // forces those lines into the viewport (if possible). - if (viewPort && viewPort.ensure) { - var ensureFrom = viewPort.ensure.from.line, ensureTo = viewPort.ensure.to.line; - if (ensureFrom < from) - return {from: ensureFrom, - to: lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight)}; - if (Math.min(ensureTo, doc.lastLine()) >= to) - return {from: lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight), - to: ensureTo}; - } - return {from: from, to: to}; - } - - // LINE NUMBERS - - // Re-align line numbers and gutter marks to compensate for - // horizontal scrolling. - function alignHorizontally(cm) { - var display = cm.display, view = display.view; - if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return; - var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; - var gutterW = display.gutters.offsetWidth, left = comp + "px"; - for (var i = 0; i < view.length; i++) if (!view[i].hidden) { - if (cm.options.fixedGutter && view[i].gutter) - view[i].gutter.style.left = left; - var align = view[i].alignable; - if (align) for (var j = 0; j < align.length; j++) - align[j].style.left = left; - } - if (cm.options.fixedGutter) - display.gutters.style.left = (comp + gutterW) + "px"; - } - - // Used to ensure that the line number gutter is still the right - // size for the current document size. Returns true when an update - // is needed. - function maybeUpdateLineNumberWidth(cm) { - if (!cm.options.lineNumbers) return false; - var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; - if (last.length != display.lineNumChars) { - var test = display.measure.appendChild(elt("div", [elt("div", last)], - "CodeMirror-linenumber CodeMirror-gutter-elt")); - var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; - display.lineGutter.style.width = ""; - display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding); - display.lineNumWidth = display.lineNumInnerWidth + padding; - display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; - display.lineGutter.style.width = display.lineNumWidth + "px"; - var width = display.gutters.offsetWidth; - display.scrollbarH.style.left = cm.options.fixedGutter ? width + "px" : 0; - display.sizer.style.marginLeft = width + "px"; - return true; - } - return false; - } - - function lineNumberFor(options, i) { - return String(options.lineNumberFormatter(i + options.firstLineNumber)); - } - - // Computes display.scroller.scrollLeft + display.gutters.offsetWidth, - // but using getBoundingClientRect to get a sub-pixel-accurate - // result. - function compensateForHScroll(display) { - return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left; - } - - // DISPLAY DRAWING - - // Updates the display, selection, and scrollbars, using the - // information in display.view to find out which nodes are no longer - // up-to-date. Tries to bail out early when no changes are needed, - // unless forced is true. - // Returns true if an actual update happened, false otherwise. - function updateDisplay(cm, viewPort, forced) { - var oldFrom = cm.display.viewFrom, oldTo = cm.display.viewTo, updated; - var visible = visibleLines(cm.display, cm.doc, viewPort); - for (var first = true;; first = false) { - var oldWidth = cm.display.scroller.clientWidth; - if (!updateDisplayInner(cm, visible, forced)) break; - updated = true; - - // If the max line changed since it was last measured, measure it, - // and ensure the document's width matches it. - if (cm.display.maxLineChanged && !cm.options.lineWrapping) - adjustContentWidth(cm); - - var barMeasure = measureForScrollbars(cm); - updateSelection(cm); - setDocumentHeight(cm, barMeasure); - updateScrollbars(cm, barMeasure); - if (first && cm.options.lineWrapping && oldWidth != cm.display.scroller.clientWidth) { - forced = true; - continue; - } - forced = false; - - // Clip forced viewport to actual scrollable area. - if (viewPort && viewPort.top != null) - viewPort = {top: Math.min(barMeasure.docHeight - scrollerCutOff - barMeasure.clientHeight, viewPort.top)}; - // Updated line heights might result in the drawn area not - // actually covering the viewport. Keep looping until it does. - visible = visibleLines(cm.display, cm.doc, viewPort); - if (visible.from >= cm.display.viewFrom && visible.to <= cm.display.viewTo) - break; - } - - cm.display.updateLineNumbers = null; - if (updated) { - signalLater(cm, "update", cm); - if (cm.display.viewFrom != oldFrom || cm.display.viewTo != oldTo) - signalLater(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); - } - return updated; - } - - // Does the actual updating of the line display. Bails out - // (returning false) when there is nothing to be done and forced is - // false. - function updateDisplayInner(cm, visible, forced) { - var display = cm.display, doc = cm.doc; - if (!display.wrapper.offsetWidth) { - resetView(cm); - return; - } - - // Bail out if the visible area is already rendered and nothing changed. - if (!forced && visible.from >= display.viewFrom && visible.to <= display.viewTo && - countDirtyView(cm) == 0) - return; - - if (maybeUpdateLineNumberWidth(cm)) - resetView(cm); - var dims = getDimensions(cm); - - // Compute a suitable new viewport (from & to) - var end = doc.first + doc.size; - var from = Math.max(visible.from - cm.options.viewportMargin, doc.first); - var to = Math.min(end, visible.to + cm.options.viewportMargin); - if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom); - if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo); - if (sawCollapsedSpans) { - from = visualLineNo(cm.doc, from); - to = visualLineEndNo(cm.doc, to); - } - - var different = from != display.viewFrom || to != display.viewTo || - display.lastSizeC != display.wrapper.clientHeight; - adjustView(cm, from, to); - - display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); - // Position the mover div to align with the current scroll position - cm.display.mover.style.top = display.viewOffset + "px"; - - var toUpdate = countDirtyView(cm); - if (!different && toUpdate == 0 && !forced) return; - - // For big changes, we hide the enclosing element during the - // update, since that speeds up the operations on most browsers. - var focused = activeElt(); - if (toUpdate > 4) display.lineDiv.style.display = "none"; - patchDisplay(cm, display.updateLineNumbers, dims); - if (toUpdate > 4) display.lineDiv.style.display = ""; - // There might have been a widget with a focused element that got - // hidden or updated, if so re-focus it. - if (focused && activeElt() != focused && focused.offsetHeight) focused.focus(); - - // Prevent selection and cursors from interfering with the scroll - // width. - removeChildren(display.cursorDiv); - removeChildren(display.selectionDiv); - - if (different) { - display.lastSizeC = display.wrapper.clientHeight; - startWorker(cm, 400); - } - - updateHeightsInViewport(cm); - - return true; - } - - function adjustContentWidth(cm) { - var display = cm.display; - var width = measureChar(cm, display.maxLine, display.maxLine.text.length).left; - display.maxLineChanged = false; - var minWidth = Math.max(0, width + 3); - var maxScrollLeft = Math.max(0, display.sizer.offsetLeft + minWidth + scrollerCutOff - display.scroller.clientWidth); - display.sizer.style.minWidth = minWidth + "px"; - if (maxScrollLeft < cm.doc.scrollLeft) - setScrollLeft(cm, Math.min(display.scroller.scrollLeft, maxScrollLeft), true); - } - - function setDocumentHeight(cm, measure) { - cm.display.sizer.style.minHeight = cm.display.heightForcer.style.top = measure.docHeight + "px"; - cm.display.gutters.style.height = Math.max(measure.docHeight, measure.clientHeight) + "px"; - } - - // Read the actual heights of the rendered lines, and update their - // stored heights to match. - function updateHeightsInViewport(cm) { - var display = cm.display; - var prevBottom = display.lineDiv.offsetTop; - for (var i = 0; i < display.view.length; i++) { - var cur = display.view[i], height; - if (cur.hidden) continue; - if (ie_upto7) { - var bot = cur.node.offsetTop + cur.node.offsetHeight; - height = bot - prevBottom; - prevBottom = bot; - } else { - var box = cur.node.getBoundingClientRect(); - height = box.bottom - box.top; - } - var diff = cur.line.height - height; - if (height < 2) height = textHeight(display); - if (diff > .001 || diff < -.001) { - updateLineHeight(cur.line, height); - updateWidgetHeight(cur.line); - if (cur.rest) for (var j = 0; j < cur.rest.length; j++) - updateWidgetHeight(cur.rest[j]); - } - } - } - - // Read and store the height of line widgets associated with the - // given line. - function updateWidgetHeight(line) { - if (line.widgets) for (var i = 0; i < line.widgets.length; ++i) - line.widgets[i].height = line.widgets[i].node.offsetHeight; - } - - // Do a bulk-read of the DOM positions and sizes needed to draw the - // view, so that we don't interleave reading and writing to the DOM. - function getDimensions(cm) { - var d = cm.display, left = {}, width = {}; - for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { - left[cm.options.gutters[i]] = n.offsetLeft; - width[cm.options.gutters[i]] = n.offsetWidth; - } - return {fixedPos: compensateForHScroll(d), - gutterTotalWidth: d.gutters.offsetWidth, - gutterLeft: left, - gutterWidth: width, - wrapperWidth: d.wrapper.clientWidth}; - } - - // Sync the actual display DOM structure with display.view, removing - // nodes for lines that are no longer in view, and creating the ones - // that are not there yet, and updating the ones that are out of - // date. - function patchDisplay(cm, updateNumbersFrom, dims) { - var display = cm.display, lineNumbers = cm.options.lineNumbers; - var container = display.lineDiv, cur = container.firstChild; - - function rm(node) { - var next = node.nextSibling; - // Works around a throw-scroll bug in OS X Webkit - if (webkit && mac && cm.display.currentWheelTarget == node) - node.style.display = "none"; - else - node.parentNode.removeChild(node); - return next; - } - - var view = display.view, lineN = display.viewFrom; - // Loop over the elements in the view, syncing cur (the DOM nodes - // in display.lineDiv) with the view as we go. - for (var i = 0; i < view.length; i++) { - var lineView = view[i]; - if (lineView.hidden) { - } else if (!lineView.node) { // Not drawn yet - var node = buildLineElement(cm, lineView, lineN, dims); - container.insertBefore(node, cur); - } else { // Already drawn - while (cur != lineView.node) cur = rm(cur); - var updateNumber = lineNumbers && updateNumbersFrom != null && - updateNumbersFrom <= lineN && lineView.lineNumber; - if (lineView.changes) { - if (indexOf(lineView.changes, "gutter") > -1) updateNumber = false; - updateLineForChanges(cm, lineView, lineN, dims); - } - if (updateNumber) { - removeChildren(lineView.lineNumber); - lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))); - } - cur = lineView.node.nextSibling; - } - lineN += lineView.size; - } - while (cur) cur = rm(cur); - } - - // When an aspect of a line changes, a string is added to - // lineView.changes. This updates the relevant part of the line's - // DOM structure. - function updateLineForChanges(cm, lineView, lineN, dims) { - for (var j = 0; j < lineView.changes.length; j++) { - var type = lineView.changes[j]; - if (type == "text") updateLineText(cm, lineView); - else if (type == "gutter") updateLineGutter(cm, lineView, lineN, dims); - else if (type == "class") updateLineClasses(lineView); - else if (type == "widget") updateLineWidgets(lineView, dims); - } - lineView.changes = null; - } - - // Lines with gutter elements, widgets or a background class need to - // be wrapped, and have the extra elements added to the wrapper div - function ensureLineWrapped(lineView) { - if (lineView.node == lineView.text) { - lineView.node = elt("div", null, null, "position: relative"); - if (lineView.text.parentNode) - lineView.text.parentNode.replaceChild(lineView.node, lineView.text); - lineView.node.appendChild(lineView.text); - if (ie_upto7) lineView.node.style.zIndex = 2; - } - return lineView.node; - } - - function updateLineBackground(lineView) { - var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass; - if (cls) cls += " CodeMirror-linebackground"; - if (lineView.background) { - if (cls) lineView.background.className = cls; - else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; } - } else if (cls) { - var wrap = ensureLineWrapped(lineView); - lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild); - } - } - - // Wrapper around buildLineContent which will reuse the structure - // in display.externalMeasured when possible. - function getLineContent(cm, lineView) { - var ext = cm.display.externalMeasured; - if (ext && ext.line == lineView.line) { - cm.display.externalMeasured = null; - lineView.measure = ext.measure; - return ext.built; - } - return buildLineContent(cm, lineView); - } - - // Redraw the line's text. Interacts with the background and text - // classes because the mode may output tokens that influence these - // classes. - function updateLineText(cm, lineView) { - var cls = lineView.text.className; - var built = getLineContent(cm, lineView); - if (lineView.text == lineView.node) lineView.node = built.pre; - lineView.text.parentNode.replaceChild(built.pre, lineView.text); - lineView.text = built.pre; - if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { - lineView.bgClass = built.bgClass; - lineView.textClass = built.textClass; - updateLineClasses(lineView); - } else if (cls) { - lineView.text.className = cls; - } - } - - function updateLineClasses(lineView) { - updateLineBackground(lineView); - if (lineView.line.wrapClass) - ensureLineWrapped(lineView).className = lineView.line.wrapClass; - else if (lineView.node != lineView.text) - lineView.node.className = ""; - var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass; - lineView.text.className = textClass || ""; - } - - function updateLineGutter(cm, lineView, lineN, dims) { - if (lineView.gutter) { - lineView.node.removeChild(lineView.gutter); - lineView.gutter = null; - } - var markers = lineView.line.gutterMarkers; - if (cm.options.lineNumbers || markers) { - var wrap = ensureLineWrapped(lineView); - var gutterWrap = lineView.gutter = - wrap.insertBefore(elt("div", null, "CodeMirror-gutter-wrapper", "position: absolute; left: " + - (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px"), - lineView.text); - if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) - lineView.lineNumber = gutterWrap.appendChild( - elt("div", lineNumberFor(cm.options, lineN), - "CodeMirror-linenumber CodeMirror-gutter-elt", - "left: " + dims.gutterLeft["CodeMirror-linenumbers"] + "px; width: " - + cm.display.lineNumInnerWidth + "px")); - if (markers) for (var k = 0; k < cm.options.gutters.length; ++k) { - var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id]; - if (found) - gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", "left: " + - dims.gutterLeft[id] + "px; width: " + dims.gutterWidth[id] + "px")); - } - } - } - - function updateLineWidgets(lineView, dims) { - if (lineView.alignable) lineView.alignable = null; - for (var node = lineView.node.firstChild, next; node; node = next) { - var next = node.nextSibling; - if (node.className == "CodeMirror-linewidget") - lineView.node.removeChild(node); - } - insertLineWidgets(lineView, dims); - } - - // Build a line's DOM representation from scratch - function buildLineElement(cm, lineView, lineN, dims) { - var built = getLineContent(cm, lineView); - lineView.text = lineView.node = built.pre; - if (built.bgClass) lineView.bgClass = built.bgClass; - if (built.textClass) lineView.textClass = built.textClass; - - updateLineClasses(lineView); - updateLineGutter(cm, lineView, lineN, dims); - insertLineWidgets(lineView, dims); - return lineView.node; - } - - // A lineView may contain multiple logical lines (when merged by - // collapsed spans). The widgets for all of them need to be drawn. - function insertLineWidgets(lineView, dims) { - insertLineWidgetsFor(lineView.line, lineView, dims, true); - if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) - insertLineWidgetsFor(lineView.rest[i], lineView, dims, false); - } - - function insertLineWidgetsFor(line, lineView, dims, allowAbove) { - if (!line.widgets) return; - var wrap = ensureLineWrapped(lineView); - for (var i = 0, ws = line.widgets; i < ws.length; ++i) { - var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget"); - if (!widget.handleMouseEvents) node.ignoreEvents = true; - positionLineWidget(widget, node, lineView, dims); - if (allowAbove && widget.above) - wrap.insertBefore(node, lineView.gutter || lineView.text); - else - wrap.appendChild(node); - signalLater(widget, "redraw"); - } - } - - function positionLineWidget(widget, node, lineView, dims) { - if (widget.noHScroll) { - (lineView.alignable || (lineView.alignable = [])).push(node); - var width = dims.wrapperWidth; - node.style.left = dims.fixedPos + "px"; - if (!widget.coverGutter) { - width -= dims.gutterTotalWidth; - node.style.paddingLeft = dims.gutterTotalWidth + "px"; - } - node.style.width = width + "px"; - } - if (widget.coverGutter) { - node.style.zIndex = 5; - node.style.position = "relative"; - if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + "px"; - } - } - - // POSITION OBJECT - - // A Pos instance represents a position within the text. - var Pos = CodeMirror.Pos = function(line, ch) { - if (!(this instanceof Pos)) return new Pos(line, ch); - this.line = line; this.ch = ch; - }; - - // Compare two positions, return 0 if they are the same, a negative - // number when a is less, and a positive number otherwise. - var cmp = CodeMirror.cmpPos = function(a, b) { return a.line - b.line || a.ch - b.ch; }; - - function copyPos(x) {return Pos(x.line, x.ch);} - function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; } - function minPos(a, b) { return cmp(a, b) < 0 ? a : b; } - - // SELECTION / CURSOR - - // Selection objects are immutable. A new one is created every time - // the selection changes. A selection is one or more non-overlapping - // (and non-touching) ranges, sorted, and an integer that indicates - // which one is the primary selection (the one that's scrolled into - // view, that getCursor returns, etc). - function Selection(ranges, primIndex) { - this.ranges = ranges; - this.primIndex = primIndex; - } - - Selection.prototype = { - primary: function() { return this.ranges[this.primIndex]; }, - equals: function(other) { - if (other == this) return true; - if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false; - for (var i = 0; i < this.ranges.length; i++) { - var here = this.ranges[i], there = other.ranges[i]; - if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) return false; - } - return true; - }, - deepCopy: function() { - for (var out = [], i = 0; i < this.ranges.length; i++) - out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); - return new Selection(out, this.primIndex); - }, - somethingSelected: function() { - for (var i = 0; i < this.ranges.length; i++) - if (!this.ranges[i].empty()) return true; - return false; - }, - contains: function(pos, end) { - if (!end) end = pos; - for (var i = 0; i < this.ranges.length; i++) { - var range = this.ranges[i]; - if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) - return i; - } - return -1; - } - }; - - function Range(anchor, head) { - this.anchor = anchor; this.head = head; - } - - Range.prototype = { - from: function() { return minPos(this.anchor, this.head); }, - to: function() { return maxPos(this.anchor, this.head); }, - empty: function() { - return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch; - } - }; - - // Take an unsorted, potentially overlapping set of ranges, and - // build a selection out of it. 'Consumes' ranges array (modifying - // it). - function normalizeSelection(ranges, primIndex) { - var prim = ranges[primIndex]; - ranges.sort(function(a, b) { return cmp(a.from(), b.from()); }); - primIndex = indexOf(ranges, prim); - for (var i = 1; i < ranges.length; i++) { - var cur = ranges[i], prev = ranges[i - 1]; - if (cmp(prev.to(), cur.from()) >= 0) { - var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); - var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; - if (i <= primIndex) --primIndex; - ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); - } - } - return new Selection(ranges, primIndex); - } - - function simpleSelection(anchor, head) { - return new Selection([new Range(anchor, head || anchor)], 0); - } - - // Most of the external API clips given positions to make sure they - // actually exist within the document. - function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));} - function clipPos(doc, pos) { - if (pos.line < doc.first) return Pos(doc.first, 0); - var last = doc.first + doc.size - 1; - if (pos.line > last) return Pos(last, getLine(doc, last).text.length); - return clipToLen(pos, getLine(doc, pos.line).text.length); - } - function clipToLen(pos, linelen) { - var ch = pos.ch; - if (ch == null || ch > linelen) return Pos(pos.line, linelen); - else if (ch < 0) return Pos(pos.line, 0); - else return pos; - } - function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;} - function clipPosArray(doc, array) { - for (var out = [], i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]); - return out; - } - - // SELECTION UPDATES - - // The 'scroll' parameter given to many of these indicated whether - // the new cursor position should be scrolled into view after - // modifying the selection. - - // If shift is held or the extend flag is set, extends a range to - // include a given position (and optionally a second position). - // Otherwise, simply returns the range between the given positions. - // Used for cursor motion and such. - function extendRange(doc, range, head, other) { - if (doc.cm && doc.cm.display.shift || doc.extend) { - var anchor = range.anchor; - if (other) { - var posBefore = cmp(head, anchor) < 0; - if (posBefore != (cmp(other, anchor) < 0)) { - anchor = head; - head = other; - } else if (posBefore != (cmp(head, other) < 0)) { - head = other; - } - } - return new Range(anchor, head); - } else { - return new Range(other || head, head); - } - } - - // Extend the primary selection range, discard the rest. - function extendSelection(doc, head, other, options) { - setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options); - } - - // Extend all selections (pos is an array of selections with length - // equal the number of selections) - function extendSelections(doc, heads, options) { - for (var out = [], i = 0; i < doc.sel.ranges.length; i++) - out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null); - var newSel = normalizeSelection(out, doc.sel.primIndex); - setSelection(doc, newSel, options); - } - - // Updates a single range in the selection. - function replaceOneSelection(doc, i, range, options) { - var ranges = doc.sel.ranges.slice(0); - ranges[i] = range; - setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options); - } - - // Reset the selection to a single range. - function setSimpleSelection(doc, anchor, head, options) { - setSelection(doc, simpleSelection(anchor, head), options); - } - - // Give beforeSelectionChange handlers a change to influence a - // selection update. - function filterSelectionChange(doc, sel) { - var obj = { - ranges: sel.ranges, - update: function(ranges) { - this.ranges = []; - for (var i = 0; i < ranges.length; i++) - this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), - clipPos(doc, ranges[i].head)); - } - }; - signal(doc, "beforeSelectionChange", doc, obj); - if (doc.cm) signal(doc.cm, "beforeSelectionChange", doc.cm, obj); - if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1); - else return sel; - } - - function setSelectionReplaceHistory(doc, sel, options) { - var done = doc.history.done, last = lst(done); - if (last && last.ranges) { - done[done.length - 1] = sel; - setSelectionNoUndo(doc, sel, options); - } else { - setSelection(doc, sel, options); - } - } - - // Set a new selection. - function setSelection(doc, sel, options) { - setSelectionNoUndo(doc, sel, options); - addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options); - } - - function setSelectionNoUndo(doc, sel, options) { - if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) - sel = filterSelectionChange(doc, sel); - - var bias = cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1; - setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)); - - if (!(options && options.scroll === false) && doc.cm) - ensureCursorVisible(doc.cm); - } - - function setSelectionInner(doc, sel) { - if (sel.equals(doc.sel)) return; - - doc.sel = sel; - - if (doc.cm) - doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = - doc.cm.curOp.cursorActivity = true; - signalLater(doc, "cursorActivity", doc); - } - - // Verify that the selection does not partially select any atomic - // marked ranges. - function reCheckSelection(doc) { - setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll); - } - - // Return a selection that does not partially select any atomic - // ranges. - function skipAtomicInSelection(doc, sel, bias, mayClear) { - var out; - for (var i = 0; i < sel.ranges.length; i++) { - var range = sel.ranges[i]; - var newAnchor = skipAtomic(doc, range.anchor, bias, mayClear); - var newHead = skipAtomic(doc, range.head, bias, mayClear); - if (out || newAnchor != range.anchor || newHead != range.head) { - if (!out) out = sel.ranges.slice(0, i); - out[i] = new Range(newAnchor, newHead); - } - } - return out ? normalizeSelection(out, sel.primIndex) : sel; - } - - // Ensure a given position is not inside an atomic range. - function skipAtomic(doc, pos, bias, mayClear) { - var flipped = false, curPos = pos; - var dir = bias || 1; - doc.cantEdit = false; - search: for (;;) { - var line = getLine(doc, curPos.line); - if (line.markedSpans) { - for (var i = 0; i < line.markedSpans.length; ++i) { - var sp = line.markedSpans[i], m = sp.marker; - if ((sp.from == null || (m.inclusiveLeft ? sp.from <= curPos.ch : sp.from < curPos.ch)) && - (sp.to == null || (m.inclusiveRight ? sp.to >= curPos.ch : sp.to > curPos.ch))) { - if (mayClear) { - signal(m, "beforeCursorEnter"); - if (m.explicitlyCleared) { - if (!line.markedSpans) break; - else {--i; continue;} - } - } - if (!m.atomic) continue; - var newPos = m.find(dir < 0 ? -1 : 1); - if (cmp(newPos, curPos) == 0) { - newPos.ch += dir; - if (newPos.ch < 0) { - if (newPos.line > doc.first) newPos = clipPos(doc, Pos(newPos.line - 1)); - else newPos = null; - } else if (newPos.ch > line.text.length) { - if (newPos.line < doc.first + doc.size - 1) newPos = Pos(newPos.line + 1, 0); - else newPos = null; - } - if (!newPos) { - if (flipped) { - // Driven in a corner -- no valid cursor position found at all - // -- try again *with* clearing, if we didn't already - if (!mayClear) return skipAtomic(doc, pos, bias, true); - // Otherwise, turn off editing until further notice, and return the start of the doc - doc.cantEdit = true; - return Pos(doc.first, 0); - } - flipped = true; newPos = pos; dir = -dir; - } - } - curPos = newPos; - continue search; - } - } - } - return curPos; - } - } - - // SELECTION DRAWING - - // Redraw the selection and/or cursor - function updateSelection(cm) { - var display = cm.display, doc = cm.doc; - var curFragment = document.createDocumentFragment(); - var selFragment = document.createDocumentFragment(); - - for (var i = 0; i < doc.sel.ranges.length; i++) { - var range = doc.sel.ranges[i]; - var collapsed = range.empty(); - if (collapsed || cm.options.showCursorWhenSelecting) - updateSelectionCursor(cm, range, curFragment); - if (!collapsed) - updateSelectionRange(cm, range, selFragment); - } - - // Move the hidden textarea near the cursor to prevent scrolling artifacts - if (cm.options.moveInputWithCursor) { - var headPos = cursorCoords(cm, doc.sel.primary().head, "div"); - var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect(); - var top = Math.max(0, Math.min(display.wrapper.clientHeight - 10, - headPos.top + lineOff.top - wrapOff.top)); - var left = Math.max(0, Math.min(display.wrapper.clientWidth - 10, - headPos.left + lineOff.left - wrapOff.left)); - display.inputDiv.style.top = top + "px"; - display.inputDiv.style.left = left + "px"; - } - - removeChildrenAndAdd(display.cursorDiv, curFragment); - removeChildrenAndAdd(display.selectionDiv, selFragment); - } - - // Draws a cursor for the given range - function updateSelectionCursor(cm, range, output) { - var pos = cursorCoords(cm, range.head, "div"); - - var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")); - cursor.style.left = pos.left + "px"; - cursor.style.top = pos.top + "px"; - cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; - - if (pos.other) { - // Secondary cursor, shown when on a 'jump' in bi-directional text - var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")); - otherCursor.style.display = ""; - otherCursor.style.left = pos.other.left + "px"; - otherCursor.style.top = pos.other.top + "px"; - otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; - } - } - - // Draws the given range as a highlighted selection - function updateSelectionRange(cm, range, output) { - var display = cm.display, doc = cm.doc; - var fragment = document.createDocumentFragment(); - var padding = paddingH(cm.display), leftSide = padding.left, rightSide = display.lineSpace.offsetWidth - padding.right; - - function add(left, top, width, bottom) { - if (top < 0) top = 0; - fragment.appendChild(elt("div", null, "CodeMirror-selected", "position: absolute; left: " + left + - "px; top: " + top + "px; width: " + (width == null ? rightSide - left : width) + - "px; height: " + (bottom - top) + "px")); - } - - function drawForLine(line, fromArg, toArg) { - var lineObj = getLine(doc, line); - var lineLen = lineObj.text.length; - var start, end; - function coords(ch, bias) { - return charCoords(cm, Pos(line, ch), "div", lineObj, bias); - } - - iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) { - var leftPos = coords(from, "left"), rightPos, left, right; - if (from == to) { - rightPos = leftPos; - left = right = leftPos.left; - } else { - rightPos = coords(to - 1, "right"); - if (dir == "rtl") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; } - left = leftPos.left; - right = rightPos.right; - } - if (fromArg == null && from == 0) left = leftSide; - if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part - add(left, leftPos.top, null, leftPos.bottom); - left = leftSide; - if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top); - } - if (toArg == null && to == lineLen) right = rightSide; - if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left) - start = leftPos; - if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right) - end = rightPos; - if (left < leftSide + 1) left = leftSide; - add(left, rightPos.top, right - left, rightPos.bottom); - }); - return {start: start, end: end}; - } - - var sFrom = range.from(), sTo = range.to(); - if (sFrom.line == sTo.line) { - drawForLine(sFrom.line, sFrom.ch, sTo.ch); - } else { - var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line); - var singleVLine = visualLine(fromLine) == visualLine(toLine); - var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end; - var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start; - if (singleVLine) { - if (leftEnd.top < rightStart.top - 2) { - add(leftEnd.right, leftEnd.top, null, leftEnd.bottom); - add(leftSide, rightStart.top, rightStart.left, rightStart.bottom); - } else { - add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom); - } - } - if (leftEnd.bottom < rightStart.top) - add(leftSide, leftEnd.bottom, null, rightStart.top); - } - - output.appendChild(fragment); - } - - // Cursor-blinking - function restartBlink(cm) { - if (!cm.state.focused) return; - var display = cm.display; - clearInterval(display.blinker); - var on = true; - display.cursorDiv.style.visibility = ""; - if (cm.options.cursorBlinkRate > 0) - display.blinker = setInterval(function() { - display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; - }, cm.options.cursorBlinkRate); - } - - // HIGHLIGHT WORKER - - function startWorker(cm, time) { - if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo) - cm.state.highlight.set(time, bind(highlightWorker, cm)); - } - - function highlightWorker(cm) { - var doc = cm.doc; - if (doc.frontier < doc.first) doc.frontier = doc.first; - if (doc.frontier >= cm.display.viewTo) return; - var end = +new Date + cm.options.workTime; - var state = copyState(doc.mode, getStateBefore(cm, doc.frontier)); - - runInOp(cm, function() { - doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) { - if (doc.frontier >= cm.display.viewFrom) { // Visible - var oldStyles = line.styles; - line.styles = highlightLine(cm, line, state, true); - var ischange = !oldStyles || oldStyles.length != line.styles.length; - for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i]; - if (ischange) regLineChange(cm, doc.frontier, "text"); - line.stateAfter = copyState(doc.mode, state); - } else { - processLine(cm, line.text, state); - line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null; - } - ++doc.frontier; - if (+new Date > end) { - startWorker(cm, cm.options.workDelay); - return true; - } - }); - }); - } - - // Finds the line to start with when starting a parse. Tries to - // find a line with a stateAfter, so that it can start with a - // valid state. If that fails, it returns the line with the - // smallest indentation, which tends to need the least context to - // parse correctly. - function findStartLine(cm, n, precise) { - var minindent, minline, doc = cm.doc; - var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100); - for (var search = n; search > lim; --search) { - if (search <= doc.first) return doc.first; - var line = getLine(doc, search - 1); - if (line.stateAfter && (!precise || search <= doc.frontier)) return search; - var indented = countColumn(line.text, null, cm.options.tabSize); - if (minline == null || minindent > indented) { - minline = search - 1; - minindent = indented; - } - } - return minline; - } - - function getStateBefore(cm, n, precise) { - var doc = cm.doc, display = cm.display; - if (!doc.mode.startState) return true; - var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter; - if (!state) state = startState(doc.mode); - else state = copyState(doc.mode, state); - doc.iter(pos, n, function(line) { - processLine(cm, line.text, state); - var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo; - line.stateAfter = save ? copyState(doc.mode, state) : null; - ++pos; - }); - if (precise) doc.frontier = pos; - return state; - } - - // POSITION MEASUREMENT - - function paddingTop(display) {return display.lineSpace.offsetTop;} - function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;} - function paddingH(display) { - if (display.cachedPaddingH) return display.cachedPaddingH; - var e = removeChildrenAndAdd(display.measure, elt("pre", "x")); - var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle; - return display.cachedPaddingH = {left: parseInt(style.paddingLeft), - right: parseInt(style.paddingRight)}; - } - - // Ensure the lineView.wrapping.heights array is populated. This is - // an array of bottom offsets for the lines that make up a drawn - // line. When lineWrapping is on, there might be more than one - // height. - function ensureLineHeights(cm, lineView, rect) { - var wrapping = cm.options.lineWrapping; - var curWidth = wrapping && cm.display.scroller.clientWidth; - if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { - var heights = lineView.measure.heights = []; - if (wrapping) { - lineView.measure.width = curWidth; - var rects = lineView.text.firstChild.getClientRects(); - for (var i = 0; i < rects.length - 1; i++) { - var cur = rects[i], next = rects[i + 1]; - if (Math.abs(cur.bottom - next.bottom) > 2) - heights.push((cur.bottom + next.top) / 2 - rect.top); - } - } - heights.push(rect.bottom - rect.top); - } - } - - // Find a line map (mapping character offsets to text nodes) and a - // measurement cache for the given line number. (A line view might - // contain multiple lines when collapsed ranges are present.) - function mapFromLineView(lineView, line, lineN) { - if (lineView.line == line) - return {map: lineView.measure.map, cache: lineView.measure.cache}; - for (var i = 0; i < lineView.rest.length; i++) - if (lineView.rest[i] == line) - return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]}; - for (var i = 0; i < lineView.rest.length; i++) - if (lineNo(lineView.rest[i]) > lineN) - return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true}; - } - - // Render a line into the hidden node display.externalMeasured. Used - // when measurement is needed for a line that's not in the viewport. - function updateExternalMeasurement(cm, line) { - line = visualLine(line); - var lineN = lineNo(line); - var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN); - view.lineN = lineN; - var built = view.built = buildLineContent(cm, view); - view.text = built.pre; - removeChildrenAndAdd(cm.display.lineMeasure, built.pre); - return view; - } - - // Get a {top, bottom, left, right} box (in line-local coordinates) - // for a given character. - function measureChar(cm, line, ch, bias) { - return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias); - } - - // Find a line view that corresponds to the given line number. - function findViewForLine(cm, lineN) { - if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) - return cm.display.view[findViewIndex(cm, lineN)]; - var ext = cm.display.externalMeasured; - if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) - return ext; - } - - // Measurement can be split in two steps, the set-up work that - // applies to the whole line, and the measurement of the actual - // character. Functions like coordsChar, that need to do a lot of - // measurements in a row, can thus ensure that the set-up work is - // only done once. - function prepareMeasureForLine(cm, line) { - var lineN = lineNo(line); - var view = findViewForLine(cm, lineN); - if (view && !view.text) - view = null; - else if (view && view.changes) - updateLineForChanges(cm, view, lineN, getDimensions(cm)); - if (!view) - view = updateExternalMeasurement(cm, line); - - var info = mapFromLineView(view, line, lineN); - return { - line: line, view: view, rect: null, - map: info.map, cache: info.cache, before: info.before, - hasHeights: false - }; - } - - // Given a prepared measurement object, measures the position of an - // actual character (or fetches it from the cache). - function measureCharPrepared(cm, prepared, ch, bias) { - if (prepared.before) ch = -1; - var key = ch + (bias || ""), found; - if (prepared.cache.hasOwnProperty(key)) { - found = prepared.cache[key]; - } else { - if (!prepared.rect) - prepared.rect = prepared.view.text.getBoundingClientRect(); - if (!prepared.hasHeights) { - ensureLineHeights(cm, prepared.view, prepared.rect); - prepared.hasHeights = true; - } - found = measureCharInner(cm, prepared, ch, bias); - if (!found.bogus) prepared.cache[key] = found; - } - return {left: found.left, right: found.right, top: found.top, bottom: found.bottom}; - } - - var nullRect = {left: 0, right: 0, top: 0, bottom: 0}; - - function measureCharInner(cm, prepared, ch, bias) { - var map = prepared.map; - - var node, start, end, collapse; - // First, search the line map for the text node corresponding to, - // or closest to, the target character. - for (var i = 0; i < map.length; i += 3) { - var mStart = map[i], mEnd = map[i + 1]; - if (ch < mStart) { - start = 0; end = 1; - collapse = "left"; - } else if (ch < mEnd) { - start = ch - mStart; - end = start + 1; - } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { - end = mEnd - mStart; - start = end - 1; - if (ch >= mEnd) collapse = "right"; - } - if (start != null) { - node = map[i + 2]; - if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) - collapse = bias; - if (bias == "left" && start == 0) - while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { - node = map[(i -= 3) + 2]; - collapse = "left"; - } - if (bias == "right" && start == mEnd - mStart) - while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { - node = map[(i += 3) + 2]; - collapse = "right"; - } - break; - } - } - - var rect; - if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. - while (start && isExtendingChar(prepared.line.text.charAt(mStart + start))) --start; - while (mStart + end < mEnd && isExtendingChar(prepared.line.text.charAt(mStart + end))) ++end; - if (ie_upto8 && start == 0 && end == mEnd - mStart) { - rect = node.parentNode.getBoundingClientRect(); - } else if (ie && cm.options.lineWrapping) { - var rects = range(node, start, end).getClientRects(); - if (rects.length) - rect = rects[bias == "right" ? rects.length - 1 : 0]; - else - rect = nullRect; - } else { - rect = range(node, start, end).getBoundingClientRect(); - } - } else { // If it is a widget, simply get the box for the whole widget. - if (start > 0) collapse = bias = "right"; - var rects; - if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) - rect = rects[bias == "right" ? rects.length - 1 : 0]; - else - rect = node.getBoundingClientRect(); - } - if (ie_upto8 && !start && (!rect || !rect.left && !rect.right)) { - var rSpan = node.parentNode.getClientRects()[0]; - if (rSpan) - rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; - else - rect = nullRect; - } - - var top, bot = (rect.bottom + rect.top) / 2 - prepared.rect.top; - var heights = prepared.view.measure.heights; - for (var i = 0; i < heights.length - 1; i++) - if (bot < heights[i]) break; - top = i ? heights[i - 1] : 0; bot = heights[i]; - var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, - right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, - top: top, bottom: bot}; - if (!rect.left && !rect.right) result.bogus = true; - return result; - } - - function clearLineMeasurementCacheFor(lineView) { - if (lineView.measure) { - lineView.measure.cache = {}; - lineView.measure.heights = null; - if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) - lineView.measure.caches[i] = {}; - } - } - - function clearLineMeasurementCache(cm) { - cm.display.externalMeasure = null; - removeChildren(cm.display.lineMeasure); - for (var i = 0; i < cm.display.view.length; i++) - clearLineMeasurementCacheFor(cm.display.view[i]); - } - - function clearCaches(cm) { - clearLineMeasurementCache(cm); - cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null; - if (!cm.options.lineWrapping) cm.display.maxLineChanged = true; - cm.display.lineNumChars = null; - } - - function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft; } - function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop; } - - // Converts a {top, bottom, left, right} box from line-local - // coordinates into another coordinate system. Context may be one of - // "line", "div" (display.lineDiv), "local"/null (editor), or "page". - function intoCoordSystem(cm, lineObj, rect, context) { - if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) { - var size = widgetHeight(lineObj.widgets[i]); - rect.top += size; rect.bottom += size; - } - if (context == "line") return rect; - if (!context) context = "local"; - var yOff = heightAtLine(lineObj); - if (context == "local") yOff += paddingTop(cm.display); - else yOff -= cm.display.viewOffset; - if (context == "page" || context == "window") { - var lOff = cm.display.lineSpace.getBoundingClientRect(); - yOff += lOff.top + (context == "window" ? 0 : pageScrollY()); - var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()); - rect.left += xOff; rect.right += xOff; - } - rect.top += yOff; rect.bottom += yOff; - return rect; - } - - // Coverts a box from "div" coords to another coordinate system. - // Context may be "window", "page", "div", or "local"/null. - function fromCoordSystem(cm, coords, context) { - if (context == "div") return coords; - var left = coords.left, top = coords.top; - // First move into "page" coordinate system - if (context == "page") { - left -= pageScrollX(); - top -= pageScrollY(); - } else if (context == "local" || !context) { - var localBox = cm.display.sizer.getBoundingClientRect(); - left += localBox.left; - top += localBox.top; - } - - var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect(); - return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}; - } - - function charCoords(cm, pos, context, lineObj, bias) { - if (!lineObj) lineObj = getLine(cm.doc, pos.line); - return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context); - } - - // Returns a box for a given cursor position, which may have an - // 'other' property containing the position of the secondary cursor - // on a bidi boundary. - function cursorCoords(cm, pos, context, lineObj, preparedMeasure) { - lineObj = lineObj || getLine(cm.doc, pos.line); - if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj); - function get(ch, right) { - var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left"); - if (right) m.left = m.right; else m.right = m.left; - return intoCoordSystem(cm, lineObj, m, context); - } - function getBidi(ch, partPos) { - var part = order[partPos], right = part.level % 2; - if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) { - part = order[--partPos]; - ch = bidiRight(part) - (part.level % 2 ? 0 : 1); - right = true; - } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) { - part = order[++partPos]; - ch = bidiLeft(part) - part.level % 2; - right = false; - } - if (right && ch == part.to && ch > part.from) return get(ch - 1); - return get(ch, right); - } - var order = getOrder(lineObj), ch = pos.ch; - if (!order) return get(ch); - var partPos = getBidiPartAt(order, ch); - var val = getBidi(ch, partPos); - if (bidiOther != null) val.other = getBidi(ch, bidiOther); - return val; - } - - // Used to cheaply estimate the coordinates for a position. Used for - // intermediate scroll updates. - function estimateCoords(cm, pos) { - var left = 0, pos = clipPos(cm.doc, pos); - if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch; - var lineObj = getLine(cm.doc, pos.line); - var top = heightAtLine(lineObj) + paddingTop(cm.display); - return {left: left, right: left, top: top, bottom: top + lineObj.height}; - } - - // Positions returned by coordsChar contain some extra information. - // xRel is the relative x position of the input coordinates compared - // to the found position (so xRel > 0 means the coordinates are to - // the right of the character position, for example). When outside - // is true, that means the coordinates lie outside the line's - // vertical range. - function PosWithInfo(line, ch, outside, xRel) { - var pos = Pos(line, ch); - pos.xRel = xRel; - if (outside) pos.outside = true; - return pos; - } - - // Compute the character position closest to the given coordinates. - // Input must be lineSpace-local ("div" coordinate system). - function coordsChar(cm, x, y) { - var doc = cm.doc; - y += cm.display.viewOffset; - if (y < 0) return PosWithInfo(doc.first, 0, true, -1); - var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1; - if (lineN > last) - return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1); - if (x < 0) x = 0; - - var lineObj = getLine(doc, lineN); - for (;;) { - var found = coordsCharInner(cm, lineObj, lineN, x, y); - var merged = collapsedSpanAtEnd(lineObj); - var mergedPos = merged && merged.find(0, true); - if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0)) - lineN = lineNo(lineObj = mergedPos.to.line); - else - return found; - } - } - - function coordsCharInner(cm, lineObj, lineNo, x, y) { - var innerOff = y - heightAtLine(lineObj); - var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth; - var preparedMeasure = prepareMeasureForLine(cm, lineObj); - - function getX(ch) { - var sp = cursorCoords(cm, Pos(lineNo, ch), "line", lineObj, preparedMeasure); - wrongLine = true; - if (innerOff > sp.bottom) return sp.left - adjust; - else if (innerOff < sp.top) return sp.left + adjust; - else wrongLine = false; - return sp.left; - } - - var bidi = getOrder(lineObj), dist = lineObj.text.length; - var from = lineLeft(lineObj), to = lineRight(lineObj); - var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine; - - if (x > toX) return PosWithInfo(lineNo, to, toOutside, 1); - // Do a binary search between these bounds. - for (;;) { - if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) { - var ch = x < fromX || x - fromX <= toX - x ? from : to; - var xDiff = x - (ch == from ? fromX : toX); - while (isExtendingChar(lineObj.text.charAt(ch))) ++ch; - var pos = PosWithInfo(lineNo, ch, ch == from ? fromOutside : toOutside, - xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0); - return pos; - } - var step = Math.ceil(dist / 2), middle = from + step; - if (bidi) { - middle = from; - for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1); - } - var middleX = getX(middle); - if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;} - else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;} - } - } - - var measureText; - // Compute the default text height. - function textHeight(display) { - if (display.cachedTextHeight != null) return display.cachedTextHeight; - if (measureText == null) { - measureText = elt("pre"); - // Measure a bunch of lines, for browsers that compute - // fractional heights. - for (var i = 0; i < 49; ++i) { - measureText.appendChild(document.createTextNode("x")); - measureText.appendChild(elt("br")); - } - measureText.appendChild(document.createTextNode("x")); - } - removeChildrenAndAdd(display.measure, measureText); - var height = measureText.offsetHeight / 50; - if (height > 3) display.cachedTextHeight = height; - removeChildren(display.measure); - return height || 1; - } - - // Compute the default character width. - function charWidth(display) { - if (display.cachedCharWidth != null) return display.cachedCharWidth; - var anchor = elt("span", "xxxxxxxxxx"); - var pre = elt("pre", [anchor]); - removeChildrenAndAdd(display.measure, pre); - var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10; - if (width > 2) display.cachedCharWidth = width; - return width || 10; - } - - // OPERATIONS - - // Operations are used to wrap a series of changes to the editor - // state in such a way that each change won't have to update the - // cursor and display (which would be awkward, slow, and - // error-prone). Instead, display updates are batched and then all - // combined and executed at once. - - var nextOpId = 0; - // Start a new operation. - function startOperation(cm) { - cm.curOp = { - viewChanged: false, // Flag that indicates that lines might need to be redrawn - forceUpdate: false, // Used to force a redraw - updateInput: null, // Whether to reset the input textarea - typing: false, // Whether this reset should be careful to leave existing text (for compositing) - changeObjs: null, // Accumulated changes, for firing change events - cursorActivity: false, // Whether to fire a cursorActivity event - selectionChanged: false, // Whether the selection needs to be redrawn - updateMaxLine: false, // Set when the widest line needs to be determined anew - scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet - scrollToPos: null, // Used to scroll to a specific position - id: ++nextOpId // Unique ID - }; - if (!delayedCallbackDepth++) delayedCallbacks = []; - } - - // Finish an operation, updating the display and signalling delayed events - function endOperation(cm) { - var op = cm.curOp, doc = cm.doc, display = cm.display; - cm.curOp = null; - - if (op.updateMaxLine) findMaxLine(cm); - - // If it looks like an update might be needed, call updateDisplay - if (op.viewChanged || op.forceUpdate || op.scrollTop != null || - op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || - op.scrollToPos.to.line >= display.viewTo) || - display.maxLineChanged && cm.options.lineWrapping) { - var updated = updateDisplay(cm, {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate); - if (cm.display.scroller.offsetHeight) cm.doc.scrollTop = cm.display.scroller.scrollTop; - } - // If no update was run, but the selection changed, redraw that. - if (!updated && op.selectionChanged) updateSelection(cm); - - // Propagate the scroll position to the actual DOM scroller - if (op.scrollTop != null && display.scroller.scrollTop != op.scrollTop) { - var top = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop)); - display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = top; - } - if (op.scrollLeft != null && display.scroller.scrollLeft != op.scrollLeft) { - var left = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft)); - display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = left; - alignHorizontally(cm); - } - // If we need to scroll a specific position into view, do so. - if (op.scrollToPos) { - var coords = scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos.from), - clipPos(cm.doc, op.scrollToPos.to), op.scrollToPos.margin); - if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords); - } - - if (op.selectionChanged) restartBlink(cm); - - if (cm.state.focused && op.updateInput) - resetInput(cm, op.typing); - - // Fire events for markers that are hidden/unidden by editing or - // undoing - var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; - if (hidden) for (var i = 0; i < hidden.length; ++i) - if (!hidden[i].lines.length) signal(hidden[i], "hide"); - if (unhidden) for (var i = 0; i < unhidden.length; ++i) - if (unhidden[i].lines.length) signal(unhidden[i], "unhide"); - - var delayed; - if (!--delayedCallbackDepth) { - delayed = delayedCallbacks; - delayedCallbacks = null; - } - // Fire change events, and delayed event handlers - if (op.changeObjs) { - for (var i = 0; i < op.changeObjs.length; i++) - signal(cm, "change", cm, op.changeObjs[i]); - signal(cm, "changes", cm, op.changeObjs); - } - if (op.cursorActivity) signal(cm, "cursorActivity", cm); - if (delayed) for (var i = 0; i < delayed.length; ++i) delayed[i](); - } - - // Run the given function in an operation - function runInOp(cm, f) { - if (cm.curOp) return f(); - startOperation(cm); - try { return f(); } - finally { endOperation(cm); } - } - // Wraps a function in an operation. Returns the wrapped function. - function operation(cm, f) { - return function() { - if (cm.curOp) return f.apply(cm, arguments); - startOperation(cm); - try { return f.apply(cm, arguments); } - finally { endOperation(cm); } - }; - } - // Used to add methods to editor and doc instances, wrapping them in - // operations. - function methodOp(f) { - return function() { - if (this.curOp) return f.apply(this, arguments); - startOperation(this); - try { return f.apply(this, arguments); } - finally { endOperation(this); } - }; - } - function docMethodOp(f) { - return function() { - var cm = this.cm; - if (!cm || cm.curOp) return f.apply(this, arguments); - startOperation(cm); - try { return f.apply(this, arguments); } - finally { endOperation(cm); } - }; - } - - // VIEW TRACKING - - // These objects are used to represent the visible (currently drawn) - // part of the document. A LineView may correspond to multiple - // logical lines, if those are connected by collapsed ranges. - function LineView(doc, line, lineN) { - // The starting line - this.line = line; - // Continuing lines, if any - this.rest = visualLineContinued(line); - // Number of logical lines in this visual line - this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1; - this.node = this.text = null; - this.hidden = lineIsHidden(doc, line); - } - - // Create a range of LineView objects for the given lines. - function buildViewArray(cm, from, to) { - var array = [], nextPos; - for (var pos = from; pos < to; pos = nextPos) { - var view = new LineView(cm.doc, getLine(cm.doc, pos), pos); - nextPos = pos + view.size; - array.push(view); - } - return array; - } - - // Updates the display.view data structure for a given change to the - // document. From and to are in pre-change coordinates. Lendiff is - // the amount of lines added or subtracted by the change. This is - // used for changes that span multiple lines, or change the way - // lines are divided into visual lines. regLineChange (below) - // registers single-line changes. - function regChange(cm, from, to, lendiff) { - if (from == null) from = cm.doc.first; - if (to == null) to = cm.doc.first + cm.doc.size; - if (!lendiff) lendiff = 0; - - var display = cm.display; - if (lendiff && to < display.viewTo && - (display.updateLineNumbers == null || display.updateLineNumbers > from)) - display.updateLineNumbers = from; - - cm.curOp.viewChanged = true; - - if (from >= display.viewTo) { // Change after - if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) - resetView(cm); - } else if (to <= display.viewFrom) { // Change before - if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { - resetView(cm); - } else { - display.viewFrom += lendiff; - display.viewTo += lendiff; - } - } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap - resetView(cm); - } else if (from <= display.viewFrom) { // Top overlap - var cut = viewCuttingPoint(cm, to, to + lendiff, 1); - if (cut) { - display.view = display.view.slice(cut.index); - display.viewFrom = cut.lineN; - display.viewTo += lendiff; - } else { - resetView(cm); - } - } else if (to >= display.viewTo) { // Bottom overlap - var cut = viewCuttingPoint(cm, from, from, -1); - if (cut) { - display.view = display.view.slice(0, cut.index); - display.viewTo = cut.lineN; - } else { - resetView(cm); - } - } else { // Gap in the middle - var cutTop = viewCuttingPoint(cm, from, from, -1); - var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1); - if (cutTop && cutBot) { - display.view = display.view.slice(0, cutTop.index) - .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) - .concat(display.view.slice(cutBot.index)); - display.viewTo += lendiff; - } else { - resetView(cm); - } - } - - var ext = display.externalMeasured; - if (ext) { - if (to < ext.lineN) - ext.lineN += lendiff; - else if (from < ext.lineN + ext.size) - display.externalMeasured = null; - } - } - - // Register a change to a single line. Type must be one of "text", - // "gutter", "class", "widget" - function regLineChange(cm, line, type) { - cm.curOp.viewChanged = true; - var display = cm.display, ext = cm.display.externalMeasured; - if (ext && line >= ext.lineN && line < ext.lineN + ext.size) - display.externalMeasured = null; - - if (line < display.viewFrom || line >= display.viewTo) return; - var lineView = display.view[findViewIndex(cm, line)]; - if (lineView.node == null) return; - var arr = lineView.changes || (lineView.changes = []); - if (indexOf(arr, type) == -1) arr.push(type); - } - - // Clear the view. - function resetView(cm) { - cm.display.viewFrom = cm.display.viewTo = cm.doc.first; - cm.display.view = []; - cm.display.viewOffset = 0; - } - - // Find the view element corresponding to a given line. Return null - // when the line isn't visible. - function findViewIndex(cm, n) { - if (n >= cm.display.viewTo) return null; - n -= cm.display.viewFrom; - if (n < 0) return null; - var view = cm.display.view; - for (var i = 0; i < view.length; i++) { - n -= view[i].size; - if (n < 0) return i; - } - } - - function viewCuttingPoint(cm, oldN, newN, dir) { - var index = findViewIndex(cm, oldN), diff, view = cm.display.view; - if (!sawCollapsedSpans) return {index: index, lineN: newN}; - for (var i = 0, n = cm.display.viewFrom; i < index; i++) - n += view[i].size; - if (n != oldN) { - if (dir > 0) { - if (index == view.length - 1) return null; - diff = (n + view[index].size) - oldN; - index++; - } else { - diff = n - oldN; - } - oldN += diff; newN += diff; - } - while (visualLineNo(cm.doc, newN) != newN) { - if (index == (dir < 0 ? 0 : view.length - 1)) return null; - newN += dir * view[index - (dir < 0 ? 1 : 0)].size; - index += dir; - } - return {index: index, lineN: newN}; - } - - // Force the view to cover a given range, adding empty view element - // or clipping off existing ones as needed. - function adjustView(cm, from, to) { - var display = cm.display, view = display.view; - if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { - display.view = buildViewArray(cm, from, to); - display.viewFrom = from; - } else { - if (display.viewFrom > from) - display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); - else if (display.viewFrom < from) - display.view = display.view.slice(findViewIndex(cm, from)); - display.viewFrom = from; - if (display.viewTo < to) - display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); - else if (display.viewTo > to) - display.view = display.view.slice(0, findViewIndex(cm, to)); - } - display.viewTo = to; - } - - // Count the number of lines in the view whose DOM representation is - // out of date (or nonexistent). - function countDirtyView(cm) { - var view = cm.display.view, dirty = 0; - for (var i = 0; i < view.length; i++) { - var lineView = view[i]; - if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty; - } - return dirty; - } - - // INPUT HANDLING - - // Poll for input changes, using the normal rate of polling. This - // runs as long as the editor is focused. - function slowPoll(cm) { - if (cm.display.pollingFast) return; - cm.display.poll.set(cm.options.pollInterval, function() { - readInput(cm); - if (cm.state.focused) slowPoll(cm); - }); - } - - // When an event has just come in that is likely to add or change - // something in the input textarea, we poll faster, to ensure that - // the change appears on the screen quickly. - function fastPoll(cm) { - var missed = false; - cm.display.pollingFast = true; - function p() { - var changed = readInput(cm); - if (!changed && !missed) {missed = true; cm.display.poll.set(60, p);} - else {cm.display.pollingFast = false; slowPoll(cm);} - } - cm.display.poll.set(20, p); - } - - // Read input from the textarea, and update the document to match. - // When something is selected, it is present in the textarea, and - // selected (unless it is huge, in which case a placeholder is - // used). When nothing is selected, the cursor sits after previously - // seen text (can be empty), which is stored in prevInput (we must - // not reset the textarea when typing, because that breaks IME). - function readInput(cm) { - var input = cm.display.input, prevInput = cm.display.prevInput, doc = cm.doc; - // Since this is called a *lot*, try to bail out as cheaply as - // possible when it is clear that nothing happened. hasSelection - // will be the case when there is a lot of text in the textarea, - // in which case reading its value would be expensive. - if (!cm.state.focused || hasSelection(input) || isReadOnly(cm) || cm.options.disableInput) return false; - // See paste handler for more on the fakedLastChar kludge - if (cm.state.pasteIncoming && cm.state.fakedLastChar) { - input.value = input.value.substring(0, input.value.length - 1); - cm.state.fakedLastChar = false; - } - var text = input.value; - // If nothing changed, bail. - if (text == prevInput && !cm.somethingSelected()) return false; - // Work around nonsensical selection resetting in IE9/10 - if (ie && !ie_upto8 && cm.display.inputHasSelection === text) { - resetInput(cm); - return false; - } - - var withOp = !cm.curOp; - if (withOp) startOperation(cm); - cm.display.shift = false; - - // Find the part of the input that is actually new - var same = 0, l = Math.min(prevInput.length, text.length); - while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same; - var inserted = text.slice(same), textLines = splitLines(inserted); - - // When pasing N lines into N selections, insert one line per selection - var multiPaste = cm.state.pasteIncoming && textLines.length > 1 && doc.sel.ranges.length == textLines.length; - - // Normal behavior is to insert the new text into every selection - for (var i = doc.sel.ranges.length - 1; i >= 0; i--) { - var range = doc.sel.ranges[i]; - var from = range.from(), to = range.to(); - // Handle deletion - if (same < prevInput.length) - from = Pos(from.line, from.ch - (prevInput.length - same)); - // Handle overwrite - else if (cm.state.overwrite && range.empty() && !cm.state.pasteIncoming) - to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); - var updateInput = cm.curOp.updateInput; - var changeEvent = {from: from, to: to, text: multiPaste ? [textLines[i]] : textLines, - origin: cm.state.pasteIncoming ? "paste" : cm.state.cutIncoming ? "cut" : "+input"}; - makeChange(cm.doc, changeEvent); - signalLater(cm, "inputRead", cm, changeEvent); - // When an 'electric' character is inserted, immediately trigger a reindent - if (inserted && !cm.state.pasteIncoming && cm.options.electricChars && - cm.options.smartIndent && range.head.ch < 100 && - (!i || doc.sel.ranges[i - 1].head.line != range.head.line)) { - var electric = cm.getModeAt(range.head).electricChars; - if (electric) for (var j = 0; j < electric.length; j++) - if (inserted.indexOf(electric.charAt(j)) > -1) { - indentLine(cm, range.head.line, "smart"); - break; - } - } - } - ensureCursorVisible(cm); - cm.curOp.updateInput = updateInput; - cm.curOp.typing = true; - - // Don't leave long text in the textarea, since it makes further polling slow - if (text.length > 1000 || text.indexOf("\n") > -1) input.value = cm.display.prevInput = ""; - else cm.display.prevInput = text; - if (withOp) endOperation(cm); - cm.state.pasteIncoming = cm.state.cutIncoming = false; - return true; - } - - // Reset the input to correspond to the selection (or to be empty, - // when not typing and nothing is selected) - function resetInput(cm, typing) { - var minimal, selected, doc = cm.doc; - if (cm.somethingSelected()) { - cm.display.prevInput = ""; - var range = doc.sel.primary(); - minimal = hasCopyEvent && - (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000); - var content = minimal ? "-" : selected || cm.getSelection(); - cm.display.input.value = content; - if (cm.state.focused) selectInput(cm.display.input); - if (ie && !ie_upto8) cm.display.inputHasSelection = content; - } else if (!typing) { - cm.display.prevInput = cm.display.input.value = ""; - if (ie && !ie_upto8) cm.display.inputHasSelection = null; - } - cm.display.inaccurateSelection = minimal; - } - - function focusInput(cm) { - if (cm.options.readOnly != "nocursor" && (!mobile || activeElt() != cm.display.input)) - cm.display.input.focus(); - } - - function ensureFocus(cm) { - if (!cm.state.focused) { focusInput(cm); onFocus(cm); } - } - - function isReadOnly(cm) { - return cm.options.readOnly || cm.doc.cantEdit; - } - - // EVENT HANDLERS - - // Attach the necessary event handlers when initializing the editor - function registerEventHandlers(cm) { - var d = cm.display; - on(d.scroller, "mousedown", operation(cm, onMouseDown)); - // Older IE's will not fire a second mousedown for a double click - if (ie_upto10) - on(d.scroller, "dblclick", operation(cm, function(e) { - if (signalDOMEvent(cm, e)) return; - var pos = posFromMouse(cm, e); - if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return; - e_preventDefault(e); - var word = findWordAt(cm.doc, pos); - extendSelection(cm.doc, word.anchor, word.head); - })); - else - on(d.scroller, "dblclick", function(e) { signalDOMEvent(cm, e) || e_preventDefault(e); }); - // Prevent normal selection in the editor (we handle our own) - on(d.lineSpace, "selectstart", function(e) { - if (!eventInWidget(d, e)) e_preventDefault(e); - }); - // Some browsers fire contextmenu *after* opening the menu, at - // which point we can't mess with it anymore. Context menu is - // handled in onMouseDown for these browsers. - if (!captureRightClick) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);}); - - // Sync scrolling between fake scrollbars and real scrollable - // area, ensure viewport is updated when scrolling. - on(d.scroller, "scroll", function() { - if (d.scroller.clientHeight) { - setScrollTop(cm, d.scroller.scrollTop); - setScrollLeft(cm, d.scroller.scrollLeft, true); - signal(cm, "scroll", cm); - } - }); - on(d.scrollbarV, "scroll", function() { - if (d.scroller.clientHeight) setScrollTop(cm, d.scrollbarV.scrollTop); - }); - on(d.scrollbarH, "scroll", function() { - if (d.scroller.clientHeight) setScrollLeft(cm, d.scrollbarH.scrollLeft); - }); - - // Listen to wheel events in order to try and update the viewport on time. - on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);}); - on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);}); - - // Prevent clicks in the scrollbars from killing focus - function reFocus() { if (cm.state.focused) setTimeout(bind(focusInput, cm), 0); } - on(d.scrollbarH, "mousedown", reFocus); - on(d.scrollbarV, "mousedown", reFocus); - // Prevent wrapper from ever scrolling - on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); - - // When the window resizes, we need to refresh active editors. - var resizeTimer; - function onResize() { - if (resizeTimer == null) resizeTimer = setTimeout(function() { - resizeTimer = null; - // Might be a text scaling operation, clear size caches. - d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = knownScrollbarWidth = null; - cm.setSize(); - }, 100); - } - on(window, "resize", onResize); - // The above handler holds on to the editor and its data - // structures. Here we poll to unregister it when the editor is no - // longer in the document, so that it can be garbage-collected. - function unregister() { - for (var p = d.wrapper.parentNode; p && p != document.body; p = p.parentNode) {} - if (p) setTimeout(unregister, 5000); - else off(window, "resize", onResize); - } - setTimeout(unregister, 5000); - - on(d.input, "keyup", operation(cm, onKeyUp)); - on(d.input, "input", function() { - if (ie && !ie_upto8 && cm.display.inputHasSelection) cm.display.inputHasSelection = null; - fastPoll(cm); - }); - on(d.input, "keydown", operation(cm, onKeyDown)); - on(d.input, "keypress", operation(cm, onKeyPress)); - on(d.input, "focus", bind(onFocus, cm)); - on(d.input, "blur", bind(onBlur, cm)); - - function drag_(e) { - if (!signalDOMEvent(cm, e)) e_stop(e); - } - if (cm.options.dragDrop) { - on(d.scroller, "dragstart", function(e){onDragStart(cm, e);}); - on(d.scroller, "dragenter", drag_); - on(d.scroller, "dragover", drag_); - on(d.scroller, "drop", operation(cm, onDrop)); - } - on(d.scroller, "paste", function(e) { - if (eventInWidget(d, e)) return; - cm.state.pasteIncoming = true; - focusInput(cm); - fastPoll(cm); - }); - on(d.input, "paste", function() { - // Workaround for webkit bug https://bugs.webkit.org/show_bug.cgi?id=90206 - // Add a char to the end of textarea before paste occur so that - // selection doesn't span to the end of textarea. - if (webkit && !cm.state.fakedLastChar && !(new Date - cm.state.lastMiddleDown < 200)) { - var start = d.input.selectionStart, end = d.input.selectionEnd; - d.input.value += "$"; - d.input.selectionStart = start; - d.input.selectionEnd = end; - cm.state.fakedLastChar = true; - } - cm.state.pasteIncoming = true; - fastPoll(cm); - }); - - function prepareCopy(e) { - if (d.inaccurateSelection) { - d.prevInput = ""; - d.inaccurateSelection = false; - d.input.value = cm.getSelection(); - selectInput(d.input); - } - if (e.type == "cut") cm.state.cutIncoming = true; - } - on(d.input, "cut", prepareCopy); - on(d.input, "copy", prepareCopy); - - // Needed to handle Tab key in KHTML - if (khtml) on(d.sizer, "mouseup", function() { - if (activeElt() == d.input) d.input.blur(); - focusInput(cm); - }); - } - - // MOUSE EVENTS - - // Return true when the given mouse event happened in a widget - function eventInWidget(display, e) { - for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { - if (!n || n.ignoreEvents || n.parentNode == display.sizer && n != display.mover) return true; - } - } - - // Given a mouse event, find the corresponding position. If liberal - // is false, it checks whether a gutter or scrollbar was clicked, - // and returns null if it was. forRect is used by rectangular - // selections, and tries to estimate a character position even for - // coordinates beyond the right of the text. - function posFromMouse(cm, e, liberal, forRect) { - var display = cm.display; - if (!liberal) { - var target = e_target(e); - if (target == display.scrollbarH || target == display.scrollbarV || - target == display.scrollbarFiller || target == display.gutterFiller) return null; - } - var x, y, space = display.lineSpace.getBoundingClientRect(); - // Fails unpredictably on IE[67] when mouse is dragged around quickly. - try { x = e.clientX - space.left; y = e.clientY - space.top; } - catch (e) { return null; } - var coords = coordsChar(cm, x, y), line; - if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { - var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length; - coords = Pos(coords.line, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff); - } - return coords; - } - - // A mouse down can be a single click, double click, triple click, - // start of selection drag, start of text drag, new cursor - // (ctrl-click), rectangle drag (alt-drag), or xwin - // middle-click-paste. Or it might be a click on something we should - // not interfere with, such as a scrollbar or widget. - function onMouseDown(e) { - if (signalDOMEvent(this, e)) return; - var cm = this, display = cm.display; - display.shift = e.shiftKey; - - if (eventInWidget(display, e)) { - if (!webkit) { - // Briefly turn off draggability, to allow widgets to do - // normal dragging things. - display.scroller.draggable = false; - setTimeout(function(){display.scroller.draggable = true;}, 100); - } - return; - } - if (clickInGutter(cm, e)) return; - var start = posFromMouse(cm, e); - window.focus(); - - switch (e_button(e)) { - case 1: - if (start) - leftButtonDown(cm, e, start); - else if (e_target(e) == display.scroller) - e_preventDefault(e); - break; - case 2: - if (webkit) cm.state.lastMiddleDown = +new Date; - if (start) extendSelection(cm.doc, start); - setTimeout(bind(focusInput, cm), 20); - e_preventDefault(e); - break; - case 3: - if (captureRightClick) onContextMenu(cm, e); - break; - } - } - - var lastClick, lastDoubleClick; - function leftButtonDown(cm, e, start) { - setTimeout(bind(ensureFocus, cm), 0); - - var now = +new Date, type; - if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) { - type = "triple"; - } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) { - type = "double"; - lastDoubleClick = {time: now, pos: start}; - } else { - type = "single"; - lastClick = {time: now, pos: start}; - } - - var sel = cm.doc.sel, addNew = mac ? e.metaKey : e.ctrlKey; - if (cm.options.dragDrop && dragAndDrop && !addNew && !isReadOnly(cm) && - type == "single" && sel.contains(start) > -1 && sel.somethingSelected()) - leftButtonStartDrag(cm, e, start); - else - leftButtonSelect(cm, e, start, type, addNew); - } - - // Start a text drag. When it ends, see if any dragging actually - // happen, and treat as a click if it didn't. - function leftButtonStartDrag(cm, e, start) { - var display = cm.display; - var dragEnd = operation(cm, function(e2) { - if (webkit) display.scroller.draggable = false; - cm.state.draggingText = false; - off(document, "mouseup", dragEnd); - off(display.scroller, "drop", dragEnd); - if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { - e_preventDefault(e2); - extendSelection(cm.doc, start); - focusInput(cm); - // Work around unexplainable focus problem in IE9 (#2127) - if (ie_upto10 && !ie_upto8) - setTimeout(function() {document.body.focus(); focusInput(cm);}, 20); - } - }); - // Let the drag handler handle this. - if (webkit) display.scroller.draggable = true; - cm.state.draggingText = dragEnd; - // IE's approach to draggable - if (display.scroller.dragDrop) display.scroller.dragDrop(); - on(document, "mouseup", dragEnd); - on(display.scroller, "drop", dragEnd); - } - - // Normal selection, as opposed to text dragging. - function leftButtonSelect(cm, e, start, type, addNew) { - var display = cm.display, doc = cm.doc; - e_preventDefault(e); - - var ourRange, ourIndex, startSel = doc.sel; - if (addNew) { - ourIndex = doc.sel.contains(start); - if (ourIndex > -1) - ourRange = doc.sel.ranges[ourIndex]; - else - ourRange = new Range(start, start); - } else { - ourRange = doc.sel.primary(); - } - - if (e.altKey) { - type = "rect"; - if (!addNew) ourRange = new Range(start, start); - start = posFromMouse(cm, e, true, true); - ourIndex = -1; - } else if (type == "double") { - var word = findWordAt(doc, start); - if (cm.display.shift || doc.extend) - ourRange = extendRange(doc, ourRange, word.anchor, word.head); - else - ourRange = word; - } else if (type == "triple") { - var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0))); - if (cm.display.shift || doc.extend) - ourRange = extendRange(doc, ourRange, line.anchor, line.head); - else - ourRange = line; - } else { - ourRange = extendRange(doc, ourRange, start); - } - - if (!addNew) { - ourIndex = 0; - setSelection(doc, new Selection([ourRange], 0), sel_mouse); - } else if (ourIndex > -1) { - replaceOneSelection(doc, ourIndex, ourRange, sel_mouse); - } else { - ourIndex = doc.sel.ranges.length; - setSelection(doc, normalizeSelection(doc.sel.ranges.concat([ourRange]), ourIndex), - {scroll: false, origin: "*mouse"}); - } - - var lastPos = start; - function extendTo(pos) { - if (cmp(lastPos, pos) == 0) return; - lastPos = pos; - - if (type == "rect") { - var ranges = [], tabSize = cm.options.tabSize; - var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize); - var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize); - var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol); - for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); - line <= end; line++) { - var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize); - if (left == right) - ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); - else if (text.length > leftPos) - ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); - } - if (!ranges.length) ranges.push(new Range(start, start)); - setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), sel_mouse); - } else { - var oldRange = ourRange; - var anchor = oldRange.anchor, head = pos; - if (type != "single") { - if (type == "double") - var range = findWordAt(doc, pos); - else - var range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0))); - if (cmp(range.anchor, anchor) > 0) { - head = range.head; - anchor = minPos(oldRange.from(), range.anchor); - } else { - head = range.anchor; - anchor = maxPos(oldRange.to(), range.head); - } - } - var ranges = startSel.ranges.slice(0); - ranges[ourIndex] = new Range(clipPos(doc, anchor), head); - setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse); - } - } - - var editorSize = display.wrapper.getBoundingClientRect(); - // Used to ensure timeout re-tries don't fire when another extend - // happened in the meantime (clearTimeout isn't reliable -- at - // least on Chrome, the timeouts still happen even when cleared, - // if the clear happens after their scheduled firing time). - var counter = 0; - - function extend(e) { - var curCount = ++counter; - var cur = posFromMouse(cm, e, true, type == "rect"); - if (!cur) return; - if (cmp(cur, lastPos) != 0) { - ensureFocus(cm); - extendTo(cur); - var visible = visibleLines(display, doc); - if (cur.line >= visible.to || cur.line < visible.from) - setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150); - } else { - var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; - if (outside) setTimeout(operation(cm, function() { - if (counter != curCount) return; - display.scroller.scrollTop += outside; - extend(e); - }), 50); - } - } - - function done(e) { - counter = Infinity; - e_preventDefault(e); - focusInput(cm); - off(document, "mousemove", move); - off(document, "mouseup", up); - doc.history.lastSelOrigin = null; - } - - var move = operation(cm, function(e) { - if ((ie && !ie_upto9) ? !e.buttons : !e_button(e)) done(e); - else extend(e); - }); - var up = operation(cm, done); - on(document, "mousemove", move); - on(document, "mouseup", up); - } - - // Determines whether an event happened in the gutter, and fires the - // handlers for the corresponding event. - function gutterEvent(cm, e, type, prevent, signalfn) { - try { var mX = e.clientX, mY = e.clientY; } - catch(e) { return false; } - if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false; - if (prevent) e_preventDefault(e); - - var display = cm.display; - var lineBox = display.lineDiv.getBoundingClientRect(); - - if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e); - mY -= lineBox.top - display.viewOffset; - - for (var i = 0; i < cm.options.gutters.length; ++i) { - var g = display.gutters.childNodes[i]; - if (g && g.getBoundingClientRect().right >= mX) { - var line = lineAtHeight(cm.doc, mY); - var gutter = cm.options.gutters[i]; - signalfn(cm, type, cm, line, gutter, e); - return e_defaultPrevented(e); - } - } - } - - function clickInGutter(cm, e) { - return gutterEvent(cm, e, "gutterClick", true, signalLater); - } - - // Kludge to work around strange IE behavior where it'll sometimes - // re-fire a series of drag-related events right after the drop (#1551) - var lastDrop = 0; - - function onDrop(e) { - var cm = this; - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) - return; - e_preventDefault(e); - if (ie_upto10) lastDrop = +new Date; - var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; - if (!pos || isReadOnly(cm)) return; - // Might be a file drop, in which case we simply extract the text - // and insert it. - if (files && files.length && window.FileReader && window.File) { - var n = files.length, text = Array(n), read = 0; - var loadFile = function(file, i) { - var reader = new FileReader; - reader.onload = function() { - text[i] = reader.result; - if (++read == n) { - pos = clipPos(cm.doc, pos); - var change = {from: pos, to: pos, text: splitLines(text.join("\n")), origin: "paste"}; - makeChange(cm.doc, change); - setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))); - } - }; - reader.readAsText(file); - }; - for (var i = 0; i < n; ++i) loadFile(files[i], i); - } else { // Normal drop - // Don't do a replace if the drop happened inside of the selected text. - if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { - cm.state.draggingText(e); - // Ensure the editor is re-focused - setTimeout(bind(focusInput, cm), 20); - return; - } - try { - var text = e.dataTransfer.getData("Text"); - if (text) { - var selected = cm.state.draggingText && cm.listSelections(); - setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)); - if (selected) for (var i = 0; i < selected.length; ++i) - replaceRange(cm.doc, "", selected[i].anchor, selected[i].head, "drag"); - cm.replaceSelection(text, "around", "paste"); - focusInput(cm); - } - } - catch(e){} - } - } - - function onDragStart(cm, e) { - if (ie_upto10 && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; } - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return; - - e.dataTransfer.setData("Text", cm.getSelection()); - - // Use dummy image instead of default browsers image. - // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. - if (e.dataTransfer.setDragImage && !safari) { - var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); - img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; - if (presto) { - img.width = img.height = 1; - cm.display.wrapper.appendChild(img); - // Force a relayout, or Opera won't use our image for some obscure reason - img._top = img.offsetTop; - } - e.dataTransfer.setDragImage(img, 0, 0); - if (presto) img.parentNode.removeChild(img); - } - } - - // SCROLL EVENTS - - // Sync the scrollable area and scrollbars, ensure the viewport - // covers the visible area. - function setScrollTop(cm, val) { - if (Math.abs(cm.doc.scrollTop - val) < 2) return; - cm.doc.scrollTop = val; - if (!gecko) updateDisplay(cm, {top: val}); - if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val; - if (cm.display.scrollbarV.scrollTop != val) cm.display.scrollbarV.scrollTop = val; - if (gecko) updateDisplay(cm); - startWorker(cm, 100); - } - // Sync scroller and scrollbar, ensure the gutter elements are - // aligned. - function setScrollLeft(cm, val, isScroller) { - if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return; - val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth); - cm.doc.scrollLeft = val; - alignHorizontally(cm); - if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val; - if (cm.display.scrollbarH.scrollLeft != val) cm.display.scrollbarH.scrollLeft = val; - } - - // Since the delta values reported on mouse wheel events are - // unstandardized between browsers and even browser versions, and - // generally horribly unpredictable, this code starts by measuring - // the scroll effect that the first few mouse wheel events have, - // and, from that, detects the way it can convert deltas to pixel - // offsets afterwards. - // - // The reason we want to know the amount a wheel event will scroll - // is that it gives us a chance to update the display before the - // actual scrolling happens, reducing flickering. - - var wheelSamples = 0, wheelPixelsPerUnit = null; - // Fill in a browser-detected starting value on browsers where we - // know one. These don't have to be accurate -- the result of them - // being wrong would just be a slight flicker on the first wheel - // scroll (if it is large enough). - if (ie) wheelPixelsPerUnit = -.53; - else if (gecko) wheelPixelsPerUnit = 15; - else if (chrome) wheelPixelsPerUnit = -.7; - else if (safari) wheelPixelsPerUnit = -1/3; - - function onScrollWheel(cm, e) { - var dx = e.wheelDeltaX, dy = e.wheelDeltaY; - if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail; - if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail; - else if (dy == null) dy = e.wheelDelta; - - var display = cm.display, scroll = display.scroller; - // Quit if there's nothing to scroll here - if (!(dx && scroll.scrollWidth > scroll.clientWidth || - dy && scroll.scrollHeight > scroll.clientHeight)) return; - - // Webkit browsers on OS X abort momentum scrolls when the target - // of the scroll event is removed from the scrollable element. - // This hack (see related code in patchDisplay) makes sure the - // element is kept around. - if (dy && mac && webkit) { - outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { - for (var i = 0; i < view.length; i++) { - if (view[i].node == cur) { - cm.display.currentWheelTarget = cur; - break outer; - } - } - } - } - - // On some browsers, horizontal scrolling will cause redraws to - // happen before the gutter has been realigned, causing it to - // wriggle around in a most unseemly way. When we have an - // estimated pixels/delta value, we just handle horizontal - // scrolling entirely here. It'll be slightly off from native, but - // better than glitching out. - if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { - if (dy) - setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))); - setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth))); - e_preventDefault(e); - display.wheelStartX = null; // Abort measurement, if in progress - return; - } - - // 'Project' the visible viewport to cover the area that is being - // scrolled into view (if we know enough to estimate it). - if (dy && wheelPixelsPerUnit != null) { - var pixels = dy * wheelPixelsPerUnit; - var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; - if (pixels < 0) top = Math.max(0, top + pixels - 50); - else bot = Math.min(cm.doc.height, bot + pixels + 50); - updateDisplay(cm, {top: top, bottom: bot}); - } - - if (wheelSamples < 20) { - if (display.wheelStartX == null) { - display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; - display.wheelDX = dx; display.wheelDY = dy; - setTimeout(function() { - if (display.wheelStartX == null) return; - var movedX = scroll.scrollLeft - display.wheelStartX; - var movedY = scroll.scrollTop - display.wheelStartY; - var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || - (movedX && display.wheelDX && movedX / display.wheelDX); - display.wheelStartX = display.wheelStartY = null; - if (!sample) return; - wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); - ++wheelSamples; - }, 200); - } else { - display.wheelDX += dx; display.wheelDY += dy; - } - } - } - - // KEY EVENTS - - // Run a handler that was bound to a key. - function doHandleBinding(cm, bound, dropShift) { - if (typeof bound == "string") { - bound = commands[bound]; - if (!bound) return false; - } - // Ensure previous input has been read, so that the handler sees a - // consistent view of the document - if (cm.display.pollingFast && readInput(cm)) cm.display.pollingFast = false; - var prevShift = cm.display.shift, done = false; - try { - if (isReadOnly(cm)) cm.state.suppressEdits = true; - if (dropShift) cm.display.shift = false; - done = bound(cm) != Pass; - } finally { - cm.display.shift = prevShift; - cm.state.suppressEdits = false; - } - return done; - } - - // Collect the currently active keymaps. - function allKeyMaps(cm) { - var maps = cm.state.keyMaps.slice(0); - if (cm.options.extraKeys) maps.push(cm.options.extraKeys); - maps.push(cm.options.keyMap); - return maps; - } - - var maybeTransition; - // Handle a key from the keydown event. - function handleKeyBinding(cm, e) { - // Handle automatic keymap transitions - var startMap = getKeyMap(cm.options.keyMap), next = startMap.auto; - clearTimeout(maybeTransition); - if (next && !isModifierKey(e)) maybeTransition = setTimeout(function() { - if (getKeyMap(cm.options.keyMap) == startMap) { - cm.options.keyMap = (next.call ? next.call(null, cm) : next); - keyMapChanged(cm); - } - }, 50); - - var name = keyName(e, true), handled = false; - if (!name) return false; - var keymaps = allKeyMaps(cm); - - if (e.shiftKey) { - // First try to resolve full name (including 'Shift-'). Failing - // that, see if there is a cursor-motion command (starting with - // 'go') bound to the keyname without 'Shift-'. - handled = lookupKey("Shift-" + name, keymaps, function(b) {return doHandleBinding(cm, b, true);}) - || lookupKey(name, keymaps, function(b) { - if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) - return doHandleBinding(cm, b); - }); - } else { - handled = lookupKey(name, keymaps, function(b) { return doHandleBinding(cm, b); }); - } - - if (handled) { - e_preventDefault(e); - restartBlink(cm); - signalLater(cm, "keyHandled", cm, name, e); - } - return handled; - } - - // Handle a key from the keypress event - function handleCharBinding(cm, e, ch) { - var handled = lookupKey("'" + ch + "'", allKeyMaps(cm), - function(b) { return doHandleBinding(cm, b, true); }); - if (handled) { - e_preventDefault(e); - restartBlink(cm); - signalLater(cm, "keyHandled", cm, "'" + ch + "'", e); - } - return handled; - } - - var lastStoppedKey = null; - function onKeyDown(e) { - var cm = this; - ensureFocus(cm); - if (signalDOMEvent(cm, e)) return; - // IE does strange things with escape. - if (ie_upto10 && e.keyCode == 27) e.returnValue = false; - var code = e.keyCode; - cm.display.shift = code == 16 || e.shiftKey; - var handled = handleKeyBinding(cm, e); - if (presto) { - lastStoppedKey = handled ? code : null; - // Opera has no cut event... we try to at least catch the key combo - if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) - cm.replaceSelection("", null, "cut"); - } - } - - function onKeyUp(e) { - if (signalDOMEvent(this, e)) return; - if (e.keyCode == 16) this.doc.sel.shift = false; - } - - function onKeyPress(e) { - var cm = this; - if (signalDOMEvent(cm, e)) return; - var keyCode = e.keyCode, charCode = e.charCode; - if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;} - if (((presto && (!e.which || e.which < 10)) || khtml) && handleKeyBinding(cm, e)) return; - var ch = String.fromCharCode(charCode == null ? keyCode : charCode); - if (handleCharBinding(cm, e, ch)) return; - if (ie && !ie_upto8) cm.display.inputHasSelection = null; - fastPoll(cm); - } - - // FOCUS/BLUR EVENTS - - function onFocus(cm) { - if (cm.options.readOnly == "nocursor") return; - if (!cm.state.focused) { - signal(cm, "focus", cm); - cm.state.focused = true; - if (cm.display.wrapper.className.search(/\bCodeMirror-focused\b/) == -1) - cm.display.wrapper.className += " CodeMirror-focused"; - if (!cm.curOp) { - resetInput(cm); - if (webkit) setTimeout(bind(resetInput, cm, true), 0); // Issue #1730 - } - } - slowPoll(cm); - restartBlink(cm); - } - function onBlur(cm) { - if (cm.state.focused) { - signal(cm, "blur", cm); - cm.state.focused = false; - cm.display.wrapper.className = cm.display.wrapper.className.replace(" CodeMirror-focused", ""); - } - clearInterval(cm.display.blinker); - setTimeout(function() {if (!cm.state.focused) cm.display.shift = false;}, 150); - } - - // CONTEXT MENU HANDLING - - var detectingSelectAll; - // To make the context menu work, we need to briefly unhide the - // textarea (making it as unobtrusive as possible) to let the - // right-click take effect on it. - function onContextMenu(cm, e) { - if (signalDOMEvent(cm, e, "contextmenu")) return; - var display = cm.display; - if (eventInWidget(display, e) || contextMenuInGutter(cm, e)) return; - - var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; - if (!pos || presto) return; // Opera is difficult. - - // Reset the current text selection only if the click is done outside of the selection - // and 'resetSelectionOnContextMenu' option is true. - var reset = cm.options.resetSelectionOnContextMenu; - if (reset && cm.doc.sel.contains(pos) == -1) - operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); - - var oldCSS = display.input.style.cssText; - display.inputDiv.style.position = "absolute"; - display.input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e.clientY - 5) + - "px; left: " + (e.clientX - 5) + "px; z-index: 1000; background: transparent; outline: none;" + - "border-width: 0; outline: none; overflow: hidden; opacity: .05; -ms-opacity: .05; filter: alpha(opacity=5);"; - focusInput(cm); - resetInput(cm); - // Adds "Select all" to context menu in FF - var hasSelection = cm.somethingSelected(); - if (!hasSelection) display.input.value = display.prevInput = " "; - - // Select-all will be greyed out if there's nothing to select, so - // this adds a zero-width space so that we can later check whether - // it got selected. - function prepareSelectAllHack() { - if (display.input.selectionStart != null) { - var extval = display.input.value = "\u200b" + (hasSelection ? display.input.value : ""); - display.prevInput = "\u200b"; - display.input.selectionStart = 1; display.input.selectionEnd = extval.length; - } - } - function rehide() { - display.inputDiv.style.position = "relative"; - display.input.style.cssText = oldCSS; - if (ie_upto8) display.scrollbarV.scrollTop = display.scroller.scrollTop = scrollPos; - slowPoll(cm); - - // Try to detect the user choosing select-all - if (display.input.selectionStart != null) { - if (!ie || ie_upto8) prepareSelectAllHack(); - clearTimeout(detectingSelectAll); - var i = 0, poll = function(){ - if (display.prevInput == "\u200b" && display.input.selectionStart == 0) - operation(cm, commands.selectAll)(cm); - else if (i++ < 10) detectingSelectAll = setTimeout(poll, 500); - else resetInput(cm); - }; - detectingSelectAll = setTimeout(poll, 200); - } - } - - if (ie && !ie_upto8) prepareSelectAllHack(); - if (captureRightClick) { - e_stop(e); - var mouseup = function() { - off(window, "mouseup", mouseup); - setTimeout(rehide, 20); - }; - on(window, "mouseup", mouseup); - } else { - setTimeout(rehide, 50); - } - } - - function contextMenuInGutter(cm, e) { - if (!hasHandler(cm, "gutterContextMenu")) return false; - return gutterEvent(cm, e, "gutterContextMenu", false, signal); - } - - // UPDATING - - // Compute the position of the end of a change (its 'to' property - // refers to the pre-change end). - var changeEnd = CodeMirror.changeEnd = function(change) { - if (!change.text) return change.to; - return Pos(change.from.line + change.text.length - 1, - lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)); - }; - - // Adjust a position to refer to the post-change position of the - // same text, or the end of the change if the change covers it. - function adjustForChange(pos, change) { - if (cmp(pos, change.from) < 0) return pos; - if (cmp(pos, change.to) <= 0) return changeEnd(change); - - var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; - if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch; - return Pos(line, ch); - } - - function computeSelAfterChange(doc, change) { - var out = []; - for (var i = 0; i < doc.sel.ranges.length; i++) { - var range = doc.sel.ranges[i]; - out.push(new Range(adjustForChange(range.anchor, change), - adjustForChange(range.head, change))); - } - return normalizeSelection(out, doc.sel.primIndex); - } - - function offsetPos(pos, old, nw) { - if (pos.line == old.line) - return Pos(nw.line, pos.ch - old.ch + nw.ch); - else - return Pos(nw.line + (pos.line - old.line), pos.ch); - } - - // Used by replaceSelections to allow moving the selection to the - // start or around the replaced test. Hint may be "start" or "around". - function computeReplacedSel(doc, changes, hint) { - var out = []; - var oldPrev = Pos(doc.first, 0), newPrev = oldPrev; - for (var i = 0; i < changes.length; i++) { - var change = changes[i]; - var from = offsetPos(change.from, oldPrev, newPrev); - var to = offsetPos(changeEnd(change), oldPrev, newPrev); - oldPrev = change.to; - newPrev = to; - if (hint == "around") { - var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0; - out[i] = new Range(inv ? to : from, inv ? from : to); - } else { - out[i] = new Range(from, from); - } - } - return new Selection(out, doc.sel.primIndex); - } - - // Allow "beforeChange" event handlers to influence a change - function filterChange(doc, change, update) { - var obj = { - canceled: false, - from: change.from, - to: change.to, - text: change.text, - origin: change.origin, - cancel: function() { this.canceled = true; } - }; - if (update) obj.update = function(from, to, text, origin) { - if (from) this.from = clipPos(doc, from); - if (to) this.to = clipPos(doc, to); - if (text) this.text = text; - if (origin !== undefined) this.origin = origin; - }; - signal(doc, "beforeChange", doc, obj); - if (doc.cm) signal(doc.cm, "beforeChange", doc.cm, obj); - - if (obj.canceled) return null; - return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}; - } - - // Apply a change to a document, and add it to the document's - // history, and propagating it to all linked documents. - function makeChange(doc, change, ignoreReadOnly) { - if (doc.cm) { - if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly); - if (doc.cm.state.suppressEdits) return; - } - - if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { - change = filterChange(doc, change, true); - if (!change) return; - } - - // Possibly split or suppress the update based on the presence - // of read-only spans in its range. - var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); - if (split) { - for (var i = split.length - 1; i >= 0; --i) - makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text}); - } else { - makeChangeInner(doc, change); - } - } - - function makeChangeInner(doc, change) { - if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) return; - var selAfter = computeSelAfterChange(doc, change); - addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); - - makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); - var rebased = []; - - linkedDocs(doc, function(doc, sharedHist) { - if (!sharedHist && indexOf(rebased, doc.history) == -1) { - rebaseHist(doc.history, change); - rebased.push(doc.history); - } - makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); - }); - } - - // Revert a change stored in a document's history. - function makeChangeFromHistory(doc, type, allowSelectionOnly) { - if (doc.cm && doc.cm.state.suppressEdits) return; - - var hist = doc.history, event, selAfter = doc.sel; - var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done; - - // Verify that there is a useable event (so that ctrl-z won't - // needlessly clear selection events) - for (var i = 0; i < source.length; i++) - if (allowSelectionOnly || !source[i].ranges) break; - if (i == source.length) return; - hist.lastOrigin = hist.lastSelOrigin = null; - - for (;;) { - event = source.pop(); - if (event.ranges) { - pushSelectionToHistory(event, dest); - if (allowSelectionOnly && !event.equals(doc.sel)) { - setSelection(doc, event, {clearRedo: false}); - return; - } - selAfter = event; - } - else break; - } - - // Build up a reverse change object to add to the opposite history - // stack (redo when undoing, and vice versa). - var antiChanges = []; - pushSelectionToHistory(selAfter, dest); - dest.push({changes: antiChanges, generation: hist.generation}); - hist.generation = event.generation || ++hist.maxGeneration; - - var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange"); - - for (var i = event.changes.length - 1; i >= 0; --i) { - var change = event.changes[i]; - change.origin = type; - if (filter && !filterChange(doc, change, false)) { - source.length = 0; - return; - } - - antiChanges.push(historyChangeFromChange(doc, change)); - - var after = i ? computeSelAfterChange(doc, change, null) : lst(source); - makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); - if (doc.cm) ensureCursorVisible(doc.cm); - var rebased = []; - - // Propagate to the linked documents - linkedDocs(doc, function(doc, sharedHist) { - if (!sharedHist && indexOf(rebased, doc.history) == -1) { - rebaseHist(doc.history, change); - rebased.push(doc.history); - } - makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)); - }); - } - } - - // Sub-views need their line numbers shifted when text is added - // above or below them in the parent document. - function shiftDoc(doc, distance) { - doc.first += distance; - doc.sel = new Selection(map(doc.sel.ranges, function(range) { - return new Range(Pos(range.anchor.line + distance, range.anchor.ch), - Pos(range.head.line + distance, range.head.ch)); - }), doc.sel.primIndex); - if (doc.cm) regChange(doc.cm, doc.first, doc.first - distance, distance); - } - - // More lower-level change function, handling only a single document - // (not linked ones). - function makeChangeSingleDoc(doc, change, selAfter, spans) { - if (doc.cm && !doc.cm.curOp) - return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans); - - if (change.to.line < doc.first) { - shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); - return; - } - if (change.from.line > doc.lastLine()) return; - - // Clip the change to the size of this doc - if (change.from.line < doc.first) { - var shift = change.text.length - 1 - (doc.first - change.from.line); - shiftDoc(doc, shift); - change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), - text: [lst(change.text)], origin: change.origin}; - } - var last = doc.lastLine(); - if (change.to.line > last) { - change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), - text: [change.text[0]], origin: change.origin}; - } - - change.removed = getBetween(doc, change.from, change.to); - - if (!selAfter) selAfter = computeSelAfterChange(doc, change, null); - if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans); - else updateDoc(doc, change, spans); - setSelectionNoUndo(doc, selAfter, sel_dontScroll); - } - - // Handle the interaction of a change to a document with the editor - // that this document is part of. - function makeChangeSingleDocInEditor(cm, change, spans) { - var doc = cm.doc, display = cm.display, from = change.from, to = change.to; - - var recomputeMaxLength = false, checkWidthStart = from.line; - if (!cm.options.lineWrapping) { - checkWidthStart = lineNo(visualLine(getLine(doc, from.line))); - doc.iter(checkWidthStart, to.line + 1, function(line) { - if (line == display.maxLine) { - recomputeMaxLength = true; - return true; - } - }); - } - - if (doc.sel.contains(change.from, change.to) > -1) - cm.curOp.cursorActivity = true; - - updateDoc(doc, change, spans, estimateHeight(cm)); - - if (!cm.options.lineWrapping) { - doc.iter(checkWidthStart, from.line + change.text.length, function(line) { - var len = lineLength(line); - if (len > display.maxLineLength) { - display.maxLine = line; - display.maxLineLength = len; - display.maxLineChanged = true; - recomputeMaxLength = false; - } - }); - if (recomputeMaxLength) cm.curOp.updateMaxLine = true; - } - - // Adjust frontier, schedule worker - doc.frontier = Math.min(doc.frontier, from.line); - startWorker(cm, 400); - - var lendiff = change.text.length - (to.line - from.line) - 1; - // Remember that these lines changed, for updating the display - if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) - regLineChange(cm, from.line, "text"); - else - regChange(cm, from.line, to.line + 1, lendiff); - - if (hasHandler(cm, "change") || hasHandler(cm, "changes")) - (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push({ - from: from, to: to, - text: change.text, - removed: change.removed, - origin: change.origin - }); - } - - function replaceRange(doc, code, from, to, origin) { - if (!to) to = from; - if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; } - if (typeof code == "string") code = splitLines(code); - makeChange(doc, {from: from, to: to, text: code, origin: origin}); - } - - // SCROLLING THINGS INTO VIEW - - // If an editor sits on the top or bottom of the window, partially - // scrolled out of view, this ensures that the cursor is visible. - function maybeScrollWindow(cm, coords) { - var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null; - if (coords.top + box.top < 0) doScroll = true; - else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false; - if (doScroll != null && !phantom) { - var scrollNode = elt("div", "\u200b", null, "position: absolute; top: " + - (coords.top - display.viewOffset - paddingTop(cm.display)) + "px; height: " + - (coords.bottom - coords.top + scrollerCutOff) + "px; left: " + - coords.left + "px; width: 2px;"); - cm.display.lineSpace.appendChild(scrollNode); - scrollNode.scrollIntoView(doScroll); - cm.display.lineSpace.removeChild(scrollNode); - } - } - - // Scroll a given position into view (immediately), verifying that - // it actually became visible (as line heights are accurately - // measured, the position of something may 'drift' during drawing). - function scrollPosIntoView(cm, pos, end, margin) { - if (margin == null) margin = 0; - for (;;) { - var changed = false, coords = cursorCoords(cm, pos); - var endCoords = !end || end == pos ? coords : cursorCoords(cm, end); - var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left), - Math.min(coords.top, endCoords.top) - margin, - Math.max(coords.left, endCoords.left), - Math.max(coords.bottom, endCoords.bottom) + margin); - var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; - if (scrollPos.scrollTop != null) { - setScrollTop(cm, scrollPos.scrollTop); - if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true; - } - if (scrollPos.scrollLeft != null) { - setScrollLeft(cm, scrollPos.scrollLeft); - if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true; - } - if (!changed) return coords; - } - } - - // Scroll a given set of coordinates into view (immediately). - function scrollIntoView(cm, x1, y1, x2, y2) { - var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2); - if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop); - if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft); - } - - // Calculate a new scroll position needed to scroll the given - // rectangle into view. Returns an object with scrollTop and - // scrollLeft properties. When these are undefined, the - // vertical/horizontal position does not need to be adjusted. - function calculateScrollPos(cm, x1, y1, x2, y2) { - var display = cm.display, snapMargin = textHeight(cm.display); - if (y1 < 0) y1 = 0; - var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop; - var screen = display.scroller.clientHeight - scrollerCutOff, result = {}; - var docBottom = cm.doc.height + paddingVert(display); - var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin; - if (y1 < screentop) { - result.scrollTop = atTop ? 0 : y1; - } else if (y2 > screentop + screen) { - var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen); - if (newTop != screentop) result.scrollTop = newTop; - } - - var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft; - var screenw = display.scroller.clientWidth - scrollerCutOff; - x1 += display.gutters.offsetWidth; x2 += display.gutters.offsetWidth; - var gutterw = display.gutters.offsetWidth; - var atLeft = x1 < gutterw + 10; - if (x1 < screenleft + gutterw || atLeft) { - if (atLeft) x1 = 0; - result.scrollLeft = Math.max(0, x1 - 10 - gutterw); - } else if (x2 > screenw + screenleft - 3) { - result.scrollLeft = x2 + 10 - screenw; - } - return result; - } - - // Store a relative adjustment to the scroll position in the current - // operation (to be applied when the operation finishes). - function addToScrollPos(cm, left, top) { - if (left != null || top != null) resolveScrollToPos(cm); - if (left != null) - cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left; - if (top != null) - cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; - } - - // Make sure that at the end of the operation the current cursor is - // shown. - function ensureCursorVisible(cm) { - resolveScrollToPos(cm); - var cur = cm.getCursor(), from = cur, to = cur; - if (!cm.options.lineWrapping) { - from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur; - to = Pos(cur.line, cur.ch + 1); - } - cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true}; - } - - // When an operation has its scrollToPos property set, and another - // scroll action is applied before the end of the operation, this - // 'simulates' scrolling that position into view in a cheap way, so - // that the effect of intermediate scroll commands is not ignored. - function resolveScrollToPos(cm) { - var range = cm.curOp.scrollToPos; - if (range) { - cm.curOp.scrollToPos = null; - var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to); - var sPos = calculateScrollPos(cm, Math.min(from.left, to.left), - Math.min(from.top, to.top) - range.margin, - Math.max(from.right, to.right), - Math.max(from.bottom, to.bottom) + range.margin); - cm.scrollTo(sPos.scrollLeft, sPos.scrollTop); - } - } - - // API UTILITIES - - // Indent the given line. The how parameter can be "smart", - // "add"/null, "subtract", or "prev". When aggressive is false - // (typically set to true for forced single-line indents), empty - // lines are not indented, and places where the mode returns Pass - // are left alone. - function indentLine(cm, n, how, aggressive) { - var doc = cm.doc, state; - if (how == null) how = "add"; - if (how == "smart") { - // Fall back to "prev" when the mode doesn't have an indentation - // method. - if (!cm.doc.mode.indent) how = "prev"; - else state = getStateBefore(cm, n); - } - - var tabSize = cm.options.tabSize; - var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); - if (line.stateAfter) line.stateAfter = null; - var curSpaceString = line.text.match(/^\s*/)[0], indentation; - if (!aggressive && !/\S/.test(line.text)) { - indentation = 0; - how = "not"; - } else if (how == "smart") { - indentation = cm.doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); - if (indentation == Pass) { - if (!aggressive) return; - how = "prev"; - } - } - if (how == "prev") { - if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize); - else indentation = 0; - } else if (how == "add") { - indentation = curSpace + cm.options.indentUnit; - } else if (how == "subtract") { - indentation = curSpace - cm.options.indentUnit; - } else if (typeof how == "number") { - indentation = curSpace + how; - } - indentation = Math.max(0, indentation); - - var indentString = "", pos = 0; - if (cm.options.indentWithTabs) - for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} - if (pos < indentation) indentString += spaceStr(indentation - pos); - - if (indentString != curSpaceString) { - replaceRange(cm.doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); - } else { - // Ensure that, if the cursor was in the whitespace at the start - // of the line, it is moved to the end of that space. - for (var i = 0; i < doc.sel.ranges.length; i++) { - var range = doc.sel.ranges[i]; - if (range.head.line == n && range.head.ch < curSpaceString.length) { - var pos = Pos(n, curSpaceString.length); - replaceOneSelection(doc, i, new Range(pos, pos)); - break; - } - } - } - line.stateAfter = null; - } - - // Utility for applying a change to a line by handle or number, - // returning the number and optionally registering the line as - // changed. - function changeLine(cm, handle, changeType, op) { - var no = handle, line = handle, doc = cm.doc; - if (typeof handle == "number") line = getLine(doc, clipLine(doc, handle)); - else no = lineNo(handle); - if (no == null) return null; - if (op(line, no)) regLineChange(cm, no, changeType); - else return null; - return line; - } - - // Helper for deleting text near the selection(s), used to implement - // backspace, delete, and similar functionality. - function deleteNearSelection(cm, compute) { - var ranges = cm.doc.sel.ranges, kill = []; - // Build up a set of ranges to kill first, merging overlapping - // ranges. - for (var i = 0; i < ranges.length; i++) { - var toKill = compute(ranges[i]); - while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { - var replaced = kill.pop(); - if (cmp(replaced.from, toKill.from) < 0) { - toKill.from = replaced.from; - break; - } - } - kill.push(toKill); - } - // Next, remove those actual ranges. - runInOp(cm, function() { - for (var i = kill.length - 1; i >= 0; i--) - replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete"); - ensureCursorVisible(cm); - }); - } - - // Used for horizontal relative motion. Dir is -1 or 1 (left or - // right), unit can be "char", "column" (like char, but doesn't - // cross line boundaries), "word" (across next word), or "group" (to - // the start of next group of word or non-word-non-whitespace - // chars). The visually param controls whether, in right-to-left - // text, direction 1 means to move towards the next index in the - // string, or towards the character to the right of the current - // position. The resulting position will have a hitSide=true - // property if it reached the end of the document. - function findPosH(doc, pos, dir, unit, visually) { - var line = pos.line, ch = pos.ch, origDir = dir; - var lineObj = getLine(doc, line); - var possible = true; - function findNextLine() { - var l = line + dir; - if (l < doc.first || l >= doc.first + doc.size) return (possible = false); - line = l; - return lineObj = getLine(doc, l); - } - function moveOnce(boundToLine) { - var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true); - if (next == null) { - if (!boundToLine && findNextLine()) { - if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj); - else ch = dir < 0 ? lineObj.text.length : 0; - } else return (possible = false); - } else ch = next; - return true; - } - - if (unit == "char") moveOnce(); - else if (unit == "column") moveOnce(true); - else if (unit == "word" || unit == "group") { - var sawType = null, group = unit == "group"; - for (var first = true;; first = false) { - if (dir < 0 && !moveOnce(!first)) break; - var cur = lineObj.text.charAt(ch) || "\n"; - var type = isWordChar(cur) ? "w" - : group && cur == "\n" ? "n" - : !group || /\s/.test(cur) ? null - : "p"; - if (group && !first && !type) type = "s"; - if (sawType && sawType != type) { - if (dir < 0) {dir = 1; moveOnce();} - break; - } - - if (type) sawType = type; - if (dir > 0 && !moveOnce(!first)) break; - } - } - var result = skipAtomic(doc, Pos(line, ch), origDir, true); - if (!possible) result.hitSide = true; - return result; - } - - // For relative vertical movement. Dir may be -1 or 1. Unit can be - // "page" or "line". The resulting position will have a hitSide=true - // property if it reached the end of the document. - function findPosV(cm, pos, dir, unit) { - var doc = cm.doc, x = pos.left, y; - if (unit == "page") { - var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); - y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display)); - } else if (unit == "line") { - y = dir > 0 ? pos.bottom + 3 : pos.top - 3; - } - for (;;) { - var target = coordsChar(cm, x, y); - if (!target.outside) break; - if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; } - y += dir * 5; - } - return target; - } - - // Find the word at the given position (as returned by coordsChar). - function findWordAt(doc, pos) { - var line = getLine(doc, pos.line).text; - var start = pos.ch, end = pos.ch; - if (line) { - if ((pos.xRel < 0 || end == line.length) && start) --start; else ++end; - var startChar = line.charAt(start); - var check = isWordChar(startChar) ? isWordChar - : /\s/.test(startChar) ? function(ch) {return /\s/.test(ch);} - : function(ch) {return !/\s/.test(ch) && !isWordChar(ch);}; - while (start > 0 && check(line.charAt(start - 1))) --start; - while (end < line.length && check(line.charAt(end))) ++end; - } - return new Range(Pos(pos.line, start), Pos(pos.line, end)); - } - - // EDITOR METHODS - - // The publicly visible API. Note that methodOp(f) means - // 'wrap f in an operation, performed on its `this` parameter'. - - // This is not the complete set of editor methods. Most of the - // methods defined on the Doc type are also injected into - // CodeMirror.prototype, for backwards compatibility and - // convenience. - - CodeMirror.prototype = { - constructor: CodeMirror, - focus: function(){window.focus(); focusInput(this); fastPoll(this);}, - - setOption: function(option, value) { - var options = this.options, old = options[option]; - if (options[option] == value && option != "mode") return; - options[option] = value; - if (optionHandlers.hasOwnProperty(option)) - operation(this, optionHandlers[option])(this, value, old); - }, - - getOption: function(option) {return this.options[option];}, - getDoc: function() {return this.doc;}, - - addKeyMap: function(map, bottom) { - this.state.keyMaps[bottom ? "push" : "unshift"](map); - }, - removeKeyMap: function(map) { - var maps = this.state.keyMaps; - for (var i = 0; i < maps.length; ++i) - if (maps[i] == map || (typeof maps[i] != "string" && maps[i].name == map)) { - maps.splice(i, 1); - return true; - } - }, - - addOverlay: methodOp(function(spec, options) { - var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); - if (mode.startState) throw new Error("Overlays may not be stateful."); - this.state.overlays.push({mode: mode, modeSpec: spec, opaque: options && options.opaque}); - this.state.modeGen++; - regChange(this); - }), - removeOverlay: methodOp(function(spec) { - var overlays = this.state.overlays; - for (var i = 0; i < overlays.length; ++i) { - var cur = overlays[i].modeSpec; - if (cur == spec || typeof spec == "string" && cur.name == spec) { - overlays.splice(i, 1); - this.state.modeGen++; - regChange(this); - return; - } - } - }), - - indentLine: methodOp(function(n, dir, aggressive) { - if (typeof dir != "string" && typeof dir != "number") { - if (dir == null) dir = this.options.smartIndent ? "smart" : "prev"; - else dir = dir ? "add" : "subtract"; - } - if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive); - }), - indentSelection: methodOp(function(how) { - var ranges = this.doc.sel.ranges, end = -1; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (!range.empty()) { - var start = Math.max(end, range.from().line); - var to = range.to(); - end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; - for (var j = start; j < end; ++j) - indentLine(this, j, how); - } else if (range.head.line > end) { - indentLine(this, range.head.line, how, true); - end = range.head.line; - if (i == this.doc.sel.primIndex) ensureCursorVisible(this); - } - } - }), - - // Fetch the parser token for a given character. Useful for hacks - // that want to inspect the mode state (say, for completion). - getTokenAt: function(pos, precise) { - var doc = this.doc; - pos = clipPos(doc, pos); - var state = getStateBefore(this, pos.line, precise), mode = this.doc.mode; - var line = getLine(doc, pos.line); - var stream = new StringStream(line.text, this.options.tabSize); - while (stream.pos < pos.ch && !stream.eol()) { - stream.start = stream.pos; - var style = mode.token(stream, state); - } - return {start: stream.start, - end: stream.pos, - string: stream.current(), - type: style || null, - state: state}; - }, - - getTokenTypeAt: function(pos) { - pos = clipPos(this.doc, pos); - var styles = getLineStyles(this, getLine(this.doc, pos.line)); - var before = 0, after = (styles.length - 1) / 2, ch = pos.ch; - if (ch == 0) return styles[2]; - for (;;) { - var mid = (before + after) >> 1; - if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid; - else if (styles[mid * 2 + 1] < ch) before = mid + 1; - else return styles[mid * 2 + 2]; - } - }, - - getModeAt: function(pos) { - var mode = this.doc.mode; - if (!mode.innerMode) return mode; - return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode; - }, - - getHelper: function(pos, type) { - return this.getHelpers(pos, type)[0]; - }, - - getHelpers: function(pos, type) { - var found = []; - if (!helpers.hasOwnProperty(type)) return helpers; - var help = helpers[type], mode = this.getModeAt(pos); - if (typeof mode[type] == "string") { - if (help[mode[type]]) found.push(help[mode[type]]); - } else if (mode[type]) { - for (var i = 0; i < mode[type].length; i++) { - var val = help[mode[type][i]]; - if (val) found.push(val); - } - } else if (mode.helperType && help[mode.helperType]) { - found.push(help[mode.helperType]); - } else if (help[mode.name]) { - found.push(help[mode.name]); - } - for (var i = 0; i < help._global.length; i++) { - var cur = help._global[i]; - if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) - found.push(cur.val); - } - return found; - }, - - getStateAfter: function(line, precise) { - var doc = this.doc; - line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); - return getStateBefore(this, line + 1, precise); - }, - - cursorCoords: function(start, mode) { - var pos, range = this.doc.sel.primary(); - if (start == null) pos = range.head; - else if (typeof start == "object") pos = clipPos(this.doc, start); - else pos = start ? range.from() : range.to(); - return cursorCoords(this, pos, mode || "page"); - }, - - charCoords: function(pos, mode) { - return charCoords(this, clipPos(this.doc, pos), mode || "page"); - }, - - coordsChar: function(coords, mode) { - coords = fromCoordSystem(this, coords, mode || "page"); - return coordsChar(this, coords.left, coords.top); - }, - - lineAtHeight: function(height, mode) { - height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top; - return lineAtHeight(this.doc, height + this.display.viewOffset); - }, - heightAtLine: function(line, mode) { - var end = false, last = this.doc.first + this.doc.size - 1; - if (line < this.doc.first) line = this.doc.first; - else if (line > last) { line = last; end = true; } - var lineObj = getLine(this.doc, line); - return intoCoordSystem(this, getLine(this.doc, line), {top: 0, left: 0}, mode || "page").top + - (end ? lineObj.height : 0); - }, - - defaultTextHeight: function() { return textHeight(this.display); }, - defaultCharWidth: function() { return charWidth(this.display); }, - - setGutterMarker: methodOp(function(line, gutterID, value) { - return changeLine(this, line, "gutter", function(line) { - var markers = line.gutterMarkers || (line.gutterMarkers = {}); - markers[gutterID] = value; - if (!value && isEmpty(markers)) line.gutterMarkers = null; - return true; - }); - }), - - clearGutter: methodOp(function(gutterID) { - var cm = this, doc = cm.doc, i = doc.first; - doc.iter(function(line) { - if (line.gutterMarkers && line.gutterMarkers[gutterID]) { - line.gutterMarkers[gutterID] = null; - regLineChange(cm, i, "gutter"); - if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null; - } - ++i; - }); - }), - - addLineClass: methodOp(function(handle, where, cls) { - return changeLine(this, handle, "class", function(line) { - var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : "wrapClass"; - if (!line[prop]) line[prop] = cls; - else if (new RegExp("(?:^|\\s)" + cls + "(?:$|\\s)").test(line[prop])) return false; - else line[prop] += " " + cls; - return true; - }); - }), - - removeLineClass: methodOp(function(handle, where, cls) { - return changeLine(this, handle, "class", function(line) { - var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : "wrapClass"; - var cur = line[prop]; - if (!cur) return false; - else if (cls == null) line[prop] = null; - else { - var found = cur.match(new RegExp("(?:^|\\s+)" + cls + "(?:$|\\s+)")); - if (!found) return false; - var end = found.index + found[0].length; - line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null; - } - return true; - }); - }), - - addLineWidget: methodOp(function(handle, node, options) { - return addLineWidget(this, handle, node, options); - }), - - removeLineWidget: function(widget) { widget.clear(); }, - - lineInfo: function(line) { - if (typeof line == "number") { - if (!isLine(this.doc, line)) return null; - var n = line; - line = getLine(this.doc, line); - if (!line) return null; - } else { - var n = lineNo(line); - if (n == null) return null; - } - return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, - textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, - widgets: line.widgets}; - }, - - getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo};}, - - addWidget: function(pos, node, scroll, vert, horiz) { - var display = this.display; - pos = cursorCoords(this, clipPos(this.doc, pos)); - var top = pos.bottom, left = pos.left; - node.style.position = "absolute"; - display.sizer.appendChild(node); - if (vert == "over") { - top = pos.top; - } else if (vert == "above" || vert == "near") { - var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), - hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); - // Default to positioning above (if specified and possible); otherwise default to positioning below - if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) - top = pos.top - node.offsetHeight; - else if (pos.bottom + node.offsetHeight <= vspace) - top = pos.bottom; - if (left + node.offsetWidth > hspace) - left = hspace - node.offsetWidth; - } - node.style.top = top + "px"; - node.style.left = node.style.right = ""; - if (horiz == "right") { - left = display.sizer.clientWidth - node.offsetWidth; - node.style.right = "0px"; - } else { - if (horiz == "left") left = 0; - else if (horiz == "middle") left = (display.sizer.clientWidth - node.offsetWidth) / 2; - node.style.left = left + "px"; - } - if (scroll) - scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight); - }, - - triggerOnKeyDown: methodOp(onKeyDown), - triggerOnKeyPress: methodOp(onKeyPress), - triggerOnKeyUp: methodOp(onKeyUp), - - execCommand: function(cmd) { - if (commands.hasOwnProperty(cmd)) - return commands[cmd](this); - }, - - findPosH: function(from, amount, unit, visually) { - var dir = 1; - if (amount < 0) { dir = -1; amount = -amount; } - for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { - cur = findPosH(this.doc, cur, dir, unit, visually); - if (cur.hitSide) break; - } - return cur; - }, - - moveH: methodOp(function(dir, unit) { - var cm = this; - cm.extendSelectionsBy(function(range) { - if (cm.display.shift || cm.doc.extend || range.empty()) - return findPosH(cm.doc, range.head, dir, unit, cm.options.rtlMoveVisually); - else - return dir < 0 ? range.from() : range.to(); - }, sel_move); - }), - - deleteH: methodOp(function(dir, unit) { - var sel = this.doc.sel, doc = this.doc; - if (sel.somethingSelected()) - doc.replaceSelection("", null, "+delete"); - else - deleteNearSelection(this, function(range) { - var other = findPosH(doc, range.head, dir, unit, false); - return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}; - }); - }), - - findPosV: function(from, amount, unit, goalColumn) { - var dir = 1, x = goalColumn; - if (amount < 0) { dir = -1; amount = -amount; } - for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { - var coords = cursorCoords(this, cur, "div"); - if (x == null) x = coords.left; - else coords.left = x; - cur = findPosV(this, coords, dir, unit); - if (cur.hitSide) break; - } - return cur; - }, - - moveV: methodOp(function(dir, unit) { - var cm = this, doc = this.doc, goals = []; - var collapse = !cm.display.shift && !doc.sel.extend && doc.sel.somethingSelected(); - doc.extendSelectionsBy(function(range) { - if (collapse) - return dir < 0 ? range.from() : range.to(); - var headPos = cursorCoords(cm, range.head, "div"); - if (range.goalColumn != null) headPos.left = range.goalColumn; - goals.push(headPos.left); - var pos = findPosV(cm, headPos, dir, unit); - if (unit == "page" && range == doc.sel.primary()) - addToScrollPos(cm, null, charCoords(cm, pos, "div").top - headPos.top); - return pos; - }, sel_move); - if (goals.length) for (var i = 0; i < doc.sel.ranges.length; i++) - doc.sel.ranges[i].goalColumn = goals[i]; - }), - - toggleOverwrite: function(value) { - if (value != null && value == this.state.overwrite) return; - if (this.state.overwrite = !this.state.overwrite) - this.display.cursorDiv.className += " CodeMirror-overwrite"; - else - this.display.cursorDiv.className = this.display.cursorDiv.className.replace(" CodeMirror-overwrite", ""); - - signal(this, "overwriteToggle", this, this.state.overwrite); - }, - hasFocus: function() { return activeElt() == this.display.input; }, - - scrollTo: methodOp(function(x, y) { - if (x != null || y != null) resolveScrollToPos(this); - if (x != null) this.curOp.scrollLeft = x; - if (y != null) this.curOp.scrollTop = y; - }), - getScrollInfo: function() { - var scroller = this.display.scroller, co = scrollerCutOff; - return {left: scroller.scrollLeft, top: scroller.scrollTop, - height: scroller.scrollHeight - co, width: scroller.scrollWidth - co, - clientHeight: scroller.clientHeight - co, clientWidth: scroller.clientWidth - co}; - }, - - scrollIntoView: methodOp(function(range, margin) { - if (range == null) range = {from: this.doc.sel.primary().head, to: null}; - else if (typeof range == "number") range = {from: Pos(range, 0), to: null}; - else if (range.from == null) range = {from: range, to: null}; - if (!range.to) range.to = range.from; - range.margin = margin || 0; - - if (range.from.line != null) { - resolveScrollToPos(this); - this.curOp.scrollToPos = range; - } else { - var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left), - Math.min(range.from.top, range.to.top) - range.margin, - Math.max(range.from.right, range.to.right), - Math.max(range.from.bottom, range.to.bottom) + range.margin); - this.scrollTo(sPos.scrollLeft, sPos.scrollTop); - } - }), - - setSize: methodOp(function(width, height) { - function interpret(val) { - return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; - } - if (width != null) this.display.wrapper.style.width = interpret(width); - if (height != null) this.display.wrapper.style.height = interpret(height); - if (this.options.lineWrapping) clearLineMeasurementCache(this); - this.curOp.forceUpdate = true; - signal(this, "refresh", this); - }), - - operation: function(f){return runInOp(this, f);}, - - refresh: methodOp(function() { - var oldHeight = this.display.cachedTextHeight; - regChange(this); - clearCaches(this); - this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop); - if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) - estimateLineHeights(this); - signal(this, "refresh", this); - }), - - swapDoc: methodOp(function(doc) { - var old = this.doc; - old.cm = null; - attachDoc(this, doc); - clearCaches(this); - resetInput(this); - this.scrollTo(doc.scrollLeft, doc.scrollTop); - signalLater(this, "swapDoc", this, old); - return old; - }), - - getInputField: function(){return this.display.input;}, - getWrapperElement: function(){return this.display.wrapper;}, - getScrollerElement: function(){return this.display.scroller;}, - getGutterElement: function(){return this.display.gutters;} - }; - eventMixin(CodeMirror); - - // OPTION DEFAULTS - - // The default configuration options. - var defaults = CodeMirror.defaults = {}; - // Functions to run when options are changed. - var optionHandlers = CodeMirror.optionHandlers = {}; - - function option(name, deflt, handle, notOnInit) { - CodeMirror.defaults[name] = deflt; - if (handle) optionHandlers[name] = - notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle; - } - - // Passed to option handlers when there is no old value. - var Init = CodeMirror.Init = {toString: function(){return "CodeMirror.Init";}}; - - // These two are, on init, called from the constructor because they - // have to be initialized before the editor can start at all. - option("value", "", function(cm, val) { - cm.setValue(val); - }, true); - option("mode", null, function(cm, val) { - cm.doc.modeOption = val; - loadMode(cm); - }, true); - - option("indentUnit", 2, loadMode, true); - option("indentWithTabs", false); - option("smartIndent", true); - option("tabSize", 4, function(cm) { - resetModeState(cm); - clearCaches(cm); - regChange(cm); - }, true); - option("specialChars", /[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\ufeff]/g, function(cm, val) { - cm.options.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g"); - cm.refresh(); - }, true); - option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true); - option("electricChars", true); - option("rtlMoveVisually", !windows); - option("wholeLineUpdateBefore", true); - - option("theme", "default", function(cm) { - themeChanged(cm); - guttersChanged(cm); - }, true); - option("keyMap", "default", keyMapChanged); - option("extraKeys", null); - - option("lineWrapping", false, wrappingChanged, true); - option("gutters", [], function(cm) { - setGuttersForLineNumbers(cm.options); - guttersChanged(cm); - }, true); - option("fixedGutter", true, function(cm, val) { - cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; - cm.refresh(); - }, true); - option("coverGutterNextToScrollbar", false, updateScrollbars, true); - option("lineNumbers", false, function(cm) { - setGuttersForLineNumbers(cm.options); - guttersChanged(cm); - }, true); - option("firstLineNumber", 1, guttersChanged, true); - option("lineNumberFormatter", function(integer) {return integer;}, guttersChanged, true); - option("showCursorWhenSelecting", false, updateSelection, true); - - option("resetSelectionOnContextMenu", true); - - option("readOnly", false, function(cm, val) { - if (val == "nocursor") { - onBlur(cm); - cm.display.input.blur(); - cm.display.disabled = true; - } else { - cm.display.disabled = false; - if (!val) resetInput(cm); - } - }); - option("disableInput", false, function(cm, val) {if (!val) resetInput(cm);}, true); - option("dragDrop", true); - - option("cursorBlinkRate", 530); - option("cursorScrollMargin", 0); - option("cursorHeight", 1); - option("workTime", 100); - option("workDelay", 100); - option("flattenSpans", true, resetModeState, true); - option("addModeClass", false, resetModeState, true); - option("pollInterval", 100); - option("undoDepth", 200, function(cm, val){cm.doc.history.undoDepth = val;}); - option("historyEventDelay", 1250); - option("viewportMargin", 10, function(cm){cm.refresh();}, true); - option("maxHighlightLength", 10000, resetModeState, true); - option("moveInputWithCursor", true, function(cm, val) { - if (!val) cm.display.inputDiv.style.top = cm.display.inputDiv.style.left = 0; - }); - - option("tabindex", null, function(cm, val) { - cm.display.input.tabIndex = val || ""; - }); - option("autofocus", null); - - // MODE DEFINITION AND QUERYING - - // Known modes, by name and by MIME - var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {}; - - // Extra arguments are stored as the mode's dependencies, which is - // used by (legacy) mechanisms like loadmode.js to automatically - // load a mode. (Preferred mechanism is the require/define calls.) - CodeMirror.defineMode = function(name, mode) { - if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name; - if (arguments.length > 2) { - mode.dependencies = []; - for (var i = 2; i < arguments.length; ++i) mode.dependencies.push(arguments[i]); - } - modes[name] = mode; - }; - - CodeMirror.defineMIME = function(mime, spec) { - mimeModes[mime] = spec; - }; - - // Given a MIME type, a {name, ...options} config object, or a name - // string, return a mode config object. - CodeMirror.resolveMode = function(spec) { - if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { - spec = mimeModes[spec]; - } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { - var found = mimeModes[spec.name]; - if (typeof found == "string") found = {name: found}; - spec = createObj(found, spec); - spec.name = found.name; - } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { - return CodeMirror.resolveMode("application/xml"); - } - if (typeof spec == "string") return {name: spec}; - else return spec || {name: "null"}; - }; - - // Given a mode spec (anything that resolveMode accepts), find and - // initialize an actual mode object. - CodeMirror.getMode = function(options, spec) { - var spec = CodeMirror.resolveMode(spec); - var mfactory = modes[spec.name]; - if (!mfactory) return CodeMirror.getMode(options, "text/plain"); - var modeObj = mfactory(options, spec); - if (modeExtensions.hasOwnProperty(spec.name)) { - var exts = modeExtensions[spec.name]; - for (var prop in exts) { - if (!exts.hasOwnProperty(prop)) continue; - if (modeObj.hasOwnProperty(prop)) modeObj["_" + prop] = modeObj[prop]; - modeObj[prop] = exts[prop]; - } - } - modeObj.name = spec.name; - if (spec.helperType) modeObj.helperType = spec.helperType; - if (spec.modeProps) for (var prop in spec.modeProps) - modeObj[prop] = spec.modeProps[prop]; - - return modeObj; - }; - - // Minimal default mode. - CodeMirror.defineMode("null", function() { - return {token: function(stream) {stream.skipToEnd();}}; - }); - CodeMirror.defineMIME("text/plain", "null"); - - // This can be used to attach properties to mode objects from - // outside the actual mode definition. - var modeExtensions = CodeMirror.modeExtensions = {}; - CodeMirror.extendMode = function(mode, properties) { - var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); - copyObj(properties, exts); - }; - - // EXTENSIONS - - CodeMirror.defineExtension = function(name, func) { - CodeMirror.prototype[name] = func; - }; - CodeMirror.defineDocExtension = function(name, func) { - Doc.prototype[name] = func; - }; - CodeMirror.defineOption = option; - - var initHooks = []; - CodeMirror.defineInitHook = function(f) {initHooks.push(f);}; - - var helpers = CodeMirror.helpers = {}; - CodeMirror.registerHelper = function(type, name, value) { - if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []}; - helpers[type][name] = value; - }; - CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { - CodeMirror.registerHelper(type, name, value); - helpers[type]._global.push({pred: predicate, val: value}); - }; - - // MODE STATE HANDLING - - // Utility functions for working with state. Exported because nested - // modes need to do this for their inner modes. - - var copyState = CodeMirror.copyState = function(mode, state) { - if (state === true) return state; - if (mode.copyState) return mode.copyState(state); - var nstate = {}; - for (var n in state) { - var val = state[n]; - if (val instanceof Array) val = val.concat([]); - nstate[n] = val; - } - return nstate; - }; - - var startState = CodeMirror.startState = function(mode, a1, a2) { - return mode.startState ? mode.startState(a1, a2) : true; - }; - - // Given a mode and a state (for that mode), find the inner mode and - // state at the position that the state refers to. - CodeMirror.innerMode = function(mode, state) { - while (mode.innerMode) { - var info = mode.innerMode(state); - if (!info || info.mode == mode) break; - state = info.state; - mode = info.mode; - } - return info || {mode: mode, state: state}; - }; - - // STANDARD COMMANDS - - // Commands are parameter-less actions that can be performed on an - // editor, mostly used for keybindings. - var commands = CodeMirror.commands = { - selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);}, - singleSelection: function(cm) { - cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); - }, - killLine: function(cm) { - deleteNearSelection(cm, function(range) { - if (range.empty()) { - var len = getLine(cm.doc, range.head.line).text.length; - if (range.head.ch == len && range.head.line < cm.lastLine()) - return {from: range.head, to: Pos(range.head.line + 1, 0)}; - else - return {from: range.head, to: Pos(range.head.line, len)}; - } else { - return {from: range.from(), to: range.to()}; - } - }); - }, - deleteLine: function(cm) { - deleteNearSelection(cm, function(range) { - return {from: Pos(range.from().line, 0), - to: clipPos(cm.doc, Pos(range.to().line + 1, 0))}; - }); - }, - delLineLeft: function(cm) { - deleteNearSelection(cm, function(range) { - return {from: Pos(range.from().line, 0), to: range.from()}; - }); - }, - undo: function(cm) {cm.undo();}, - redo: function(cm) {cm.redo();}, - undoSelection: function(cm) {cm.undoSelection();}, - redoSelection: function(cm) {cm.redoSelection();}, - goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));}, - goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));}, - goLineStart: function(cm) { - cm.extendSelectionsBy(function(range) { return lineStart(cm, range.head.line); }, sel_move); - }, - goLineStartSmart: function(cm) { - cm.extendSelectionsBy(function(range) { - var start = lineStart(cm, range.head.line); - var line = cm.getLineHandle(start.line); - var order = getOrder(line); - if (!order || order[0].level == 0) { - var firstNonWS = Math.max(0, line.text.search(/\S/)); - var inWS = range.head.line == start.line && range.head.ch <= firstNonWS && range.head.ch; - return Pos(start.line, inWS ? 0 : firstNonWS); - } - return start; - }, sel_move); - }, - goLineEnd: function(cm) { - cm.extendSelectionsBy(function(range) { return lineEnd(cm, range.head.line); }, sel_move); - }, - goLineRight: function(cm) { - cm.extendSelectionsBy(function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); - }, sel_move); - }, - goLineLeft: function(cm) { - cm.extendSelectionsBy(function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - return cm.coordsChar({left: 0, top: top}, "div"); - }, sel_move); - }, - goLineUp: function(cm) {cm.moveV(-1, "line");}, - goLineDown: function(cm) {cm.moveV(1, "line");}, - goPageUp: function(cm) {cm.moveV(-1, "page");}, - goPageDown: function(cm) {cm.moveV(1, "page");}, - goCharLeft: function(cm) {cm.moveH(-1, "char");}, - goCharRight: function(cm) {cm.moveH(1, "char");}, - goColumnLeft: function(cm) {cm.moveH(-1, "column");}, - goColumnRight: function(cm) {cm.moveH(1, "column");}, - goWordLeft: function(cm) {cm.moveH(-1, "word");}, - goGroupRight: function(cm) {cm.moveH(1, "group");}, - goGroupLeft: function(cm) {cm.moveH(-1, "group");}, - goWordRight: function(cm) {cm.moveH(1, "word");}, - delCharBefore: function(cm) {cm.deleteH(-1, "char");}, - delCharAfter: function(cm) {cm.deleteH(1, "char");}, - delWordBefore: function(cm) {cm.deleteH(-1, "word");}, - delWordAfter: function(cm) {cm.deleteH(1, "word");}, - delGroupBefore: function(cm) {cm.deleteH(-1, "group");}, - delGroupAfter: function(cm) {cm.deleteH(1, "group");}, - indentAuto: function(cm) {cm.indentSelection("smart");}, - indentMore: function(cm) {cm.indentSelection("add");}, - indentLess: function(cm) {cm.indentSelection("subtract");}, - insertTab: function(cm) {cm.replaceSelection("\t");}, - defaultTab: function(cm) { - if (cm.somethingSelected()) cm.indentSelection("add"); - else cm.execCommand("insertTab"); - }, - transposeChars: function(cm) { - runInOp(cm, function() { - var ranges = cm.listSelections(); - for (var i = 0; i < ranges.length; i++) { - var cur = ranges[i].head, line = getLine(cm.doc, cur.line); - if (cur.ch > 0 && cur.ch < line.length - 1) - cm.replaceRange(line.charAt(cur.ch) + line.charAt(cur.ch - 1), - Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1)); - } - }); - }, - newlineAndIndent: function(cm) { - runInOp(cm, function() { - var len = cm.listSelections().length; - for (var i = 0; i < len; i++) { - var range = cm.listSelections()[i]; - cm.replaceRange("\n", range.anchor, range.head, "+input"); - cm.indentLine(range.from().line + 1, null, true); - ensureCursorVisible(cm); - } - }); - }, - toggleOverwrite: function(cm) {cm.toggleOverwrite();} - }; - - // STANDARD KEYMAPS - - var keyMap = CodeMirror.keyMap = {}; - keyMap.basic = { - "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", - "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", - "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", - "Tab": "defaultTab", "Shift-Tab": "indentAuto", - "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", - "Esc": "singleSelection" - }; - // Note that the save and find-related commands aren't defined by - // default. User code or addons can define them. Unknown commands - // are simply ignored. - keyMap.pcDefault = { - "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", - "Ctrl-Home": "goDocStart", "Ctrl-Up": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Down": "goDocEnd", - "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", - "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", - "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", - "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", - "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", - fallthrough: "basic" - }; - keyMap.macDefault = { - "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", - "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", - "Alt-Right": "goGroupRight", "Cmd-Left": "goLineStart", "Cmd-Right": "goLineEnd", "Alt-Backspace": "delGroupBefore", - "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", - "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", - "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delLineLeft", - "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", - fallthrough: ["basic", "emacsy"] - }; - // Very basic readline/emacs-style bindings, which are standard on Mac. - keyMap.emacsy = { - "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", - "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", - "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", - "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars" - }; - keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; - - // KEYMAP DISPATCH - - function getKeyMap(val) { - if (typeof val == "string") return keyMap[val]; - else return val; - } - - // Given an array of keymaps and a key name, call handle on any - // bindings found, until that returns a truthy value, at which point - // we consider the key handled. Implements things like binding a key - // to false stopping further handling and keymap fallthrough. - var lookupKey = CodeMirror.lookupKey = function(name, maps, handle) { - function lookup(map) { - map = getKeyMap(map); - var found = map[name]; - if (found === false) return "stop"; - if (found != null && handle(found)) return true; - if (map.nofallthrough) return "stop"; - - var fallthrough = map.fallthrough; - if (fallthrough == null) return false; - if (Object.prototype.toString.call(fallthrough) != "[object Array]") - return lookup(fallthrough); - for (var i = 0; i < fallthrough.length; ++i) { - var done = lookup(fallthrough[i]); - if (done) return done; - } - return false; - } - - for (var i = 0; i < maps.length; ++i) { - var done = lookup(maps[i]); - if (done) return done != "stop"; - } - }; - - // Modifier key presses don't count as 'real' key presses for the - // purpose of keymap fallthrough. - var isModifierKey = CodeMirror.isModifierKey = function(event) { - var name = keyNames[event.keyCode]; - return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod"; - }; - - // Look up the name of a key as indicated by an event object. - var keyName = CodeMirror.keyName = function(event, noShift) { - if (presto && event.keyCode == 34 && event["char"]) return false; - var name = keyNames[event.keyCode]; - if (name == null || event.altGraphKey) return false; - if (event.altKey) name = "Alt-" + name; - if (flipCtrlCmd ? event.metaKey : event.ctrlKey) name = "Ctrl-" + name; - if (flipCtrlCmd ? event.ctrlKey : event.metaKey) name = "Cmd-" + name; - if (!noShift && event.shiftKey) name = "Shift-" + name; - return name; - }; - - // FROMTEXTAREA - - CodeMirror.fromTextArea = function(textarea, options) { - if (!options) options = {}; - options.value = textarea.value; - if (!options.tabindex && textarea.tabindex) - options.tabindex = textarea.tabindex; - if (!options.placeholder && textarea.placeholder) - options.placeholder = textarea.placeholder; - // Set autofocus to true if this textarea is focused, or if it has - // autofocus and no other element is focused. - if (options.autofocus == null) { - var hasFocus = activeElt(); - options.autofocus = hasFocus == textarea || - textarea.getAttribute("autofocus") != null && hasFocus == document.body; - } - - function save() {textarea.value = cm.getValue();} - if (textarea.form) { - on(textarea.form, "submit", save); - // Deplorable hack to make the submit method do the right thing. - if (!options.leaveSubmitMethodAlone) { - var form = textarea.form, realSubmit = form.submit; - try { - var wrappedSubmit = form.submit = function() { - save(); - form.submit = realSubmit; - form.submit(); - form.submit = wrappedSubmit; - }; - } catch(e) {} - } - } - - textarea.style.display = "none"; - var cm = CodeMirror(function(node) { - textarea.parentNode.insertBefore(node, textarea.nextSibling); - }, options); - cm.save = save; - cm.getTextArea = function() { return textarea; }; - cm.toTextArea = function() { - save(); - textarea.parentNode.removeChild(cm.getWrapperElement()); - textarea.style.display = ""; - if (textarea.form) { - off(textarea.form, "submit", save); - if (typeof textarea.form.submit == "function") - textarea.form.submit = realSubmit; - } - }; - return cm; - }; - - // STRING STREAM - - // Fed to the mode parsers, provides helper functions to make - // parsers more succinct. - - var StringStream = CodeMirror.StringStream = function(string, tabSize) { - this.pos = this.start = 0; - this.string = string; - this.tabSize = tabSize || 8; - this.lastColumnPos = this.lastColumnValue = 0; - this.lineStart = 0; - }; - - StringStream.prototype = { - eol: function() {return this.pos >= this.string.length;}, - sol: function() {return this.pos == this.lineStart;}, - peek: function() {return this.string.charAt(this.pos) || undefined;}, - next: function() { - if (this.pos < this.string.length) - return this.string.charAt(this.pos++); - }, - eat: function(match) { - var ch = this.string.charAt(this.pos); - if (typeof match == "string") var ok = ch == match; - else var ok = ch && (match.test ? match.test(ch) : match(ch)); - if (ok) {++this.pos; return ch;} - }, - eatWhile: function(match) { - var start = this.pos; - while (this.eat(match)){} - return this.pos > start; - }, - eatSpace: function() { - var start = this.pos; - while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; - return this.pos > start; - }, - skipToEnd: function() {this.pos = this.string.length;}, - skipTo: function(ch) { - var found = this.string.indexOf(ch, this.pos); - if (found > -1) {this.pos = found; return true;} - }, - backUp: function(n) {this.pos -= n;}, - column: function() { - if (this.lastColumnPos < this.start) { - this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); - this.lastColumnPos = this.start; - } - return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); - }, - indentation: function() { - return countColumn(this.string, null, this.tabSize) - - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); - }, - match: function(pattern, consume, caseInsensitive) { - if (typeof pattern == "string") { - var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; - var substr = this.string.substr(this.pos, pattern.length); - if (cased(substr) == cased(pattern)) { - if (consume !== false) this.pos += pattern.length; - return true; - } - } else { - var match = this.string.slice(this.pos).match(pattern); - if (match && match.index > 0) return null; - if (match && consume !== false) this.pos += match[0].length; - return match; - } - }, - current: function(){return this.string.slice(this.start, this.pos);}, - hideFirstChars: function(n, inner) { - this.lineStart += n; - try { return inner(); } - finally { this.lineStart -= n; } - } - }; - - // TEXTMARKERS - - // Created with markText and setBookmark methods. A TextMarker is a - // handle that can be used to clear or find a marked position in the - // document. Line objects hold arrays (markedSpans) containing - // {from, to, marker} object pointing to such marker objects, and - // indicating that such a marker is present on that line. Multiple - // lines may point to the same marker when it spans across lines. - // The spans will have null for their from/to properties when the - // marker continues beyond the start/end of the line. Markers have - // links back to the lines they currently touch. - - var TextMarker = CodeMirror.TextMarker = function(doc, type) { - this.lines = []; - this.type = type; - this.doc = doc; - }; - eventMixin(TextMarker); - - // Clear the marker. - TextMarker.prototype.clear = function() { - if (this.explicitlyCleared) return; - var cm = this.doc.cm, withOp = cm && !cm.curOp; - if (withOp) startOperation(cm); - if (hasHandler(this, "clear")) { - var found = this.find(); - if (found) signalLater(this, "clear", found.from, found.to); - } - var min = null, max = null; - for (var i = 0; i < this.lines.length; ++i) { - var line = this.lines[i]; - var span = getMarkedSpanFor(line.markedSpans, this); - if (cm && !this.collapsed) regLineChange(cm, lineNo(line), "text"); - else if (cm) { - if (span.to != null) max = lineNo(line); - if (span.from != null) min = lineNo(line); - } - line.markedSpans = removeMarkedSpan(line.markedSpans, span); - if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) - updateLineHeight(line, textHeight(cm.display)); - } - if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) { - var visual = visualLine(this.lines[i]), len = lineLength(visual); - if (len > cm.display.maxLineLength) { - cm.display.maxLine = visual; - cm.display.maxLineLength = len; - cm.display.maxLineChanged = true; - } - } - - if (min != null && cm && this.collapsed) regChange(cm, min, max + 1); - this.lines.length = 0; - this.explicitlyCleared = true; - if (this.atomic && this.doc.cantEdit) { - this.doc.cantEdit = false; - if (cm) reCheckSelection(cm.doc); - } - signalLater(cm, "markerCleared", cm, this); - if (withOp) endOperation(cm); - }; - - // Find the position of the marker in the document. Returns a {from, - // to} object by default. Side can be passed to get a specific side - // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the - // Pos objects returned contain a line object, rather than a line - // number (used to prevent looking up the same line twice). - TextMarker.prototype.find = function(side, lineObj) { - if (side == null && this.type == "bookmark") side = 1; - var from, to; - for (var i = 0; i < this.lines.length; ++i) { - var line = this.lines[i]; - var span = getMarkedSpanFor(line.markedSpans, this); - if (span.from != null) { - from = Pos(lineObj ? line : lineNo(line), span.from); - if (side == -1) return from; - } - if (span.to != null) { - to = Pos(lineObj ? line : lineNo(line), span.to); - if (side == 1) return to; - } - } - return from && {from: from, to: to}; - }; - - // Signals that the marker's widget changed, and surrounding layout - // should be recomputed. - TextMarker.prototype.changed = function() { - var pos = this.find(-1, true), cm = this.doc.cm; - if (!pos || !cm) return; - var line = pos.line, lineN = lineNo(pos.line); - var view = findViewForLine(cm, lineN); - if (view) clearLineMeasurementCacheFor(view); - if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) { - var lineView = cm.display.view[findViewIndex(cm, lineN)]; - if (!lineView.hidden && lineView.node && lineView.node.offsetHeight != line.height) - updateLineHeight(line, lineView.node.offsetHeight); - runInOp(cm, function() { - cm.curOp.selectionChanged = cm.curOp.forceUpdate = cm.curOp.updateMaxLine = true; - }); - } - }; - - TextMarker.prototype.attachLine = function(line) { - if (!this.lines.length && this.doc.cm) { - var op = this.doc.cm.curOp; - if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) - (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); - } - this.lines.push(line); - }; - TextMarker.prototype.detachLine = function(line) { - this.lines.splice(indexOf(this.lines, line), 1); - if (!this.lines.length && this.doc.cm) { - var op = this.doc.cm.curOp; - (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); - } - }; - - // Collapsed markers have unique ids, in order to be able to order - // them, which is needed for uniquely determining an outer marker - // when they overlap (they may nest, but not partially overlap). - var nextMarkerId = 0; - - // Create a marker, wire it up to the right lines, and - function markText(doc, from, to, options, type) { - // Shared markers (across linked documents) are handled separately - // (markTextShared will call out to this again, once per - // document). - if (options && options.shared) return markTextShared(doc, from, to, options, type); - // Ensure we are in an operation. - if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type); - - var marker = new TextMarker(doc, type), diff = cmp(from, to); - if (options) copyObj(options, marker); - // Don't connect empty markers unless clearWhenEmpty is false - if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) - return marker; - if (marker.replacedWith) { - // Showing up as a widget implies collapsed (widget replaces text) - marker.collapsed = true; - marker.widgetNode = elt("span", [marker.replacedWith], "CodeMirror-widget"); - if (!options.handleMouseEvents) marker.widgetNode.ignoreEvents = true; - if (options.insertLeft) marker.widgetNode.insertLeft = true; - } - if (marker.collapsed) { - if (conflictingCollapsedRange(doc, from.line, from, to, marker) || - from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) - throw new Error("Inserting collapsed marker partially overlapping an existing one"); - sawCollapsedSpans = true; - } - - if (marker.addToHistory) - addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN); - - var curLine = from.line, cm = doc.cm, updateMaxLine; - doc.iter(curLine, to.line + 1, function(line) { - if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) - updateMaxLine = true; - if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0); - addMarkedSpan(line, new MarkedSpan(marker, - curLine == from.line ? from.ch : null, - curLine == to.line ? to.ch : null)); - ++curLine; - }); - // lineIsHidden depends on the presence of the spans, so needs a second pass - if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) { - if (lineIsHidden(doc, line)) updateLineHeight(line, 0); - }); - - if (marker.clearOnEnter) on(marker, "beforeCursorEnter", function() { marker.clear(); }); - - if (marker.readOnly) { - sawReadOnlySpans = true; - if (doc.history.done.length || doc.history.undone.length) - doc.clearHistory(); - } - if (marker.collapsed) { - marker.id = ++nextMarkerId; - marker.atomic = true; - } - if (cm) { - // Sync editor state - if (updateMaxLine) cm.curOp.updateMaxLine = true; - if (marker.collapsed) - regChange(cm, from.line, to.line + 1); - else if (marker.className || marker.title || marker.startStyle || marker.endStyle) - for (var i = from.line; i <= to.line; i++) regLineChange(cm, i, "text"); - if (marker.atomic) reCheckSelection(cm.doc); - } - signalLater(cm, "markerAdded", cm, marker); - return marker; - } - - // SHARED TEXTMARKERS - - // A shared marker spans multiple linked documents. It is - // implemented as a meta-marker-object controlling multiple normal - // markers. - var SharedTextMarker = CodeMirror.SharedTextMarker = function(markers, primary) { - this.markers = markers; - this.primary = primary; - for (var i = 0, me = this; i < markers.length; ++i) { - markers[i].parent = this; - on(markers[i], "clear", function(){me.clear();}); - } - }; - eventMixin(SharedTextMarker); - - SharedTextMarker.prototype.clear = function() { - if (this.explicitlyCleared) return; - this.explicitlyCleared = true; - for (var i = 0; i < this.markers.length; ++i) - this.markers[i].clear(); - signalLater(this, "clear"); - }; - SharedTextMarker.prototype.find = function(side, lineObj) { - return this.primary.find(side, lineObj); - }; - - function markTextShared(doc, from, to, options, type) { - options = copyObj(options); - options.shared = false; - var markers = [markText(doc, from, to, options, type)], primary = markers[0]; - var widget = options.widgetNode; - linkedDocs(doc, function(doc) { - if (widget) options.widgetNode = widget.cloneNode(true); - markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); - for (var i = 0; i < doc.linked.length; ++i) - if (doc.linked[i].isParent) return; - primary = lst(markers); - }); - return new SharedTextMarker(markers, primary); - } - - // TEXTMARKER SPANS - - function MarkedSpan(marker, from, to) { - this.marker = marker; - this.from = from; this.to = to; - } - - // Search an array of spans for a span matching the given marker. - function getMarkedSpanFor(spans, marker) { - if (spans) for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if (span.marker == marker) return span; - } - } - // Remove a span from an array, returning undefined if no spans are - // left (we don't store arrays for lines without spans). - function removeMarkedSpan(spans, span) { - for (var r, i = 0; i < spans.length; ++i) - if (spans[i] != span) (r || (r = [])).push(spans[i]); - return r; - } - // Add a span to a line. - function addMarkedSpan(line, span) { - line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; - span.marker.attachLine(line); - } - - // Used for the algorithm that adjusts markers for a change in the - // document. These functions cut an array of spans at a given - // character position, returning an array of remaining chunks (or - // undefined if nothing remains). - function markedSpansBefore(old, startCh, isInsert) { - if (old) for (var i = 0, nw; i < old.length; ++i) { - var span = old[i], marker = span.marker; - var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); - if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { - var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh); - (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)); - } - } - return nw; - } - function markedSpansAfter(old, endCh, isInsert) { - if (old) for (var i = 0, nw; i < old.length; ++i) { - var span = old[i], marker = span.marker; - var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); - if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { - var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh); - (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, - span.to == null ? null : span.to - endCh)); - } - } - return nw; - } - - // Given a change object, compute the new set of marker spans that - // cover the line in which the change took place. Removes spans - // entirely within the change, reconnects spans belonging to the - // same marker that appear on both sides of the change, and cuts off - // spans partially within the change. Returns an array of span - // arrays with one element for each line in (after) the change. - function stretchSpansOverChange(doc, change) { - var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; - var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; - if (!oldFirst && !oldLast) return null; - - var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0; - // Get the spans that 'stick out' on both sides - var first = markedSpansBefore(oldFirst, startCh, isInsert); - var last = markedSpansAfter(oldLast, endCh, isInsert); - - // Next, merge those two ends - var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); - if (first) { - // Fix up .to properties of first - for (var i = 0; i < first.length; ++i) { - var span = first[i]; - if (span.to == null) { - var found = getMarkedSpanFor(last, span.marker); - if (!found) span.to = startCh; - else if (sameLine) span.to = found.to == null ? null : found.to + offset; - } - } - } - if (last) { - // Fix up .from in last (or move them into first in case of sameLine) - for (var i = 0; i < last.length; ++i) { - var span = last[i]; - if (span.to != null) span.to += offset; - if (span.from == null) { - var found = getMarkedSpanFor(first, span.marker); - if (!found) { - span.from = offset; - if (sameLine) (first || (first = [])).push(span); - } - } else { - span.from += offset; - if (sameLine) (first || (first = [])).push(span); - } - } - } - // Make sure we didn't create any zero-length spans - if (first) first = clearEmptySpans(first); - if (last && last != first) last = clearEmptySpans(last); - - var newMarkers = [first]; - if (!sameLine) { - // Fill gap with whole-line-spans - var gap = change.text.length - 2, gapMarkers; - if (gap > 0 && first) - for (var i = 0; i < first.length; ++i) - if (first[i].to == null) - (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null)); - for (var i = 0; i < gap; ++i) - newMarkers.push(gapMarkers); - newMarkers.push(last); - } - return newMarkers; - } - - // Remove spans that are empty and don't have a clearWhenEmpty - // option of false. - function clearEmptySpans(spans) { - for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) - spans.splice(i--, 1); - } - if (!spans.length) return null; - return spans; - } - - // Used for un/re-doing changes from the history. Combines the - // result of computing the existing spans with the set of spans that - // existed in the history (so that deleting around a span and then - // undoing brings back the span). - function mergeOldSpans(doc, change) { - var old = getOldSpans(doc, change); - var stretched = stretchSpansOverChange(doc, change); - if (!old) return stretched; - if (!stretched) return old; - - for (var i = 0; i < old.length; ++i) { - var oldCur = old[i], stretchCur = stretched[i]; - if (oldCur && stretchCur) { - spans: for (var j = 0; j < stretchCur.length; ++j) { - var span = stretchCur[j]; - for (var k = 0; k < oldCur.length; ++k) - if (oldCur[k].marker == span.marker) continue spans; - oldCur.push(span); - } - } else if (stretchCur) { - old[i] = stretchCur; - } - } - return old; - } - - // Used to 'clip' out readOnly ranges when making a change. - function removeReadOnlyRanges(doc, from, to) { - var markers = null; - doc.iter(from.line, to.line + 1, function(line) { - if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { - var mark = line.markedSpans[i].marker; - if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) - (markers || (markers = [])).push(mark); - } - }); - if (!markers) return null; - var parts = [{from: from, to: to}]; - for (var i = 0; i < markers.length; ++i) { - var mk = markers[i], m = mk.find(0); - for (var j = 0; j < parts.length; ++j) { - var p = parts[j]; - if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue; - var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to); - if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) - newParts.push({from: p.from, to: m.from}); - if (dto > 0 || !mk.inclusiveRight && !dto) - newParts.push({from: m.to, to: p.to}); - parts.splice.apply(parts, newParts); - j += newParts.length - 1; - } - } - return parts; - } - - // Connect or disconnect spans from a line. - function detachMarkedSpans(line) { - var spans = line.markedSpans; - if (!spans) return; - for (var i = 0; i < spans.length; ++i) - spans[i].marker.detachLine(line); - line.markedSpans = null; - } - function attachMarkedSpans(line, spans) { - if (!spans) return; - for (var i = 0; i < spans.length; ++i) - spans[i].marker.attachLine(line); - line.markedSpans = spans; - } - - // Helpers used when computing which overlapping collapsed span - // counts as the larger one. - function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; } - function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; } - - // Returns a number indicating which of two overlapping collapsed - // spans is larger (and thus includes the other). Falls back to - // comparing ids when the spans cover exactly the same range. - function compareCollapsedMarkers(a, b) { - var lenDiff = a.lines.length - b.lines.length; - if (lenDiff != 0) return lenDiff; - var aPos = a.find(), bPos = b.find(); - var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b); - if (fromCmp) return -fromCmp; - var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b); - if (toCmp) return toCmp; - return b.id - a.id; - } - - // Find out whether a line ends or starts in a collapsed span. If - // so, return the marker for that span. - function collapsedSpanAtSide(line, start) { - var sps = sawCollapsedSpans && line.markedSpans, found; - if (sps) for (var sp, i = 0; i < sps.length; ++i) { - sp = sps[i]; - if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && - (!found || compareCollapsedMarkers(found, sp.marker) < 0)) - found = sp.marker; - } - return found; - } - function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); } - function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); } - - // Test whether there exists a collapsed span that partially - // overlaps (covers the start or end, but not both) of a new span. - // Such overlap is not allowed. - function conflictingCollapsedRange(doc, lineNo, from, to, marker) { - var line = getLine(doc, lineNo); - var sps = sawCollapsedSpans && line.markedSpans; - if (sps) for (var i = 0; i < sps.length; ++i) { - var sp = sps[i]; - if (!sp.marker.collapsed) continue; - var found = sp.marker.find(0); - var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); - var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); - if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue; - if (fromCmp <= 0 && (cmp(found.to, from) || extraRight(sp.marker) - extraLeft(marker)) > 0 || - fromCmp >= 0 && (cmp(found.from, to) || extraLeft(sp.marker) - extraRight(marker)) < 0) - return true; - } - } - - // A visual line is a line as drawn on the screen. Folding, for - // example, can cause multiple logical lines to appear on the same - // visual line. This finds the start of the visual line that the - // given line is part of (usually that is the line itself). - function visualLine(line) { - var merged; - while (merged = collapsedSpanAtStart(line)) - line = merged.find(-1, true).line; - return line; - } - - // Returns an array of logical lines that continue the visual line - // started by the argument, or undefined if there are no such lines. - function visualLineContinued(line) { - var merged, lines; - while (merged = collapsedSpanAtEnd(line)) { - line = merged.find(1, true).line; - (lines || (lines = [])).push(line); - } - return lines; - } - - // Get the line number of the start of the visual line that the - // given line number is part of. - function visualLineNo(doc, lineN) { - var line = getLine(doc, lineN), vis = visualLine(line); - if (line == vis) return lineN; - return lineNo(vis); - } - // Get the line number of the start of the next visual line after - // the given line. - function visualLineEndNo(doc, lineN) { - if (lineN > doc.lastLine()) return lineN; - var line = getLine(doc, lineN), merged; - if (!lineIsHidden(doc, line)) return lineN; - while (merged = collapsedSpanAtEnd(line)) - line = merged.find(1, true).line; - return lineNo(line) + 1; - } - - // Compute whether a line is hidden. Lines count as hidden when they - // are part of a visual line that starts with another line, or when - // they are entirely covered by collapsed, non-widget span. - function lineIsHidden(doc, line) { - var sps = sawCollapsedSpans && line.markedSpans; - if (sps) for (var sp, i = 0; i < sps.length; ++i) { - sp = sps[i]; - if (!sp.marker.collapsed) continue; - if (sp.from == null) return true; - if (sp.marker.widgetNode) continue; - if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) - return true; - } - } - function lineIsHiddenInner(doc, line, span) { - if (span.to == null) { - var end = span.marker.find(1, true); - return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)); - } - if (span.marker.inclusiveRight && span.to == line.text.length) - return true; - for (var sp, i = 0; i < line.markedSpans.length; ++i) { - sp = line.markedSpans[i]; - if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && - (sp.to == null || sp.to != span.from) && - (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && - lineIsHiddenInner(doc, line, sp)) return true; - } - } - - // LINE WIDGETS - - // Line widgets are block elements displayed above or below a line. - - var LineWidget = CodeMirror.LineWidget = function(cm, node, options) { - if (options) for (var opt in options) if (options.hasOwnProperty(opt)) - this[opt] = options[opt]; - this.cm = cm; - this.node = node; - }; - eventMixin(LineWidget); - - LineWidget.prototype.clear = function() { - var cm = this.cm, ws = this.line.widgets, no = lineNo(this.line); - if (no == null || !ws) return; - for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1); - if (!ws.length) this.line.widgets = null; - var aboveVisible = heightAtLine(this.line) < cm.doc.scrollTop; - updateLineHeight(this.line, Math.max(0, this.line.height - widgetHeight(this))); - if (aboveVisible) addToScrollPos(cm, null, -this.height); - runInOp(cm, function() { regLineChange(cm, no, "widget"); }); - }; - LineWidget.prototype.changed = function() { - var oldH = this.height, cm = this.cm; - this.height = null; - var diff = widgetHeight(this) - oldH; - if (!diff) return; - updateLineHeight(this.line, this.line.height + diff); - var no = lineNo(this.line); - runInOp(cm, function() { regLineChange(cm, no, "widget"); }); - }; - - function widgetHeight(widget) { - if (widget.height != null) return widget.height; - if (!widget.node.parentNode || widget.node.parentNode.nodeType != 1) - removeChildrenAndAdd(widget.cm.display.measure, elt("div", [widget.node], null, "position: relative")); - return widget.height = widget.node.offsetHeight; - } - - function addLineWidget(cm, handle, node, options) { - var widget = new LineWidget(cm, node, options); - if (widget.noHScroll) cm.display.alignWidgets = true; - changeLine(cm, handle, "widget", function(line) { - var widgets = line.widgets || (line.widgets = []); - if (widget.insertAt == null) widgets.push(widget); - else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); - widget.line = line; - if (!lineIsHidden(cm.doc, line) || widget.showIfHidden) { - var aboveVisible = heightAtLine(line) < cm.doc.scrollTop; - updateLineHeight(line, line.height + widgetHeight(widget)); - if (aboveVisible) addToScrollPos(cm, null, widget.height); - cm.curOp.forceUpdate = true; - } - return true; - }); - return widget; - } - - // LINE DATA STRUCTURE - - // Line objects. These hold state related to a line, including - // highlighting info (the styles array). - var Line = CodeMirror.Line = function(text, markedSpans, estimateHeight) { - this.text = text; - attachMarkedSpans(this, markedSpans); - this.height = estimateHeight ? estimateHeight(this) : 1; - }; - eventMixin(Line); - Line.prototype.lineNo = function() { return lineNo(this); }; - - // Change the content (text, markers) of a line. Automatically - // invalidates cached information and tries to re-estimate the - // line's height. - function updateLine(line, text, markedSpans, estimateHeight) { - line.text = text; - if (line.stateAfter) line.stateAfter = null; - if (line.styles) line.styles = null; - if (line.order != null) line.order = null; - detachMarkedSpans(line); - attachMarkedSpans(line, markedSpans); - var estHeight = estimateHeight ? estimateHeight(line) : 1; - if (estHeight != line.height) updateLineHeight(line, estHeight); - } - - // Detach a line from the document tree and its markers. - function cleanUpLine(line) { - line.parent = null; - detachMarkedSpans(line); - } - - // Run the given mode's parser over a line, calling f for each token. - function runMode(cm, text, mode, state, f, forceToEnd) { - var flattenSpans = mode.flattenSpans; - if (flattenSpans == null) flattenSpans = cm.options.flattenSpans; - var curStart = 0, curStyle = null; - var stream = new StringStream(text, cm.options.tabSize), style; - if (text == "" && mode.blankLine) mode.blankLine(state); - while (!stream.eol()) { - if (stream.pos > cm.options.maxHighlightLength) { - flattenSpans = false; - if (forceToEnd) processLine(cm, text, state, stream.pos); - stream.pos = text.length; - style = null; - } else { - style = mode.token(stream, state); - } - if (cm.options.addModeClass) { - var mName = CodeMirror.innerMode(mode, state).mode.name; - if (mName) style = "m-" + (style ? mName + " " + style : mName); - } - if (!flattenSpans || curStyle != style) { - if (curStart < stream.start) f(stream.start, curStyle); - curStart = stream.start; curStyle = style; - } - stream.start = stream.pos; - } - while (curStart < stream.pos) { - // Webkit seems to refuse to render text nodes longer than 57444 characters - var pos = Math.min(stream.pos, curStart + 50000); - f(pos, curStyle); - curStart = pos; - } - } - - // Compute a style array (an array starting with a mode generation - // -- for invalidation -- followed by pairs of end positions and - // style strings), which is used to highlight the tokens on the - // line. - function highlightLine(cm, line, state, forceToEnd) { - // A styles array always starts with a number identifying the - // mode/overlays that it is based on (for easy invalidation). - var st = [cm.state.modeGen]; - // Compute the base array of styles - runMode(cm, line.text, cm.doc.mode, state, function(end, style) { - st.push(end, style); - }, forceToEnd); - - // Run overlays, adjust style array. - for (var o = 0; o < cm.state.overlays.length; ++o) { - var overlay = cm.state.overlays[o], i = 1, at = 0; - runMode(cm, line.text, overlay.mode, true, function(end, style) { - var start = i; - // Ensure there's a token end at the current position, and that i points at it - while (at < end) { - var i_end = st[i]; - if (i_end > end) - st.splice(i, 1, end, st[i+1], i_end); - i += 2; - at = Math.min(end, i_end); - } - if (!style) return; - if (overlay.opaque) { - st.splice(start, i - start, end, style); - i = start + 2; - } else { - for (; start < i; start += 2) { - var cur = st[start+1]; - st[start+1] = cur ? cur + " " + style : style; - } - } - }); - } - - return st; - } - - function getLineStyles(cm, line) { - if (!line.styles || line.styles[0] != cm.state.modeGen) - line.styles = highlightLine(cm, line, line.stateAfter = getStateBefore(cm, lineNo(line))); - return line.styles; - } - - // Lightweight form of highlight -- proceed over this line and - // update state, but don't save a style array. Used for lines that - // aren't currently visible. - function processLine(cm, text, state, startAt) { - var mode = cm.doc.mode; - var stream = new StringStream(text, cm.options.tabSize); - stream.start = stream.pos = startAt || 0; - if (text == "" && mode.blankLine) mode.blankLine(state); - while (!stream.eol() && stream.pos <= cm.options.maxHighlightLength) { - mode.token(stream, state); - stream.start = stream.pos; - } - } - - // Convert a style as returned by a mode (either null, or a string - // containing one or more styles) to a CSS style. This is cached, - // and also looks for line-wide styles. - var styleToClassCache = {}, styleToClassCacheWithMode = {}; - function interpretTokenStyle(style, builder) { - if (!style) return null; - for (;;) { - var lineClass = style.match(/(?:^|\s+)line-(background-)?(\S+)/); - if (!lineClass) break; - style = style.slice(0, lineClass.index) + style.slice(lineClass.index + lineClass[0].length); - var prop = lineClass[1] ? "bgClass" : "textClass"; - if (builder[prop] == null) - builder[prop] = lineClass[2]; - else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(builder[prop])) - builder[prop] += " " + lineClass[2]; - } - if (/^\s*$/.test(style)) return null; - var cache = builder.cm.options.addModeClass ? styleToClassCacheWithMode : styleToClassCache; - return cache[style] || - (cache[style] = style.replace(/\S+/g, "cm-$&")); - } - - // Render the DOM representation of the text of a line. Also builds - // up a 'line map', which points at the DOM nodes that represent - // specific stretches of text, and is used by the measuring code. - // The returned object contains the DOM node, this map, and - // information about line-wide styles that were set by the mode. - function buildLineContent(cm, lineView) { - // The padding-right forces the element to have a 'border', which - // is needed on Webkit to be able to get line-level bounding - // rectangles for it (in measureChar). - var content = elt("span", null, null, webkit ? "padding-right: .1px" : null); - var builder = {pre: elt("pre", [content]), content: content, col: 0, pos: 0, cm: cm}; - lineView.measure = {}; - - // Iterate over the logical lines that make up this visual line. - for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { - var line = i ? lineView.rest[i - 1] : lineView.line, order; - builder.pos = 0; - builder.addToken = buildToken; - // Optionally wire in some hacks into the token-rendering - // algorithm, to deal with browser quirks. - if ((ie || webkit) && cm.getOption("lineWrapping")) - builder.addToken = buildTokenSplitSpaces(builder.addToken); - if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line))) - builder.addToken = buildTokenBadBidi(builder.addToken, order); - builder.map = []; - insertLineContent(line, builder, getLineStyles(cm, line)); - - // Ensure at least a single node is present, for measuring. - if (builder.map.length == 0) - builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); - - // Store the map and a cache object for the current logical line - if (i == 0) { - lineView.measure.map = builder.map; - lineView.measure.cache = {}; - } else { - (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map); - (lineView.measure.caches || (lineView.measure.caches = [])).push({}); - } - } - - signal(cm, "renderLine", cm, lineView.line, builder.pre); - return builder; - } - - function defaultSpecialCharPlaceholder(ch) { - var token = elt("span", "\u2022", "cm-invalidchar"); - token.title = "\\u" + ch.charCodeAt(0).toString(16); - return token; - } - - // Build up the DOM representation for a single token, and add it to - // the line map. Takes care to render special characters separately. - function buildToken(builder, text, style, startStyle, endStyle, title) { - if (!text) return; - var special = builder.cm.options.specialChars, mustWrap = false; - if (!special.test(text)) { - builder.col += text.length; - var content = document.createTextNode(text); - builder.map.push(builder.pos, builder.pos + text.length, content); - if (ie_upto8) mustWrap = true; - builder.pos += text.length; - } else { - var content = document.createDocumentFragment(), pos = 0; - while (true) { - special.lastIndex = pos; - var m = special.exec(text); - var skipped = m ? m.index - pos : text.length - pos; - if (skipped) { - var txt = document.createTextNode(text.slice(pos, pos + skipped)); - if (ie_upto8) content.appendChild(elt("span", [txt])); - else content.appendChild(txt); - builder.map.push(builder.pos, builder.pos + skipped, txt); - builder.col += skipped; - builder.pos += skipped; - } - if (!m) break; - pos += skipped + 1; - if (m[0] == "\t") { - var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; - var txt = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); - builder.col += tabWidth; - } else { - var txt = builder.cm.options.specialCharPlaceholder(m[0]); - if (ie_upto8) content.appendChild(elt("span", [txt])); - else content.appendChild(txt); - builder.col += 1; - } - builder.map.push(builder.pos, builder.pos + 1, txt); - builder.pos++; - } - } - if (style || startStyle || endStyle || mustWrap) { - var fullStyle = style || ""; - if (startStyle) fullStyle += startStyle; - if (endStyle) fullStyle += endStyle; - var token = elt("span", [content], fullStyle); - if (title) token.title = title; - return builder.content.appendChild(token); - } - builder.content.appendChild(content); - } - - function buildTokenSplitSpaces(inner) { - function split(old) { - var out = " "; - for (var i = 0; i < old.length - 2; ++i) out += i % 2 ? " " : "\u00a0"; - out += " "; - return out; - } - return function(builder, text, style, startStyle, endStyle, title) { - inner(builder, text.replace(/ {3,}/g, split), style, startStyle, endStyle, title); - }; - } - - // Work around nonsense dimensions being reported for stretches of - // right-to-left text. - function buildTokenBadBidi(inner, order) { - return function(builder, text, style, startStyle, endStyle, title) { - style = style ? style + " cm-force-border" : "cm-force-border"; - var start = builder.pos, end = start + text.length; - for (;;) { - // Find the part that overlaps with the start of this text - for (var i = 0; i < order.length; i++) { - var part = order[i]; - if (part.to > start && part.from <= start) break; - } - if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title); - inner(builder, text.slice(0, part.to - start), style, startStyle, null, title); - startStyle = null; - text = text.slice(part.to - start); - start = part.to; - } - }; - } - - function buildCollapsedSpan(builder, size, marker, ignoreWidget) { - var widget = !ignoreWidget && marker.widgetNode; - if (widget) { - builder.map.push(builder.pos, builder.pos + size, widget); - builder.content.appendChild(widget); - } - builder.pos += size; - } - - // Outputs a number of spans to make up a line, taking highlighting - // and marked text into account. - function insertLineContent(line, builder, styles) { - var spans = line.markedSpans, allText = line.text, at = 0; - if (!spans) { - for (var i = 1; i < styles.length; i+=2) - builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder)); - return; - } - - var len = allText.length, pos = 0, i = 1, text = "", style; - var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed; - for (;;) { - if (nextChange == pos) { // Update current marker set - spanStyle = spanEndStyle = spanStartStyle = title = ""; - collapsed = null; nextChange = Infinity; - var foundBookmarks = []; - for (var j = 0; j < spans.length; ++j) { - var sp = spans[j], m = sp.marker; - if (sp.from <= pos && (sp.to == null || sp.to > pos)) { - if (sp.to != null && nextChange > sp.to) { nextChange = sp.to; spanEndStyle = ""; } - if (m.className) spanStyle += " " + m.className; - if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle; - if (m.endStyle && sp.to == nextChange) spanEndStyle += " " + m.endStyle; - if (m.title && !title) title = m.title; - if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) - collapsed = sp; - } else if (sp.from > pos && nextChange > sp.from) { - nextChange = sp.from; - } - if (m.type == "bookmark" && sp.from == pos && m.widgetNode) foundBookmarks.push(m); - } - if (collapsed && (collapsed.from || 0) == pos) { - buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, - collapsed.marker, collapsed.from == null); - if (collapsed.to == null) return; - } - if (!collapsed && foundBookmarks.length) for (var j = 0; j < foundBookmarks.length; ++j) - buildCollapsedSpan(builder, 0, foundBookmarks[j]); - } - if (pos >= len) break; - - var upto = Math.min(len, nextChange); - while (true) { - if (text) { - var end = pos + text.length; - if (!collapsed) { - var tokenText = end > upto ? text.slice(0, upto - pos) : text; - builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, - spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title); - } - if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;} - pos = end; - spanStartStyle = ""; - } - text = allText.slice(at, at = styles[i++]); - style = interpretTokenStyle(styles[i++], builder); - } - } - } - - // DOCUMENT DATA STRUCTURE - - // By default, updates that start and end at the beginning of a line - // are treated specially, in order to make the association of line - // widgets and marker elements with the text behave more intuitive. - function isWholeLineUpdate(doc, change) { - return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && - (!doc.cm || doc.cm.options.wholeLineUpdateBefore); - } - - // Perform a change on the document data structure. - function updateDoc(doc, change, markedSpans, estimateHeight) { - function spansFor(n) {return markedSpans ? markedSpans[n] : null;} - function update(line, text, spans) { - updateLine(line, text, spans, estimateHeight); - signalLater(line, "change", line, change); - } - - var from = change.from, to = change.to, text = change.text; - var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); - var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; - - // Adjust the line structure - if (isWholeLineUpdate(doc, change)) { - // This is a whole-line replace. Treated specially to make - // sure line objects move the way they are supposed to. - for (var i = 0, added = []; i < text.length - 1; ++i) - added.push(new Line(text[i], spansFor(i), estimateHeight)); - update(lastLine, lastLine.text, lastSpans); - if (nlines) doc.remove(from.line, nlines); - if (added.length) doc.insert(from.line, added); - } else if (firstLine == lastLine) { - if (text.length == 1) { - update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); - } else { - for (var added = [], i = 1; i < text.length - 1; ++i) - added.push(new Line(text[i], spansFor(i), estimateHeight)); - added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)); - update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); - doc.insert(from.line + 1, added); - } - } else if (text.length == 1) { - update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); - doc.remove(from.line + 1, nlines); - } else { - update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); - update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); - for (var i = 1, added = []; i < text.length - 1; ++i) - added.push(new Line(text[i], spansFor(i), estimateHeight)); - if (nlines > 1) doc.remove(from.line + 1, nlines - 1); - doc.insert(from.line + 1, added); - } - - signalLater(doc, "change", doc, change); - } - - // The document is represented as a BTree consisting of leaves, with - // chunk of lines in them, and branches, with up to ten leaves or - // other branch nodes below them. The top node is always a branch - // node, and is the document object itself (meaning it has - // additional methods and properties). - // - // All nodes have parent links. The tree is used both to go from - // line numbers to line objects, and to go from objects to numbers. - // It also indexes by height, and is used to convert between height - // and line object, and to find the total height of the document. - // - // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html - - function LeafChunk(lines) { - this.lines = lines; - this.parent = null; - for (var i = 0, height = 0; i < lines.length; ++i) { - lines[i].parent = this; - height += lines[i].height; - } - this.height = height; - } - - LeafChunk.prototype = { - chunkSize: function() { return this.lines.length; }, - // Remove the n lines at offset 'at'. - removeInner: function(at, n) { - for (var i = at, e = at + n; i < e; ++i) { - var line = this.lines[i]; - this.height -= line.height; - cleanUpLine(line); - signalLater(line, "delete"); - } - this.lines.splice(at, n); - }, - // Helper used to collapse a small branch into a single leaf. - collapse: function(lines) { - lines.push.apply(lines, this.lines); - }, - // Insert the given array of lines at offset 'at', count them as - // having the given height. - insertInner: function(at, lines, height) { - this.height += height; - this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); - for (var i = 0; i < lines.length; ++i) lines[i].parent = this; - }, - // Used to iterate over a part of the tree. - iterN: function(at, n, op) { - for (var e = at + n; at < e; ++at) - if (op(this.lines[at])) return true; - } - }; - - function BranchChunk(children) { - this.children = children; - var size = 0, height = 0; - for (var i = 0; i < children.length; ++i) { - var ch = children[i]; - size += ch.chunkSize(); height += ch.height; - ch.parent = this; - } - this.size = size; - this.height = height; - this.parent = null; - } - - BranchChunk.prototype = { - chunkSize: function() { return this.size; }, - removeInner: function(at, n) { - this.size -= n; - for (var i = 0; i < this.children.length; ++i) { - var child = this.children[i], sz = child.chunkSize(); - if (at < sz) { - var rm = Math.min(n, sz - at), oldHeight = child.height; - child.removeInner(at, rm); - this.height -= oldHeight - child.height; - if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } - if ((n -= rm) == 0) break; - at = 0; - } else at -= sz; - } - // If the result is smaller than 25 lines, ensure that it is a - // single leaf node. - if (this.size - n < 25 && - (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { - var lines = []; - this.collapse(lines); - this.children = [new LeafChunk(lines)]; - this.children[0].parent = this; - } - }, - collapse: function(lines) { - for (var i = 0; i < this.children.length; ++i) this.children[i].collapse(lines); - }, - insertInner: function(at, lines, height) { - this.size += lines.length; - this.height += height; - for (var i = 0; i < this.children.length; ++i) { - var child = this.children[i], sz = child.chunkSize(); - if (at <= sz) { - child.insertInner(at, lines, height); - if (child.lines && child.lines.length > 50) { - while (child.lines.length > 50) { - var spilled = child.lines.splice(child.lines.length - 25, 25); - var newleaf = new LeafChunk(spilled); - child.height -= newleaf.height; - this.children.splice(i + 1, 0, newleaf); - newleaf.parent = this; - } - this.maybeSpill(); - } - break; - } - at -= sz; - } - }, - // When a node has grown, check whether it should be split. - maybeSpill: function() { - if (this.children.length <= 10) return; - var me = this; - do { - var spilled = me.children.splice(me.children.length - 5, 5); - var sibling = new BranchChunk(spilled); - if (!me.parent) { // Become the parent node - var copy = new BranchChunk(me.children); - copy.parent = me; - me.children = [copy, sibling]; - me = copy; - } else { - me.size -= sibling.size; - me.height -= sibling.height; - var myIndex = indexOf(me.parent.children, me); - me.parent.children.splice(myIndex + 1, 0, sibling); - } - sibling.parent = me.parent; - } while (me.children.length > 10); - me.parent.maybeSpill(); - }, - iterN: function(at, n, op) { - for (var i = 0; i < this.children.length; ++i) { - var child = this.children[i], sz = child.chunkSize(); - if (at < sz) { - var used = Math.min(n, sz - at); - if (child.iterN(at, used, op)) return true; - if ((n -= used) == 0) break; - at = 0; - } else at -= sz; - } - } - }; - - var nextDocId = 0; - var Doc = CodeMirror.Doc = function(text, mode, firstLine) { - if (!(this instanceof Doc)) return new Doc(text, mode, firstLine); - if (firstLine == null) firstLine = 0; - - BranchChunk.call(this, [new LeafChunk([new Line("", null)])]); - this.first = firstLine; - this.scrollTop = this.scrollLeft = 0; - this.cantEdit = false; - this.cleanGeneration = 1; - this.frontier = firstLine; - var start = Pos(firstLine, 0); - this.sel = simpleSelection(start); - this.history = new History(null); - this.id = ++nextDocId; - this.modeOption = mode; - - if (typeof text == "string") text = splitLines(text); - updateDoc(this, {from: start, to: start, text: text}); - setSelection(this, simpleSelection(start), sel_dontScroll); - }; - - Doc.prototype = createObj(BranchChunk.prototype, { - constructor: Doc, - // Iterate over the document. Supports two forms -- with only one - // argument, it calls that for each line in the document. With - // three, it iterates over the range given by the first two (with - // the second being non-inclusive). - iter: function(from, to, op) { - if (op) this.iterN(from - this.first, to - from, op); - else this.iterN(this.first, this.first + this.size, from); - }, - - // Non-public interface for adding and removing lines. - insert: function(at, lines) { - var height = 0; - for (var i = 0; i < lines.length; ++i) height += lines[i].height; - this.insertInner(at - this.first, lines, height); - }, - remove: function(at, n) { this.removeInner(at - this.first, n); }, - - // From here, the methods are part of the public interface. Most - // are also available from CodeMirror (editor) instances. - - getValue: function(lineSep) { - var lines = getLines(this, this.first, this.first + this.size); - if (lineSep === false) return lines; - return lines.join(lineSep || "\n"); - }, - setValue: docMethodOp(function(code) { - var top = Pos(this.first, 0), last = this.first + this.size - 1; - makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), - text: splitLines(code), origin: "setValue"}, true); - setSelection(this, simpleSelection(top)); - }), - replaceRange: function(code, from, to, origin) { - from = clipPos(this, from); - to = to ? clipPos(this, to) : from; - replaceRange(this, code, from, to, origin); - }, - getRange: function(from, to, lineSep) { - var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); - if (lineSep === false) return lines; - return lines.join(lineSep || "\n"); - }, - - getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;}, - - getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);}, - getLineNumber: function(line) {return lineNo(line);}, - - getLineHandleVisualStart: function(line) { - if (typeof line == "number") line = getLine(this, line); - return visualLine(line); - }, - - lineCount: function() {return this.size;}, - firstLine: function() {return this.first;}, - lastLine: function() {return this.first + this.size - 1;}, - - clipPos: function(pos) {return clipPos(this, pos);}, - - getCursor: function(start) { - var range = this.sel.primary(), pos; - if (start == null || start == "head") pos = range.head; - else if (start == "anchor") pos = range.anchor; - else if (start == "end" || start == "to" || start === false) pos = range.to(); - else pos = range.from(); - return pos; - }, - listSelections: function() { return this.sel.ranges; }, - somethingSelected: function() {return this.sel.somethingSelected();}, - - setCursor: docMethodOp(function(line, ch, options) { - setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options); - }), - setSelection: docMethodOp(function(anchor, head, options) { - setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options); - }), - extendSelection: docMethodOp(function(head, other, options) { - extendSelection(this, clipPos(this, head), other && clipPos(this, other), options); - }), - extendSelections: docMethodOp(function(heads, options) { - extendSelections(this, clipPosArray(this, heads, options)); - }), - extendSelectionsBy: docMethodOp(function(f, options) { - extendSelections(this, map(this.sel.ranges, f), options); - }), - setSelections: docMethodOp(function(ranges, primary, options) { - if (!ranges.length) return; - for (var i = 0, out = []; i < ranges.length; i++) - out[i] = new Range(clipPos(this, ranges[i].anchor), - clipPos(this, ranges[i].head)); - if (primary == null) primary = ranges.length - 1; - setSelection(this, normalizeSelection(out, primary), options); - }), - addSelection: docMethodOp(function(anchor, head, options) { - var ranges = this.sel.ranges.slice(0); - ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))); - setSelection(this, normalizeSelection(ranges, ranges.length - 1), options); - }), - - getSelection: function(lineSep) { - var ranges = this.sel.ranges, lines; - for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this, ranges[i].from(), ranges[i].to()); - lines = lines ? lines.concat(sel) : sel; - } - if (lineSep === false) return lines; - else return lines.join(lineSep || "\n"); - }, - getSelections: function(lineSep) { - var parts = [], ranges = this.sel.ranges; - for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this, ranges[i].from(), ranges[i].to()); - if (lineSep !== false) sel = sel.join(lineSep || "\n"); - parts[i] = sel; - } - return parts; - }, - replaceSelection: docMethodOp(function(code, collapse, origin) { - var dup = []; - for (var i = 0; i < this.sel.ranges.length; i++) - dup[i] = code; - this.replaceSelections(dup, collapse, origin || "+input"); - }), - replaceSelections: function(code, collapse, origin) { - var changes = [], sel = this.sel; - for (var i = 0; i < sel.ranges.length; i++) { - var range = sel.ranges[i]; - changes[i] = {from: range.from(), to: range.to(), text: splitLines(code[i]), origin: origin}; - } - var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse); - for (var i = changes.length - 1; i >= 0; i--) - makeChange(this, changes[i]); - if (newSel) setSelectionReplaceHistory(this, newSel); - else if (this.cm) ensureCursorVisible(this.cm); - }, - undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}), - redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}), - undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}), - redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}), - - setExtending: function(val) {this.extend = val;}, - getExtending: function() {return this.extend;}, - - historySize: function() { - var hist = this.history, done = 0, undone = 0; - for (var i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done; - for (var i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone; - return {undo: done, redo: undone}; - }, - clearHistory: function() {this.history = new History(this.history.maxGeneration);}, - - markClean: function() { - this.cleanGeneration = this.changeGeneration(true); - }, - changeGeneration: function(forceSplit) { - if (forceSplit) - this.history.lastOp = this.history.lastOrigin = null; - return this.history.generation; - }, - isClean: function (gen) { - return this.history.generation == (gen || this.cleanGeneration); - }, - - getHistory: function() { - return {done: copyHistoryArray(this.history.done), - undone: copyHistoryArray(this.history.undone)}; - }, - setHistory: function(histData) { - var hist = this.history = new History(this.history.maxGeneration); - hist.done = copyHistoryArray(histData.done.slice(0), null, true); - hist.undone = copyHistoryArray(histData.undone.slice(0), null, true); - }, - - markText: function(from, to, options) { - return markText(this, clipPos(this, from), clipPos(this, to), options, "range"); - }, - setBookmark: function(pos, options) { - var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), - insertLeft: options && options.insertLeft, - clearWhenEmpty: false}; - pos = clipPos(this, pos); - return markText(this, pos, pos, realOpts, "bookmark"); - }, - findMarksAt: function(pos) { - pos = clipPos(this, pos); - var markers = [], spans = getLine(this, pos.line).markedSpans; - if (spans) for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if ((span.from == null || span.from <= pos.ch) && - (span.to == null || span.to >= pos.ch)) - markers.push(span.marker.parent || span.marker); - } - return markers; - }, - findMarks: function(from, to) { - from = clipPos(this, from); to = clipPos(this, to); - var found = [], lineNo = from.line; - this.iter(from.line, to.line + 1, function(line) { - var spans = line.markedSpans; - if (spans) for (var i = 0; i < spans.length; i++) { - var span = spans[i]; - if (!(lineNo == from.line && from.ch > span.to || - span.from == null && lineNo != from.line|| - lineNo == to.line && span.from > to.ch)) - found.push(span.marker.parent || span.marker); - } - ++lineNo; - }); - return found; - }, - getAllMarks: function() { - var markers = []; - this.iter(function(line) { - var sps = line.markedSpans; - if (sps) for (var i = 0; i < sps.length; ++i) - if (sps[i].from != null) markers.push(sps[i].marker); - }); - return markers; - }, - - posFromIndex: function(off) { - var ch, lineNo = this.first; - this.iter(function(line) { - var sz = line.text.length + 1; - if (sz > off) { ch = off; return true; } - off -= sz; - ++lineNo; - }); - return clipPos(this, Pos(lineNo, ch)); - }, - indexFromPos: function (coords) { - coords = clipPos(this, coords); - var index = coords.ch; - if (coords.line < this.first || coords.ch < 0) return 0; - this.iter(this.first, coords.line, function (line) { - index += line.text.length + 1; - }); - return index; - }, - - copy: function(copyHistory) { - var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first); - doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; - doc.sel = this.sel; - doc.extend = false; - if (copyHistory) { - doc.history.undoDepth = this.history.undoDepth; - doc.setHistory(this.getHistory()); - } - return doc; - }, - - linkedDoc: function(options) { - if (!options) options = {}; - var from = this.first, to = this.first + this.size; - if (options.from != null && options.from > from) from = options.from; - if (options.to != null && options.to < to) to = options.to; - var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from); - if (options.sharedHist) copy.history = this.history; - (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); - copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; - return copy; - }, - unlinkDoc: function(other) { - if (other instanceof CodeMirror) other = other.doc; - if (this.linked) for (var i = 0; i < this.linked.length; ++i) { - var link = this.linked[i]; - if (link.doc != other) continue; - this.linked.splice(i, 1); - other.unlinkDoc(this); - break; - } - // If the histories were shared, split them again - if (other.history == this.history) { - var splitIds = [other.id]; - linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true); - other.history = new History(null); - other.history.done = copyHistoryArray(this.history.done, splitIds); - other.history.undone = copyHistoryArray(this.history.undone, splitIds); - } - }, - iterLinkedDocs: function(f) {linkedDocs(this, f);}, - - getMode: function() {return this.mode;}, - getEditor: function() {return this.cm;} - }); - - // Public alias. - Doc.prototype.eachLine = Doc.prototype.iter; - - // Set up methods on CodeMirror's prototype to redirect to the editor's document. - var dontDelegate = "iter insert remove copy getEditor".split(" "); - for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) - CodeMirror.prototype[prop] = (function(method) { - return function() {return method.apply(this.doc, arguments);}; - })(Doc.prototype[prop]); - - eventMixin(Doc); - - // Call f for all linked documents. - function linkedDocs(doc, f, sharedHistOnly) { - function propagate(doc, skip, sharedHist) { - if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) { - var rel = doc.linked[i]; - if (rel.doc == skip) continue; - var shared = sharedHist && rel.sharedHist; - if (sharedHistOnly && !shared) continue; - f(rel.doc, shared); - propagate(rel.doc, doc, shared); - } - } - propagate(doc, null, true); - } - - // Attach a document to an editor. - function attachDoc(cm, doc) { - if (doc.cm) throw new Error("This document is already in use."); - cm.doc = doc; - doc.cm = cm; - estimateLineHeights(cm); - loadMode(cm); - if (!cm.options.lineWrapping) findMaxLine(cm); - cm.options.mode = doc.modeOption; - regChange(cm); - } - - // LINE UTILITIES - - // Find the line object corresponding to the given line number. - function getLine(doc, n) { - n -= doc.first; - if (n < 0 || n >= doc.size) throw new Error("There is no line " + (n + doc.first) + " in the document."); - for (var chunk = doc; !chunk.lines;) { - for (var i = 0;; ++i) { - var child = chunk.children[i], sz = child.chunkSize(); - if (n < sz) { chunk = child; break; } - n -= sz; - } - } - return chunk.lines[n]; - } - - // Get the part of a document between two positions, as an array of - // strings. - function getBetween(doc, start, end) { - var out = [], n = start.line; - doc.iter(start.line, end.line + 1, function(line) { - var text = line.text; - if (n == end.line) text = text.slice(0, end.ch); - if (n == start.line) text = text.slice(start.ch); - out.push(text); - ++n; - }); - return out; - } - // Get the lines between from and to, as array of strings. - function getLines(doc, from, to) { - var out = []; - doc.iter(from, to, function(line) { out.push(line.text); }); - return out; - } - - // Update the height of a line, propagating the height change - // upwards to parent nodes. - function updateLineHeight(line, height) { - var diff = height - line.height; - if (diff) for (var n = line; n; n = n.parent) n.height += diff; - } - - // Given a line object, find its line number by walking up through - // its parent links. - function lineNo(line) { - if (line.parent == null) return null; - var cur = line.parent, no = indexOf(cur.lines, line); - for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { - for (var i = 0;; ++i) { - if (chunk.children[i] == cur) break; - no += chunk.children[i].chunkSize(); - } - } - return no + cur.first; - } - - // Find the line at the given vertical position, using the height - // information in the document tree. - function lineAtHeight(chunk, h) { - var n = chunk.first; - outer: do { - for (var i = 0; i < chunk.children.length; ++i) { - var child = chunk.children[i], ch = child.height; - if (h < ch) { chunk = child; continue outer; } - h -= ch; - n += child.chunkSize(); - } - return n; - } while (!chunk.lines); - for (var i = 0; i < chunk.lines.length; ++i) { - var line = chunk.lines[i], lh = line.height; - if (h < lh) break; - h -= lh; - } - return n + i; - } - - - // Find the height above the given line. - function heightAtLine(lineObj) { - lineObj = visualLine(lineObj); - - var h = 0, chunk = lineObj.parent; - for (var i = 0; i < chunk.lines.length; ++i) { - var line = chunk.lines[i]; - if (line == lineObj) break; - else h += line.height; - } - for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { - for (var i = 0; i < p.children.length; ++i) { - var cur = p.children[i]; - if (cur == chunk) break; - else h += cur.height; - } - } - return h; - } - - // Get the bidi ordering for the given line (and cache it). Returns - // false for lines that are fully left-to-right, and an array of - // BidiSpan objects otherwise. - function getOrder(line) { - var order = line.order; - if (order == null) order = line.order = bidiOrdering(line.text); - return order; - } - - // HISTORY - - function History(startGen) { - // Arrays of change events and selections. Doing something adds an - // event to done and clears undo. Undoing moves events from done - // to undone, redoing moves them in the other direction. - this.done = []; this.undone = []; - this.undoDepth = Infinity; - // Used to track when changes can be merged into a single undo - // event - this.lastModTime = this.lastSelTime = 0; - this.lastOp = null; - this.lastOrigin = this.lastSelOrigin = null; - // Used by the isClean() method - this.generation = this.maxGeneration = startGen || 1; - } - - // Create a history change event from an updateDoc-style change - // object. - function historyChangeFromChange(doc, change) { - var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; - attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); - linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true); - return histChange; - } - - // Pop all selection events off the end of a history array. Stop at - // a change event. - function clearSelectionEvents(array) { - while (array.length) { - var last = lst(array); - if (last.ranges) array.pop(); - else break; - } - } - - // Find the top change event in the history. Pop off selection - // events that are in the way. - function lastChangeEvent(hist, force) { - if (force) { - clearSelectionEvents(hist.done); - return lst(hist.done); - } else if (hist.done.length && !lst(hist.done).ranges) { - return lst(hist.done); - } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { - hist.done.pop(); - return lst(hist.done); - } - } - - // Register a change in the history. Merges changes that are within - // a single operation, ore are close together with an origin that - // allows merging (starting with "+") into a single event. - function addChangeToHistory(doc, change, selAfter, opId) { - var hist = doc.history; - hist.undone.length = 0; - var time = +new Date, cur; - - if ((hist.lastOp == opId || - hist.lastOrigin == change.origin && change.origin && - ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) || - change.origin.charAt(0) == "*")) && - (cur = lastChangeEvent(hist, hist.lastOp == opId))) { - // Merge this change into the last event - var last = lst(cur.changes); - if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { - // Optimized case for simple insertion -- don't want to add - // new changesets for every character typed - last.to = changeEnd(change); - } else { - // Add new sub-event - cur.changes.push(historyChangeFromChange(doc, change)); - } - } else { - // Can not be merged, start a new event. - var before = lst(hist.done); - if (!before || !before.ranges) - pushSelectionToHistory(doc.sel, hist.done); - cur = {changes: [historyChangeFromChange(doc, change)], - generation: hist.generation}; - hist.done.push(cur); - while (hist.done.length > hist.undoDepth) { - hist.done.shift(); - if (!hist.done[0].ranges) hist.done.shift(); - } - } - hist.done.push(selAfter); - hist.generation = ++hist.maxGeneration; - hist.lastModTime = time; - hist.lastOp = opId; - hist.lastOrigin = hist.lastSelOrigin = change.origin; - - if (!last) signal(doc, "historyAdded"); - } - - function selectionEventCanBeMerged(doc, origin, prev, sel) { - var ch = origin.charAt(0); - return ch == "*" || - ch == "+" && - prev.ranges.length == sel.ranges.length && - prev.somethingSelected() == sel.somethingSelected() && - new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500); - } - - // Called whenever the selection changes, sets the new selection as - // the pending selection in the history, and pushes the old pending - // selection into the 'done' array when it was significantly - // different (in number of selected ranges, emptiness, or time). - function addSelectionToHistory(doc, sel, opId, options) { - var hist = doc.history, origin = options && options.origin; - - // A new event is started when the previous origin does not match - // the current, or the origins don't allow matching. Origins - // starting with * are always merged, those starting with + are - // merged when similar and close together in time. - if (opId == hist.lastOp || - (origin && hist.lastSelOrigin == origin && - selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) - hist.done[hist.done.length - 1] = sel; - else - pushSelectionToHistory(sel, hist.done); - - hist.lastSelTime = +new Date; - hist.lastSelOrigin = origin; - hist.lastOp = opId; - if (options && options.clearRedo !== false) - clearSelectionEvents(hist.undone); - } - - function pushSelectionToHistory(sel, dest) { - var top = lst(dest); - if (!(top && top.ranges && top.equals(sel))) - dest.push(sel); - } - - // Used to store marked span information in the history. - function attachLocalSpans(doc, change, from, to) { - var existing = change["spans_" + doc.id], n = 0; - doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) { - if (line.markedSpans) - (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; - ++n; - }); - } - - // When un/re-doing restores text containing marked spans, those - // that have been explicitly cleared should not be restored. - function removeClearedSpans(spans) { - if (!spans) return null; - for (var i = 0, out; i < spans.length; ++i) { - if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); } - else if (out) out.push(spans[i]); - } - return !out ? spans : out.length ? out : null; - } - - // Retrieve and filter the old marked spans stored in a change event. - function getOldSpans(doc, change) { - var found = change["spans_" + doc.id]; - if (!found) return null; - for (var i = 0, nw = []; i < change.text.length; ++i) - nw.push(removeClearedSpans(found[i])); - return nw; - } - - // Used both to provide a JSON-safe object in .getHistory, and, when - // detaching a document, to split the history in two - function copyHistoryArray(events, newGroup, instantiateSel) { - for (var i = 0, copy = []; i < events.length; ++i) { - var event = events[i]; - if (event.ranges) { - copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event); - continue; - } - var changes = event.changes, newChanges = []; - copy.push({changes: newChanges}); - for (var j = 0; j < changes.length; ++j) { - var change = changes[j], m; - newChanges.push({from: change.from, to: change.to, text: change.text}); - if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) { - if (indexOf(newGroup, Number(m[1])) > -1) { - lst(newChanges)[prop] = change[prop]; - delete change[prop]; - } - } - } - } - return copy; - } - - // Rebasing/resetting history to deal with externally-sourced changes - - function rebaseHistSelSingle(pos, from, to, diff) { - if (to < pos.line) { - pos.line += diff; - } else if (from < pos.line) { - pos.line = from; - pos.ch = 0; - } - } - - // Tries to rebase an array of history events given a change in the - // document. If the change touches the same lines as the event, the - // event, and everything 'behind' it, is discarded. If the change is - // before the event, the event's positions are updated. Uses a - // copy-on-write scheme for the positions, to avoid having to - // reallocate them all on every rebase, but also avoid problems with - // shared position objects being unsafely updated. - function rebaseHistArray(array, from, to, diff) { - for (var i = 0; i < array.length; ++i) { - var sub = array[i], ok = true; - if (sub.ranges) { - if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; } - for (var j = 0; j < sub.ranges.length; j++) { - rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff); - rebaseHistSelSingle(sub.ranges[j].head, from, to, diff); - } - continue; - } - for (var j = 0; j < sub.changes.length; ++j) { - var cur = sub.changes[j]; - if (to < cur.from.line) { - cur.from = Pos(cur.from.line + diff, cur.from.ch); - cur.to = Pos(cur.to.line + diff, cur.to.ch); - } else if (from <= cur.to.line) { - ok = false; - break; - } - } - if (!ok) { - array.splice(0, i + 1); - i = 0; - } - } - } - - function rebaseHist(hist, change) { - var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; - rebaseHistArray(hist.done, from, to, diff); - rebaseHistArray(hist.undone, from, to, diff); - } - - // EVENT UTILITIES - - // Due to the fact that we still support jurassic IE versions, some - // compatibility wrappers are needed. - - var e_preventDefault = CodeMirror.e_preventDefault = function(e) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - }; - var e_stopPropagation = CodeMirror.e_stopPropagation = function(e) { - if (e.stopPropagation) e.stopPropagation(); - else e.cancelBubble = true; - }; - function e_defaultPrevented(e) { - return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false; - } - var e_stop = CodeMirror.e_stop = function(e) {e_preventDefault(e); e_stopPropagation(e);}; - - function e_target(e) {return e.target || e.srcElement;} - function e_button(e) { - var b = e.which; - if (b == null) { - if (e.button & 1) b = 1; - else if (e.button & 2) b = 3; - else if (e.button & 4) b = 2; - } - if (mac && e.ctrlKey && b == 1) b = 3; - return b; - } - - // EVENT HANDLING - - // Lightweight event framework. on/off also work on DOM nodes, - // registering native DOM handlers. - - var on = CodeMirror.on = function(emitter, type, f) { - if (emitter.addEventListener) - emitter.addEventListener(type, f, false); - else if (emitter.attachEvent) - emitter.attachEvent("on" + type, f); - else { - var map = emitter._handlers || (emitter._handlers = {}); - var arr = map[type] || (map[type] = []); - arr.push(f); - } - }; - - var off = CodeMirror.off = function(emitter, type, f) { - if (emitter.removeEventListener) - emitter.removeEventListener(type, f, false); - else if (emitter.detachEvent) - emitter.detachEvent("on" + type, f); - else { - var arr = emitter._handlers && emitter._handlers[type]; - if (!arr) return; - for (var i = 0; i < arr.length; ++i) - if (arr[i] == f) { arr.splice(i, 1); break; } - } - }; - - var signal = CodeMirror.signal = function(emitter, type /*, values...*/) { - var arr = emitter._handlers && emitter._handlers[type]; - if (!arr) return; - var args = Array.prototype.slice.call(arguments, 2); - for (var i = 0; i < arr.length; ++i) arr[i].apply(null, args); - }; - - // Often, we want to signal events at a point where we are in the - // middle of some work, but don't want the handler to start calling - // other methods on the editor, which might be in an inconsistent - // state or simply not expect any other events to happen. - // signalLater looks whether there are any handlers, and schedules - // them to be executed when the last operation ends, or, if no - // operation is active, when a timeout fires. - var delayedCallbacks, delayedCallbackDepth = 0; - function signalLater(emitter, type /*, values...*/) { - var arr = emitter._handlers && emitter._handlers[type]; - if (!arr) return; - var args = Array.prototype.slice.call(arguments, 2); - if (!delayedCallbacks) { - ++delayedCallbackDepth; - delayedCallbacks = []; - setTimeout(fireDelayed, 0); - } - function bnd(f) {return function(){f.apply(null, args);};}; - for (var i = 0; i < arr.length; ++i) - delayedCallbacks.push(bnd(arr[i])); - } - - function fireDelayed() { - --delayedCallbackDepth; - var delayed = delayedCallbacks; - delayedCallbacks = null; - for (var i = 0; i < delayed.length; ++i) delayed[i](); - } - - // The DOM events that CodeMirror handles can be overridden by - // registering a (non-DOM) handler on the editor for the event name, - // and preventDefault-ing the event in that handler. - function signalDOMEvent(cm, e, override) { - signal(cm, override || e.type, cm, e); - return e_defaultPrevented(e) || e.codemirrorIgnore; - } - - function hasHandler(emitter, type) { - var arr = emitter._handlers && emitter._handlers[type]; - return arr && arr.length > 0; - } - - // Add on and off methods to a constructor's prototype, to make - // registering events on such objects more convenient. - function eventMixin(ctor) { - ctor.prototype.on = function(type, f) {on(this, type, f);}; - ctor.prototype.off = function(type, f) {off(this, type, f);}; - } - - // MISC UTILITIES - - // Number of pixels added to scroller and sizer to hide scrollbar - var scrollerCutOff = 30; - - // Returned or thrown by various protocols to signal 'I'm not - // handling this'. - var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; - - // Reused option objects for setSelection & friends - var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"}; - - function Delayed() {this.id = null;} - Delayed.prototype.set = function(ms, f) { - clearTimeout(this.id); - this.id = setTimeout(f, ms); - }; - - // Counts the column offset in a string, taking tabs into account. - // Used mostly to find indentation. - var countColumn = CodeMirror.countColumn = function(string, end, tabSize, startIndex, startValue) { - if (end == null) { - end = string.search(/[^\s\u00a0]/); - if (end == -1) end = string.length; - } - for (var i = startIndex || 0, n = startValue || 0;;) { - var nextTab = string.indexOf("\t", i); - if (nextTab < 0 || nextTab >= end) - return n + (end - i); - n += nextTab - i; - n += tabSize - (n % tabSize); - i = nextTab + 1; - } - }; - - // The inverse of countColumn -- find the offset that corresponds to - // a particular column. - function findColumn(string, goal, tabSize) { - for (var pos = 0, col = 0;;) { - var nextTab = string.indexOf("\t", pos); - if (nextTab == -1) nextTab = string.length; - var skipped = nextTab - pos; - if (nextTab == string.length || col + skipped >= goal) - return pos + Math.min(skipped, goal - col); - col += nextTab - pos; - col += tabSize - (col % tabSize); - pos = nextTab + 1; - if (col >= goal) return pos; - } - } - - var spaceStrs = [""]; - function spaceStr(n) { - while (spaceStrs.length <= n) - spaceStrs.push(lst(spaceStrs) + " "); - return spaceStrs[n]; - } - - function lst(arr) { return arr[arr.length-1]; } - - var selectInput = function(node) { node.select(); }; - if (ios) // Mobile Safari apparently has a bug where select() is broken. - selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; - else if (ie) // Suppress mysterious IE10 errors - selectInput = function(node) { try { node.select(); } catch(_e) {} }; - - function indexOf(array, elt) { - for (var i = 0; i < array.length; ++i) - if (array[i] == elt) return i; - return -1; - } - if ([].indexOf) indexOf = function(array, elt) { return array.indexOf(elt); }; - function map(array, f) { - var out = []; - for (var i = 0; i < array.length; i++) out[i] = f(array[i], i); - return out; - } - if ([].map) map = function(array, f) { return array.map(f); }; - - function createObj(base, props) { - var inst; - if (Object.create) { - inst = Object.create(base); - } else { - var ctor = function() {}; - ctor.prototype = base; - inst = new ctor(); - } - if (props) copyObj(props, inst); - return inst; - }; - - function copyObj(obj, target) { - if (!target) target = {}; - for (var prop in obj) if (obj.hasOwnProperty(prop)) target[prop] = obj[prop]; - return target; - } - - function bind(f) { - var args = Array.prototype.slice.call(arguments, 1); - return function(){return f.apply(null, args);}; - } - - var nonASCIISingleCaseWordChar = /[\u00df\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; - var isWordChar = CodeMirror.isWordChar = function(ch) { - return /\w/.test(ch) || ch > "\x80" && - (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)); - }; - - function isEmpty(obj) { - for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false; - return true; - } - - // Extending unicode characters. A series of a non-extending char + - // any number of extending chars is treated as a single unit as far - // as editing and measuring is concerned. This is not fully correct, - // since some scripts/fonts/browsers also treat other configurations - // of code points as a group. - var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; - function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); } - - // DOM UTILITIES - - function elt(tag, content, className, style) { - var e = document.createElement(tag); - if (className) e.className = className; - if (style) e.style.cssText = style; - if (typeof content == "string") e.appendChild(document.createTextNode(content)); - else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]); - return e; - } - - var range; - if (document.createRange) range = function(node, start, end) { - var r = document.createRange(); - r.setEnd(node, end); - r.setStart(node, start); - return r; - }; - else range = function(node, start, end) { - var r = document.body.createTextRange(); - r.moveToElementText(node.parentNode); - r.collapse(true); - r.moveEnd("character", end); - r.moveStart("character", start); - return r; - }; - - function removeChildren(e) { - for (var count = e.childNodes.length; count > 0; --count) - e.removeChild(e.firstChild); - return e; - } - - function removeChildrenAndAdd(parent, e) { - return removeChildren(parent).appendChild(e); - } - - function activeElt() { return document.activeElement; } - // Older versions of IE throws unspecified error when touching - // document.activeElement in some cases (during loading, in iframe) - if (ie_upto10) activeElt = function() { - try { return document.activeElement; } - catch(e) { return document.body; } - }; - - // FEATURE DETECTION - - // Detect drag-and-drop - var dragAndDrop = function() { - // There is *some* kind of drag-and-drop support in IE6-8, but I - // couldn't get it to work yet. - if (ie_upto8) return false; - var div = elt('div'); - return "draggable" in div || "dragDrop" in div; - }(); - - var knownScrollbarWidth; - function scrollbarWidth(measure) { - if (knownScrollbarWidth != null) return knownScrollbarWidth; - var test = elt("div", null, null, "width: 50px; height: 50px; overflow-x: scroll"); - removeChildrenAndAdd(measure, test); - if (test.offsetWidth) - knownScrollbarWidth = test.offsetHeight - test.clientHeight; - return knownScrollbarWidth || 0; - } - - var zwspSupported; - function zeroWidthElement(measure) { - if (zwspSupported == null) { - var test = elt("span", "\u200b"); - removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); - if (measure.firstChild.offsetHeight != 0) - zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !ie_upto7; - } - if (zwspSupported) return elt("span", "\u200b"); - else return elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); - } - - // Feature-detect IE's crummy client rect reporting for bidi text - var badBidiRects; - function hasBadBidiRects(measure) { - if (badBidiRects != null) return badBidiRects; - var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); - var r0 = range(txt, 0, 1).getBoundingClientRect(); - if (r0.left == r0.right) return false; - var r1 = range(txt, 1, 2).getBoundingClientRect(); - return badBidiRects = (r1.right - r0.right < 3); - } - - // See if "".split is the broken IE version, if so, provide an - // alternative way to split lines. - var splitLines = CodeMirror.splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) { - var pos = 0, result = [], l = string.length; - while (pos <= l) { - var nl = string.indexOf("\n", pos); - if (nl == -1) nl = string.length; - var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); - var rt = line.indexOf("\r"); - if (rt != -1) { - result.push(line.slice(0, rt)); - pos += rt + 1; - } else { - result.push(line); - pos = nl + 1; - } - } - return result; - } : function(string){return string.split(/\r\n?|\n/);}; - - var hasSelection = window.getSelection ? function(te) { - try { return te.selectionStart != te.selectionEnd; } - catch(e) { return false; } - } : function(te) { - try {var range = te.ownerDocument.selection.createRange();} - catch(e) {} - if (!range || range.parentElement() != te) return false; - return range.compareEndPoints("StartToEnd", range) != 0; - }; - - var hasCopyEvent = (function() { - var e = elt("div"); - if ("oncopy" in e) return true; - e.setAttribute("oncopy", "return;"); - return typeof e.oncopy == "function"; - })(); - - // KEY NAMES - - var keyNames = {3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", - 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", - 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", - 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", 107: "=", 109: "-", 127: "Delete", - 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", - 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", - 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert"}; - CodeMirror.keyNames = keyNames; - (function() { - // Number keys - for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i); - // Alphabetic keys - for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i); - // Function keys - for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i; - })(); - - // BIDI HELPERS - - function iterateBidiSections(order, from, to, f) { - if (!order) return f(from, to, "ltr"); - var found = false; - for (var i = 0; i < order.length; ++i) { - var part = order[i]; - if (part.from < to && part.to > from || from == to && part.to == from) { - f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr"); - found = true; - } - } - if (!found) f(from, to, "ltr"); - } - - function bidiLeft(part) { return part.level % 2 ? part.to : part.from; } - function bidiRight(part) { return part.level % 2 ? part.from : part.to; } - - function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; } - function lineRight(line) { - var order = getOrder(line); - if (!order) return line.text.length; - return bidiRight(lst(order)); - } - - function lineStart(cm, lineN) { - var line = getLine(cm.doc, lineN); - var visual = visualLine(line); - if (visual != line) lineN = lineNo(visual); - var order = getOrder(visual); - var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual); - return Pos(lineN, ch); - } - function lineEnd(cm, lineN) { - var merged, line = getLine(cm.doc, lineN); - while (merged = collapsedSpanAtEnd(line)) { - line = merged.find(1, true).line; - lineN = null; - } - var order = getOrder(line); - var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line); - return Pos(lineN == null ? lineNo(line) : lineN, ch); - } - - function compareBidiLevel(order, a, b) { - var linedir = order[0].level; - if (a == linedir) return true; - if (b == linedir) return false; - return a < b; - } - var bidiOther; - function getBidiPartAt(order, pos) { - bidiOther = null; - for (var i = 0, found; i < order.length; ++i) { - var cur = order[i]; - if (cur.from < pos && cur.to > pos) return i; - if ((cur.from == pos || cur.to == pos)) { - if (found == null) { - found = i; - } else if (compareBidiLevel(order, cur.level, order[found].level)) { - if (cur.from != cur.to) bidiOther = found; - return i; - } else { - if (cur.from != cur.to) bidiOther = i; - return found; - } - } - } - return found; - } - - function moveInLine(line, pos, dir, byUnit) { - if (!byUnit) return pos + dir; - do pos += dir; - while (pos > 0 && isExtendingChar(line.text.charAt(pos))); - return pos; - } - - // This is needed in order to move 'visually' through bi-directional - // text -- i.e., pressing left should make the cursor go left, even - // when in RTL text. The tricky part is the 'jumps', where RTL and - // LTR text touch each other. This often requires the cursor offset - // to move more than one unit, in order to visually move one unit. - function moveVisually(line, start, dir, byUnit) { - var bidi = getOrder(line); - if (!bidi) return moveLogically(line, start, dir, byUnit); - var pos = getBidiPartAt(bidi, start), part = bidi[pos]; - var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit); - - for (;;) { - if (target > part.from && target < part.to) return target; - if (target == part.from || target == part.to) { - if (getBidiPartAt(bidi, target) == pos) return target; - part = bidi[pos += dir]; - return (dir > 0) == part.level % 2 ? part.to : part.from; - } else { - part = bidi[pos += dir]; - if (!part) return null; - if ((dir > 0) == part.level % 2) - target = moveInLine(line, part.to, -1, byUnit); - else - target = moveInLine(line, part.from, 1, byUnit); - } - } - } - - function moveLogically(line, start, dir, byUnit) { - var target = start + dir; - if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir; - return target < 0 || target > line.text.length ? null : target; - } - - // Bidirectional ordering algorithm - // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm - // that this (partially) implements. - - // One-char codes used for character types: - // L (L): Left-to-Right - // R (R): Right-to-Left - // r (AL): Right-to-Left Arabic - // 1 (EN): European Number - // + (ES): European Number Separator - // % (ET): European Number Terminator - // n (AN): Arabic Number - // , (CS): Common Number Separator - // m (NSM): Non-Spacing Mark - // b (BN): Boundary Neutral - // s (B): Paragraph Separator - // t (S): Segment Separator - // w (WS): Whitespace - // N (ON): Other Neutrals - - // Returns null if characters are ordered as they appear - // (left-to-right), or an array of sections ({from, to, level} - // objects) in the order in which they occur visually. - var bidiOrdering = (function() { - // Character types for codepoints 0 to 0xff - var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"; - // Character types for codepoints 0x600 to 0x6ff - var arabicTypes = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm"; - function charType(code) { - if (code <= 0xf7) return lowTypes.charAt(code); - else if (0x590 <= code && code <= 0x5f4) return "R"; - else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600); - else if (0x6ee <= code && code <= 0x8ac) return "r"; - else if (0x2000 <= code && code <= 0x200b) return "w"; - else if (code == 0x200c) return "b"; - else return "L"; - } - - var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; - var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; - // Browsers seem to always treat the boundaries of block elements as being L. - var outerType = "L"; - - function BidiSpan(level, from, to) { - this.level = level; - this.from = from; this.to = to; - } - - return function(str) { - if (!bidiRE.test(str)) return false; - var len = str.length, types = []; - for (var i = 0, type; i < len; ++i) - types.push(type = charType(str.charCodeAt(i))); - - // W1. Examine each non-spacing mark (NSM) in the level run, and - // change the type of the NSM to the type of the previous - // character. If the NSM is at the start of the level run, it will - // get the type of sor. - for (var i = 0, prev = outerType; i < len; ++i) { - var type = types[i]; - if (type == "m") types[i] = prev; - else prev = type; - } - - // W2. Search backwards from each instance of a European number - // until the first strong type (R, L, AL, or sor) is found. If an - // AL is found, change the type of the European number to Arabic - // number. - // W3. Change all ALs to R. - for (var i = 0, cur = outerType; i < len; ++i) { - var type = types[i]; - if (type == "1" && cur == "r") types[i] = "n"; - else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R"; } - } - - // W4. A single European separator between two European numbers - // changes to a European number. A single common separator between - // two numbers of the same type changes to that type. - for (var i = 1, prev = types[0]; i < len - 1; ++i) { - var type = types[i]; - if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1"; - else if (type == "," && prev == types[i+1] && - (prev == "1" || prev == "n")) types[i] = prev; - prev = type; - } - - // W5. A sequence of European terminators adjacent to European - // numbers changes to all European numbers. - // W6. Otherwise, separators and terminators change to Other - // Neutral. - for (var i = 0; i < len; ++i) { - var type = types[i]; - if (type == ",") types[i] = "N"; - else if (type == "%") { - for (var end = i + 1; end < len && types[end] == "%"; ++end) {} - var replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"; - for (var j = i; j < end; ++j) types[j] = replace; - i = end - 1; - } - } - - // W7. Search backwards from each instance of a European number - // until the first strong type (R, L, or sor) is found. If an L is - // found, then change the type of the European number to L. - for (var i = 0, cur = outerType; i < len; ++i) { - var type = types[i]; - if (cur == "L" && type == "1") types[i] = "L"; - else if (isStrong.test(type)) cur = type; - } - - // N1. A sequence of neutrals takes the direction of the - // surrounding strong text if the text on both sides has the same - // direction. European and Arabic numbers act as if they were R in - // terms of their influence on neutrals. Start-of-level-run (sor) - // and end-of-level-run (eor) are used at level run boundaries. - // N2. Any remaining neutrals take the embedding direction. - for (var i = 0; i < len; ++i) { - if (isNeutral.test(types[i])) { - for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {} - var before = (i ? types[i-1] : outerType) == "L"; - var after = (end < len ? types[end] : outerType) == "L"; - var replace = before || after ? "L" : "R"; - for (var j = i; j < end; ++j) types[j] = replace; - i = end - 1; - } - } - - // Here we depart from the documented algorithm, in order to avoid - // building up an actual levels array. Since there are only three - // levels (0, 1, 2) in an implementation that doesn't take - // explicit embedding into account, we can build up the order on - // the fly, without following the level-based algorithm. - var order = [], m; - for (var i = 0; i < len;) { - if (countsAsLeft.test(types[i])) { - var start = i; - for (++i; i < len && countsAsLeft.test(types[i]); ++i) {} - order.push(new BidiSpan(0, start, i)); - } else { - var pos = i, at = order.length; - for (++i; i < len && types[i] != "L"; ++i) {} - for (var j = pos; j < i;) { - if (countsAsNum.test(types[j])) { - if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j)); - var nstart = j; - for (++j; j < i && countsAsNum.test(types[j]); ++j) {} - order.splice(at, 0, new BidiSpan(2, nstart, j)); - pos = j; - } else ++j; - } - if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i)); - } - } - if (order[0].level == 1 && (m = str.match(/^\s+/))) { - order[0].from = m[0].length; - order.unshift(new BidiSpan(0, 0, m[0].length)); - } - if (lst(order).level == 1 && (m = str.match(/\s+$/))) { - lst(order).to -= m[0].length; - order.push(new BidiSpan(0, len - m[0].length, len)); - } - if (order[0].level != lst(order).level) - order.push(new BidiSpan(order[0].level, len, len)); - - return order; - }; - })(); - - // THE END - - CodeMirror.version = "4.0.1"; - - return CodeMirror; -}); diff --git a/vendor/codemirror/mode/apl/apl.js b/vendor/codemirror/mode/apl/apl.js deleted file mode 100644 index 2ba74c18..00000000 --- a/vendor/codemirror/mode/apl/apl.js +++ /dev/null @@ -1,172 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("apl", function() { - var builtInOps = { - ".": "innerProduct", - "\\": "scan", - "/": "reduce", - "⌿": "reduce1Axis", - "⍀": "scan1Axis", - "¨": "each", - "⍣": "power" - }; - var builtInFuncs = { - "+": ["conjugate", "add"], - "−": ["negate", "subtract"], - "×": ["signOf", "multiply"], - "÷": ["reciprocal", "divide"], - "⌈": ["ceiling", "greaterOf"], - "⌊": ["floor", "lesserOf"], - "∣": ["absolute", "residue"], - "⍳": ["indexGenerate", "indexOf"], - "?": ["roll", "deal"], - "⋆": ["exponentiate", "toThePowerOf"], - "⍟": ["naturalLog", "logToTheBase"], - "○": ["piTimes", "circularFuncs"], - "!": ["factorial", "binomial"], - "⌹": ["matrixInverse", "matrixDivide"], - "<": [null, "lessThan"], - "≤": [null, "lessThanOrEqual"], - "=": [null, "equals"], - ">": [null, "greaterThan"], - "≥": [null, "greaterThanOrEqual"], - "≠": [null, "notEqual"], - "≡": ["depth", "match"], - "≢": [null, "notMatch"], - "∈": ["enlist", "membership"], - "⍷": [null, "find"], - "∪": ["unique", "union"], - "∩": [null, "intersection"], - "∼": ["not", "without"], - "∨": [null, "or"], - "∧": [null, "and"], - "⍱": [null, "nor"], - "⍲": [null, "nand"], - "⍴": ["shapeOf", "reshape"], - ",": ["ravel", "catenate"], - "⍪": [null, "firstAxisCatenate"], - "⌽": ["reverse", "rotate"], - "⊖": ["axis1Reverse", "axis1Rotate"], - "⍉": ["transpose", null], - "↑": ["first", "take"], - "↓": [null, "drop"], - "⊂": ["enclose", "partitionWithAxis"], - "⊃": ["diclose", "pick"], - "⌷": [null, "index"], - "⍋": ["gradeUp", null], - "⍒": ["gradeDown", null], - "⊤": ["encode", null], - "⊥": ["decode", null], - "⍕": ["format", "formatByExample"], - "⍎": ["execute", null], - "⊣": ["stop", "left"], - "⊢": ["pass", "right"] - }; - - var isOperator = /[\.\/⌿⍀¨⍣]/; - var isNiladic = /⍬/; - var isFunction = /[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/; - var isArrow = /←/; - var isComment = /[⍝#].*$/; - - var stringEater = function(type) { - var prev; - prev = false; - return function(c) { - prev = c; - if (c === type) { - return prev === "\\"; - } - return true; - }; - }; - return { - startState: function() { - return { - prev: false, - func: false, - op: false, - string: false, - escape: false - }; - }, - token: function(stream, state) { - var ch, funcName, word; - if (stream.eatSpace()) { - return null; - } - ch = stream.next(); - if (ch === '"' || ch === "'") { - stream.eatWhile(stringEater(ch)); - stream.next(); - state.prev = true; - return "string"; - } - if (/[\[{\(]/.test(ch)) { - state.prev = false; - return null; - } - if (/[\]}\)]/.test(ch)) { - state.prev = true; - return null; - } - if (isNiladic.test(ch)) { - state.prev = false; - return "niladic"; - } - if (/[¯\d]/.test(ch)) { - if (state.func) { - state.func = false; - state.prev = false; - } else { - state.prev = true; - } - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (isOperator.test(ch)) { - return "operator apl-" + builtInOps[ch]; - } - if (isArrow.test(ch)) { - return "apl-arrow"; - } - if (isFunction.test(ch)) { - funcName = "apl-"; - if (builtInFuncs[ch] != null) { - if (state.prev) { - funcName += builtInFuncs[ch][1]; - } else { - funcName += builtInFuncs[ch][0]; - } - } - state.func = true; - state.prev = false; - return "function " + funcName; - } - if (isComment.test(ch)) { - stream.skipToEnd(); - return "comment"; - } - if (ch === "∘" && stream.peek() === ".") { - stream.next(); - return "function jot-dot"; - } - stream.eatWhile(/[\w\$_]/); - word = stream.current(); - state.prev = true; - return "keyword"; - } - }; -}); - -CodeMirror.defineMIME("text/apl", "apl"); - -}); diff --git a/vendor/codemirror/mode/asterisk/asterisk.js b/vendor/codemirror/mode/asterisk/asterisk.js deleted file mode 100644 index c56fc0b3..00000000 --- a/vendor/codemirror/mode/asterisk/asterisk.js +++ /dev/null @@ -1,195 +0,0 @@ -/* - * ===================================================================================== - * - * Filename: mode/asterisk/asterisk.js - * - * Description: CodeMirror mode for Asterisk dialplan - * - * Created: 05/17/2012 09:20:25 PM - * Revision: none - * - * Author: Stas Kobzar (stas@modulis.ca), - * Company: Modulis.ca Inc. - * - * ===================================================================================== - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("asterisk", function() { - var atoms = ["exten", "same", "include","ignorepat","switch"], - dpcmd = ["#include","#exec"], - apps = [ - "addqueuemember","adsiprog","aelsub","agentlogin","agentmonitoroutgoing","agi", - "alarmreceiver","amd","answer","authenticate","background","backgrounddetect", - "bridge","busy","callcompletioncancel","callcompletionrequest","celgenuserevent", - "changemonitor","chanisavail","channelredirect","chanspy","clearhash","confbridge", - "congestion","continuewhile","controlplayback","dahdiacceptr2call","dahdibarge", - "dahdiras","dahdiscan","dahdisendcallreroutingfacility","dahdisendkeypadfacility", - "datetime","dbdel","dbdeltree","deadagi","dial","dictate","directory","disa", - "dumpchan","eagi","echo","endwhile","exec","execif","execiftime","exitwhile","extenspy", - "externalivr","festival","flash","followme","forkcdr","getcpeid","gosub","gosubif", - "goto","gotoif","gotoiftime","hangup","iax2provision","ices","importvar","incomplete", - "ivrdemo","jabberjoin","jabberleave","jabbersend","jabbersendgroup","jabberstatus", - "jack","log","macro","macroexclusive","macroexit","macroif","mailboxexists","meetme", - "meetmeadmin","meetmechanneladmin","meetmecount","milliwatt","minivmaccmess","minivmdelete", - "minivmgreet","minivmmwi","minivmnotify","minivmrecord","mixmonitor","monitor","morsecode", - "mp3player","mset","musiconhold","nbscat","nocdr","noop","odbc","odbc","odbcfinish", - "originate","ospauth","ospfinish","osplookup","ospnext","page","park","parkandannounce", - "parkedcall","pausemonitor","pausequeuemember","pickup","pickupchan","playback","playtones", - "privacymanager","proceeding","progress","queue","queuelog","raiseexception","read","readexten", - "readfile","receivefax","receivefax","receivefax","record","removequeuemember", - "resetcdr","retrydial","return","ringing","sayalpha","saycountedadj","saycountednoun", - "saycountpl","saydigits","saynumber","sayphonetic","sayunixtime","senddtmf","sendfax", - "sendfax","sendfax","sendimage","sendtext","sendurl","set","setamaflags", - "setcallerpres","setmusiconhold","sipaddheader","sipdtmfmode","sipremoveheader","skel", - "slastation","slatrunk","sms","softhangup","speechactivategrammar","speechbackground", - "speechcreate","speechdeactivategrammar","speechdestroy","speechloadgrammar","speechprocessingsound", - "speechstart","speechunloadgrammar","stackpop","startmusiconhold","stopmixmonitor","stopmonitor", - "stopmusiconhold","stopplaytones","system","testclient","testserver","transfer","tryexec", - "trysystem","unpausemonitor","unpausequeuemember","userevent","verbose","vmauthenticate", - "vmsayname","voicemail","voicemailmain","wait","waitexten","waitfornoise","waitforring", - "waitforsilence","waitmusiconhold","waituntil","while","zapateller" - ]; - - function basicToken(stream,state){ - var cur = ''; - var ch = ''; - ch = stream.next(); - // comment - if(ch == ";") { - stream.skipToEnd(); - return "comment"; - } - // context - if(ch == '[') { - stream.skipTo(']'); - stream.eat(']'); - return "header"; - } - // string - if(ch == '"') { - stream.skipTo('"'); - return "string"; - } - if(ch == "'") { - stream.skipTo("'"); - return "string-2"; - } - // dialplan commands - if(ch == '#') { - stream.eatWhile(/\w/); - cur = stream.current(); - if(dpcmd.indexOf(cur) !== -1) { - stream.skipToEnd(); - return "strong"; - } - } - // application args - if(ch == '$'){ - var ch1 = stream.peek(); - if(ch1 == '{'){ - stream.skipTo('}'); - stream.eat('}'); - return "variable-3"; - } - } - // extension - stream.eatWhile(/\w/); - cur = stream.current(); - if(atoms.indexOf(cur) !== -1) { - state.extenStart = true; - switch(cur) { - case 'same': state.extenSame = true; break; - case 'include': - case 'switch': - case 'ignorepat': - state.extenInclude = true;break; - default:break; - } - return "atom"; - } - } - - return { - startState: function() { - return { - extenStart: false, - extenSame: false, - extenInclude: false, - extenExten: false, - extenPriority: false, - extenApplication: false - }; - }, - token: function(stream, state) { - - var cur = ''; - var ch = ''; - if(stream.eatSpace()) return null; - // extension started - if(state.extenStart){ - stream.eatWhile(/[^\s]/); - cur = stream.current(); - if(/^=>?$/.test(cur)){ - state.extenExten = true; - state.extenStart = false; - return "strong"; - } else { - state.extenStart = false; - stream.skipToEnd(); - return "error"; - } - } else if(state.extenExten) { - // set exten and priority - state.extenExten = false; - state.extenPriority = true; - stream.eatWhile(/[^,]/); - if(state.extenInclude) { - stream.skipToEnd(); - state.extenPriority = false; - state.extenInclude = false; - } - if(state.extenSame) { - state.extenPriority = false; - state.extenSame = false; - state.extenApplication = true; - } - return "tag"; - } else if(state.extenPriority) { - state.extenPriority = false; - state.extenApplication = true; - ch = stream.next(); // get comma - if(state.extenSame) return null; - stream.eatWhile(/[^,]/); - return "number"; - } else if(state.extenApplication) { - stream.eatWhile(/,/); - cur = stream.current(); - if(cur === ',') return null; - stream.eatWhile(/\w/); - cur = stream.current().toLowerCase(); - state.extenApplication = false; - if(apps.indexOf(cur) !== -1){ - return "def strong"; - } - } else{ - return basicToken(stream,state); - } - - return null; - } - }; -}); - -CodeMirror.defineMIME("text/x-asterisk", "asterisk"); - -}); diff --git a/vendor/codemirror/mode/clike/clike.js b/vendor/codemirror/mode/clike/clike.js deleted file mode 100644 index 0e610208..00000000 --- a/vendor/codemirror/mode/clike/clike.js +++ /dev/null @@ -1,437 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("clike", function(config, parserConfig) { - var indentUnit = config.indentUnit, - statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, - dontAlignCalls = parserConfig.dontAlignCalls, - keywords = parserConfig.keywords || {}, - builtin = parserConfig.builtin || {}, - blockKeywords = parserConfig.blockKeywords || {}, - atoms = parserConfig.atoms || {}, - hooks = parserConfig.hooks || {}, - multiLineStrings = parserConfig.multiLineStrings; - var isOperatorChar = /[+\-*&%=<>!?|\/]/; - - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "keyword"; - } - if (builtin.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "builtin"; - } - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = null; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - var indent = state.indented; - if (state.context && state.context.type == "statement") - indent = state.context.indented; - return state.context = new Context(indent, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement") popContext(state); - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement")) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; - var closing = firstChar == ctx.type; - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); - else if (ctx.align && (!dontAlignCalls || ctx.type != ")")) return ctx.column + (closing ? 0 : 1); - else if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit; - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}", - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//", - fold: "brace" - }; -}); - -(function() { - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var cKeywords = "auto if break int case long char register continue return default short do sizeof " + - "double static else struct entry switch extern typedef float union for unsigned " + - "goto while enum void const signed volatile"; - - function cppHook(stream, state) { - if (!state.startOfLine) return false; - for (;;) { - if (stream.skipTo("\\")) { - stream.next(); - if (stream.eol()) { - state.tokenize = cppHook; - break; - } - } else { - stream.skipToEnd(); - state.tokenize = null; - break; - } - } - return "meta"; - } - - function cpp11StringHook(stream, state) { - stream.backUp(1); - // Raw strings. - if (stream.match(/(R|u8R|uR|UR|LR)/)) { - var match = stream.match(/"(.{0,16})\(/); - if (!match) { - return false; - } - state.cpp11RawStringDelim = match[1]; - state.tokenize = tokenRawString; - return tokenRawString(stream, state); - } - // Unicode strings/chars. - if (stream.match(/(u8|u|U|L)/)) { - if (stream.match(/["']/, /* eat */ false)) { - return "string"; - } - return false; - } - // Ignore this hook. - stream.next(); - return false; - } - - // C#-style strings where "" escapes a quote. - function tokenAtString(stream, state) { - var next; - while ((next = stream.next()) != null) { - if (next == '"' && !stream.eat('"')) { - state.tokenize = null; - break; - } - } - return "string"; - } - - // C++11 raw string literal is "( anything )", where - // can be a string up to 16 characters long. - function tokenRawString(stream, state) { - var closingSequence = new RegExp(".*?\\)" + state.cpp11RawStringDelim + '"'); - var match = stream.match(closingSequence); - if (match) { - state.tokenize = null; - } else { - stream.skipToEnd(); - } - return "string"; - } - - function def(mimes, mode) { - var words = []; - function add(obj) { - if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop)) - words.push(prop); - } - add(mode.keywords); - add(mode.builtin); - add(mode.atoms); - if (words.length) { - mode.helperType = mimes[0]; - CodeMirror.registerHelper("hintWords", mimes[0], words); - } - - for (var i = 0; i < mimes.length; ++i) - CodeMirror.defineMIME(mimes[i], mode); - } - - def(["text/x-csrc", "text/x-c", "text/x-chdr"], { - name: "clike", - keywords: words(cKeywords), - blockKeywords: words("case do else for if switch while struct"), - atoms: words("null"), - hooks: {"#": cppHook}, - modeProps: {fold: ["brace", "include"]} - }); - - def(["text/x-c++src", "text/x-c++hdr"], { - name: "clike", - keywords: words(cKeywords + " asm dynamic_cast namespace reinterpret_cast try bool explicit new " + - "static_cast typeid catch operator template typename class friend private " + - "this using const_cast inline public throw virtual delete mutable protected " + - "wchar_t alignas alignof constexpr decltype nullptr noexcept thread_local final " + - "static_assert override"), - blockKeywords: words("catch class do else finally for if struct switch try while"), - atoms: words("true false null"), - hooks: { - "#": cppHook, - "u": cpp11StringHook, - "U": cpp11StringHook, - "L": cpp11StringHook, - "R": cpp11StringHook - }, - modeProps: {fold: ["brace", "include"]} - }); - CodeMirror.defineMIME("text/x-java", { - name: "clike", - keywords: words("abstract assert boolean break byte case catch char class const continue default " + - "do double else enum extends final finally float for goto if implements import " + - "instanceof int interface long native new package private protected public " + - "return short static strictfp super switch synchronized this throw throws transient " + - "try void volatile while"), - blockKeywords: words("catch class do else finally for if switch try while"), - atoms: words("true false null"), - hooks: { - "@": function(stream) { - stream.eatWhile(/[\w\$_]/); - return "meta"; - } - }, - modeProps: {fold: ["brace", "import"]} - }); - CodeMirror.defineMIME("text/x-csharp", { - name: "clike", - keywords: words("abstract as base break case catch checked class const continue" + - " default delegate do else enum event explicit extern finally fixed for" + - " foreach goto if implicit in interface internal is lock namespace new" + - " operator out override params private protected public readonly ref return sealed" + - " sizeof stackalloc static struct switch this throw try typeof unchecked" + - " unsafe using virtual void volatile while add alias ascending descending dynamic from get" + - " global group into join let orderby partial remove select set value var yield"), - blockKeywords: words("catch class do else finally for foreach if struct switch try while"), - builtin: words("Boolean Byte Char DateTime DateTimeOffset Decimal Double" + - " Guid Int16 Int32 Int64 Object SByte Single String TimeSpan UInt16 UInt32" + - " UInt64 bool byte char decimal double short int long object" + - " sbyte float string ushort uint ulong"), - atoms: words("true false null"), - hooks: { - "@": function(stream, state) { - if (stream.eat('"')) { - state.tokenize = tokenAtString; - return tokenAtString(stream, state); - } - stream.eatWhile(/[\w\$_]/); - return "meta"; - } - } - }); - CodeMirror.defineMIME("text/x-scala", { - name: "clike", - keywords: words( - - /* scala */ - "abstract case catch class def do else extends false final finally for forSome if " + - "implicit import lazy match new null object override package private protected return " + - "sealed super this throw trait try trye type val var while with yield _ : = => <- <: " + - "<% >: # @ " + - - /* package scala */ - "assert assume require print println printf readLine readBoolean readByte readShort " + - "readChar readInt readLong readFloat readDouble " + - - "AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either " + - "Enumeration Equiv Error Exception Fractional Function IndexedSeq Integral Iterable " + - "Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering " + - "Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder " + - "StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector :: #:: " + - - /* package java.lang */ - "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " + - "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " + - "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " + - "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void" - - - ), - blockKeywords: words("catch class do else finally for forSome if match switch try while"), - atoms: words("true false null"), - hooks: { - "@": function(stream) { - stream.eatWhile(/[\w\$_]/); - return "meta"; - } - } - }); - def(["x-shader/x-vertex", "x-shader/x-fragment"], { - name: "clike", - keywords: words("float int bool void " + - "vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 " + - "mat2 mat3 mat4 " + - "sampler1D sampler2D sampler3D samplerCube " + - "sampler1DShadow sampler2DShadow" + - "const attribute uniform varying " + - "break continue discard return " + - "for while do if else struct " + - "in out inout"), - blockKeywords: words("for while do if else struct"), - builtin: words("radians degrees sin cos tan asin acos atan " + - "pow exp log exp2 sqrt inversesqrt " + - "abs sign floor ceil fract mod min max clamp mix step smootstep " + - "length distance dot cross normalize ftransform faceforward " + - "reflect refract matrixCompMult " + - "lessThan lessThanEqual greaterThan greaterThanEqual " + - "equal notEqual any all not " + - "texture1D texture1DProj texture1DLod texture1DProjLod " + - "texture2D texture2DProj texture2DLod texture2DProjLod " + - "texture3D texture3DProj texture3DLod texture3DProjLod " + - "textureCube textureCubeLod " + - "shadow1D shadow2D shadow1DProj shadow2DProj " + - "shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod " + - "dFdx dFdy fwidth " + - "noise1 noise2 noise3 noise4"), - atoms: words("true false " + - "gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex " + - "gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 " + - "gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 " + - "gl_FogCoord " + - "gl_Position gl_PointSize gl_ClipVertex " + - "gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor " + - "gl_TexCoord gl_FogFragCoord " + - "gl_FragCoord gl_FrontFacing " + - "gl_FragColor gl_FragData gl_FragDepth " + - "gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix " + - "gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse " + - "gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse " + - "gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose " + - "gl_ProjectionMatrixInverseTranspose " + - "gl_ModelViewProjectionMatrixInverseTranspose " + - "gl_TextureMatrixInverseTranspose " + - "gl_NormalScale gl_DepthRange gl_ClipPlane " + - "gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel " + - "gl_FrontLightModelProduct gl_BackLightModelProduct " + - "gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ " + - "gl_FogParameters " + - "gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords " + - "gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats " + - "gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits " + - "gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits " + - "gl_MaxDrawBuffers"), - hooks: {"#": cppHook}, - modeProps: {fold: ["brace", "include"]} - }); -}()); - -}); diff --git a/vendor/codemirror/mode/clike/scala.html b/vendor/codemirror/mode/clike/scala.html deleted file mode 100644 index e9acc049..00000000 --- a/vendor/codemirror/mode/clike/scala.html +++ /dev/null @@ -1,767 +0,0 @@ - - -CodeMirror: Scala mode - - - - - - - - - - -
-

Scala mode

-
- -
- - -
diff --git a/vendor/codemirror/mode/clojure/clojure.js b/vendor/codemirror/mode/clojure/clojure.js deleted file mode 100644 index 3b596ad6..00000000 --- a/vendor/codemirror/mode/clojure/clojure.js +++ /dev/null @@ -1,238 +0,0 @@ -/** - * Author: Hans Engel - * Branched from CodeMirror's Scheme mode (by Koh Zi Han, based on implementation by Koh Zi Chun) - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("clojure", function (options) { - var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", CHARACTER = "string-2", - ATOM = "atom", NUMBER = "number", BRACKET = "bracket", KEYWORD = "keyword"; - var INDENT_WORD_SKIP = options.indentUnit || 2; - var NORMAL_INDENT_UNIT = options.indentUnit || 2; - - function makeKeywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var atoms = makeKeywords("true false nil"); - - var keywords = makeKeywords( - "defn defn- def def- defonce defmulti defmethod defmacro defstruct deftype defprotocol defrecord defproject deftest slice defalias defhinted defmacro- defn-memo defnk defnk defonce- defunbound defunbound- defvar defvar- let letfn do case cond condp for loop recur when when-not when-let when-first if if-let if-not . .. -> ->> doto and or dosync doseq dotimes dorun doall load import unimport ns in-ns refer try catch finally throw with-open with-local-vars binding gen-class gen-and-load-class gen-and-save-class handler-case handle"); - - var builtins = makeKeywords( - "* *' *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* *compile-path* *compiler-options* *data-readers* *e *err* *file* *flush-on-newline* *fn-loader* *in* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* + +' - -' -> ->> ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods .. / < <= = == > >= EMPTY-NODE accessor aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 bases bean bigdec bigint biginteger binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* bound? butlast byte byte-array bytes case cast char char-array char-escape-string char-name-string char? chars chunk chunk-append chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement concat cond condp conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? declare default-data-readers definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol defrecord defstruct deftype delay delay? deliver denominator deref derive descendants destructure disj disj! dissoc dissoc! distinct distinct? doall dorun doseq dosync dotimes doto double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info extend extend-protocol extend-type extenders extends? false? ffirst file-seq filter filterv find find-keyword find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn fn? fnext fnil for force format frequencies future future-call future-cancel future-cancelled? future-done? future? gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash hash-combine hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc inc' init-proxy instance? int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt keep keep-indexed key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array make-hierarchy map map-indexed map? mapcat mapv max max-key memfn memoize merge merge-with meta method-sig methods min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext nthrest num number? numerator object-array odd? or parents partial partition partition-all partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers primitives-classnames print print-ctor print-dup print-method print-simple print-str printf println println-str prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot rand rand-int rand-nth range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string realized? reduce reduce-kv reductions ref ref-history-count ref-max-history ref-min-history ref-set refer refer-clojure reify release-pending-sends rem remove remove-all-methods remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off seq seq? seque sequence sequential? set set-error-handler! set-error-mode! set-validator! set? short short-array shorts shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol symbol? sync take take-last take-nth take-while test the-ns thread-bound? time to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive unquote unquote-splicing update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of vector? when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context with-local-vars with-meta with-open with-out-str with-precision with-redefs with-redefs-fn xml-seq zero? zipmap *default-data-reader-fn* as-> cond-> cond->> reduced reduced? send-via set-agent-send-executor! set-agent-send-off-executor! some-> some->>"); - - var indentKeys = makeKeywords( - // Built-ins - "ns fn def defn defmethod bound-fn if if-not case condp when while when-not when-first do future comment doto locking proxy with-open with-precision reify deftype defrecord defprotocol extend extend-protocol extend-type try catch " + - - // Binding forms - "let letfn binding loop for doseq dotimes when-let if-let " + - - // Data structures - "defstruct struct-map assoc " + - - // clojure.test - "testing deftest " + - - // contrib - "handler-case handle dotrace deftrace"); - - var tests = { - digit: /\d/, - digit_or_colon: /[\d:]/, - hex: /[0-9a-f]/i, - sign: /[+-]/, - exponent: /e/i, - keyword_char: /[^\s\(\[\;\)\]]/, - symbol: /[\w*+!\-\._?:<>\/]/ - }; - - function stateStack(indent, type, prev) { // represents a state stack object - this.indent = indent; - this.type = type; - this.prev = prev; - } - - function pushStack(state, indent, type) { - state.indentStack = new stateStack(indent, type, state.indentStack); - } - - function popStack(state) { - state.indentStack = state.indentStack.prev; - } - - function isNumber(ch, stream){ - // hex - if ( ch === '0' && stream.eat(/x/i) ) { - stream.eatWhile(tests.hex); - return true; - } - - // leading sign - if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) { - stream.eat(tests.sign); - ch = stream.next(); - } - - if ( tests.digit.test(ch) ) { - stream.eat(ch); - stream.eatWhile(tests.digit); - - if ( '.' == stream.peek() ) { - stream.eat('.'); - stream.eatWhile(tests.digit); - } - - if ( stream.eat(tests.exponent) ) { - stream.eat(tests.sign); - stream.eatWhile(tests.digit); - } - - return true; - } - - return false; - } - - // Eat character that starts after backslash \ - function eatCharacter(stream) { - var first = stream.next(); - // Read special literals: backspace, newline, space, return. - // Just read all lowercase letters. - if (first.match(/[a-z]/) && stream.match(/[a-z]+/, true)) { - return; - } - // Read unicode character: \u1000 \uA0a1 - if (first === "u") { - stream.match(/[0-9a-z]{4}/i, true); - } - } - - return { - startState: function () { - return { - indentStack: null, - indentation: 0, - mode: false - }; - }, - - token: function (stream, state) { - if (state.indentStack == null && stream.sol()) { - // update indentation, but only if indentStack is empty - state.indentation = stream.indentation(); - } - - // skip spaces - if (stream.eatSpace()) { - return null; - } - var returnType = null; - - switch(state.mode){ - case "string": // multi-line string parsing mode - var next, escaped = false; - while ((next = stream.next()) != null) { - if (next == "\"" && !escaped) { - - state.mode = false; - break; - } - escaped = !escaped && next == "\\"; - } - returnType = STRING; // continue on in string mode - break; - default: // default parsing mode - var ch = stream.next(); - - if (ch == "\"") { - state.mode = "string"; - returnType = STRING; - } else if (ch == "\\") { - eatCharacter(stream); - returnType = CHARACTER; - } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) { - returnType = ATOM; - } else if (ch == ";") { // comment - stream.skipToEnd(); // rest of the line is a comment - returnType = COMMENT; - } else if (isNumber(ch,stream)){ - returnType = NUMBER; - } else if (ch == "(" || ch == "[" || ch == "{" ) { - var keyWord = '', indentTemp = stream.column(), letter; - /** - Either - (indent-word .. - (non-indent-word .. - (;something else, bracket, etc. - */ - - if (ch == "(") while ((letter = stream.eat(tests.keyword_char)) != null) { - keyWord += letter; - } - - if (keyWord.length > 0 && (indentKeys.propertyIsEnumerable(keyWord) || - /^(?:def|with)/.test(keyWord))) { // indent-word - pushStack(state, indentTemp + INDENT_WORD_SKIP, ch); - } else { // non-indent word - // we continue eating the spaces - stream.eatSpace(); - if (stream.eol() || stream.peek() == ";") { - // nothing significant after - // we restart indentation the user defined spaces after - pushStack(state, indentTemp + NORMAL_INDENT_UNIT, ch); - } else { - pushStack(state, indentTemp + stream.current().length, ch); // else we match - } - } - stream.backUp(stream.current().length - 1); // undo all the eating - - returnType = BRACKET; - } else if (ch == ")" || ch == "]" || ch == "}") { - returnType = BRACKET; - if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : (ch == "]" ? "[" :"{"))) { - popStack(state); - } - } else if ( ch == ":" ) { - stream.eatWhile(tests.symbol); - return ATOM; - } else { - stream.eatWhile(tests.symbol); - - if (keywords && keywords.propertyIsEnumerable(stream.current())) { - returnType = KEYWORD; - } else if (builtins && builtins.propertyIsEnumerable(stream.current())) { - returnType = BUILTIN; - } else if (atoms && atoms.propertyIsEnumerable(stream.current())) { - returnType = ATOM; - } else returnType = null; - } - } - - return returnType; - }, - - indent: function (state) { - if (state.indentStack == null) return state.indentation; - return state.indentStack.indent; - }, - - lineComment: ";;" - }; -}); - -CodeMirror.defineMIME("text/x-clojure", "clojure"); - -}); diff --git a/vendor/codemirror/mode/cobol/cobol.js b/vendor/codemirror/mode/cobol/cobol.js deleted file mode 100644 index e66e42a1..00000000 --- a/vendor/codemirror/mode/cobol/cobol.js +++ /dev/null @@ -1,252 +0,0 @@ -/** - * Author: Gautam Mehta - * Branched from CodeMirror's Scheme mode - */ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("cobol", function () { - var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", - ATOM = "atom", NUMBER = "number", KEYWORD = "keyword", MODTAG = "header", - COBOLLINENUM = "def", PERIOD = "link"; - function makeKeywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var atoms = makeKeywords("TRUE FALSE ZEROES ZEROS ZERO SPACES SPACE LOW-VALUE LOW-VALUES "); - var keywords = makeKeywords( - "ACCEPT ACCESS ACQUIRE ADD ADDRESS " + - "ADVANCING AFTER ALIAS ALL ALPHABET " + - "ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED " + - "ALSO ALTER ALTERNATE AND ANY " + - "ARE AREA AREAS ARITHMETIC ASCENDING " + - "ASSIGN AT ATTRIBUTE AUTHOR AUTO " + - "AUTO-SKIP AUTOMATIC B-AND B-EXOR B-LESS " + - "B-NOT B-OR BACKGROUND-COLOR BACKGROUND-COLOUR BEEP " + - "BEFORE BELL BINARY BIT BITS " + - "BLANK BLINK BLOCK BOOLEAN BOTTOM " + - "BY CALL CANCEL CD CF " + - "CH CHARACTER CHARACTERS CLASS CLOCK-UNITS " + - "CLOSE COBOL CODE CODE-SET COL " + - "COLLATING COLUMN COMMA COMMIT COMMITMENT " + - "COMMON COMMUNICATION COMP COMP-0 COMP-1 " + - "COMP-2 COMP-3 COMP-4 COMP-5 COMP-6 " + - "COMP-7 COMP-8 COMP-9 COMPUTATIONAL COMPUTATIONAL-0 " + - "COMPUTATIONAL-1 COMPUTATIONAL-2 COMPUTATIONAL-3 COMPUTATIONAL-4 COMPUTATIONAL-5 " + - "COMPUTATIONAL-6 COMPUTATIONAL-7 COMPUTATIONAL-8 COMPUTATIONAL-9 COMPUTE " + - "CONFIGURATION CONNECT CONSOLE CONTAINED CONTAINS " + - "CONTENT CONTINUE CONTROL CONTROL-AREA CONTROLS " + - "CONVERTING COPY CORR CORRESPONDING COUNT " + - "CRT CRT-UNDER CURRENCY CURRENT CURSOR " + - "DATA DATE DATE-COMPILED DATE-WRITTEN DAY " + - "DAY-OF-WEEK DB DB-ACCESS-CONTROL-KEY DB-DATA-NAME DB-EXCEPTION " + - "DB-FORMAT-NAME DB-RECORD-NAME DB-SET-NAME DB-STATUS DBCS " + - "DBCS-EDITED DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE " + - "DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING " + - "DECIMAL-POINT DECLARATIVES DEFAULT DELETE DELIMITED " + - "DELIMITER DEPENDING DESCENDING DESCRIBED DESTINATION " + - "DETAIL DISABLE DISCONNECT DISPLAY DISPLAY-1 " + - "DISPLAY-2 DISPLAY-3 DISPLAY-4 DISPLAY-5 DISPLAY-6 " + - "DISPLAY-7 DISPLAY-8 DISPLAY-9 DIVIDE DIVISION " + - "DOWN DROP DUPLICATE DUPLICATES DYNAMIC " + - "EBCDIC EGI EJECT ELSE EMI " + - "EMPTY EMPTY-CHECK ENABLE END END. END-ACCEPT END-ACCEPT. " + - "END-ADD END-CALL END-COMPUTE END-DELETE END-DISPLAY " + - "END-DIVIDE END-EVALUATE END-IF END-INVOKE END-MULTIPLY " + - "END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN " + - "END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT " + - "END-UNSTRING END-WRITE END-XML ENTER ENTRY " + - "ENVIRONMENT EOP EQUAL EQUALS ERASE " + - "ERROR ESI EVALUATE EVERY EXCEEDS " + - "EXCEPTION EXCLUSIVE EXIT EXTEND EXTERNAL " + - "EXTERNALLY-DESCRIBED-KEY FD FETCH FILE FILE-CONTROL " + - "FILE-STREAM FILES FILLER FINAL FIND " + - "FINISH FIRST FOOTING FOR FOREGROUND-COLOR " + - "FOREGROUND-COLOUR FORMAT FREE FROM FULL " + - "FUNCTION GENERATE GET GIVING GLOBAL " + - "GO GOBACK GREATER GROUP HEADING " + - "HIGH-VALUE HIGH-VALUES HIGHLIGHT I-O I-O-CONTROL " + - "ID IDENTIFICATION IF IN INDEX " + - "INDEX-1 INDEX-2 INDEX-3 INDEX-4 INDEX-5 " + - "INDEX-6 INDEX-7 INDEX-8 INDEX-9 INDEXED " + - "INDIC INDICATE INDICATOR INDICATORS INITIAL " + - "INITIALIZE INITIATE INPUT INPUT-OUTPUT INSPECT " + - "INSTALLATION INTO INVALID INVOKE IS " + - "JUST JUSTIFIED KANJI KEEP KEY " + - "LABEL LAST LD LEADING LEFT " + - "LEFT-JUSTIFY LENGTH LENGTH-CHECK LESS LIBRARY " + - "LIKE LIMIT LIMITS LINAGE LINAGE-COUNTER " + - "LINE LINE-COUNTER LINES LINKAGE LOCAL-STORAGE " + - "LOCALE LOCALLY LOCK " + - "MEMBER MEMORY MERGE MESSAGE METACLASS " + - "MODE MODIFIED MODIFY MODULES MOVE " + - "MULTIPLE MULTIPLY NATIONAL NATIVE NEGATIVE " + - "NEXT NO NO-ECHO NONE NOT " + - "NULL NULL-KEY-MAP NULL-MAP NULLS NUMBER " + - "NUMERIC NUMERIC-EDITED OBJECT OBJECT-COMPUTER OCCURS " + - "OF OFF OMITTED ON ONLY " + - "OPEN OPTIONAL OR ORDER ORGANIZATION " + - "OTHER OUTPUT OVERFLOW OWNER PACKED-DECIMAL " + - "PADDING PAGE PAGE-COUNTER PARSE PERFORM " + - "PF PH PIC PICTURE PLUS " + - "POINTER POSITION POSITIVE PREFIX PRESENT " + - "PRINTING PRIOR PROCEDURE PROCEDURE-POINTER PROCEDURES " + - "PROCEED PROCESS PROCESSING PROGRAM PROGRAM-ID " + - "PROMPT PROTECTED PURGE QUEUE QUOTE " + - "QUOTES RANDOM RD READ READY " + - "REALM RECEIVE RECONNECT RECORD RECORD-NAME " + - "RECORDS RECURSIVE REDEFINES REEL REFERENCE " + - "REFERENCE-MONITOR REFERENCES RELATION RELATIVE RELEASE " + - "REMAINDER REMOVAL RENAMES REPEATED REPLACE " + - "REPLACING REPORT REPORTING REPORTS REPOSITORY " + - "REQUIRED RERUN RESERVE RESET RETAINING " + - "RETRIEVAL RETURN RETURN-CODE RETURNING REVERSE-VIDEO " + - "REVERSED REWIND REWRITE RF RH " + - "RIGHT RIGHT-JUSTIFY ROLLBACK ROLLING ROUNDED " + - "RUN SAME SCREEN SD SEARCH " + - "SECTION SECURE SECURITY SEGMENT SEGMENT-LIMIT " + - "SELECT SEND SENTENCE SEPARATE SEQUENCE " + - "SEQUENTIAL SET SHARED SIGN SIZE " + - "SKIP1 SKIP2 SKIP3 SORT SORT-MERGE " + - "SORT-RETURN SOURCE SOURCE-COMPUTER SPACE-FILL " + - "SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2 " + - "START STARTING STATUS STOP STORE " + - "STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3 SUB-SCHEMA " + - "SUBFILE SUBSTITUTE SUBTRACT SUM SUPPRESS " + - "SYMBOLIC SYNC SYNCHRONIZED SYSIN SYSOUT " + - "TABLE TALLYING TAPE TENANT TERMINAL " + - "TERMINATE TEST TEXT THAN THEN " + - "THROUGH THRU TIME TIMES TITLE " + - "TO TOP TRAILING TRAILING-SIGN TRANSACTION " + - "TYPE TYPEDEF UNDERLINE UNEQUAL UNIT " + - "UNSTRING UNTIL UP UPDATE UPON " + - "USAGE USAGE-MODE USE USING VALID " + - "VALIDATE VALUE VALUES VARYING VLR " + - "WAIT WHEN WHEN-COMPILED WITH WITHIN " + - "WORDS WORKING-STORAGE WRITE XML XML-CODE " + - "XML-EVENT XML-NTEXT XML-TEXT ZERO ZERO-FILL " ); - - var builtins = makeKeywords("- * ** / + < <= = > >= "); - var tests = { - digit: /\d/, - digit_or_colon: /[\d:]/, - hex: /[0-9a-f]/i, - sign: /[+-]/, - exponent: /e/i, - keyword_char: /[^\s\(\[\;\)\]]/, - symbol: /[\w*+\-]/ - }; - function isNumber(ch, stream){ - // hex - if ( ch === '0' && stream.eat(/x/i) ) { - stream.eatWhile(tests.hex); - return true; - } - // leading sign - if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) { - stream.eat(tests.sign); - ch = stream.next(); - } - if ( tests.digit.test(ch) ) { - stream.eat(ch); - stream.eatWhile(tests.digit); - if ( '.' == stream.peek()) { - stream.eat('.'); - stream.eatWhile(tests.digit); - } - if ( stream.eat(tests.exponent) ) { - stream.eat(tests.sign); - stream.eatWhile(tests.digit); - } - return true; - } - return false; - } - return { - startState: function () { - return { - indentStack: null, - indentation: 0, - mode: false - }; - }, - token: function (stream, state) { - if (state.indentStack == null && stream.sol()) { - // update indentation, but only if indentStack is empty - state.indentation = 6 ; //stream.indentation(); - } - // skip spaces - if (stream.eatSpace()) { - return null; - } - var returnType = null; - switch(state.mode){ - case "string": // multi-line string parsing mode - var next = false; - while ((next = stream.next()) != null) { - if (next == "\"" || next == "\'") { - state.mode = false; - break; - } - } - returnType = STRING; // continue on in string mode - break; - default: // default parsing mode - var ch = stream.next(); - var col = stream.column(); - if (col >= 0 && col <= 5) { - returnType = COBOLLINENUM; - } else if (col >= 72 && col <= 79) { - stream.skipToEnd(); - returnType = MODTAG; - } else if (ch == "*" && col == 6) { // comment - stream.skipToEnd(); // rest of the line is a comment - returnType = COMMENT; - } else if (ch == "\"" || ch == "\'") { - state.mode = "string"; - returnType = STRING; - } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) { - returnType = ATOM; - } else if (ch == ".") { - returnType = PERIOD; - } else if (isNumber(ch,stream)){ - returnType = NUMBER; - } else { - if (stream.current().match(tests.symbol)) { - while (col < 71) { - if (stream.eat(tests.symbol) === undefined) { - break; - } else { - col++; - } - } - } - if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) { - returnType = KEYWORD; - } else if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) { - returnType = BUILTIN; - } else if (atoms && atoms.propertyIsEnumerable(stream.current().toUpperCase())) { - returnType = ATOM; - } else returnType = null; - } - } - return returnType; - }, - indent: function (state) { - if (state.indentStack == null) return state.indentation; - return state.indentStack.indent; - } - }; -}); - -CodeMirror.defineMIME("text/x-cobol", "cobol"); - -}); diff --git a/vendor/codemirror/mode/coffeescript/coffeescript.js b/vendor/codemirror/mode/coffeescript/coffeescript.js deleted file mode 100644 index c6da8f2a..00000000 --- a/vendor/codemirror/mode/coffeescript/coffeescript.js +++ /dev/null @@ -1,365 +0,0 @@ -/** - * Link to the project's GitHub page: - * https://github.com/pickhardt/coffeescript-codemirror-mode - */ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("coffeescript", function(conf) { - var ERRORCLASS = "error"; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var operators = /^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?)/; - var delimiters = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/; - var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/; - var properties = /^(@|this\.)[_A-Za-z$][_A-Za-z$0-9]*/; - - var wordOperators = wordRegexp(["and", "or", "not", - "is", "isnt", "in", - "instanceof", "typeof"]); - var indentKeywords = ["for", "while", "loop", "if", "unless", "else", - "switch", "try", "catch", "finally", "class"]; - var commonKeywords = ["break", "by", "continue", "debugger", "delete", - "do", "in", "of", "new", "return", "then", - "this", "throw", "when", "until"]; - - var keywords = wordRegexp(indentKeywords.concat(commonKeywords)); - - indentKeywords = wordRegexp(indentKeywords); - - - var stringPrefixes = /^('{3}|\"{3}|['\"])/; - var regexPrefixes = /^(\/{3}|\/)/; - var commonConstants = ["Infinity", "NaN", "undefined", "null", "true", "false", "on", "off", "yes", "no"]; - var constants = wordRegexp(commonConstants); - - // Tokenizers - function tokenBase(stream, state) { - // Handle scope changes - if (stream.sol()) { - if (state.scope.align === null) state.scope.align = false; - var scopeOffset = state.scope.offset; - if (stream.eatSpace()) { - var lineOffset = stream.indentation(); - if (lineOffset > scopeOffset && state.scope.type == "coffee") { - return "indent"; - } else if (lineOffset < scopeOffset) { - return "dedent"; - } - return null; - } else { - if (scopeOffset > 0) { - dedent(stream, state); - } - } - } - if (stream.eatSpace()) { - return null; - } - - var ch = stream.peek(); - - // Handle docco title comment (single line) - if (stream.match("####")) { - stream.skipToEnd(); - return "comment"; - } - - // Handle multi line comments - if (stream.match("###")) { - state.tokenize = longComment; - return state.tokenize(stream, state); - } - - // Single line comment - if (ch === "#") { - stream.skipToEnd(); - return "comment"; - } - - // Handle number literals - if (stream.match(/^-?[0-9\.]/, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)) { - floatLiteral = true; - } - if (stream.match(/^-?\d+\.\d*/)) { - floatLiteral = true; - } - if (stream.match(/^-?\.\d+/)) { - floatLiteral = true; - } - - if (floatLiteral) { - // prevent from getting extra . on 1.. - if (stream.peek() == "."){ - stream.backUp(1); - } - return "number"; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^-?0x[0-9a-f]+/i)) { - intLiteral = true; - } - // Decimal - if (stream.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)) { - intLiteral = true; - } - // Zero by itself with no other piece of number. - if (stream.match(/^-?0(?![\dx])/i)) { - intLiteral = true; - } - if (intLiteral) { - return "number"; - } - } - - // Handle strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenFactory(stream.current(), false, "string"); - return state.tokenize(stream, state); - } - // Handle regex literals - if (stream.match(regexPrefixes)) { - if (stream.current() != "/" || stream.match(/^.*\//, false)) { // prevent highlight of division - state.tokenize = tokenFactory(stream.current(), true, "string-2"); - return state.tokenize(stream, state); - } else { - stream.backUp(1); - } - } - - // Handle operators and delimiters - if (stream.match(operators) || stream.match(wordOperators)) { - return "operator"; - } - if (stream.match(delimiters)) { - return "punctuation"; - } - - if (stream.match(constants)) { - return "atom"; - } - - if (stream.match(keywords)) { - return "keyword"; - } - - if (stream.match(identifiers)) { - return "variable"; - } - - if (stream.match(properties)) { - return "property"; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenFactory(delimiter, singleline, outclass) { - return function(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"\/\\]/); - if (stream.eat("\\")) { - stream.next(); - if (singleline && stream.eol()) { - return outclass; - } - } else if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return outclass; - } else { - stream.eat(/['"\/]/); - } - } - if (singleline) { - if (conf.mode.singleLineStringErrors) { - outclass = ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return outclass; - }; - } - - function longComment(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^#]/); - if (stream.match("###")) { - state.tokenize = tokenBase; - break; - } - stream.eatWhile("#"); - } - return "comment"; - } - - function indent(stream, state, type) { - type = type || "coffee"; - var offset = 0, align = false, alignOffset = null; - for (var scope = state.scope; scope; scope = scope.prev) { - if (scope.type === "coffee") { - offset = scope.offset + conf.indentUnit; - break; - } - } - if (type !== "coffee") { - align = null; - alignOffset = stream.column() + stream.current().length; - } else if (state.scope.align) { - state.scope.align = false; - } - state.scope = { - offset: offset, - type: type, - prev: state.scope, - align: align, - alignOffset: alignOffset - }; - } - - function dedent(stream, state) { - if (!state.scope.prev) return; - if (state.scope.type === "coffee") { - var _indent = stream.indentation(); - var matched = false; - for (var scope = state.scope; scope; scope = scope.prev) { - if (_indent === scope.offset) { - matched = true; - break; - } - } - if (!matched) { - return true; - } - while (state.scope.prev && state.scope.offset !== _indent) { - state.scope = state.scope.prev; - } - return false; - } else { - state.scope = state.scope.prev; - return false; - } - } - - function tokenLexer(stream, state) { - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle "." connected identifiers - if (current === ".") { - style = state.tokenize(stream, state); - current = stream.current(); - if (/^\.[\w$]+$/.test(current)) { - return "variable"; - } else { - return ERRORCLASS; - } - } - - // Handle scope changes. - if (current === "return") { - state.dedent += 1; - } - if (((current === "->" || current === "=>") && - !state.lambda && - !stream.peek()) - || style === "indent") { - indent(stream, state); - } - var delimiter_index = "[({".indexOf(current); - if (delimiter_index !== -1) { - indent(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); - } - if (indentKeywords.exec(current)){ - indent(stream, state); - } - if (current == "then"){ - dedent(stream, state); - } - - - if (style === "dedent") { - if (dedent(stream, state)) { - return ERRORCLASS; - } - } - delimiter_index = "])}".indexOf(current); - if (delimiter_index !== -1) { - while (state.scope.type == "coffee" && state.scope.prev) - state.scope = state.scope.prev; - if (state.scope.type == current) - state.scope = state.scope.prev; - } - if (state.dedent > 0 && stream.eol() && state.scope.type == "coffee") { - if (state.scope.prev) state.scope = state.scope.prev; - state.dedent -= 1; - } - - return style; - } - - var external = { - startState: function(basecolumn) { - return { - tokenize: tokenBase, - scope: {offset:basecolumn || 0, type:"coffee", prev: null, align: false}, - lastToken: null, - lambda: false, - dedent: 0 - }; - }, - - token: function(stream, state) { - var fillAlign = state.scope.align === null && state.scope; - if (fillAlign && stream.sol()) fillAlign.align = false; - - var style = tokenLexer(stream, state); - if (fillAlign && style && style != "comment") fillAlign.align = true; - - state.lastToken = {style:style, content: stream.current()}; - - if (stream.eol() && stream.lambda) { - state.lambda = false; - } - - return style; - }, - - indent: function(state, text) { - if (state.tokenize != tokenBase) return 0; - var scope = state.scope; - var closer = text && "])}".indexOf(text.charAt(0)) > -1; - if (closer) while (scope.type == "coffee" && scope.prev) scope = scope.prev; - var closes = closer && scope.type === text.charAt(0); - if (scope.align) - return scope.alignOffset - (closes ? 1 : 0); - else - return (closes ? scope.prev : scope).offset; - }, - - lineComment: "#", - fold: "indent" - }; - return external; -}); - -CodeMirror.defineMIME("text/x-coffeescript", "coffeescript"); - -}); diff --git a/vendor/codemirror/mode/commonlisp/commonlisp.js b/vendor/codemirror/mode/commonlisp/commonlisp.js deleted file mode 100644 index a0f0732b..00000000 --- a/vendor/codemirror/mode/commonlisp/commonlisp.js +++ /dev/null @@ -1,117 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("commonlisp", function (config) { - var assumeBody = /^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/; - var numLiteral = /^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/; - var symbol = /[^\s'`,@()\[\]";]/; - var type; - - function readSym(stream) { - var ch; - while (ch = stream.next()) { - if (ch == "\\") stream.next(); - else if (!symbol.test(ch)) { stream.backUp(1); break; } - } - return stream.current(); - } - - function base(stream, state) { - if (stream.eatSpace()) {type = "ws"; return null;} - if (stream.match(numLiteral)) return "number"; - var ch = stream.next(); - if (ch == "\\") ch = stream.next(); - - if (ch == '"') return (state.tokenize = inString)(stream, state); - else if (ch == "(") { type = "open"; return "bracket"; } - else if (ch == ")" || ch == "]") { type = "close"; return "bracket"; } - else if (ch == ";") { stream.skipToEnd(); type = "ws"; return "comment"; } - else if (/['`,@]/.test(ch)) return null; - else if (ch == "|") { - if (stream.skipTo("|")) { stream.next(); return "symbol"; } - else { stream.skipToEnd(); return "error"; } - } else if (ch == "#") { - var ch = stream.next(); - if (ch == "[") { type = "open"; return "bracket"; } - else if (/[+\-=\.']/.test(ch)) return null; - else if (/\d/.test(ch) && stream.match(/^\d*#/)) return null; - else if (ch == "|") return (state.tokenize = inComment)(stream, state); - else if (ch == ":") { readSym(stream); return "meta"; } - else return "error"; - } else { - var name = readSym(stream); - if (name == ".") return null; - type = "symbol"; - if (name == "nil" || name == "t") return "atom"; - if (name.charAt(0) == ":") return "keyword"; - if (name.charAt(0) == "&") return "variable-2"; - return "variable"; - } - } - - function inString(stream, state) { - var escaped = false, next; - while (next = stream.next()) { - if (next == '"' && !escaped) { state.tokenize = base; break; } - escaped = !escaped && next == "\\"; - } - return "string"; - } - - function inComment(stream, state) { - var next, last; - while (next = stream.next()) { - if (next == "#" && last == "|") { state.tokenize = base; break; } - last = next; - } - type = "ws"; - return "comment"; - } - - return { - startState: function () { - return {ctx: {prev: null, start: 0, indentTo: 0}, tokenize: base}; - }, - - token: function (stream, state) { - if (stream.sol() && typeof state.ctx.indentTo != "number") - state.ctx.indentTo = state.ctx.start + 1; - - type = null; - var style = state.tokenize(stream, state); - if (type != "ws") { - if (state.ctx.indentTo == null) { - if (type == "symbol" && assumeBody.test(stream.current())) - state.ctx.indentTo = state.ctx.start + config.indentUnit; - else - state.ctx.indentTo = "next"; - } else if (state.ctx.indentTo == "next") { - state.ctx.indentTo = stream.column(); - } - } - if (type == "open") state.ctx = {prev: state.ctx, start: stream.column(), indentTo: null}; - else if (type == "close") state.ctx = state.ctx.prev || state.ctx; - return style; - }, - - indent: function (state, _textAfter) { - var i = state.ctx.indentTo; - return typeof i == "number" ? i : state.ctx.start + 1; - }, - - lineComment: ";;", - blockCommentStart: "#|", - blockCommentEnd: "|#" - }; -}); - -CodeMirror.defineMIME("text/x-common-lisp", "commonlisp"); - -}); diff --git a/vendor/codemirror/mode/css/css.js b/vendor/codemirror/mode/css/css.js deleted file mode 100644 index f8fc5cea..00000000 --- a/vendor/codemirror/mode/css/css.js +++ /dev/null @@ -1,701 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("css", function(config, parserConfig) { - if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css"); - - var indentUnit = config.indentUnit, - tokenHooks = parserConfig.tokenHooks, - mediaTypes = parserConfig.mediaTypes || {}, - mediaFeatures = parserConfig.mediaFeatures || {}, - propertyKeywords = parserConfig.propertyKeywords || {}, - colorKeywords = parserConfig.colorKeywords || {}, - valueKeywords = parserConfig.valueKeywords || {}, - fontProperties = parserConfig.fontProperties || {}, - allowNested = parserConfig.allowNested; - - var type, override; - function ret(style, tp) { type = tp; return style; } - - // Tokenizers - - function tokenBase(stream, state) { - var ch = stream.next(); - if (tokenHooks[ch]) { - var result = tokenHooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == "@") { - stream.eatWhile(/[\w\\\-]/); - return ret("def", stream.current()); - } else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) { - return ret(null, "compare"); - } else if (ch == "\"" || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (ch == "#") { - stream.eatWhile(/[\w\\\-]/); - return ret("atom", "hash"); - } else if (ch == "!") { - stream.match(/^\s*\w*/); - return ret("keyword", "important"); - } else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } else if (ch === "-") { - if (/[\d.]/.test(stream.peek())) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } else if (stream.match(/^[^-]+-/)) { - return ret("meta", "meta"); - } - } else if (/[,+>*\/]/.test(ch)) { - return ret(null, "select-op"); - } else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) { - return ret("qualifier", "qualifier"); - } else if (/[:;{}\[\]\(\)]/.test(ch)) { - return ret(null, ch); - } else if (ch == "u" && stream.match("rl(")) { - stream.backUp(1); - state.tokenize = tokenParenthesized; - return ret("property", "word"); - } else if (/[\w\\\-]/.test(ch)) { - stream.eatWhile(/[\w\\\-]/); - return ret("property", "word"); - } else { - return ret(null, null); - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - if (quote == ")") stream.backUp(1); - break; - } - escaped = !escaped && ch == "\\"; - } - if (ch == quote || !escaped && quote != ")") state.tokenize = null; - return ret("string", "string"); - }; - } - - function tokenParenthesized(stream, state) { - stream.next(); // Must be '(' - if (!stream.match(/\s*[\"\']/, false)) - state.tokenize = tokenString(")"); - else - state.tokenize = null; - return ret(null, "("); - } - - // Context management - - function Context(type, indent, prev) { - this.type = type; - this.indent = indent; - this.prev = prev; - } - - function pushContext(state, stream, type) { - state.context = new Context(type, stream.indentation() + indentUnit, state.context); - return type; - } - - function popContext(state) { - state.context = state.context.prev; - return state.context.type; - } - - function pass(type, stream, state) { - return states[state.context.type](type, stream, state); - } - function popAndPass(type, stream, state, n) { - for (var i = n || 1; i > 0; i--) - state.context = state.context.prev; - return pass(type, stream, state); - } - - // Parser - - function wordAsValue(stream) { - var word = stream.current().toLowerCase(); - if (valueKeywords.hasOwnProperty(word)) - override = "atom"; - else if (colorKeywords.hasOwnProperty(word)) - override = "keyword"; - else - override = "variable"; - } - - var states = {}; - - states.top = function(type, stream, state) { - if (type == "{") { - return pushContext(state, stream, "block"); - } else if (type == "}" && state.context.prev) { - return popContext(state); - } else if (type == "@media") { - return pushContext(state, stream, "media"); - } else if (type == "@font-face") { - return "font_face_before"; - } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { - return "keyframes"; - } else if (type && type.charAt(0) == "@") { - return pushContext(state, stream, "at"); - } else if (type == "hash") { - override = "builtin"; - } else if (type == "word") { - override = "tag"; - } else if (type == "variable-definition") { - return "maybeprop"; - } else if (type == "interpolation") { - return pushContext(state, stream, "interpolation"); - } else if (type == ":") { - return "pseudo"; - } else if (allowNested && type == "(") { - return pushContext(state, stream, "params"); - } - return state.context.type; - }; - - states.block = function(type, stream, state) { - if (type == "word") { - if (propertyKeywords.hasOwnProperty(stream.current().toLowerCase())) { - override = "property"; - return "maybeprop"; - } else if (allowNested) { - override = stream.match(/^\s*:/, false) ? "property" : "tag"; - return "block"; - } else { - override += " error"; - return "maybeprop"; - } - } else if (type == "meta") { - return "block"; - } else if (!allowNested && (type == "hash" || type == "qualifier")) { - override = "error"; - return "block"; - } else { - return states.top(type, stream, state); - } - }; - - states.maybeprop = function(type, stream, state) { - if (type == ":") return pushContext(state, stream, "prop"); - return pass(type, stream, state); - }; - - states.prop = function(type, stream, state) { - if (type == ";") return popContext(state); - if (type == "{" && allowNested) return pushContext(state, stream, "propBlock"); - if (type == "}" || type == "{") return popAndPass(type, stream, state); - if (type == "(") return pushContext(state, stream, "parens"); - - if (type == "hash" && !/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(stream.current())) { - override += " error"; - } else if (type == "word") { - wordAsValue(stream); - } else if (type == "interpolation") { - return pushContext(state, stream, "interpolation"); - } - return "prop"; - }; - - states.propBlock = function(type, _stream, state) { - if (type == "}") return popContext(state); - if (type == "word") { override = "property"; return "maybeprop"; } - return state.context.type; - }; - - states.parens = function(type, stream, state) { - if (type == "{" || type == "}") return popAndPass(type, stream, state); - if (type == ")") return popContext(state); - return "parens"; - }; - - states.pseudo = function(type, stream, state) { - if (type == "word") { - override = "variable-3"; - return state.context.type; - } - return pass(type, stream, state); - }; - - states.media = function(type, stream, state) { - if (type == "(") return pushContext(state, stream, "media_parens"); - if (type == "}") return popAndPass(type, stream, state); - if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top"); - - if (type == "word") { - var word = stream.current().toLowerCase(); - if (word == "only" || word == "not" || word == "and") - override = "keyword"; - else if (mediaTypes.hasOwnProperty(word)) - override = "attribute"; - else if (mediaFeatures.hasOwnProperty(word)) - override = "property"; - else - override = "error"; - } - return state.context.type; - }; - - states.media_parens = function(type, stream, state) { - if (type == ")") return popContext(state); - if (type == "{" || type == "}") return popAndPass(type, stream, state, 2); - return states.media(type, stream, state); - }; - - states.font_face_before = function(type, stream, state) { - if (type == "{") - return pushContext(state, stream, "font_face"); - return pass(type, stream, state); - }; - - states.font_face = function(type, stream, state) { - if (type == "}") return popContext(state); - if (type == "word") { - if (!fontProperties.hasOwnProperty(stream.current().toLowerCase())) - override = "error"; - else - override = "property"; - return "maybeprop"; - } - return "font_face"; - }; - - states.keyframes = function(type, stream, state) { - if (type == "word") { override = "variable"; return "keyframes"; } - if (type == "{") return pushContext(state, stream, "top"); - return pass(type, stream, state); - }; - - states.at = function(type, stream, state) { - if (type == ";") return popContext(state); - if (type == "{" || type == "}") return popAndPass(type, stream, state); - if (type == "word") override = "tag"; - else if (type == "hash") override = "builtin"; - return "at"; - }; - - states.interpolation = function(type, stream, state) { - if (type == "}") return popContext(state); - if (type == "{" || type == ";") return popAndPass(type, stream, state); - if (type != "variable") override = "error"; - return "interpolation"; - }; - - states.params = function(type, stream, state) { - if (type == ")") return popContext(state); - if (type == "{" || type == "}") return popAndPass(type, stream, state); - if (type == "word") wordAsValue(stream); - return "params"; - }; - - return { - startState: function(base) { - return {tokenize: null, - state: "top", - context: new Context("top", base || 0, null)}; - }, - - token: function(stream, state) { - if (!state.tokenize && stream.eatSpace()) return null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style && typeof style == "object") { - type = style[1]; - style = style[0]; - } - override = style; - state.state = states[state.state](type, stream, state); - return override; - }, - - indent: function(state, textAfter) { - var cx = state.context, ch = textAfter && textAfter.charAt(0); - var indent = cx.indent; - if (cx.type == "prop" && ch == "}") cx = cx.prev; - if (cx.prev && - (ch == "}" && (cx.type == "block" || cx.type == "top" || cx.type == "interpolation" || cx.type == "font_face") || - ch == ")" && (cx.type == "parens" || cx.type == "params" || cx.type == "media_parens") || - ch == "{" && (cx.type == "at" || cx.type == "media"))) { - indent = cx.indent - indentUnit; - cx = cx.prev; - } - return indent; - }, - - electricChars: "}", - blockCommentStart: "/*", - blockCommentEnd: "*/", - fold: "brace" - }; -}); - - function keySet(array) { - var keys = {}; - for (var i = 0; i < array.length; ++i) { - keys[array[i]] = true; - } - return keys; - } - - var mediaTypes_ = [ - "all", "aural", "braille", "handheld", "print", "projection", "screen", - "tty", "tv", "embossed" - ], mediaTypes = keySet(mediaTypes_); - - var mediaFeatures_ = [ - "width", "min-width", "max-width", "height", "min-height", "max-height", - "device-width", "min-device-width", "max-device-width", "device-height", - "min-device-height", "max-device-height", "aspect-ratio", - "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", - "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", - "max-color", "color-index", "min-color-index", "max-color-index", - "monochrome", "min-monochrome", "max-monochrome", "resolution", - "min-resolution", "max-resolution", "scan", "grid" - ], mediaFeatures = keySet(mediaFeatures_); - - var propertyKeywords_ = [ - "align-content", "align-items", "align-self", "alignment-adjust", - "alignment-baseline", "anchor-point", "animation", "animation-delay", - "animation-direction", "animation-duration", "animation-fill-mode", - "animation-iteration-count", "animation-name", "animation-play-state", - "animation-timing-function", "appearance", "azimuth", "backface-visibility", - "background", "background-attachment", "background-clip", "background-color", - "background-image", "background-origin", "background-position", - "background-repeat", "background-size", "baseline-shift", "binding", - "bleed", "bookmark-label", "bookmark-level", "bookmark-state", - "bookmark-target", "border", "border-bottom", "border-bottom-color", - "border-bottom-left-radius", "border-bottom-right-radius", - "border-bottom-style", "border-bottom-width", "border-collapse", - "border-color", "border-image", "border-image-outset", - "border-image-repeat", "border-image-slice", "border-image-source", - "border-image-width", "border-left", "border-left-color", - "border-left-style", "border-left-width", "border-radius", "border-right", - "border-right-color", "border-right-style", "border-right-width", - "border-spacing", "border-style", "border-top", "border-top-color", - "border-top-left-radius", "border-top-right-radius", "border-top-style", - "border-top-width", "border-width", "bottom", "box-decoration-break", - "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", - "caption-side", "clear", "clip", "color", "color-profile", "column-count", - "column-fill", "column-gap", "column-rule", "column-rule-color", - "column-rule-style", "column-rule-width", "column-span", "column-width", - "columns", "content", "counter-increment", "counter-reset", "crop", "cue", - "cue-after", "cue-before", "cursor", "direction", "display", - "dominant-baseline", "drop-initial-after-adjust", - "drop-initial-after-align", "drop-initial-before-adjust", - "drop-initial-before-align", "drop-initial-size", "drop-initial-value", - "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", - "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", - "float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings", - "font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust", - "font-stretch", "font-style", "font-synthesis", "font-variant", - "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", - "font-variant-ligatures", "font-variant-numeric", "font-variant-position", - "font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", - "grid-auto-position", "grid-auto-rows", "grid-column", "grid-column-end", - "grid-column-start", "grid-row", "grid-row-end", "grid-row-start", - "grid-template", "grid-template-areas", "grid-template-columns", - "grid-template-rows", "hanging-punctuation", "height", "hyphens", - "icon", "image-orientation", "image-rendering", "image-resolution", - "inline-box-align", "justify-content", "left", "letter-spacing", - "line-break", "line-height", "line-stacking", "line-stacking-ruby", - "line-stacking-shift", "line-stacking-strategy", "list-style", - "list-style-image", "list-style-position", "list-style-type", "margin", - "margin-bottom", "margin-left", "margin-right", "margin-top", - "marker-offset", "marks", "marquee-direction", "marquee-loop", - "marquee-play-count", "marquee-speed", "marquee-style", "max-height", - "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", - "nav-left", "nav-right", "nav-up", "opacity", "order", "orphans", "outline", - "outline-color", "outline-offset", "outline-style", "outline-width", - "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", - "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", - "page", "page-break-after", "page-break-before", "page-break-inside", - "page-policy", "pause", "pause-after", "pause-before", "perspective", - "perspective-origin", "pitch", "pitch-range", "play-during", "position", - "presentation-level", "punctuation-trim", "quotes", "region-break-after", - "region-break-before", "region-break-inside", "region-fragment", - "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness", - "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang", - "ruby-position", "ruby-span", "shape-inside", "shape-outside", "size", - "speak", "speak-as", "speak-header", - "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", - "tab-size", "table-layout", "target", "target-name", "target-new", - "target-position", "text-align", "text-align-last", "text-decoration", - "text-decoration-color", "text-decoration-line", "text-decoration-skip", - "text-decoration-style", "text-emphasis", "text-emphasis-color", - "text-emphasis-position", "text-emphasis-style", "text-height", - "text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow", - "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position", - "text-wrap", "top", "transform", "transform-origin", "transform-style", - "transition", "transition-delay", "transition-duration", - "transition-property", "transition-timing-function", "unicode-bidi", - "vertical-align", "visibility", "voice-balance", "voice-duration", - "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", - "voice-volume", "volume", "white-space", "widows", "width", "word-break", - "word-spacing", "word-wrap", "z-index", "zoom", - // SVG-specific - "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color", - "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events", - "color-interpolation", "color-interpolation-filters", "color-profile", - "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering", - "marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke", - "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", - "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering", - "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal", - "glyph-orientation-vertical", "kerning", "text-anchor", "writing-mode" - ], propertyKeywords = keySet(propertyKeywords_); - - var colorKeywords_ = [ - "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", - "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", - "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", - "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", - "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", - "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", - "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", - "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", - "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", - "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", - "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", - "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", - "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", - "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", - "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", - "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", - "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", - "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", - "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", - "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", - "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", - "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", - "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", - "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", - "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", - "whitesmoke", "yellow", "yellowgreen" - ], colorKeywords = keySet(colorKeywords_); - - var valueKeywords_ = [ - "above", "absolute", "activeborder", "activecaption", "afar", - "after-white-space", "ahead", "alias", "all", "all-scroll", "alternate", - "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", - "arabic-indic", "armenian", "asterisks", "auto", "avoid", "avoid-column", "avoid-page", - "avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary", - "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", - "both", "bottom", "break", "break-all", "break-word", "button", "button-bevel", - "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "cambodian", - "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", - "cell", "center", "checkbox", "circle", "cjk-earthly-branch", - "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", - "col-resize", "collapse", "column", "compact", "condensed", "contain", "content", - "content-box", "context-menu", "continuous", "copy", "cover", "crop", - "cross", "crosshair", "currentcolor", "cursive", "dashed", "decimal", - "decimal-leading-zero", "default", "default-button", "destination-atop", - "destination-in", "destination-out", "destination-over", "devanagari", - "disc", "discard", "document", "dot-dash", "dot-dot-dash", "dotted", - "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", - "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", - "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", - "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", - "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", - "ethiopic-halehame-gez", "ethiopic-halehame-om-et", - "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", - "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", - "ethiopic-halehame-tig", "ew-resize", "expanded", "extra-condensed", - "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "footnotes", - "forwards", "from", "geometricPrecision", "georgian", "graytext", "groove", - "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hebrew", - "help", "hidden", "hide", "higher", "highlight", "highlighttext", - "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "icon", "ignore", - "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", - "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", - "inline-block", "inline-table", "inset", "inside", "intrinsic", "invert", - "italic", "justify", "kannada", "katakana", "katakana-iroha", "keep-all", "khmer", - "landscape", "lao", "large", "larger", "left", "level", "lighter", - "line-through", "linear", "lines", "list-item", "listbox", "listitem", - "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", - "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", - "lower-roman", "lowercase", "ltr", "malayalam", "match", - "media-controls-background", "media-current-time-display", - "media-fullscreen-button", "media-mute-button", "media-play-button", - "media-return-to-realtime-button", "media-rewind-button", - "media-seek-back-button", "media-seek-forward-button", "media-slider", - "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", - "media-volume-slider-container", "media-volume-sliderthumb", "medium", - "menu", "menulist", "menulist-button", "menulist-text", - "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", - "mix", "mongolian", "monospace", "move", "multiple", "myanmar", "n-resize", - "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", - "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", - "ns-resize", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote", - "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", - "outside", "outside-shape", "overlay", "overline", "padding", "padding-box", - "painted", "page", "paused", "persian", "plus-darker", "plus-lighter", "pointer", - "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button", - "radio", "read-only", "read-write", "read-write-plaintext-only", "rectangle", "region", - "relative", "repeat", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba", - "ridge", "right", "round", "row-resize", "rtl", "run-in", "running", - "s-resize", "sans-serif", "scroll", "scrollbar", "se-resize", "searchfield", - "searchfield-cancel-button", "searchfield-decoration", - "searchfield-results-button", "searchfield-results-decoration", - "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", - "single", "skip-white-space", "slide", "slider-horizontal", - "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", - "small", "small-caps", "small-caption", "smaller", "solid", "somali", - "source-atop", "source-in", "source-out", "source-over", "space", "square", - "square-button", "start", "static", "status-bar", "stretch", "stroke", - "sub", "subpixel-antialiased", "super", "sw-resize", "table", - "table-caption", "table-cell", "table-column", "table-column-group", - "table-footer-group", "table-header-group", "table-row", "table-row-group", - "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", - "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", - "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", - "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", - "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", - "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", - "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", - "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted", - "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", - "window", "windowframe", "windowtext", "x-large", "x-small", "xor", - "xx-large", "xx-small" - ], valueKeywords = keySet(valueKeywords_); - - var fontProperties_ = [ - "font-family", "src", "unicode-range", "font-variant", "font-feature-settings", - "font-stretch", "font-weight", "font-style" - ], fontProperties = keySet(fontProperties_); - - var allWords = mediaTypes_.concat(mediaFeatures_).concat(propertyKeywords_).concat(colorKeywords_).concat(valueKeywords_); - CodeMirror.registerHelper("hintWords", "css", allWords); - - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return ["comment", "comment"]; - } - - function tokenSGMLComment(stream, state) { - if (stream.skipTo("-->")) { - stream.match("-->"); - state.tokenize = null; - } else { - stream.skipToEnd(); - } - return ["comment", "comment"]; - } - - CodeMirror.defineMIME("text/css", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - propertyKeywords: propertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - tokenHooks: { - "<": function(stream, state) { - if (!stream.match("!--")) return false; - state.tokenize = tokenSGMLComment; - return tokenSGMLComment(stream, state); - }, - "/": function(stream, state) { - if (!stream.eat("*")) return false; - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - }, - name: "css" - }); - - CodeMirror.defineMIME("text/x-scss", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - propertyKeywords: propertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - allowNested: true, - tokenHooks: { - "/": function(stream, state) { - if (stream.eat("/")) { - stream.skipToEnd(); - return ["comment", "comment"]; - } else if (stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } else { - return ["operator", "operator"]; - } - }, - ":": function(stream) { - if (stream.match(/\s*{/)) - return [null, "{"]; - return false; - }, - "$": function(stream) { - stream.match(/^[\w-]+/); - if (stream.match(/^\s*:/, false)) - return ["variable-2", "variable-definition"]; - return ["variable-2", "variable"]; - }, - "#": function(stream) { - if (!stream.eat("{")) return false; - return [null, "interpolation"]; - } - }, - name: "css", - helperType: "scss" - }); - - CodeMirror.defineMIME("text/x-less", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - propertyKeywords: propertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - allowNested: true, - tokenHooks: { - "/": function(stream, state) { - if (stream.eat("/")) { - stream.skipToEnd(); - return ["comment", "comment"]; - } else if (stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } else { - return ["operator", "operator"]; - } - }, - "@": function(stream) { - if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/, false)) return false; - stream.eatWhile(/[\w\\\-]/); - if (stream.match(/^\s*:/, false)) - return ["variable-2", "variable-definition"]; - return ["variable-2", "variable"]; - }, - "&": function() { - return ["atom", "atom"]; - } - }, - name: "css", - helperType: "less" - }); - -}); diff --git a/vendor/codemirror/mode/css/less.html b/vendor/codemirror/mode/css/less.html deleted file mode 100644 index 1030ca43..00000000 --- a/vendor/codemirror/mode/css/less.html +++ /dev/null @@ -1,152 +0,0 @@ - - -CodeMirror: LESS mode - - - - - - - - - - -
-

LESS mode

-
- - -

The LESS mode is a sub-mode of the CSS mode (defined in css.js.

- -

Parsing/Highlighting Tests: normal, verbose.

-
diff --git a/vendor/codemirror/mode/css/less_test.js b/vendor/codemirror/mode/css/less_test.js deleted file mode 100644 index ea64f91d..00000000 --- a/vendor/codemirror/mode/css/less_test.js +++ /dev/null @@ -1,48 +0,0 @@ -(function() { - "use strict"; - - var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); } - - MT("variable", - "[variable-2 @base]: [atom #f04615];", - "[qualifier .class] {", - " [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]", - " [property color]: [variable saturate]([variable-2 @base], [number 5%]);", - "}"); - - MT("amp", - "[qualifier .child], [qualifier .sibling] {", - " [qualifier .parent] [atom &] {", - " [property color]: [keyword black];", - " }", - " [atom &] + [atom &] {", - " [property color]: [keyword red];", - " }", - "}"); - - MT("mixin", - "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {", - " [property color]: [variable darken]([variable-2 @color], [number 10%]);", - "}", - "[qualifier .mixin] ([variable light]; [variable-2 @color]) {", - " [property color]: [variable lighten]([variable-2 @color], [number 10%]);", - "}", - "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {", - " [property display]: [atom block];", - "}", - "[variable-2 @switch]: [variable light];", - "[qualifier .class] {", - " [qualifier .mixin]([variable-2 @switch]; [atom #888]);", - "}"); - - MT("nest", - "[qualifier .one] {", - " [def @media] ([property width]: [number 400px]) {", - " [property font-size]: [number 1.2em];", - " [def @media] [attribute print] [keyword and] [property color] {", - " [property color]: [keyword blue];", - " }", - " }", - "}"); -})(); diff --git a/vendor/codemirror/mode/css/scss.html b/vendor/codemirror/mode/css/scss.html deleted file mode 100644 index 0677d08f..00000000 --- a/vendor/codemirror/mode/css/scss.html +++ /dev/null @@ -1,157 +0,0 @@ - - -CodeMirror: SCSS mode - - - - - - - - - -
-

SCSS mode

-
- - -

The SCSS mode is a sub-mode of the CSS mode (defined in css.js.

- -

Parsing/Highlighting Tests: normal, verbose.

- -
diff --git a/vendor/codemirror/mode/css/scss_test.js b/vendor/codemirror/mode/css/scss_test.js deleted file mode 100644 index c51cb42b..00000000 --- a/vendor/codemirror/mode/css/scss_test.js +++ /dev/null @@ -1,107 +0,0 @@ -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-scss"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "scss"); } - - MT('url_with_quotation', - "[tag foo] { [property background]:[atom url]([string test.jpg]) }"); - - MT('url_with_double_quotes', - "[tag foo] { [property background]:[atom url]([string \"test.jpg\"]) }"); - - MT('url_with_single_quotes', - "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) }"); - - MT('string', - "[def @import] [string \"compass/css3\"]"); - - MT('important_keyword', - "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) [keyword !important] }"); - - MT('variable', - "[variable-2 $blue]:[atom #333]"); - - MT('variable_as_attribute', - "[tag foo] { [property color]:[variable-2 $blue] }"); - - MT('numbers', - "[tag foo] { [property padding]:[number 10px] [number 10] [number 10em] [number 8in] }"); - - MT('number_percentage', - "[tag foo] { [property width]:[number 80%] }"); - - MT('selector', - "[builtin #hello][qualifier .world]{}"); - - MT('singleline_comment', - "[comment // this is a comment]"); - - MT('multiline_comment', - "[comment /*foobar*/]"); - - MT('attribute_with_hyphen', - "[tag foo] { [property font-size]:[number 10px] }"); - - MT('string_after_attribute', - "[tag foo] { [property content]:[string \"::\"] }"); - - MT('directives', - "[def @include] [qualifier .mixin]"); - - MT('basic_structure', - "[tag p] { [property background]:[keyword red]; }"); - - MT('nested_structure', - "[tag p] { [tag a] { [property color]:[keyword red]; } }"); - - MT('mixin', - "[def @mixin] [tag table-base] {}"); - - MT('number_without_semicolon', - "[tag p] {[property width]:[number 12]}", - "[tag a] {[property color]:[keyword red];}"); - - MT('atom_in_nested_block', - "[tag p] { [tag a] { [property color]:[atom #000]; } }"); - - MT('interpolation_in_property', - "[tag foo] { #{[variable-2 $hello]}:[number 2]; }"); - - MT('interpolation_in_selector', - "[tag foo]#{[variable-2 $hello]} { [property color]:[atom #000]; }"); - - MT('interpolation_error', - "[tag foo]#{[error foo]} { [property color]:[atom #000]; }"); - - MT("divide_operator", - "[tag foo] { [property width]:[number 4] [operator /] [number 2] }"); - - MT('nested_structure_with_id_selector', - "[tag p] { [builtin #hello] { [property color]:[keyword red]; } }"); - - MT('indent_mixin', - "[def @mixin] [tag container] (", - " [variable-2 $a]: [number 10],", - " [variable-2 $b]: [number 10])", - "{}"); - - MT('indent_nested', - "[tag foo] {", - " [tag bar] {", - " }", - "}"); - - MT('indent_parentheses', - "[tag foo] {", - " [property color]: [variable darken]([variable-2 $blue],", - " [number 9%]);", - "}"); - - MT('indent_vardef', - "[variable-2 $name]:", - " [string 'val'];", - "[tag tag] {", - " [tag inner] {", - " [property margin]: [number 3px];", - " }", - "}"); -})(); diff --git a/vendor/codemirror/mode/css/test.js b/vendor/codemirror/mode/css/test.js deleted file mode 100644 index b3f47767..00000000 --- a/vendor/codemirror/mode/css/test.js +++ /dev/null @@ -1,119 +0,0 @@ -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "css"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - // Error, because "foobarhello" is neither a known type or property, but - // property was expected (after "and"), and it should be in parenthese. - MT("atMediaUnknownType", - "[def @media] [attribute screen] [keyword and] [error foobarhello] { }"); - - // Soft error, because "foobarhello" is not a known property or type. - MT("atMediaUnknownProperty", - "[def @media] [attribute screen] [keyword and] ([error foobarhello]) { }"); - - // Make sure nesting works with media queries - MT("atMediaMaxWidthNested", - "[def @media] [attribute screen] [keyword and] ([property max-width]: [number 25px]) { [tag foo] { } }"); - - MT("tagSelector", - "[tag foo] { }"); - - MT("classSelector", - "[qualifier .foo-bar_hello] { }"); - - MT("idSelector", - "[builtin #foo] { [error #foo] }"); - - MT("tagSelectorUnclosed", - "[tag foo] { [property margin]: [number 0] } [tag bar] { }"); - - MT("tagStringNoQuotes", - "[tag foo] { [property font-family]: [variable hello] [variable world]; }"); - - MT("tagStringDouble", - "[tag foo] { [property font-family]: [string \"hello world\"]; }"); - - MT("tagStringSingle", - "[tag foo] { [property font-family]: [string 'hello world']; }"); - - MT("tagColorKeyword", - "[tag foo] {", - " [property color]: [keyword black];", - " [property color]: [keyword navy];", - " [property color]: [keyword yellow];", - "}"); - - MT("tagColorHex3", - "[tag foo] { [property background]: [atom #fff]; }"); - - MT("tagColorHex6", - "[tag foo] { [property background]: [atom #ffffff]; }"); - - MT("tagColorHex4", - "[tag foo] { [property background]: [atom&error #ffff]; }"); - - MT("tagColorHexInvalid", - "[tag foo] { [property background]: [atom&error #ffg]; }"); - - MT("tagNegativeNumber", - "[tag foo] { [property margin]: [number -5px]; }"); - - MT("tagPositiveNumber", - "[tag foo] { [property padding]: [number 5px]; }"); - - MT("tagVendor", - "[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }"); - - MT("tagBogusProperty", - "[tag foo] { [property&error barhelloworld]: [number 0]; }"); - - MT("tagTwoProperties", - "[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }"); - - MT("tagTwoPropertiesURL", - "[tag foo] { [property background]: [atom url]([string //example.com/foo.png]); [property padding]: [number 0]; }"); - - MT("commentSGML", - "[comment ]"); - - MT("commentSGML2", - "[comment ] [tag div] {}"); - - MT("indent_tagSelector", - "[tag strong], [tag em] {", - " [property background]: [atom rgba](", - " [number 255], [number 255], [number 0], [number .2]", - " );", - "}"); - - MT("indent_atMedia", - "[def @media] {", - " [tag foo] {", - " [property color]:", - " [keyword yellow];", - " }", - "}"); - - MT("indent_comma", - "[tag foo] {", - " [property font-family]: [variable verdana],", - " [atom sans-serif];", - "}"); - - MT("indent_parentheses", - "[tag foo]:[variable-3 before] {", - " [property background]: [atom url](", - "[string blahblah]", - "[string etc]", - "[string ]) [keyword !important];", - "}"); - - MT("font_face", - "[def @font-face] {", - " [property font-family]: [string 'myfont'];", - " [error nonsense]: [string 'abc'];", - " [property src]: [atom url]([string http://blah]),", - " [atom url]([string http://foo]);", - "}"); -})(); diff --git a/vendor/codemirror/mode/d/d.js b/vendor/codemirror/mode/d/d.js deleted file mode 100644 index 3ab8b428..00000000 --- a/vendor/codemirror/mode/d/d.js +++ /dev/null @@ -1,215 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("d", function(config, parserConfig) { - var indentUnit = config.indentUnit, - statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, - keywords = parserConfig.keywords || {}, - builtin = parserConfig.builtin || {}, - blockKeywords = parserConfig.blockKeywords || {}, - atoms = parserConfig.atoms || {}, - hooks = parserConfig.hooks || {}, - multiLineStrings = parserConfig.multiLineStrings; - var isOperatorChar = /[+\-*&%=<>!?|\/]/; - - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == '"' || ch == "'" || ch == "`") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (ch == "/") { - if (stream.eat("+")) { - state.tokenize = tokenComment; - return tokenNestedComment(stream, state); - } - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "keyword"; - } - if (builtin.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "builtin"; - } - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = null; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function tokenNestedComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "+"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - var indent = state.indented; - if (state.context && state.context.type == "statement") - indent = state.context.indented; - return state.context = new Context(indent, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement") popContext(state); - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement")) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; - var closing = firstChar == ctx.type; - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}" - }; -}); - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var blockKeywords = "body catch class do else enum for foreach foreach_reverse if in interface mixin " + - "out scope struct switch try union unittest version while with"; - - CodeMirror.defineMIME("text/x-d", { - name: "d", - keywords: words("abstract alias align asm assert auto break case cast cdouble cent cfloat const continue " + - "debug default delegate delete deprecated export extern final finally function goto immutable " + - "import inout invariant is lazy macro module new nothrow override package pragma private " + - "protected public pure ref return shared short static super synchronized template this " + - "throw typedef typeid typeof volatile __FILE__ __LINE__ __gshared __traits __vector __parameters " + - blockKeywords), - blockKeywords: words(blockKeywords), - builtin: words("bool byte char creal dchar double float idouble ifloat int ireal long real short ubyte " + - "ucent uint ulong ushort wchar wstring void size_t sizediff_t"), - atoms: words("exit failure success true false null"), - hooks: { - "@": function(stream, _state) { - stream.eatWhile(/[\w\$_]/); - return "meta"; - } - } - }); - -}); diff --git a/vendor/codemirror/mode/diff/diff.js b/vendor/codemirror/mode/diff/diff.js deleted file mode 100644 index d43f15d5..00000000 --- a/vendor/codemirror/mode/diff/diff.js +++ /dev/null @@ -1,44 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("diff", function() { - - var TOKEN_NAMES = { - '+': 'positive', - '-': 'negative', - '@': 'meta' - }; - - return { - token: function(stream) { - var tw_pos = stream.string.search(/[\t ]+?$/); - - if (!stream.sol() || tw_pos === 0) { - stream.skipToEnd(); - return ("error " + ( - TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); - } - - var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); - - if (tw_pos === -1) { - stream.skipToEnd(); - } else { - stream.pos = tw_pos; - } - - return token_name; - } - }; -}); - -CodeMirror.defineMIME("text/x-diff", "diff"); - -}); diff --git a/vendor/codemirror/mode/dtd/dtd.js b/vendor/codemirror/mode/dtd/dtd.js deleted file mode 100644 index b4a6cb31..00000000 --- a/vendor/codemirror/mode/dtd/dtd.js +++ /dev/null @@ -1,139 +0,0 @@ -/* - DTD mode - Ported to CodeMirror by Peter Kroon - Report bugs/issues here: https://github.com/marijnh/CodeMirror/issues - GitHub: @peterkroon -*/ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("dtd", function(config) { - var indentUnit = config.indentUnit, type; - function ret(style, tp) {type = tp; return style;} - - function tokenBase(stream, state) { - var ch = stream.next(); - - if (ch == "<" && stream.eat("!") ) { - if (stream.eatWhile(/[\-]/)) { - state.tokenize = tokenSGMLComment; - return tokenSGMLComment(stream, state); - } else if (stream.eatWhile(/[\w]/)) return ret("keyword", "doindent"); - } else if (ch == "<" && stream.eat("?")) { //xml declaration - state.tokenize = inBlock("meta", "?>"); - return ret("meta", ch); - } else if (ch == "#" && stream.eatWhile(/[\w]/)) return ret("atom", "tag"); - else if (ch == "|") return ret("keyword", "seperator"); - else if (ch.match(/[\(\)\[\]\-\.,\+\?>]/)) return ret(null, ch);//if(ch === ">") return ret(null, "endtag"); else - else if (ch.match(/[\[\]]/)) return ret("rule", ch); - else if (ch == "\"" || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (stream.eatWhile(/[a-zA-Z\?\+\d]/)) { - var sc = stream.current(); - if( sc.substr(sc.length-1,sc.length).match(/\?|\+/) !== null )stream.backUp(1); - return ret("tag", "tag"); - } else if (ch == "%" || ch == "*" ) return ret("number", "number"); - else { - stream.eatWhile(/[\w\\\-_%.{,]/); - return ret(null, null); - } - } - - function tokenSGMLComment(stream, state) { - var dashes = 0, ch; - while ((ch = stream.next()) != null) { - if (dashes >= 2 && ch == ">") { - state.tokenize = tokenBase; - break; - } - dashes = (ch == "-") ? dashes + 1 : 0; - } - return ret("comment", "comment"); - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return ret("string", "tag"); - }; - } - - function inBlock(style, terminator) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = tokenBase; - break; - } - stream.next(); - } - return style; - }; - } - - return { - startState: function(base) { - return {tokenize: tokenBase, - baseIndent: base || 0, - stack: []}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - - var context = state.stack[state.stack.length-1]; - if (stream.current() == "[" || type === "doindent" || type == "[") state.stack.push("rule"); - else if (type === "endtag") state.stack[state.stack.length-1] = "endtag"; - else if (stream.current() == "]" || type == "]" || (type == ">" && context == "rule")) state.stack.pop(); - else if (type == "[") state.stack.push("["); - return style; - }, - - indent: function(state, textAfter) { - var n = state.stack.length; - - if( textAfter.match(/\]\s+|\]/) )n=n-1; - else if(textAfter.substr(textAfter.length-1, textAfter.length) === ">"){ - if(textAfter.substr(0,1) === "<")n; - else if( type == "doindent" && textAfter.length > 1 )n; - else if( type == "doindent")n--; - else if( type == ">" && textAfter.length > 1)n; - else if( type == "tag" && textAfter !== ">")n; - else if( type == "tag" && state.stack[state.stack.length-1] == "rule")n--; - else if( type == "tag")n++; - else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule" && type === ">")n--; - else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule")n; - else if( textAfter.substr(0,1) !== "<" && textAfter.substr(0,1) === ">" )n=n-1; - else if( textAfter === ">")n; - else n=n-1; - //over rule them all - if(type == null || type == "]")n--; - } - - return state.baseIndent + n * indentUnit; - }, - - electricChars: "]>" - }; -}); - -CodeMirror.defineMIME("application/xml-dtd", "dtd"); - -}); diff --git a/vendor/codemirror/mode/ecl/ecl.js b/vendor/codemirror/mode/ecl/ecl.js deleted file mode 100644 index 2b841ff5..00000000 --- a/vendor/codemirror/mode/ecl/ecl.js +++ /dev/null @@ -1,204 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("ecl", function(config) { - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - function metaHook(stream, state) { - if (!state.startOfLine) return false; - stream.skipToEnd(); - return "meta"; - } - - var indentUnit = config.indentUnit; - var keyword = words("abs acos allnodes ascii asin asstring atan atan2 ave case choose choosen choosesets clustersize combine correlation cos cosh count covariance cron dataset dedup define denormalize distribute distributed distribution ebcdic enth error evaluate event eventextra eventname exists exp failcode failmessage fetch fromunicode getisvalid global graph group hash hash32 hash64 hashcrc hashmd5 having if index intformat isvalid iterate join keyunicode length library limit ln local log loop map matched matchlength matchposition matchtext matchunicode max merge mergejoin min nolocal nonempty normalize parse pipe power preload process project pull random range rank ranked realformat recordof regexfind regexreplace regroup rejected rollup round roundup row rowdiff sample set sin sinh sizeof soapcall sort sorted sqrt stepped stored sum table tan tanh thisnode topn tounicode transfer trim truncate typeof ungroup unicodeorder variance which workunit xmldecode xmlencode xmltext xmlunicode"); - var variable = words("apply assert build buildindex evaluate fail keydiff keypatch loadxml nothor notify output parallel sequential soapcall wait"); - var variable_2 = words("__compressed__ all and any as atmost before beginc++ best between case const counter csv descend encrypt end endc++ endmacro except exclusive expire export extend false few first flat from full function group header heading hole ifblock import in interface joined keep keyed last left limit load local locale lookup macro many maxcount maxlength min skew module named nocase noroot noscan nosort not of only opt or outer overwrite packed partition penalty physicallength pipe quote record relationship repeat return right scan self separator service shared skew skip sql store terminator thor threshold token transform trim true type unicodeorder unsorted validate virtual whole wild within xml xpath"); - var variable_3 = words("ascii big_endian boolean data decimal ebcdic integer pattern qstring real record rule set of string token udecimal unicode unsigned varstring varunicode"); - var builtin = words("checkpoint deprecated failcode failmessage failure global independent onwarning persist priority recovery stored success wait when"); - var blockKeywords = words("catch class do else finally for if switch try while"); - var atoms = words("true false null"); - var hooks = {"#": metaHook}; - var multiLineStrings; - var isOperatorChar = /[+\-*&%=<>!?|\/]/; - - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - var cur = stream.current().toLowerCase(); - if (keyword.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "keyword"; - } else if (variable.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "variable"; - } else if (variable_2.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "variable-2"; - } else if (variable_3.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "variable-3"; - } else if (builtin.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "builtin"; - } else { //Data types are of from KEYWORD## - var i = cur.length - 1; - while(i >= 0 && (!isNaN(cur[i]) || cur[i] == '_')) - --i; - - if (i > 0) { - var cur2 = cur.substr(0, i + 1); - if (variable_3.propertyIsEnumerable(cur2)) { - if (blockKeywords.propertyIsEnumerable(cur2)) curPunc = "newstatement"; - return "variable-3"; - } - } - } - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return null; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - return state.context = new Context(state.indented, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return 0; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; - var closing = firstChar == ctx.type; - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit); - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}" - }; -}); - -CodeMirror.defineMIME("text/x-ecl", "ecl"); - -}); diff --git a/vendor/codemirror/mode/eiffel/eiffel.js b/vendor/codemirror/mode/eiffel/eiffel.js deleted file mode 100644 index c6c3c846..00000000 --- a/vendor/codemirror/mode/eiffel/eiffel.js +++ /dev/null @@ -1,159 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("eiffel", function() { - function wordObj(words) { - var o = {}; - for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true; - return o; - } - var keywords = wordObj([ - 'note', - 'across', - 'when', - 'variant', - 'until', - 'unique', - 'undefine', - 'then', - 'strip', - 'select', - 'retry', - 'rescue', - 'require', - 'rename', - 'reference', - 'redefine', - 'prefix', - 'once', - 'old', - 'obsolete', - 'loop', - 'local', - 'like', - 'is', - 'inspect', - 'infix', - 'include', - 'if', - 'frozen', - 'from', - 'external', - 'export', - 'ensure', - 'end', - 'elseif', - 'else', - 'do', - 'creation', - 'create', - 'check', - 'alias', - 'agent', - 'separate', - 'invariant', - 'inherit', - 'indexing', - 'feature', - 'expanded', - 'deferred', - 'class', - 'Void', - 'True', - 'Result', - 'Precursor', - 'False', - 'Current', - 'create', - 'attached', - 'detachable', - 'as', - 'and', - 'implies', - 'not', - 'or' - ]); - var operators = wordObj([":=", "and then","and", "or","<<",">>"]); - var curPunc; - - function chain(newtok, stream, state) { - state.tokenize.push(newtok); - return newtok(stream, state); - } - - function tokenBase(stream, state) { - curPunc = null; - if (stream.eatSpace()) return null; - var ch = stream.next(); - if (ch == '"'||ch == "'") { - return chain(readQuoted(ch, "string"), stream, state); - } else if (ch == "-"&&stream.eat("-")) { - stream.skipToEnd(); - return "comment"; - } else if (ch == ":"&&stream.eat("=")) { - return "operator"; - } else if (/[0-9]/.test(ch)) { - stream.eatWhile(/[xXbBCc0-9\.]/); - stream.eat(/[\?\!]/); - return "ident"; - } else if (/[a-zA-Z_0-9]/.test(ch)) { - stream.eatWhile(/[a-zA-Z_0-9]/); - stream.eat(/[\?\!]/); - return "ident"; - } else if (/[=+\-\/*^%<>~]/.test(ch)) { - stream.eatWhile(/[=+\-\/*^%<>~]/); - return "operator"; - } else { - return null; - } - } - - function readQuoted(quote, style, unescaped) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && (unescaped || !escaped)) { - state.tokenize.pop(); - break; - } - escaped = !escaped && ch == "%"; - } - return style; - }; - } - - return { - startState: function() { - return {tokenize: [tokenBase]}; - }, - - token: function(stream, state) { - var style = state.tokenize[state.tokenize.length-1](stream, state); - if (style == "ident") { - var word = stream.current(); - style = keywords.propertyIsEnumerable(stream.current()) ? "keyword" - : operators.propertyIsEnumerable(stream.current()) ? "operator" - : /^[A-Z][A-Z_0-9]*$/g.test(word) ? "tag" - : /^0[bB][0-1]+$/g.test(word) ? "number" - : /^0[cC][0-7]+$/g.test(word) ? "number" - : /^0[xX][a-fA-F0-9]+$/g.test(word) ? "number" - : /^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(word) ? "number" - : /^[0-9]+$/g.test(word) ? "number" - : "variable"; - } - return style; - }, - lineComment: "--" - }; -}); - -CodeMirror.defineMIME("text/x-eiffel", "eiffel"); - -}); diff --git a/vendor/codemirror/mode/erlang/erlang.js b/vendor/codemirror/mode/erlang/erlang.js deleted file mode 100644 index 79693fca..00000000 --- a/vendor/codemirror/mode/erlang/erlang.js +++ /dev/null @@ -1,619 +0,0 @@ -/*jshint unused:true, eqnull:true, curly:true, bitwise:true */ -/*jshint undef:true, latedef:true, trailing:true */ -/*global CodeMirror:true */ - -// erlang mode. -// tokenizer -> token types -> CodeMirror styles -// tokenizer maintains a parse stack -// indenter uses the parse stack - -// TODO indenter: -// bit syntax -// old guard/bif/conversion clashes (e.g. "float/1") -// type/spec/opaque - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMIME("text/x-erlang", "erlang"); - -CodeMirror.defineMode("erlang", function(cmCfg) { - "use strict"; - -///////////////////////////////////////////////////////////////////////////// -// constants - - var typeWords = [ - "-type", "-spec", "-export_type", "-opaque"]; - - var keywordWords = [ - "after","begin","catch","case","cond","end","fun","if", - "let","of","query","receive","try","when"]; - - var separatorRE = /[\->,;]/; - var separatorWords = [ - "->",";",","]; - - var operatorAtomWords = [ - "and","andalso","band","bnot","bor","bsl","bsr","bxor", - "div","not","or","orelse","rem","xor"]; - - var operatorSymbolRE = /[\+\-\*\/<>=\|:!]/; - var operatorSymbolWords = [ - "=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"]; - - var openParenRE = /[<\(\[\{]/; - var openParenWords = [ - "<<","(","[","{"]; - - var closeParenRE = /[>\)\]\}]/; - var closeParenWords = [ - "}","]",")",">>"]; - - var guardWords = [ - "is_atom","is_binary","is_bitstring","is_boolean","is_float", - "is_function","is_integer","is_list","is_number","is_pid", - "is_port","is_record","is_reference","is_tuple", - "atom","binary","bitstring","boolean","function","integer","list", - "number","pid","port","record","reference","tuple"]; - - var bifWords = [ - "abs","adler32","adler32_combine","alive","apply","atom_to_binary", - "atom_to_list","binary_to_atom","binary_to_existing_atom", - "binary_to_list","binary_to_term","bit_size","bitstring_to_list", - "byte_size","check_process_code","contact_binary","crc32", - "crc32_combine","date","decode_packet","delete_module", - "disconnect_node","element","erase","exit","float","float_to_list", - "garbage_collect","get","get_keys","group_leader","halt","hd", - "integer_to_list","internal_bif","iolist_size","iolist_to_binary", - "is_alive","is_atom","is_binary","is_bitstring","is_boolean", - "is_float","is_function","is_integer","is_list","is_number","is_pid", - "is_port","is_process_alive","is_record","is_reference","is_tuple", - "length","link","list_to_atom","list_to_binary","list_to_bitstring", - "list_to_existing_atom","list_to_float","list_to_integer", - "list_to_pid","list_to_tuple","load_module","make_ref","module_loaded", - "monitor_node","node","node_link","node_unlink","nodes","notalive", - "now","open_port","pid_to_list","port_close","port_command", - "port_connect","port_control","pre_loaded","process_flag", - "process_info","processes","purge_module","put","register", - "registered","round","self","setelement","size","spawn","spawn_link", - "spawn_monitor","spawn_opt","split_binary","statistics", - "term_to_binary","time","throw","tl","trunc","tuple_size", - "tuple_to_list","unlink","unregister","whereis"]; - -// upper case: [A-Z] [Ø-Þ] [À-Ö] -// lower case: [a-z] [ß-ö] [ø-ÿ] - var anumRE = /[\w@Ø-ÞÀ-Öß-öø-ÿ]/; - var escapesRE = - /[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/; - -///////////////////////////////////////////////////////////////////////////// -// tokenizer - - function tokenizer(stream,state) { - // in multi-line string - if (state.in_string) { - state.in_string = (!doubleQuote(stream)); - return rval(state,stream,"string"); - } - - // in multi-line atom - if (state.in_atom) { - state.in_atom = (!singleQuote(stream)); - return rval(state,stream,"atom"); - } - - // whitespace - if (stream.eatSpace()) { - return rval(state,stream,"whitespace"); - } - - // attributes and type specs - if (!peekToken(state) && - stream.match(/-\s*[a-zß-öø-ÿ][\wØ-ÞÀ-Öß-öø-ÿ]*/)) { - if (is_member(stream.current(),typeWords)) { - return rval(state,stream,"type"); - }else{ - return rval(state,stream,"attribute"); - } - } - - var ch = stream.next(); - - // comment - if (ch == '%') { - stream.skipToEnd(); - return rval(state,stream,"comment"); - } - - // colon - if (ch == ":") { - return rval(state,stream,"colon"); - } - - // macro - if (ch == '?') { - stream.eatSpace(); - stream.eatWhile(anumRE); - return rval(state,stream,"macro"); - } - - // record - if (ch == "#") { - stream.eatSpace(); - stream.eatWhile(anumRE); - return rval(state,stream,"record"); - } - - // dollar escape - if (ch == "$") { - if (stream.next() == "\\" && !stream.match(escapesRE)) { - return rval(state,stream,"error"); - } - return rval(state,stream,"number"); - } - - // dot - if (ch == ".") { - return rval(state,stream,"dot"); - } - - // quoted atom - if (ch == '\'') { - if (!(state.in_atom = (!singleQuote(stream)))) { - if (stream.match(/\s*\/\s*[0-9]/,false)) { - stream.match(/\s*\/\s*[0-9]/,true); - return rval(state,stream,"fun"); // 'f'/0 style fun - } - if (stream.match(/\s*\(/,false) || stream.match(/\s*:/,false)) { - return rval(state,stream,"function"); - } - } - return rval(state,stream,"atom"); - } - - // string - if (ch == '"') { - state.in_string = (!doubleQuote(stream)); - return rval(state,stream,"string"); - } - - // variable - if (/[A-Z_Ø-ÞÀ-Ö]/.test(ch)) { - stream.eatWhile(anumRE); - return rval(state,stream,"variable"); - } - - // atom/keyword/BIF/function - if (/[a-z_ß-öø-ÿ]/.test(ch)) { - stream.eatWhile(anumRE); - - if (stream.match(/\s*\/\s*[0-9]/,false)) { - stream.match(/\s*\/\s*[0-9]/,true); - return rval(state,stream,"fun"); // f/0 style fun - } - - var w = stream.current(); - - if (is_member(w,keywordWords)) { - return rval(state,stream,"keyword"); - }else if (is_member(w,operatorAtomWords)) { - return rval(state,stream,"operator"); - }else if (stream.match(/\s*\(/,false)) { - // 'put' and 'erlang:put' are bifs, 'foo:put' is not - if (is_member(w,bifWords) && - ((peekToken(state).token != ":") || - (peekToken(state,2).token == "erlang"))) { - return rval(state,stream,"builtin"); - }else if (is_member(w,guardWords)) { - return rval(state,stream,"guard"); - }else{ - return rval(state,stream,"function"); - } - }else if (is_member(w,operatorAtomWords)) { - return rval(state,stream,"operator"); - }else if (lookahead(stream) == ":") { - if (w == "erlang") { - return rval(state,stream,"builtin"); - } else { - return rval(state,stream,"function"); - } - }else if (is_member(w,["true","false"])) { - return rval(state,stream,"boolean"); - }else if (is_member(w,["true","false"])) { - return rval(state,stream,"boolean"); - }else{ - return rval(state,stream,"atom"); - } - } - - // number - var digitRE = /[0-9]/; - var radixRE = /[0-9a-zA-Z]/; // 36#zZ style int - if (digitRE.test(ch)) { - stream.eatWhile(digitRE); - if (stream.eat('#')) { // 36#aZ style integer - if (!stream.eatWhile(radixRE)) { - stream.backUp(1); //"36#" - syntax error - } - } else if (stream.eat('.')) { // float - if (!stream.eatWhile(digitRE)) { - stream.backUp(1); // "3." - probably end of function - } else { - if (stream.eat(/[eE]/)) { // float with exponent - if (stream.eat(/[-+]/)) { - if (!stream.eatWhile(digitRE)) { - stream.backUp(2); // "2e-" - syntax error - } - } else { - if (!stream.eatWhile(digitRE)) { - stream.backUp(1); // "2e" - syntax error - } - } - } - } - } - return rval(state,stream,"number"); // normal integer - } - - // open parens - if (nongreedy(stream,openParenRE,openParenWords)) { - return rval(state,stream,"open_paren"); - } - - // close parens - if (nongreedy(stream,closeParenRE,closeParenWords)) { - return rval(state,stream,"close_paren"); - } - - // separators - if (greedy(stream,separatorRE,separatorWords)) { - return rval(state,stream,"separator"); - } - - // operators - if (greedy(stream,operatorSymbolRE,operatorSymbolWords)) { - return rval(state,stream,"operator"); - } - - return rval(state,stream,null); - } - -///////////////////////////////////////////////////////////////////////////// -// utilities - function nongreedy(stream,re,words) { - if (stream.current().length == 1 && re.test(stream.current())) { - stream.backUp(1); - while (re.test(stream.peek())) { - stream.next(); - if (is_member(stream.current(),words)) { - return true; - } - } - stream.backUp(stream.current().length-1); - } - return false; - } - - function greedy(stream,re,words) { - if (stream.current().length == 1 && re.test(stream.current())) { - while (re.test(stream.peek())) { - stream.next(); - } - while (0 < stream.current().length) { - if (is_member(stream.current(),words)) { - return true; - }else{ - stream.backUp(1); - } - } - stream.next(); - } - return false; - } - - function doubleQuote(stream) { - return quote(stream, '"', '\\'); - } - - function singleQuote(stream) { - return quote(stream,'\'','\\'); - } - - function quote(stream,quoteChar,escapeChar) { - while (!stream.eol()) { - var ch = stream.next(); - if (ch == quoteChar) { - return true; - }else if (ch == escapeChar) { - stream.next(); - } - } - return false; - } - - function lookahead(stream) { - var m = stream.match(/([\n\s]+|%[^\n]*\n)*(.)/,false); - return m ? m.pop() : ""; - } - - function is_member(element,list) { - return (-1 < list.indexOf(element)); - } - - function rval(state,stream,type) { - - // parse stack - pushToken(state,realToken(type,stream)); - - // map erlang token type to CodeMirror style class - // erlang -> CodeMirror tag - switch (type) { - case "atom": return "atom"; - case "attribute": return "attribute"; - case "boolean": return "special"; - case "builtin": return "builtin"; - case "close_paren": return null; - case "colon": return null; - case "comment": return "comment"; - case "dot": return null; - case "error": return "error"; - case "fun": return "meta"; - case "function": return "tag"; - case "guard": return "property"; - case "keyword": return "keyword"; - case "macro": return "variable-2"; - case "number": return "number"; - case "open_paren": return null; - case "operator": return "operator"; - case "record": return "bracket"; - case "separator": return null; - case "string": return "string"; - case "type": return "def"; - case "variable": return "variable"; - default: return null; - } - } - - function aToken(tok,col,ind,typ) { - return {token: tok, - column: col, - indent: ind, - type: typ}; - } - - function realToken(type,stream) { - return aToken(stream.current(), - stream.column(), - stream.indentation(), - type); - } - - function fakeToken(type) { - return aToken(type,0,0,type); - } - - function peekToken(state,depth) { - var len = state.tokenStack.length; - var dep = (depth ? depth : 1); - - if (len < dep) { - return false; - }else{ - return state.tokenStack[len-dep]; - } - } - - function pushToken(state,token) { - - if (!(token.type == "comment" || token.type == "whitespace")) { - state.tokenStack = maybe_drop_pre(state.tokenStack,token); - state.tokenStack = maybe_drop_post(state.tokenStack); - } - } - - function maybe_drop_pre(s,token) { - var last = s.length-1; - - if (0 < last && s[last].type === "record" && token.type === "dot") { - s.pop(); - }else if (0 < last && s[last].type === "group") { - s.pop(); - s.push(token); - }else{ - s.push(token); - } - return s; - } - - function maybe_drop_post(s) { - var last = s.length-1; - - if (s[last].type === "dot") { - return []; - } - if (s[last].type === "fun" && s[last-1].token === "fun") { - return s.slice(0,last-1); - } - switch (s[s.length-1].token) { - case "}": return d(s,{g:["{"]}); - case "]": return d(s,{i:["["]}); - case ")": return d(s,{i:["("]}); - case ">>": return d(s,{i:["<<"]}); - case "end": return d(s,{i:["begin","case","fun","if","receive","try"]}); - case ",": return d(s,{e:["begin","try","when","->", - ",","(","[","{","<<"]}); - case "->": return d(s,{r:["when"], - m:["try","if","case","receive"]}); - case ";": return d(s,{E:["case","fun","if","receive","try","when"]}); - case "catch":return d(s,{e:["try"]}); - case "of": return d(s,{e:["case"]}); - case "after":return d(s,{e:["receive","try"]}); - default: return s; - } - } - - function d(stack,tt) { - // stack is a stack of Token objects. - // tt is an object; {type:tokens} - // type is a char, tokens is a list of token strings. - // The function returns (possibly truncated) stack. - // It will descend the stack, looking for a Token such that Token.token - // is a member of tokens. If it does not find that, it will normally (but - // see "E" below) return stack. If it does find a match, it will remove - // all the Tokens between the top and the matched Token. - // If type is "m", that is all it does. - // If type is "i", it will also remove the matched Token and the top Token. - // If type is "g", like "i", but add a fake "group" token at the top. - // If type is "r", it will remove the matched Token, but not the top Token. - // If type is "e", it will keep the matched Token but not the top Token. - // If type is "E", it behaves as for type "e", except if there is no match, - // in which case it will return an empty stack. - - for (var type in tt) { - var len = stack.length-1; - var tokens = tt[type]; - for (var i = len-1; -1 < i ; i--) { - if (is_member(stack[i].token,tokens)) { - var ss = stack.slice(0,i); - switch (type) { - case "m": return ss.concat(stack[i]).concat(stack[len]); - case "r": return ss.concat(stack[len]); - case "i": return ss; - case "g": return ss.concat(fakeToken("group")); - case "E": return ss.concat(stack[i]); - case "e": return ss.concat(stack[i]); - } - } - } - } - return (type == "E" ? [] : stack); - } - -///////////////////////////////////////////////////////////////////////////// -// indenter - - function indenter(state,textAfter) { - var t; - var unit = cmCfg.indentUnit; - var wordAfter = wordafter(textAfter); - var currT = peekToken(state,1); - var prevT = peekToken(state,2); - - if (state.in_string || state.in_atom) { - return CodeMirror.Pass; - }else if (!prevT) { - return 0; - }else if (currT.token == "when") { - return currT.column+unit; - }else if (wordAfter === "when" && prevT.type === "function") { - return prevT.indent+unit; - }else if (wordAfter === "(" && currT.token === "fun") { - return currT.column+3; - }else if (wordAfter === "catch" && (t = getToken(state,["try"]))) { - return t.column; - }else if (is_member(wordAfter,["end","after","of"])) { - t = getToken(state,["begin","case","fun","if","receive","try"]); - return t ? t.column : CodeMirror.Pass; - }else if (is_member(wordAfter,closeParenWords)) { - t = getToken(state,openParenWords); - return t ? t.column : CodeMirror.Pass; - }else if (is_member(currT.token,[",","|","||"]) || - is_member(wordAfter,[",","|","||"])) { - t = postcommaToken(state); - return t ? t.column+t.token.length : unit; - }else if (currT.token == "->") { - if (is_member(prevT.token, ["receive","case","if","try"])) { - return prevT.column+unit+unit; - }else{ - return prevT.column+unit; - } - }else if (is_member(currT.token,openParenWords)) { - return currT.column+currT.token.length; - }else{ - t = defaultToken(state); - return truthy(t) ? t.column+unit : 0; - } - } - - function wordafter(str) { - var m = str.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/); - - return truthy(m) && (m.index === 0) ? m[0] : ""; - } - - function postcommaToken(state) { - var objs = state.tokenStack.slice(0,-1); - var i = getTokenIndex(objs,"type",["open_paren"]); - - return truthy(objs[i]) ? objs[i] : false; - } - - function defaultToken(state) { - var objs = state.tokenStack; - var stop = getTokenIndex(objs,"type",["open_paren","separator","keyword"]); - var oper = getTokenIndex(objs,"type",["operator"]); - - if (truthy(stop) && truthy(oper) && stop < oper) { - return objs[stop+1]; - } else if (truthy(stop)) { - return objs[stop]; - } else { - return false; - } - } - - function getToken(state,tokens) { - var objs = state.tokenStack; - var i = getTokenIndex(objs,"token",tokens); - - return truthy(objs[i]) ? objs[i] : false; - } - - function getTokenIndex(objs,propname,propvals) { - - for (var i = objs.length-1; -1 < i ; i--) { - if (is_member(objs[i][propname],propvals)) { - return i; - } - } - return false; - } - - function truthy(x) { - return (x !== false) && (x != null); - } - -///////////////////////////////////////////////////////////////////////////// -// this object defines the mode - - return { - startState: - function() { - return {tokenStack: [], - in_string: false, - in_atom: false}; - }, - - token: - function(stream, state) { - return tokenizer(stream, state); - }, - - indent: - function(state, textAfter) { - return indenter(state,textAfter); - }, - - lineComment: "%" - }; -}); - -}); diff --git a/vendor/codemirror/mode/fortran/fortran.js b/vendor/codemirror/mode/fortran/fortran.js deleted file mode 100644 index 58dac127..00000000 --- a/vendor/codemirror/mode/fortran/fortran.js +++ /dev/null @@ -1,185 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("fortran", function() { - function words(array) { - var keys = {}; - for (var i = 0; i < array.length; ++i) { - keys[array[i]] = true; - } - return keys; - } - - var keywords = words([ - "abstract", "accept", "allocatable", "allocate", - "array", "assign", "asynchronous", "backspace", - "bind", "block", "byte", "call", "case", - "class", "close", "common", "contains", - "continue", "cycle", "data", "deallocate", - "decode", "deferred", "dimension", "do", - "elemental", "else", "encode", "end", - "endif", "entry", "enumerator", "equivalence", - "exit", "external", "extrinsic", "final", - "forall", "format", "function", "generic", - "go", "goto", "if", "implicit", "import", "include", - "inquire", "intent", "interface", "intrinsic", - "module", "namelist", "non_intrinsic", - "non_overridable", "none", "nopass", - "nullify", "open", "optional", "options", - "parameter", "pass", "pause", "pointer", - "print", "private", "program", "protected", - "public", "pure", "read", "recursive", "result", - "return", "rewind", "save", "select", "sequence", - "stop", "subroutine", "target", "then", "to", "type", - "use", "value", "volatile", "where", "while", - "write"]); - var builtins = words(["abort", "abs", "access", "achar", "acos", - "adjustl", "adjustr", "aimag", "aint", "alarm", - "all", "allocated", "alog", "amax", "amin", - "amod", "and", "anint", "any", "asin", - "associated", "atan", "besj", "besjn", "besy", - "besyn", "bit_size", "btest", "cabs", "ccos", - "ceiling", "cexp", "char", "chdir", "chmod", - "clog", "cmplx", "command_argument_count", - "complex", "conjg", "cos", "cosh", "count", - "cpu_time", "cshift", "csin", "csqrt", "ctime", - "c_funloc", "c_loc", "c_associated", "c_null_ptr", - "c_null_funptr", "c_f_pointer", "c_null_char", - "c_alert", "c_backspace", "c_form_feed", - "c_new_line", "c_carriage_return", - "c_horizontal_tab", "c_vertical_tab", "dabs", - "dacos", "dasin", "datan", "date_and_time", - "dbesj", "dbesj", "dbesjn", "dbesy", "dbesy", - "dbesyn", "dble", "dcos", "dcosh", "ddim", "derf", - "derfc", "dexp", "digits", "dim", "dint", "dlog", - "dlog", "dmax", "dmin", "dmod", "dnint", - "dot_product", "dprod", "dsign", "dsinh", - "dsin", "dsqrt", "dtanh", "dtan", "dtime", - "eoshift", "epsilon", "erf", "erfc", "etime", - "exit", "exp", "exponent", "extends_type_of", - "fdate", "fget", "fgetc", "float", "floor", - "flush", "fnum", "fputc", "fput", "fraction", - "fseek", "fstat", "ftell", "gerror", "getarg", - "get_command", "get_command_argument", - "get_environment_variable", "getcwd", - "getenv", "getgid", "getlog", "getpid", - "getuid", "gmtime", "hostnm", "huge", "iabs", - "iachar", "iand", "iargc", "ibclr", "ibits", - "ibset", "ichar", "idate", "idim", "idint", - "idnint", "ieor", "ierrno", "ifix", "imag", - "imagpart", "index", "int", "ior", "irand", - "isatty", "ishft", "ishftc", "isign", - "iso_c_binding", "is_iostat_end", "is_iostat_eor", - "itime", "kill", "kind", "lbound", "len", "len_trim", - "lge", "lgt", "link", "lle", "llt", "lnblnk", "loc", - "log", "logical", "long", "lshift", "lstat", "ltime", - "matmul", "max", "maxexponent", "maxloc", "maxval", - "mclock", "merge", "move_alloc", "min", "minexponent", - "minloc", "minval", "mod", "modulo", "mvbits", - "nearest", "new_line", "nint", "not", "or", "pack", - "perror", "precision", "present", "product", "radix", - "rand", "random_number", "random_seed", "range", - "real", "realpart", "rename", "repeat", "reshape", - "rrspacing", "rshift", "same_type_as", "scale", - "scan", "second", "selected_int_kind", - "selected_real_kind", "set_exponent", "shape", - "short", "sign", "signal", "sinh", "sin", "sleep", - "sngl", "spacing", "spread", "sqrt", "srand", "stat", - "sum", "symlnk", "system", "system_clock", "tan", - "tanh", "time", "tiny", "transfer", "transpose", - "trim", "ttynam", "ubound", "umask", "unlink", - "unpack", "verify", "xor", "zabs", "zcos", "zexp", - "zlog", "zsin", "zsqrt"]); - - var dataTypes = words(["c_bool", "c_char", "c_double", "c_double_complex", - "c_float", "c_float_complex", "c_funptr", "c_int", - "c_int16_t", "c_int32_t", "c_int64_t", "c_int8_t", - "c_int_fast16_t", "c_int_fast32_t", "c_int_fast64_t", - "c_int_fast8_t", "c_int_least16_t", "c_int_least32_t", - "c_int_least64_t", "c_int_least8_t", "c_intmax_t", - "c_intptr_t", "c_long", "c_long_double", - "c_long_double_complex", "c_long_long", "c_ptr", - "c_short", "c_signed_char", "c_size_t", "character", - "complex", "double", "integer", "logical", "real"]); - var isOperatorChar = /[+\-*&=<>\/\:]/; - var litOperator = new RegExp("(\.and\.|\.or\.|\.eq\.|\.lt\.|\.le\.|\.gt\.|\.ge\.|\.ne\.|\.not\.|\.eqv\.|\.neqv\.)", "i"); - - function tokenBase(stream, state) { - - if (stream.match(litOperator)){ - return 'operator'; - } - - var ch = stream.next(); - if (ch == "!") { - stream.skipToEnd(); - return "comment"; - } - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\[\]\(\),]/.test(ch)) { - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - var word = stream.current().toLowerCase(); - - if (keywords.hasOwnProperty(word)){ - return 'keyword'; - } - if (builtins.hasOwnProperty(word) || dataTypes.hasOwnProperty(word)) { - return 'builtin'; - } - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) { - end = true; - break; - } - escaped = !escaped && next == "\\"; - } - if (end || !escaped) state.tokenize = null; - return "string"; - }; - } - - // Interface - - return { - startState: function() { - return {tokenize: null}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - return style; - } - }; -}); - -CodeMirror.defineMIME("text/x-fortran", "fortran"); - -}); diff --git a/vendor/codemirror/mode/gas/gas.js b/vendor/codemirror/mode/gas/gas.js deleted file mode 100644 index ba5f195a..00000000 --- a/vendor/codemirror/mode/gas/gas.js +++ /dev/null @@ -1,342 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("gas", function(_config, parserConfig) { - 'use strict'; - - // If an architecture is specified, its initialization function may - // populate this array with custom parsing functions which will be - // tried in the event that the standard functions do not find a match. - var custom = []; - - // The symbol used to start a line comment changes based on the target - // architecture. - // If no architecture is pased in "parserConfig" then only multiline - // comments will have syntax support. - var lineCommentStartSymbol = ""; - - // These directives are architecture independent. - // Machine specific directives should go in their respective - // architecture initialization function. - // Reference: - // http://sourceware.org/binutils/docs/as/Pseudo-Ops.html#Pseudo-Ops - var directives = { - ".abort" : "builtin", - ".align" : "builtin", - ".altmacro" : "builtin", - ".ascii" : "builtin", - ".asciz" : "builtin", - ".balign" : "builtin", - ".balignw" : "builtin", - ".balignl" : "builtin", - ".bundle_align_mode" : "builtin", - ".bundle_lock" : "builtin", - ".bundle_unlock" : "builtin", - ".byte" : "builtin", - ".cfi_startproc" : "builtin", - ".comm" : "builtin", - ".data" : "builtin", - ".def" : "builtin", - ".desc" : "builtin", - ".dim" : "builtin", - ".double" : "builtin", - ".eject" : "builtin", - ".else" : "builtin", - ".elseif" : "builtin", - ".end" : "builtin", - ".endef" : "builtin", - ".endfunc" : "builtin", - ".endif" : "builtin", - ".equ" : "builtin", - ".equiv" : "builtin", - ".eqv" : "builtin", - ".err" : "builtin", - ".error" : "builtin", - ".exitm" : "builtin", - ".extern" : "builtin", - ".fail" : "builtin", - ".file" : "builtin", - ".fill" : "builtin", - ".float" : "builtin", - ".func" : "builtin", - ".global" : "builtin", - ".gnu_attribute" : "builtin", - ".hidden" : "builtin", - ".hword" : "builtin", - ".ident" : "builtin", - ".if" : "builtin", - ".incbin" : "builtin", - ".include" : "builtin", - ".int" : "builtin", - ".internal" : "builtin", - ".irp" : "builtin", - ".irpc" : "builtin", - ".lcomm" : "builtin", - ".lflags" : "builtin", - ".line" : "builtin", - ".linkonce" : "builtin", - ".list" : "builtin", - ".ln" : "builtin", - ".loc" : "builtin", - ".loc_mark_labels" : "builtin", - ".local" : "builtin", - ".long" : "builtin", - ".macro" : "builtin", - ".mri" : "builtin", - ".noaltmacro" : "builtin", - ".nolist" : "builtin", - ".octa" : "builtin", - ".offset" : "builtin", - ".org" : "builtin", - ".p2align" : "builtin", - ".popsection" : "builtin", - ".previous" : "builtin", - ".print" : "builtin", - ".protected" : "builtin", - ".psize" : "builtin", - ".purgem" : "builtin", - ".pushsection" : "builtin", - ".quad" : "builtin", - ".reloc" : "builtin", - ".rept" : "builtin", - ".sbttl" : "builtin", - ".scl" : "builtin", - ".section" : "builtin", - ".set" : "builtin", - ".short" : "builtin", - ".single" : "builtin", - ".size" : "builtin", - ".skip" : "builtin", - ".sleb128" : "builtin", - ".space" : "builtin", - ".stab" : "builtin", - ".string" : "builtin", - ".struct" : "builtin", - ".subsection" : "builtin", - ".symver" : "builtin", - ".tag" : "builtin", - ".text" : "builtin", - ".title" : "builtin", - ".type" : "builtin", - ".uleb128" : "builtin", - ".val" : "builtin", - ".version" : "builtin", - ".vtable_entry" : "builtin", - ".vtable_inherit" : "builtin", - ".warning" : "builtin", - ".weak" : "builtin", - ".weakref" : "builtin", - ".word" : "builtin" - }; - - var registers = {}; - - function x86(_parserConfig) { - lineCommentStartSymbol = "#"; - - registers.ax = "variable"; - registers.eax = "variable-2"; - registers.rax = "variable-3"; - - registers.bx = "variable"; - registers.ebx = "variable-2"; - registers.rbx = "variable-3"; - - registers.cx = "variable"; - registers.ecx = "variable-2"; - registers.rcx = "variable-3"; - - registers.dx = "variable"; - registers.edx = "variable-2"; - registers.rdx = "variable-3"; - - registers.si = "variable"; - registers.esi = "variable-2"; - registers.rsi = "variable-3"; - - registers.di = "variable"; - registers.edi = "variable-2"; - registers.rdi = "variable-3"; - - registers.sp = "variable"; - registers.esp = "variable-2"; - registers.rsp = "variable-3"; - - registers.bp = "variable"; - registers.ebp = "variable-2"; - registers.rbp = "variable-3"; - - registers.ip = "variable"; - registers.eip = "variable-2"; - registers.rip = "variable-3"; - - registers.cs = "keyword"; - registers.ds = "keyword"; - registers.ss = "keyword"; - registers.es = "keyword"; - registers.fs = "keyword"; - registers.gs = "keyword"; - } - - function armv6(_parserConfig) { - // Reference: - // http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf - // http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf - lineCommentStartSymbol = "@"; - directives.syntax = "builtin"; - - registers.r0 = "variable"; - registers.r1 = "variable"; - registers.r2 = "variable"; - registers.r3 = "variable"; - registers.r4 = "variable"; - registers.r5 = "variable"; - registers.r6 = "variable"; - registers.r7 = "variable"; - registers.r8 = "variable"; - registers.r9 = "variable"; - registers.r10 = "variable"; - registers.r11 = "variable"; - registers.r12 = "variable"; - - registers.sp = "variable-2"; - registers.lr = "variable-2"; - registers.pc = "variable-2"; - registers.r13 = registers.sp; - registers.r14 = registers.lr; - registers.r15 = registers.pc; - - custom.push(function(ch, stream) { - if (ch === '#') { - stream.eatWhile(/\w/); - return "number"; - } - }); - } - - var arch = (parserConfig.architecture || "x86").toLowerCase(); - if (arch === "x86") { - x86(parserConfig); - } else if (arch === "arm" || arch === "armv6") { - armv6(parserConfig); - } - - function nextUntilUnescaped(stream, end) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (next === end && !escaped) { - return false; - } - escaped = !escaped && next === "\\"; - } - return escaped; - } - - function clikeComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (ch === "/" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch === "*"); - } - return "comment"; - } - - return { - startState: function() { - return { - tokenize: null - }; - }, - - token: function(stream, state) { - if (state.tokenize) { - return state.tokenize(stream, state); - } - - if (stream.eatSpace()) { - return null; - } - - var style, cur, ch = stream.next(); - - if (ch === "/") { - if (stream.eat("*")) { - state.tokenize = clikeComment; - return clikeComment(stream, state); - } - } - - if (ch === lineCommentStartSymbol) { - stream.skipToEnd(); - return "comment"; - } - - if (ch === '"') { - nextUntilUnescaped(stream, '"'); - return "string"; - } - - if (ch === '.') { - stream.eatWhile(/\w/); - cur = stream.current().toLowerCase(); - style = directives[cur]; - return style || null; - } - - if (ch === '=') { - stream.eatWhile(/\w/); - return "tag"; - } - - if (ch === '{') { - return "braket"; - } - - if (ch === '}') { - return "braket"; - } - - if (/\d/.test(ch)) { - if (ch === "0" && stream.eat("x")) { - stream.eatWhile(/[0-9a-fA-F]/); - return "number"; - } - stream.eatWhile(/\d/); - return "number"; - } - - if (/\w/.test(ch)) { - stream.eatWhile(/\w/); - if (stream.eat(":")) { - return 'tag'; - } - cur = stream.current().toLowerCase(); - style = registers[cur]; - return style || null; - } - - for (var i = 0; i < custom.length; i++) { - style = custom[i](ch, stream, state); - if (style) { - return style; - } - } - }, - - lineComment: lineCommentStartSymbol, - blockCommentStart: "/*", - blockCommentEnd: "*/" - }; -}); - -}); diff --git a/vendor/codemirror/mode/gfm/gfm.js b/vendor/codemirror/mode/gfm/gfm.js deleted file mode 100644 index 8fcc9f70..00000000 --- a/vendor/codemirror/mode/gfm/gfm.js +++ /dev/null @@ -1,114 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../markdown/markdown"), require("../../addon/mode/overlay")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../markdown/markdown", "../../addon/mode/overlay"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("gfm", function(config, modeConfig) { - var codeDepth = 0; - function blankLine(state) { - state.code = false; - return null; - } - var gfmOverlay = { - startState: function() { - return { - code: false, - codeBlock: false, - ateSpace: false - }; - }, - copyState: function(s) { - return { - code: s.code, - codeBlock: s.codeBlock, - ateSpace: s.ateSpace - }; - }, - token: function(stream, state) { - // Hack to prevent formatting override inside code blocks (block and inline) - if (state.codeBlock) { - if (stream.match(/^```/)) { - state.codeBlock = false; - return null; - } - stream.skipToEnd(); - return null; - } - if (stream.sol()) { - state.code = false; - } - if (stream.sol() && stream.match(/^```/)) { - stream.skipToEnd(); - state.codeBlock = true; - return null; - } - // If this block is changed, it may need to be updated in Markdown mode - if (stream.peek() === '`') { - stream.next(); - var before = stream.pos; - stream.eatWhile('`'); - var difference = 1 + stream.pos - before; - if (!state.code) { - codeDepth = difference; - state.code = true; - } else { - if (difference === codeDepth) { // Must be exact - state.code = false; - } - } - return null; - } else if (state.code) { - stream.next(); - return null; - } - // Check if space. If so, links can be formatted later on - if (stream.eatSpace()) { - state.ateSpace = true; - return null; - } - if (stream.sol() || state.ateSpace) { - state.ateSpace = false; - if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/)) { - // User/Project@SHA - // User@SHA - // SHA - return "link"; - } else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) { - // User/Project#Num - // User#Num - // #Num - return "link"; - } - } - if (stream.match(/^((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i) && - stream.string.slice(stream.start - 2, stream.start) != "](") { - // URLs - // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls - // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine - return "link"; - } - stream.next(); - return null; - }, - blankLine: blankLine - }; - - var markdownConfig = { - underscoresBreakWords: false, - taskLists: true, - fencedCodeBlocks: true - }; - for (var attr in modeConfig) { - markdownConfig[attr] = modeConfig[attr]; - } - markdownConfig.name = "markdown"; - CodeMirror.defineMIME("gfmBase", markdownConfig); - return CodeMirror.overlayMode(CodeMirror.getMode(config, "gfmBase"), gfmOverlay); -}, "markdown"); - -}); diff --git a/vendor/codemirror/mode/gfm/test.js b/vendor/codemirror/mode/gfm/test.js deleted file mode 100644 index e5c3486e..00000000 --- a/vendor/codemirror/mode/gfm/test.js +++ /dev/null @@ -1,129 +0,0 @@ -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, "gfm"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "gfm", highlightFormatting: true}); - function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } - - FT("codeBackticks", - "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); - - FT("doubleBackticks", - "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); - - FT("codeBlock", - "[comment&formatting&formatting-code-block ```css]", - "[tag foo]", - "[comment&formatting&formatting-code-block ```]"); - - FT("taskList", - "[variable-2&formatting&formatting-list&formatting-list-ul - ][meta&formatting&formatting-task [ ]]][variable-2 foo]", - "[variable-2&formatting&formatting-list&formatting-list-ul - ][property&formatting&formatting-task [x]]][variable-2 foo]"); - - MT("emInWordAsterisk", - "foo[em *bar*]hello"); - - MT("emInWordUnderscore", - "foo_bar_hello"); - - MT("emStrongUnderscore", - "[strong __][em&strong _foo__][em _] bar"); - - MT("fencedCodeBlocks", - "[comment ```]", - "[comment foo]", - "", - "[comment ```]", - "bar"); - - MT("fencedCodeBlockModeSwitching", - "[comment ```javascript]", - "[variable foo]", - "", - "[comment ```]", - "bar"); - - MT("taskListAsterisk", - "[variable-2 * []] foo]", // Invalid; must have space or x between [] - "[variable-2 * [ ]]bar]", // Invalid; must have space after ] - "[variable-2 * [x]]hello]", // Invalid; must have space after ] - "[variable-2 * ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links - " [variable-3 * ][property [x]]][variable-3 foo]"); // Valid; can be nested - - MT("taskListPlus", - "[variable-2 + []] foo]", // Invalid; must have space or x between [] - "[variable-2 + [ ]]bar]", // Invalid; must have space after ] - "[variable-2 + [x]]hello]", // Invalid; must have space after ] - "[variable-2 + ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links - " [variable-3 + ][property [x]]][variable-3 foo]"); // Valid; can be nested - - MT("taskListDash", - "[variable-2 - []] foo]", // Invalid; must have space or x between [] - "[variable-2 - [ ]]bar]", // Invalid; must have space after ] - "[variable-2 - [x]]hello]", // Invalid; must have space after ] - "[variable-2 - ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links - " [variable-3 - ][property [x]]][variable-3 foo]"); // Valid; can be nested - - MT("taskListNumber", - "[variable-2 1. []] foo]", // Invalid; must have space or x between [] - "[variable-2 2. [ ]]bar]", // Invalid; must have space after ] - "[variable-2 3. [x]]hello]", // Invalid; must have space after ] - "[variable-2 4. ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links - " [variable-3 1. ][property [x]]][variable-3 foo]"); // Valid; can be nested - - MT("SHA", - "foo [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] bar"); - - MT("shortSHA", - "foo [link be6a8cc] bar"); - - MT("tooShortSHA", - "foo be6a8c bar"); - - MT("longSHA", - "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd22 bar"); - - MT("badSHA", - "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cg2 bar"); - - MT("userSHA", - "foo [link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] hello"); - - MT("userProjectSHA", - "foo [link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] world"); - - MT("num", - "foo [link #1] bar"); - - MT("badNum", - "foo #1bar hello"); - - MT("userNum", - "foo [link bar#1] hello"); - - MT("userProjectNum", - "foo [link bar/hello#1] world"); - - MT("vanillaLink", - "foo [link http://www.example.com/] bar"); - - MT("vanillaLinkPunctuation", - "foo [link http://www.example.com/]. bar"); - - MT("vanillaLinkExtension", - "foo [link http://www.example.com/index.html] bar"); - - MT("notALink", - "[comment ```css]", - "[tag foo] {[property color]:[keyword black];}", - "[comment ```][link http://www.example.com/]"); - - MT("notALink", - "[comment ``foo `bar` http://www.example.com/``] hello"); - - MT("notALink", - "[comment `foo]", - "[link http://www.example.com/]", - "[comment `foo]", - "", - "[link http://www.example.com/]"); -})(); diff --git a/vendor/codemirror/mode/gherkin/gherkin.js b/vendor/codemirror/mode/gherkin/gherkin.js deleted file mode 100644 index 41003641..00000000 --- a/vendor/codemirror/mode/gherkin/gherkin.js +++ /dev/null @@ -1,175 +0,0 @@ -/* -Gherkin mode - http://www.cukes.info/ -Report bugs/issues here: https://github.com/marijnh/CodeMirror/issues -*/ - -// Following Objs from Brackets implementation: https://github.com/tregusti/brackets-gherkin/blob/master/main.js -//var Quotes = { -// SINGLE: 1, -// DOUBLE: 2 -//}; - -//var regex = { -// keywords: /(Feature| {2}(Scenario|In order to|As|I)| {4}(Given|When|Then|And))/ -//}; - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("gherkin", function () { - return { - startState: function () { - return { - lineNumber: 0, - tableHeaderLine: false, - allowFeature: true, - allowBackground: false, - allowScenario: false, - allowSteps: false, - allowPlaceholders: false, - allowMultilineArgument: false, - inMultilineString: false, - inMultilineTable: false, - inKeywordLine: false - }; - }, - token: function (stream, state) { - if (stream.sol()) { - state.lineNumber++; - state.inKeywordLine = false; - if (state.inMultilineTable) { - state.tableHeaderLine = false; - if (!stream.match(/\s*\|/, false)) { - state.allowMultilineArgument = false; - state.inMultilineTable = false; - } - } - } - - stream.eatSpace(); - - if (state.allowMultilineArgument) { - - // STRING - if (state.inMultilineString) { - if (stream.match('"""')) { - state.inMultilineString = false; - state.allowMultilineArgument = false; - } else { - stream.match(/.*/); - } - return "string"; - } - - // TABLE - if (state.inMultilineTable) { - if (stream.match(/\|\s*/)) { - return "bracket"; - } else { - stream.match(/[^\|]*/); - return state.tableHeaderLine ? "header" : "string"; - } - } - - // DETECT START - if (stream.match('"""')) { - // String - state.inMultilineString = true; - return "string"; - } else if (stream.match("|")) { - // Table - state.inMultilineTable = true; - state.tableHeaderLine = true; - return "bracket"; - } - - } - - // LINE COMMENT - if (stream.match(/#.*/)) { - return "comment"; - - // TAG - } else if (!state.inKeywordLine && stream.match(/@\S+/)) { - return "tag"; - - // FEATURE - } else if (!state.inKeywordLine && state.allowFeature && stream.match(/(機能|功能|フィーチャ|기능|โครงหลัก|ความสามารถ|ความต้องการทางธุรกิจ|ಹೆಚ್ಚಳ|గుణము|ਮੁਹਾਂਦਰਾ|ਨਕਸ਼ ਨੁਹਾਰ|ਖਾਸੀਅਤ|रूप लेख|وِیژگی|خاصية|תכונה|Функціонал|Функция|Функционалност|Функционал|Үзенчәлеклелек|Свойство|Особина|Мөмкинлек|Могућност|Λειτουργία|Δυνατότητα|Właściwość|Vlastnosť|Trajto|Tính năng|Savybė|Pretty much|Požiadavka|Požadavek|Potrzeba biznesowa|Özellik|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Hwæt|Hwaet|Funzionalità|Funktionalitéit|Funktionalität|Funkcja|Funkcionalnost|Funkcionalitāte|Funkcia|Fungsi|Functionaliteit|Funcționalitate|Funcţionalitate|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Fīča|Feature|Eiginleiki|Egenskap|Egenskab|Característica|Caracteristica|Business Need|Aspekt|Arwedd|Ahoy matey!|Ability):/)) { - state.allowScenario = true; - state.allowBackground = true; - state.allowPlaceholders = false; - state.allowSteps = false; - state.allowMultilineArgument = false; - state.inKeywordLine = true; - return "keyword"; - - // BACKGROUND - } else if (!state.inKeywordLine && state.allowBackground && stream.match(/(背景|배경|แนวคิด|ಹಿನ್ನೆಲೆ|నేపథ్యం|ਪਿਛੋਕੜ|पृष्ठभूमि|زمینه|الخلفية|רקע|Тарих|Предыстория|Предистория|Позадина|Передумова|Основа|Контекст|Кереш|Υπόβαθρο|Założenia|Yo\-ho\-ho|Tausta|Taust|Situācija|Rerefons|Pozadina|Pozadie|Pozadí|Osnova|Latar Belakang|Kontext|Konteksts|Kontekstas|Kontekst|Háttér|Hannergrond|Grundlage|Geçmiş|Fundo|Fono|First off|Dis is what went down|Dasar|Contexto|Contexte|Context|Contesto|Cenário de Fundo|Cenario de Fundo|Cefndir|Bối cảnh|Bakgrunnur|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|Ær|Aer|Achtergrond):/)) { - state.allowPlaceholders = false; - state.allowSteps = true; - state.allowBackground = false; - state.allowMultilineArgument = false; - state.inKeywordLine = true; - return "keyword"; - - // SCENARIO OUTLINE - } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景大綱|场景大纲|劇本大綱|剧本大纲|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|시나리오 개요|สรุปเหตุการณ์|โครงสร้างของเหตุการณ์|ವಿವರಣೆ|కథనం|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਟਕਥਾ ਢਾਂਚਾ|परिदृश्य रूपरेखा|سيناريو مخطط|الگوی سناریو|תבנית תרחיש|Сценарийның төзелеше|Сценарий структураси|Структура сценарію|Структура сценария|Структура сценарија|Скица|Рамка на сценарий|Концепт|Περιγραφή Σεναρίου|Wharrimean is|Template Situai|Template Senario|Template Keadaan|Tapausaihio|Szenariogrundriss|Szablon scenariusza|Swa hwær swa|Swa hwaer swa|Struktura scenarija|Structură scenariu|Structura scenariu|Skica|Skenario konsep|Shiver me timbers|Senaryo taslağı|Schema dello scenario|Scenariomall|Scenariomal|Scenario Template|Scenario Outline|Scenario Amlinellol|Scenārijs pēc parauga|Scenarijaus šablonas|Reckon it's like|Raamstsenaarium|Plang vum Szenario|Plan du Scénario|Plan du scénario|Osnova scénáře|Osnova Scenára|Náčrt Scenáru|Náčrt Scénáře|Náčrt Scenára|MISHUN SRSLY|Menggariskan Senario|Lýsing Dæma|Lýsing Atburðarásar|Konturo de la scenaro|Koncept|Khung tình huống|Khung kịch bản|Forgatókönyv vázlat|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esbozo do escenario|Delineação do Cenário|Delineacao do Cenario|All y'all|Abstrakt Scenario|Abstract Scenario):/)) { - state.allowPlaceholders = true; - state.allowSteps = true; - state.allowMultilineArgument = false; - state.inKeywordLine = true; - return "keyword"; - - // EXAMPLES - } else if (state.allowScenario && stream.match(/(例子|例|サンプル|예|ชุดของเหตุการณ์|ชุดของตัวอย่าง|ಉದಾಹರಣೆಗಳು|ఉదాహరణలు|ਉਦਾਹਰਨਾਂ|उदाहरण|نمونه ها|امثلة|דוגמאות|Үрнәкләр|Сценарији|Примеры|Примери|Приклади|Мисоллар|Мисаллар|Σενάρια|Παραδείγματα|You'll wanna|Voorbeelden|Variantai|Tapaukset|Se þe|Se the|Se ðe|Scenarios|Scenariji|Scenarijai|Przykłady|Primjeri|Primeri|Příklady|Príklady|Piemēri|Példák|Pavyzdžiai|Paraugs|Örnekler|Juhtumid|Exemplos|Exemples|Exemple|Exempel|EXAMPLZ|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|Dữ liệu|Dead men tell no tales|Dæmi|Contoh|Cenários|Cenarios|Beispiller|Beispiele|Atburðarásir):/)) { - state.allowPlaceholders = false; - state.allowSteps = true; - state.allowBackground = false; - state.allowMultilineArgument = true; - return "keyword"; - - // SCENARIO - } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景|场景|劇本|剧本|シナリオ|시나리오|เหตุการณ์|ಕಥಾಸಾರಾಂಶ|సన్నివేశం|ਪਟਕਥਾ|परिदृश्य|سيناريو|سناریو|תרחיש|Сценарій|Сценарио|Сценарий|Пример|Σενάριο|Tình huống|The thing of it is|Tapaus|Szenario|Swa|Stsenaarium|Skenario|Situai|Senaryo|Senario|Scenaro|Scenariusz|Scenariu|Scénario|Scenario|Scenarijus|Scenārijs|Scenarij|Scenarie|Scénář|Scenár|Primer|MISHUN|Kịch bản|Keadaan|Heave to|Forgatókönyv|Escenario|Escenari|Cenário|Cenario|Awww, look mate|Atburðarás):/)) { - state.allowPlaceholders = false; - state.allowSteps = true; - state.allowBackground = false; - state.allowMultilineArgument = false; - state.inKeywordLine = true; - return "keyword"; - - // STEPS - } else if (!state.inKeywordLine && state.allowSteps && stream.match(/(那麼|那么|而且|當|当|并且|同時|同时|前提|假设|假設|假定|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|하지만|조건|먼저|만일|만약|단|그리고|그러면|และ |เมื่อ |แต่ |ดังนั้น |กำหนดให้ |ಸ್ಥಿತಿಯನ್ನು |ಮತ್ತು |ನೀಡಿದ |ನಂತರ |ಆದರೆ |మరియు |చెప్పబడినది |కాని |ఈ పరిస్థితిలో |అప్పుడు |ਪਰ |ਤਦ |ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |ਜਦੋਂ |ਅਤੇ |यदि |परन्तु |पर |तब |तदा |तथा |जब |चूंकि |किन्तु |कदा |और |अगर |و |هنگامی |متى |لكن |عندما |ثم |بفرض |با فرض |اما |اذاً |آنگاه |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Һәм |Унда |Тоді |Тогда |То |Также |Та |Пусть |Припустимо, що |Припустимо |Онда |Но |Нехай |Нәтиҗәдә |Лекин |Ләкин |Коли |Когда |Когато |Када |Кад |К тому же |І |И |Задато |Задати |Задате |Если |Допустим |Дано |Дадено |Вә |Ва |Бирок |Әмма |Әйтик |Әгәр |Аммо |Али |Але |Агар |А також |А |Τότε |Όταν |Και |Δεδομένου |Αλλά |Þurh |Þegar |Þa þe |Þá |Þa |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Za předpokladu |Za predpokladu |Youse know when youse got |Youse know like when |Yna |Yeah nah |Y'know |Y |Wun |Wtedy |When y'all |When |Wenn |WEN |wann |Ve |Và |Und |Un |ugeholl |Too right |Thurh |Thì |Then y'all |Then |Tha the |Tha |Tetapi |Tapi |Tak |Tada |Tad |Stel |Soit |Siis |Și |Şi |Si |Sed |Se |Så |Quando |Quand |Quan |Pryd |Potom |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Niin |Nhưng |När |Når |Mutta |Men |Mas |Maka |Majd |Mając |Mais |Maar |mä |Ma |Lorsque |Lorsqu'|Logo |Let go and haul |Kun |Kuid |Kui |Kiedy |Khi |Ketika |Kemudian |Keď |Když |Kaj |Kai |Kada |Kad |Jeżeli |Jeśli |Ja |It's just unbelievable |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y'all |Given |Gitt |Gegeven |Gegeben seien |Gegeben sei |Gdy |Gangway! |Fakat |Étant donnés |Etant donnés |Étant données |Etant données |Étant donnée |Etant donnée |Étant donné |Etant donné |Et |És |Entonces |Entón |Então |Entao |En |Eğer ki |Ef |Eeldades |E |Ðurh |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Diberi |Dengan |Den youse gotta |DEN |De |Dato |Dați fiind |Daţi fiind |Dati fiind |Dati |Date fiind |Date |Data |Dat fiind |Dar |Dann |dann |Dan |Dados |Dado |Dadas |Dada |Ða ðe |Ða |Cuando |Cho |Cando |Când |Cand |Cal |But y'all |But at the end of the day I reckon |BUT |But |Buh |Blimey! |Biết |Bet |Bagi |Aye |awer |Avast! |Atunci |Atesa |Atès |Apabila |Anrhegedig a |Angenommen |And y'all |And |AN |An |an |Amikor |Amennyiben |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Ak |Adott |Ac |Aber |A zároveň |A tiež |A taktiež |A také |A |a |7 |\* )/)) { - state.inStep = true; - state.allowPlaceholders = true; - state.allowMultilineArgument = true; - state.inKeywordLine = true; - return "keyword"; - - // INLINE STRING - } else if (stream.match(/"[^"]*"?/)) { - return "string"; - - // PLACEHOLDER - } else if (state.allowPlaceholders && stream.match(/<[^>]*>?/)) { - return "variable"; - - // Fall through - } else { - stream.next(); - stream.eatWhile(/[^@"<#]/); - return null; - } - } - }; -}); - -CodeMirror.defineMIME("text/x-feature", "gherkin"); - -}); diff --git a/vendor/codemirror/mode/go/go.js b/vendor/codemirror/mode/go/go.js deleted file mode 100644 index 7ba780ea..00000000 --- a/vendor/codemirror/mode/go/go.js +++ /dev/null @@ -1,180 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("go", function(config) { - var indentUnit = config.indentUnit; - - var keywords = { - "break":true, "case":true, "chan":true, "const":true, "continue":true, - "default":true, "defer":true, "else":true, "fallthrough":true, "for":true, - "func":true, "go":true, "goto":true, "if":true, "import":true, - "interface":true, "map":true, "package":true, "range":true, "return":true, - "select":true, "struct":true, "switch":true, "type":true, "var":true, - "bool":true, "byte":true, "complex64":true, "complex128":true, - "float32":true, "float64":true, "int8":true, "int16":true, "int32":true, - "int64":true, "string":true, "uint8":true, "uint16":true, "uint32":true, - "uint64":true, "int":true, "uint":true, "uintptr":true - }; - - var atoms = { - "true":true, "false":true, "iota":true, "nil":true, "append":true, - "cap":true, "close":true, "complex":true, "copy":true, "imag":true, - "len":true, "make":true, "new":true, "panic":true, "print":true, - "println":true, "real":true, "recover":true - }; - - var isOperatorChar = /[+\-*&^%:=<>!|\/]/; - - var curPunc; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'" || ch == "`") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (/[\d\.]/.test(ch)) { - if (ch == ".") { - stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); - } else if (ch == "0") { - stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); - } else { - stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); - } - return "number"; - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) { - if (cur == "case" || cur == "default") curPunc = "case"; - return "keyword"; - } - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || quote == "`")) - state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - return state.context = new Context(state.indented, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: null, - context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), - indented: 0, - startOfLine: true - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - if (ctx.type == "case") ctx.type = "}"; - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment") return style; - if (ctx.align == null) ctx.align = true; - - if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "case") ctx.type = "case"; - else if (curPunc == "}" && ctx.type == "}") ctx = popContext(state); - else if (curPunc == ctx.type) popContext(state); - state.startOfLine = false; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase && state.tokenize != null) return 0; - var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); - if (ctx.type == "case" && /^(?:case|default)\b/.test(textAfter)) { - state.context.type = "}"; - return ctx.indented; - } - var closing = firstChar == ctx.type; - if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}):", - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//" - }; -}); - -CodeMirror.defineMIME("text/x-go", "go"); - -}); diff --git a/vendor/codemirror/mode/groovy/groovy.js b/vendor/codemirror/mode/groovy/groovy.js deleted file mode 100644 index 399452d5..00000000 --- a/vendor/codemirror/mode/groovy/groovy.js +++ /dev/null @@ -1,223 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("groovy", function(config) { - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var keywords = words( - "abstract as assert boolean break byte case catch char class const continue def default " + - "do double else enum extends final finally float for goto if implements import in " + - "instanceof int interface long native new package private protected public return " + - "short static strictfp super switch synchronized threadsafe throw throws transient " + - "try void volatile while"); - var blockKeywords = words("catch class do else finally for if switch try while enum interface def"); - var atoms = words("null true false this"); - - var curPunc; - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - return startString(ch, stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - curPunc = ch; - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - if (stream.eat(/eE/)) { stream.eat(/\+\-/); stream.eatWhile(/\d/); } - return "number"; - } - if (ch == "/") { - if (stream.eat("*")) { - state.tokenize.push(tokenComment); - return tokenComment(stream, state); - } - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - if (expectExpression(state.lastToken)) { - return startString(ch, stream, state); - } - } - if (ch == "-" && stream.eat(">")) { - curPunc = "->"; - return null; - } - if (/[+\-*&%=<>!?|\/~]/.test(ch)) { - stream.eatWhile(/[+\-*&%=<>|~]/); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - if (ch == "@") { stream.eatWhile(/[\w\$_\.]/); return "meta"; } - if (state.lastToken == ".") return "property"; - if (stream.eat(":")) { curPunc = "proplabel"; return "property"; } - var cur = stream.current(); - if (atoms.propertyIsEnumerable(cur)) { return "atom"; } - if (keywords.propertyIsEnumerable(cur)) { - if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; - return "keyword"; - } - return "variable"; - } - tokenBase.isBase = true; - - function startString(quote, stream, state) { - var tripleQuoted = false; - if (quote != "/" && stream.eat(quote)) { - if (stream.eat(quote)) tripleQuoted = true; - else return "string"; - } - function t(stream, state) { - var escaped = false, next, end = !tripleQuoted; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) { - if (!tripleQuoted) { break; } - if (stream.match(quote + quote)) { end = true; break; } - } - if (quote == '"' && next == "$" && !escaped && stream.eat("{")) { - state.tokenize.push(tokenBaseUntilBrace()); - return "string"; - } - escaped = !escaped && next == "\\"; - } - if (end) state.tokenize.pop(); - return "string"; - } - state.tokenize.push(t); - return t(stream, state); - } - - function tokenBaseUntilBrace() { - var depth = 1; - function t(stream, state) { - if (stream.peek() == "}") { - depth--; - if (depth == 0) { - state.tokenize.pop(); - return state.tokenize[state.tokenize.length-1](stream, state); - } - } else if (stream.peek() == "{") { - depth++; - } - return tokenBase(stream, state); - } - t.isBase = true; - return t; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize.pop(); - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function expectExpression(last) { - return !last || last == "operator" || last == "->" || /[\.\[\{\(,;:]/.test(last) || - last == "newstatement" || last == "keyword" || last == "proplabel"; - } - - function Context(indented, column, type, align, prev) { - this.indented = indented; - this.column = column; - this.type = type; - this.align = align; - this.prev = prev; - } - function pushContext(state, col, type) { - return state.context = new Context(state.indented, col, type, null, state.context); - } - function popContext(state) { - var t = state.context.type; - if (t == ")" || t == "]" || t == "}") - state.indented = state.context.indented; - return state.context = state.context.prev; - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: [tokenBase], - context: new Context((basecolumn || 0) - config.indentUnit, 0, "top", false), - indented: 0, - startOfLine: true, - lastToken: null - }; - }, - - token: function(stream, state) { - var ctx = state.context; - if (stream.sol()) { - if (ctx.align == null) ctx.align = false; - state.indented = stream.indentation(); - state.startOfLine = true; - // Automatic semicolon insertion - if (ctx.type == "statement" && !expectExpression(state.lastToken)) { - popContext(state); ctx = state.context; - } - } - if (stream.eatSpace()) return null; - curPunc = null; - var style = state.tokenize[state.tokenize.length-1](stream, state); - if (style == "comment") return style; - if (ctx.align == null) ctx.align = true; - - if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); - // Handle indentation for {x -> \n ... } - else if (curPunc == "->" && ctx.type == "statement" && ctx.prev.type == "}") { - popContext(state); - state.context.align = false; - } - else if (curPunc == "{") pushContext(state, stream.column(), "}"); - else if (curPunc == "[") pushContext(state, stream.column(), "]"); - else if (curPunc == "(") pushContext(state, stream.column(), ")"); - else if (curPunc == "}") { - while (ctx.type == "statement") ctx = popContext(state); - if (ctx.type == "}") ctx = popContext(state); - while (ctx.type == "statement") ctx = popContext(state); - } - else if (curPunc == ctx.type) popContext(state); - else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) - pushContext(state, stream.column(), "statement"); - state.startOfLine = false; - state.lastToken = curPunc || style; - return style; - }, - - indent: function(state, textAfter) { - if (!state.tokenize[state.tokenize.length-1].isBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), ctx = state.context; - if (ctx.type == "statement" && !expectExpression(state.lastToken)) ctx = ctx.prev; - var closing = firstChar == ctx.type; - if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : config.indentUnit); - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indented + (closing ? 0 : config.indentUnit); - }, - - electricChars: "{}", - fold: "brace" - }; -}); - -CodeMirror.defineMIME("text/x-groovy", "groovy"); - -}); diff --git a/vendor/codemirror/mode/haml/haml.js b/vendor/codemirror/mode/haml/haml.js deleted file mode 100644 index 6b205b43..00000000 --- a/vendor/codemirror/mode/haml/haml.js +++ /dev/null @@ -1,161 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -(function() { - "use strict"; - - // full haml mode. This handled embeded ruby and html fragments too - CodeMirror.defineMode("haml", function(config) { - var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"}); - var rubyMode = CodeMirror.getMode(config, "ruby"); - - function rubyInQuote(endQuote) { - return function(stream, state) { - var ch = stream.peek(); - if (ch == endQuote && state.rubyState.tokenize.length == 1) { - // step out of ruby context as it seems to complete processing all the braces - stream.next(); - state.tokenize = html; - return "closeAttributeTag"; - } else { - return ruby(stream, state); - } - }; - } - - function ruby(stream, state) { - if (stream.match("-#")) { - stream.skipToEnd(); - return "comment"; - } - return rubyMode.token(stream, state.rubyState); - } - - function html(stream, state) { - var ch = stream.peek(); - - // handle haml declarations. All declarations that cant be handled here - // will be passed to html mode - if (state.previousToken.style == "comment" ) { - if (state.indented > state.previousToken.indented) { - stream.skipToEnd(); - return "commentLine"; - } - } - - if (state.startOfLine) { - if (ch == "!" && stream.match("!!")) { - stream.skipToEnd(); - return "tag"; - } else if (stream.match(/^%[\w:#\.]+=/)) { - state.tokenize = ruby; - return "hamlTag"; - } else if (stream.match(/^%[\w:]+/)) { - return "hamlTag"; - } else if (ch == "/" ) { - stream.skipToEnd(); - return "comment"; - } - } - - if (state.startOfLine || state.previousToken.style == "hamlTag") { - if ( ch == "#" || ch == ".") { - stream.match(/[\w-#\.]*/); - return "hamlAttribute"; - } - } - - // donot handle --> as valid ruby, make it HTML close comment instead - if (state.startOfLine && !stream.match("-->", false) && (ch == "=" || ch == "-" )) { - state.tokenize = ruby; - return null; - } - - if (state.previousToken.style == "hamlTag" || - state.previousToken.style == "closeAttributeTag" || - state.previousToken.style == "hamlAttribute") { - if (ch == "(") { - state.tokenize = rubyInQuote(")"); - return null; - } else if (ch == "{") { - state.tokenize = rubyInQuote("}"); - return null; - } - } - - return htmlMode.token(stream, state.htmlState); - } - - return { - // default to html mode - startState: function() { - var htmlState = htmlMode.startState(); - var rubyState = rubyMode.startState(); - return { - htmlState: htmlState, - rubyState: rubyState, - indented: 0, - previousToken: { style: null, indented: 0}, - tokenize: html - }; - }, - - copyState: function(state) { - return { - htmlState : CodeMirror.copyState(htmlMode, state.htmlState), - rubyState: CodeMirror.copyState(rubyMode, state.rubyState), - indented: state.indented, - previousToken: state.previousToken, - tokenize: state.tokenize - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - state.indented = stream.indentation(); - state.startOfLine = true; - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - state.startOfLine = false; - // dont record comment line as we only want to measure comment line with - // the opening comment block - if (style && style != "commentLine") { - state.previousToken = { style: style, indented: state.indented }; - } - // if current state is ruby and the previous token is not `,` reset the - // tokenize to html - if (stream.eol() && state.tokenize == ruby) { - stream.backUp(1); - var ch = stream.peek(); - stream.next(); - if (ch && ch != ",") { - state.tokenize = html; - } - } - // reprocess some of the specific style tag when finish setting previousToken - if (style == "hamlTag") { - style = "tag"; - } else if (style == "commentLine") { - style = "comment"; - } else if (style == "hamlAttribute") { - style = "attribute"; - } else if (style == "closeAttributeTag") { - style = null; - } - return style; - } - }; - }, "htmlmixed", "ruby"); - - CodeMirror.defineMIME("text/x-haml", "haml"); -})(); - -}); diff --git a/vendor/codemirror/mode/haml/test.js b/vendor/codemirror/mode/haml/test.js deleted file mode 100644 index 163b09f8..00000000 --- a/vendor/codemirror/mode/haml/test.js +++ /dev/null @@ -1,94 +0,0 @@ -(function() { - var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "haml"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - // Requires at least one media query - MT("elementName", - "[tag %h1] Hey There"); - - MT("oneElementPerLine", - "[tag %h1] Hey There %h2"); - - MT("idSelector", - "[tag %h1][attribute #test] Hey There"); - - MT("classSelector", - "[tag %h1][attribute .hello] Hey There"); - - MT("docType", - "[tag !!! XML]"); - - MT("comment", - "[comment / Hello WORLD]"); - - MT("notComment", - "[tag %h1] This is not a / comment "); - - MT("attributes", - "[tag %a]([variable title][operator =][string \"test\"]){[atom :title] [operator =>] [string \"test\"]}"); - - MT("htmlCode", - "[tag

]Title[tag

]"); - - MT("rubyBlock", - "[operator =][variable-2 @item]"); - - MT("selectorRubyBlock", - "[tag %a.selector=] [variable-2 @item]"); - - MT("nestedRubyBlock", - "[tag %a]", - " [operator =][variable puts] [string \"test\"]"); - - MT("multilinePlaintext", - "[tag %p]", - " Hello,", - " World"); - - MT("multilineRuby", - "[tag %p]", - " [comment -# this is a comment]", - " [comment and this is a comment too]", - " Date/Time", - " [operator -] [variable now] [operator =] [tag DateTime][operator .][variable now]", - " [tag %strong=] [variable now]", - " [operator -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][variable parse]([string \"December 31, 2006\"])", - " [operator =][string \"Happy\"]", - " [operator =][string \"Belated\"]", - " [operator =][string \"Birthday\"]"); - - MT("multilineComment", - "[comment /]", - " [comment Multiline]", - " [comment Comment]"); - - MT("hamlComment", - "[comment -# this is a comment]"); - - MT("multilineHamlComment", - "[comment -# this is a comment]", - " [comment and this is a comment too]"); - - MT("multilineHTMLComment", - "[comment ]"); - - MT("hamlAfterRubyTag", - "[attribute .block]", - " [tag %strong=] [variable now]", - " [attribute .test]", - " [operator =][variable now]", - " [attribute .right]"); - - MT("stretchedRuby", - "[operator =] [variable puts] [string \"Hello\"],", - " [string \"World\"]"); - - MT("interpolationInHashAttribute", - //"[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test"); - "[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test"); - - MT("interpolationInHTMLAttribute", - "[tag %div]([variable title][operator =][string \"#{][variable test][string }_#{][variable ting]()[string }\"]) Test"); -})(); diff --git a/vendor/codemirror/mode/haskell/haskell.js b/vendor/codemirror/mode/haskell/haskell.js deleted file mode 100644 index 2876172a..00000000 --- a/vendor/codemirror/mode/haskell/haskell.js +++ /dev/null @@ -1,264 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("haskell", function(_config, modeConfig) { - - function switchState(source, setState, f) { - setState(f); - return f(source, setState); - } - - // These should all be Unicode extended, as per the Haskell 2010 report - var smallRE = /[a-z_]/; - var largeRE = /[A-Z]/; - var digitRE = /\d/; - var hexitRE = /[0-9A-Fa-f]/; - var octitRE = /[0-7]/; - var idRE = /[a-z_A-Z0-9']/; - var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:]/; - var specialRE = /[(),;[\]`{}]/; - var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer - - function normal(source, setState) { - if (source.eatWhile(whiteCharRE)) { - return null; - } - - var ch = source.next(); - if (specialRE.test(ch)) { - if (ch == '{' && source.eat('-')) { - var t = "comment"; - if (source.eat('#')) { - t = "meta"; - } - return switchState(source, setState, ncomment(t, 1)); - } - return null; - } - - if (ch == '\'') { - if (source.eat('\\')) { - source.next(); // should handle other escapes here - } - else { - source.next(); - } - if (source.eat('\'')) { - return "string"; - } - return "error"; - } - - if (ch == '"') { - return switchState(source, setState, stringLiteral); - } - - if (largeRE.test(ch)) { - source.eatWhile(idRE); - if (source.eat('.')) { - return "qualifier"; - } - return "variable-2"; - } - - if (smallRE.test(ch)) { - source.eatWhile(idRE); - return "variable"; - } - - if (digitRE.test(ch)) { - if (ch == '0') { - if (source.eat(/[xX]/)) { - source.eatWhile(hexitRE); // should require at least 1 - return "integer"; - } - if (source.eat(/[oO]/)) { - source.eatWhile(octitRE); // should require at least 1 - return "number"; - } - } - source.eatWhile(digitRE); - var t = "number"; - if (source.match(/^\.\d+/)) { - t = "number"; - } - if (source.eat(/[eE]/)) { - t = "number"; - source.eat(/[-+]/); - source.eatWhile(digitRE); // should require at least 1 - } - return t; - } - - if (ch == "." && source.eat(".")) - return "keyword"; - - if (symbolRE.test(ch)) { - if (ch == '-' && source.eat(/-/)) { - source.eatWhile(/-/); - if (!source.eat(symbolRE)) { - source.skipToEnd(); - return "comment"; - } - } - var t = "variable"; - if (ch == ':') { - t = "variable-2"; - } - source.eatWhile(symbolRE); - return t; - } - - return "error"; - } - - function ncomment(type, nest) { - if (nest == 0) { - return normal; - } - return function(source, setState) { - var currNest = nest; - while (!source.eol()) { - var ch = source.next(); - if (ch == '{' && source.eat('-')) { - ++currNest; - } - else if (ch == '-' && source.eat('}')) { - --currNest; - if (currNest == 0) { - setState(normal); - return type; - } - } - } - setState(ncomment(type, currNest)); - return type; - }; - } - - function stringLiteral(source, setState) { - while (!source.eol()) { - var ch = source.next(); - if (ch == '"') { - setState(normal); - return "string"; - } - if (ch == '\\') { - if (source.eol() || source.eat(whiteCharRE)) { - setState(stringGap); - return "string"; - } - if (source.eat('&')) { - } - else { - source.next(); // should handle other escapes here - } - } - } - setState(normal); - return "error"; - } - - function stringGap(source, setState) { - if (source.eat('\\')) { - return switchState(source, setState, stringLiteral); - } - source.next(); - setState(normal); - return "error"; - } - - - var wellKnownWords = (function() { - var wkw = {}; - function setType(t) { - return function () { - for (var i = 0; i < arguments.length; i++) - wkw[arguments[i]] = t; - }; - } - - setType("keyword")( - "case", "class", "data", "default", "deriving", "do", "else", "foreign", - "if", "import", "in", "infix", "infixl", "infixr", "instance", "let", - "module", "newtype", "of", "then", "type", "where", "_"); - - setType("keyword")( - "\.\.", ":", "::", "=", "\\", "\"", "<-", "->", "@", "~", "=>"); - - setType("builtin")( - "!!", "$!", "$", "&&", "+", "++", "-", ".", "/", "/=", "<", "<=", "=<<", - "==", ">", ">=", ">>", ">>=", "^", "^^", "||", "*", "**"); - - setType("builtin")( - "Bool", "Bounded", "Char", "Double", "EQ", "Either", "Enum", "Eq", - "False", "FilePath", "Float", "Floating", "Fractional", "Functor", "GT", - "IO", "IOError", "Int", "Integer", "Integral", "Just", "LT", "Left", - "Maybe", "Monad", "Nothing", "Num", "Ord", "Ordering", "Rational", "Read", - "ReadS", "Real", "RealFloat", "RealFrac", "Right", "Show", "ShowS", - "String", "True"); - - setType("builtin")( - "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf", - "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling", - "compare", "concat", "concatMap", "const", "cos", "cosh", "curry", - "cycle", "decodeFloat", "div", "divMod", "drop", "dropWhile", "either", - "elem", "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo", - "enumFromTo", "error", "even", "exp", "exponent", "fail", "filter", - "flip", "floatDigits", "floatRadix", "floatRange", "floor", "fmap", - "foldl", "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger", - "fromIntegral", "fromRational", "fst", "gcd", "getChar", "getContents", - "getLine", "head", "id", "init", "interact", "ioError", "isDenormalized", - "isIEEE", "isInfinite", "isNaN", "isNegativeZero", "iterate", "last", - "lcm", "length", "lex", "lines", "log", "logBase", "lookup", "map", - "mapM", "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound", - "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or", - "otherwise", "pi", "pred", "print", "product", "properFraction", - "putChar", "putStr", "putStrLn", "quot", "quotRem", "read", "readFile", - "readIO", "readList", "readLn", "readParen", "reads", "readsPrec", - "realToFrac", "recip", "rem", "repeat", "replicate", "return", "reverse", - "round", "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq", - "sequence", "sequence_", "show", "showChar", "showList", "showParen", - "showString", "shows", "showsPrec", "significand", "signum", "sin", - "sinh", "snd", "span", "splitAt", "sqrt", "subtract", "succ", "sum", - "tail", "take", "takeWhile", "tan", "tanh", "toEnum", "toInteger", - "toRational", "truncate", "uncurry", "undefined", "unlines", "until", - "unwords", "unzip", "unzip3", "userError", "words", "writeFile", "zip", - "zip3", "zipWith", "zipWith3"); - - var override = modeConfig.overrideKeywords; - if (override) for (var word in override) if (override.hasOwnProperty(word)) - wkw[word] = override[word]; - - return wkw; - })(); - - - - return { - startState: function () { return { f: normal }; }, - copyState: function (s) { return { f: s.f }; }, - - token: function(stream, state) { - var t = state.f(stream, function(s) { state.f = s; }); - var w = stream.current(); - return wellKnownWords.hasOwnProperty(w) ? wellKnownWords[w] : t; - }, - - blockCommentStart: "{-", - blockCommentEnd: "-}", - lineComment: "--" - }; - -}); - -CodeMirror.defineMIME("text/x-haskell", "haskell"); - -}); diff --git a/vendor/codemirror/mode/haxe/haxe.js b/vendor/codemirror/mode/haxe/haxe.js deleted file mode 100644 index 53d7b1d1..00000000 --- a/vendor/codemirror/mode/haxe/haxe.js +++ /dev/null @@ -1,442 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("haxe", function(config, parserConfig) { - var indentUnit = config.indentUnit; - - // Tokenizer - - var keywords = function(){ - function kw(type) {return {type: type, style: "keyword"};} - var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); - var operator = kw("operator"), atom = {type: "atom", style: "atom"}, attribute = {type:"attribute", style: "attribute"}; - var type = kw("typedef"); - return { - "if": A, "while": A, "else": B, "do": B, "try": B, - "return": C, "break": C, "continue": C, "new": C, "throw": C, - "var": kw("var"), "inline":attribute, "static": attribute, "using":kw("import"), - "public": attribute, "private": attribute, "cast": kw("cast"), "import": kw("import"), "macro": kw("macro"), - "function": kw("function"), "catch": kw("catch"), "untyped": kw("untyped"), "callback": kw("cb"), - "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), - "in": operator, "never": kw("property_access"), "trace":kw("trace"), - "class": type, "enum":type, "interface":type, "typedef":type, "extends":type, "implements":type, "dynamic":type, - "true": atom, "false": atom, "null": atom - }; - }(); - - var isOperatorChar = /[+\-*&%=<>!?|]/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - function nextUntilUnescaped(stream, end) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (next == end && !escaped) - return false; - escaped = !escaped && next == "\\"; - } - return escaped; - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - function ret(tp, style, cont) { - type = tp; content = cont; - return style; - } - - function haxeTokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") - return chain(stream, state, haxeTokenString(ch)); - else if (/[\[\]{}\(\),;\:\.]/.test(ch)) - return ret(ch); - else if (ch == "0" && stream.eat(/x/i)) { - stream.eatWhile(/[\da-f]/i); - return ret("number", "number"); - } - else if (/\d/.test(ch) || ch == "-" && stream.eat(/\d/)) { - stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); - return ret("number", "number"); - } - else if (state.reAllowed && (ch == "~" && stream.eat(/\//))) { - nextUntilUnescaped(stream, "/"); - stream.eatWhile(/[gimsu]/); - return ret("regexp", "string-2"); - } - else if (ch == "/") { - if (stream.eat("*")) { - return chain(stream, state, haxeTokenComment); - } - else if (stream.eat("/")) { - stream.skipToEnd(); - return ret("comment", "comment"); - } - else { - stream.eatWhile(isOperatorChar); - return ret("operator", null, stream.current()); - } - } - else if (ch == "#") { - stream.skipToEnd(); - return ret("conditional", "meta"); - } - else if (ch == "@") { - stream.eat(/:/); - stream.eatWhile(/[\w_]/); - return ret ("metadata", "meta"); - } - else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return ret("operator", null, stream.current()); - } - else { - var word; - if(/[A-Z]/.test(ch)) - { - stream.eatWhile(/[\w_<>]/); - word = stream.current(); - return ret("type", "variable-3", word); - } - else - { - stream.eatWhile(/[\w_]/); - var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; - return (known && state.kwAllowed) ? ret(known.type, known.style, word) : - ret("variable", "variable", word); - } - } - } - - function haxeTokenString(quote) { - return function(stream, state) { - if (!nextUntilUnescaped(stream, quote)) - state.tokenize = haxeTokenBase; - return ret("string", "string"); - }; - } - - function haxeTokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = haxeTokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - // Parser - - var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true}; - - function HaxeLexical(indented, column, type, align, prev, info) { - this.indented = indented; - this.column = column; - this.type = type; - this.prev = prev; - this.info = info; - if (align != null) this.align = align; - } - - function inScope(state, varname) { - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return true; - } - - function parseHaxe(state, style, type, content, stream) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; - - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = true; - - while(true) { - var combinator = cc.length ? cc.pop() : statement; - if (combinator(type, content)) { - while(cc.length && cc[cc.length - 1].lex) - cc.pop()(); - if (cx.marked) return cx.marked; - if (type == "variable" && inScope(state, content)) return "variable-2"; - if (type == "variable" && imported(state, content)) return "variable-3"; - return style; - } - } - } - - function imported(state, typename) - { - if (/[a-z]/.test(typename.charAt(0))) - return false; - var len = state.importedtypes.length; - for (var i = 0; i= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - function register(varname) { - var state = cx.state; - if (state.context) { - cx.marked = "def"; - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return; - state.localVars = {name: varname, next: state.localVars}; - } - } - - // Combinators - - var defaultVars = {name: "this", next: null}; - function pushcontext() { - if (!cx.state.context) cx.state.localVars = defaultVars; - cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; - } - function popcontext() { - cx.state.localVars = cx.state.context.vars; - cx.state.context = cx.state.context.prev; - } - function pushlex(type, info) { - var result = function() { - var state = cx.state; - state.lexical = new HaxeLexical(state.indented, cx.stream.column(), type, null, state.lexical, info); - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ")") - state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - poplex.lex = true; - - function expect(wanted) { - function f(type) { - if (type == wanted) return cont(); - else if (wanted == ";") return pass(); - else return cont(f); - }; - return f; - } - - function statement(type) { - if (type == "@") return cont(metadef); - if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex); - if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); - if (type == "keyword b") return cont(pushlex("form"), statement, poplex); - if (type == "{") return cont(pushlex("}"), pushcontext, block, poplex, popcontext); - if (type == ";") return cont(); - if (type == "attribute") return cont(maybeattribute); - if (type == "function") return cont(functiondef); - if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), - poplex, statement, poplex); - if (type == "variable") return cont(pushlex("stat"), maybelabel); - if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), - block, poplex, poplex); - if (type == "case") return cont(expression, expect(":")); - if (type == "default") return cont(expect(":")); - if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), - statement, poplex, popcontext); - if (type == "import") return cont(importdef, expect(";")); - if (type == "typedef") return cont(typedef); - return pass(pushlex("stat"), expression, expect(";"), poplex); - } - function expression(type) { - if (atomicTypes.hasOwnProperty(type)) return cont(maybeoperator); - if (type == "function") return cont(functiondef); - if (type == "keyword c") return cont(maybeexpression); - if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeoperator); - if (type == "operator") return cont(expression); - if (type == "[") return cont(pushlex("]"), commasep(expression, "]"), poplex, maybeoperator); - if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator); - return cont(); - } - function maybeexpression(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expression); - } - - function maybeoperator(type, value) { - if (type == "operator" && /\+\+|--/.test(value)) return cont(maybeoperator); - if (type == "operator" || type == ":") return cont(expression); - if (type == ";") return; - if (type == "(") return cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator); - if (type == ".") return cont(property, maybeoperator); - if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator); - } - - function maybeattribute(type) { - if (type == "attribute") return cont(maybeattribute); - if (type == "function") return cont(functiondef); - if (type == "var") return cont(vardef1); - } - - function metadef(type) { - if(type == ":") return cont(metadef); - if(type == "variable") return cont(metadef); - if(type == "(") return cont(pushlex(")"), commasep(metaargs, ")"), poplex, statement); - } - function metaargs(type) { - if(type == "variable") return cont(); - } - - function importdef (type, value) { - if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); } - else if(type == "variable" || type == "property" || type == ".") return cont(importdef); - } - - function typedef (type, value) - { - if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); } - } - - function maybelabel(type) { - if (type == ":") return cont(poplex, statement); - return pass(maybeoperator, expect(";"), poplex); - } - function property(type) { - if (type == "variable") {cx.marked = "property"; return cont();} - } - function objprop(type) { - if (type == "variable") cx.marked = "property"; - if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expression); - } - function commasep(what, end) { - function proceed(type) { - if (type == ",") return cont(what, proceed); - if (type == end) return cont(); - return cont(expect(end)); - } - return function(type) { - if (type == end) return cont(); - else return pass(what, proceed); - }; - } - function block(type) { - if (type == "}") return cont(); - return pass(statement, block); - } - function vardef1(type, value) { - if (type == "variable"){register(value); return cont(typeuse, vardef2);} - return cont(); - } - function vardef2(type, value) { - if (value == "=") return cont(expression, vardef2); - if (type == ",") return cont(vardef1); - } - function forspec1(type, value) { - if (type == "variable") { - register(value); - } - return cont(pushlex(")"), pushcontext, forin, expression, poplex, statement, popcontext); - } - function forin(_type, value) { - if (value == "in") return cont(); - } - function functiondef(type, value) { - if (type == "variable") {register(value); return cont(functiondef);} - if (value == "new") return cont(functiondef); - if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, typeuse, statement, popcontext); - } - function typeuse(type) { - if(type == ":") return cont(typestring); - } - function typestring(type) { - if(type == "type") return cont(); - if(type == "variable") return cont(); - if(type == "{") return cont(pushlex("}"), commasep(typeprop, "}"), poplex); - } - function typeprop(type) { - if(type == "variable") return cont(typeuse); - } - function funarg(type, value) { - if (type == "variable") {register(value); return cont(typeuse);} - } - - // Interface - - return { - startState: function(basecolumn) { - var defaulttypes = ["Int", "Float", "String", "Void", "Std", "Bool", "Dynamic", "Array"]; - return { - tokenize: haxeTokenBase, - reAllowed: true, - kwAllowed: true, - cc: [], - lexical: new HaxeLexical((basecolumn || 0) - indentUnit, 0, "block", false), - localVars: parserConfig.localVars, - importedtypes: defaulttypes, - context: parserConfig.localVars && {vars: parserConfig.localVars}, - indented: 0 - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = false; - state.indented = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (type == "comment") return style; - state.reAllowed = !!(type == "operator" || type == "keyword c" || type.match(/^[\[{}\(,;:]$/)); - state.kwAllowed = type != '.'; - return parseHaxe(state, style, type, content, stream); - }, - - indent: function(state, textAfter) { - if (state.tokenize != haxeTokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; - if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; - var type = lexical.type, closing = firstChar == type; - if (type == "vardef") return lexical.indented + 4; - else if (type == "form" && firstChar == "{") return lexical.indented; - else if (type == "stat" || type == "form") return lexical.indented + indentUnit; - else if (lexical.info == "switch" && !closing) - return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); - else if (lexical.align) return lexical.column + (closing ? 0 : 1); - else return lexical.indented + (closing ? 0 : indentUnit); - }, - - electricChars: "{}" - }; -}); - -CodeMirror.defineMIME("text/x-haxe", "haxe"); - -}); diff --git a/vendor/codemirror/mode/htmlembedded/htmlembedded.js b/vendor/codemirror/mode/htmlembedded/htmlembedded.js deleted file mode 100644 index 3a07c343..00000000 --- a/vendor/codemirror/mode/htmlembedded/htmlembedded.js +++ /dev/null @@ -1,83 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("htmlembedded", function(config, parserConfig) { - - //config settings - var scriptStartRegex = parserConfig.scriptStartRegex || /^<%/i, - scriptEndRegex = parserConfig.scriptEndRegex || /^%>/i; - - //inner modes - var scriptingMode, htmlMixedMode; - - //tokenizer when in html mode - function htmlDispatch(stream, state) { - if (stream.match(scriptStartRegex, false)) { - state.token=scriptingDispatch; - return scriptingMode.token(stream, state.scriptState); - } - else - return htmlMixedMode.token(stream, state.htmlState); - } - - //tokenizer when in scripting mode - function scriptingDispatch(stream, state) { - if (stream.match(scriptEndRegex, false)) { - state.token=htmlDispatch; - return htmlMixedMode.token(stream, state.htmlState); - } - else - return scriptingMode.token(stream, state.scriptState); - } - - - return { - startState: function() { - scriptingMode = scriptingMode || CodeMirror.getMode(config, parserConfig.scriptingModeSpec); - htmlMixedMode = htmlMixedMode || CodeMirror.getMode(config, "htmlmixed"); - return { - token : parserConfig.startOpen ? scriptingDispatch : htmlDispatch, - htmlState : CodeMirror.startState(htmlMixedMode), - scriptState : CodeMirror.startState(scriptingMode) - }; - }, - - token: function(stream, state) { - return state.token(stream, state); - }, - - indent: function(state, textAfter) { - if (state.token == htmlDispatch) - return htmlMixedMode.indent(state.htmlState, textAfter); - else if (scriptingMode.indent) - return scriptingMode.indent(state.scriptState, textAfter); - }, - - copyState: function(state) { - return { - token : state.token, - htmlState : CodeMirror.copyState(htmlMixedMode, state.htmlState), - scriptState : CodeMirror.copyState(scriptingMode, state.scriptState) - }; - }, - - innerMode: function(state) { - if (state.token == scriptingDispatch) return {state: state.scriptState, mode: scriptingMode}; - else return {state: state.htmlState, mode: htmlMixedMode}; - } - }; -}, "htmlmixed"); - -CodeMirror.defineMIME("application/x-ejs", { name: "htmlembedded", scriptingModeSpec:"javascript"}); -CodeMirror.defineMIME("application/x-aspx", { name: "htmlembedded", scriptingModeSpec:"text/x-csharp"}); -CodeMirror.defineMIME("application/x-jsp", { name: "htmlembedded", scriptingModeSpec:"text/x-java"}); -CodeMirror.defineMIME("application/x-erb", { name: "htmlembedded", scriptingModeSpec:"ruby"}); - -}); diff --git a/vendor/codemirror/mode/htmlmixed/htmlmixed.js b/vendor/codemirror/mode/htmlmixed/htmlmixed.js deleted file mode 100644 index d80ef9c6..00000000 --- a/vendor/codemirror/mode/htmlmixed/htmlmixed.js +++ /dev/null @@ -1,117 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript"), require("../css/css")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript", "../css/css"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("htmlmixed", function(config, parserConfig) { - var htmlMode = CodeMirror.getMode(config, {name: "xml", - htmlMode: true, - multilineTagIndentFactor: parserConfig.multilineTagIndentFactor, - multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag}); - var cssMode = CodeMirror.getMode(config, "css"); - - var scriptTypes = [], scriptTypesConf = parserConfig && parserConfig.scriptTypes; - scriptTypes.push({matches: /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i, - mode: CodeMirror.getMode(config, "javascript")}); - if (scriptTypesConf) for (var i = 0; i < scriptTypesConf.length; ++i) { - var conf = scriptTypesConf[i]; - scriptTypes.push({matches: conf.matches, mode: conf.mode && CodeMirror.getMode(config, conf.mode)}); - } - scriptTypes.push({matches: /./, - mode: CodeMirror.getMode(config, "text/plain")}); - - function html(stream, state) { - var tagName = state.htmlState.tagName; - var style = htmlMode.token(stream, state.htmlState); - if (tagName == "script" && /\btag\b/.test(style) && stream.current() == ">") { - // Script block: mode to change to depends on type attribute - var scriptType = stream.string.slice(Math.max(0, stream.pos - 100), stream.pos).match(/\btype\s*=\s*("[^"]+"|'[^']+'|\S+)[^<]*$/i); - scriptType = scriptType ? scriptType[1] : ""; - if (scriptType && /[\"\']/.test(scriptType.charAt(0))) scriptType = scriptType.slice(1, scriptType.length - 1); - for (var i = 0; i < scriptTypes.length; ++i) { - var tp = scriptTypes[i]; - if (typeof tp.matches == "string" ? scriptType == tp.matches : tp.matches.test(scriptType)) { - if (tp.mode) { - state.token = script; - state.localMode = tp.mode; - state.localState = tp.mode.startState && tp.mode.startState(htmlMode.indent(state.htmlState, "")); - } - break; - } - } - } else if (tagName == "style" && /\btag\b/.test(style) && stream.current() == ">") { - state.token = css; - state.localMode = cssMode; - state.localState = cssMode.startState(htmlMode.indent(state.htmlState, "")); - } - return style; - } - function maybeBackup(stream, pat, style) { - var cur = stream.current(); - var close = cur.search(pat), m; - if (close > -1) stream.backUp(cur.length - close); - else if (m = cur.match(/<\/?$/)) { - stream.backUp(cur.length); - if (!stream.match(pat, false)) stream.match(cur); - } - return style; - } - function script(stream, state) { - if (stream.match(/^<\/\s*script\s*>/i, false)) { - state.token = html; - state.localState = state.localMode = null; - return html(stream, state); - } - return maybeBackup(stream, /<\/\s*script\s*>/, - state.localMode.token(stream, state.localState)); - } - function css(stream, state) { - if (stream.match(/^<\/\s*style\s*>/i, false)) { - state.token = html; - state.localState = state.localMode = null; - return html(stream, state); - } - return maybeBackup(stream, /<\/\s*style\s*>/, - cssMode.token(stream, state.localState)); - } - - return { - startState: function() { - var state = htmlMode.startState(); - return {token: html, localMode: null, localState: null, htmlState: state}; - }, - - copyState: function(state) { - if (state.localState) - var local = CodeMirror.copyState(state.localMode, state.localState); - return {token: state.token, localMode: state.localMode, localState: local, - htmlState: CodeMirror.copyState(htmlMode, state.htmlState)}; - }, - - token: function(stream, state) { - return state.token(stream, state); - }, - - indent: function(state, textAfter) { - if (!state.localMode || /^\s*<\//.test(textAfter)) - return htmlMode.indent(state.htmlState, textAfter); - else if (state.localMode.indent) - return state.localMode.indent(state.localState, textAfter); - else - return CodeMirror.Pass; - }, - - innerMode: function(state) { - return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode}; - } - }; -}, "xml", "javascript", "css"); - -CodeMirror.defineMIME("text/html", "htmlmixed"); - -}); diff --git a/vendor/codemirror/mode/http/http.js b/vendor/codemirror/mode/http/http.js deleted file mode 100644 index d2ad5994..00000000 --- a/vendor/codemirror/mode/http/http.js +++ /dev/null @@ -1,110 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("http", function() { - function failFirstLine(stream, state) { - stream.skipToEnd(); - state.cur = header; - return "error"; - } - - function start(stream, state) { - if (stream.match(/^HTTP\/\d\.\d/)) { - state.cur = responseStatusCode; - return "keyword"; - } else if (stream.match(/^[A-Z]+/) && /[ \t]/.test(stream.peek())) { - state.cur = requestPath; - return "keyword"; - } else { - return failFirstLine(stream, state); - } - } - - function responseStatusCode(stream, state) { - var code = stream.match(/^\d+/); - if (!code) return failFirstLine(stream, state); - - state.cur = responseStatusText; - var status = Number(code[0]); - if (status >= 100 && status < 200) { - return "positive informational"; - } else if (status >= 200 && status < 300) { - return "positive success"; - } else if (status >= 300 && status < 400) { - return "positive redirect"; - } else if (status >= 400 && status < 500) { - return "negative client-error"; - } else if (status >= 500 && status < 600) { - return "negative server-error"; - } else { - return "error"; - } - } - - function responseStatusText(stream, state) { - stream.skipToEnd(); - state.cur = header; - return null; - } - - function requestPath(stream, state) { - stream.eatWhile(/\S/); - state.cur = requestProtocol; - return "string-2"; - } - - function requestProtocol(stream, state) { - if (stream.match(/^HTTP\/\d\.\d$/)) { - state.cur = header; - return "keyword"; - } else { - return failFirstLine(stream, state); - } - } - - function header(stream) { - if (stream.sol() && !stream.eat(/[ \t]/)) { - if (stream.match(/^.*?:/)) { - return "atom"; - } else { - stream.skipToEnd(); - return "error"; - } - } else { - stream.skipToEnd(); - return "string"; - } - } - - function body(stream) { - stream.skipToEnd(); - return null; - } - - return { - token: function(stream, state) { - var cur = state.cur; - if (cur != header && cur != body && stream.eatSpace()) return null; - return cur(stream, state); - }, - - blankLine: function(state) { - state.cur = body; - }, - - startState: function() { - return {cur: start}; - } - }; -}); - -CodeMirror.defineMIME("message/http", "http"); - -}); diff --git a/vendor/codemirror/mode/jade/jade.js b/vendor/codemirror/mode/jade/jade.js deleted file mode 100644 index 020b93ec..00000000 --- a/vendor/codemirror/mode/jade/jade.js +++ /dev/null @@ -1,102 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("jade", function () { - var symbol_regex1 = /^(?:~|!|%|\^|\*|\+|=|\\|:|;|,|\/|\?|&|<|>|\|)/; - var open_paren_regex = /^(\(|\[)/; - var close_paren_regex = /^(\)|\])/; - var keyword_regex1 = /^(if|else|return|var|function|include|doctype|each)/; - var keyword_regex2 = /^(#|{|}|\.)/; - var keyword_regex3 = /^(in)/; - var html_regex1 = /^(html|head|title|meta|link|script|body|br|div|input|span|a|img)/; - var html_regex2 = /^(h1|h2|h3|h4|h5|p|strong|em)/; - return { - startState: function () { - return { - inString: false, - stringType: "", - beforeTag: true, - justMatchedKeyword: false, - afterParen: false - }; - }, - token: function (stream, state) { - //check for state changes - if (!state.inString && ((stream.peek() == '"') || (stream.peek() == "'"))) { - state.stringType = stream.peek(); - stream.next(); // Skip quote - state.inString = true; // Update state - } - - //return state - if (state.inString) { - if (stream.skipTo(state.stringType)) { // Quote found on this line - stream.next(); // Skip quote - state.inString = false; // Clear flag - } else { - stream.skipToEnd(); // Rest of line is string - } - state.justMatchedKeyword = false; - return "string"; // Token style - } else if (stream.sol() && stream.eatSpace()) { - if (stream.match(keyword_regex1)) { - state.justMatchedKeyword = true; - stream.eatSpace(); - return "keyword"; - } - if (stream.match(html_regex1) || stream.match(html_regex2)) { - state.justMatchedKeyword = true; - return "variable"; - } - } else if (stream.sol() && stream.match(keyword_regex1)) { - state.justMatchedKeyword = true; - stream.eatSpace(); - return "keyword"; - } else if (stream.sol() && (stream.match(html_regex1) || stream.match(html_regex2))) { - state.justMatchedKeyword = true; - return "variable"; - } else if (stream.eatSpace()) { - state.justMatchedKeyword = false; - if (stream.match(keyword_regex3) && stream.eatSpace()) { - state.justMatchedKeyword = true; - return "keyword"; - } - } else if (stream.match(symbol_regex1)) { - state.justMatchedKeyword = false; - return "atom"; - } else if (stream.match(open_paren_regex)) { - state.afterParen = true; - state.justMatchedKeyword = true; - return "def"; - } else if (stream.match(close_paren_regex)) { - state.afterParen = false; - state.justMatchedKeyword = true; - return "def"; - } else if (stream.match(keyword_regex2)) { - state.justMatchedKeyword = true; - return "keyword"; - } else if (stream.eatSpace()) { - state.justMatchedKeyword = false; - } else { - stream.next(); - if (state.justMatchedKeyword) { - return "property"; - } else if (state.afterParen) { - return "property"; - } - } - return null; - } - }; -}); - -CodeMirror.defineMIME('text/x-jade', 'jade'); - -}); diff --git a/vendor/codemirror/mode/javascript/javascript.js b/vendor/codemirror/mode/javascript/javascript.js deleted file mode 100644 index 15eccf7e..00000000 --- a/vendor/codemirror/mode/javascript/javascript.js +++ /dev/null @@ -1,652 +0,0 @@ -// TODO actually recognize syntax of TypeScript constructs - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("javascript", function(config, parserConfig) { - var indentUnit = config.indentUnit; - var statementIndent = parserConfig.statementIndent; - var jsonldMode = parserConfig.jsonld; - var jsonMode = parserConfig.json || jsonldMode; - var isTS = parserConfig.typescript; - - // Tokenizer - - var keywords = function(){ - function kw(type) {return {type: type, style: "keyword"};} - var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); - var operator = kw("operator"), atom = {type: "atom", style: "atom"}; - - var jsKeywords = { - "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, - "return": C, "break": C, "continue": C, "new": C, "delete": C, "throw": C, "debugger": C, - "var": kw("var"), "const": kw("var"), "let": kw("var"), - "function": kw("function"), "catch": kw("catch"), - "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), - "in": operator, "typeof": operator, "instanceof": operator, - "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, - "this": kw("this"), "module": kw("module"), "class": kw("class"), "super": kw("atom"), - "yield": C, "export": kw("export"), "import": kw("import"), "extends": C - }; - - // Extend the 'normal' keywords with the TypeScript language extensions - if (isTS) { - var type = {type: "variable", style: "variable-3"}; - var tsKeywords = { - // object-like things - "interface": kw("interface"), - "extends": kw("extends"), - "constructor": kw("constructor"), - - // scope modifiers - "public": kw("public"), - "private": kw("private"), - "protected": kw("protected"), - "static": kw("static"), - - // types - "string": type, "number": type, "bool": type, "any": type - }; - - for (var attr in tsKeywords) { - jsKeywords[attr] = tsKeywords[attr]; - } - } - - return jsKeywords; - }(); - - var isOperatorChar = /[+\-*&%=<>!?|~^]/; - var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; - - function readRegexp(stream) { - var escaped = false, next, inSet = false; - while ((next = stream.next()) != null) { - if (!escaped) { - if (next == "/" && !inSet) return; - if (next == "[") inSet = true; - else if (inSet && next == "]") inSet = false; - } - escaped = !escaped && next == "\\"; - } - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - function ret(tp, style, cont) { - type = tp; content = cont; - return style; - } - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) { - return ret("number", "number"); - } else if (ch == "." && stream.match("..")) { - return ret("spread", "meta"); - } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - return ret(ch); - } else if (ch == "=" && stream.eat(">")) { - return ret("=>", "operator"); - } else if (ch == "0" && stream.eat(/x/i)) { - stream.eatWhile(/[\da-f]/i); - return ret("number", "number"); - } else if (/\d/.test(ch)) { - stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); - return ret("number", "number"); - } else if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } else if (stream.eat("/")) { - stream.skipToEnd(); - return ret("comment", "comment"); - } else if (state.lastType == "operator" || state.lastType == "keyword c" || - state.lastType == "sof" || /^[\[{}\(,;:]$/.test(state.lastType)) { - readRegexp(stream); - stream.eatWhile(/[gimy]/); // 'y' is "sticky" option in Mozilla - return ret("regexp", "string-2"); - } else { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator", stream.current()); - } - } else if (ch == "`") { - state.tokenize = tokenQuasi; - return tokenQuasi(stream, state); - } else if (ch == "#") { - stream.skipToEnd(); - return ret("error", "error"); - } else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator", stream.current()); - } else { - stream.eatWhile(/[\w\$_]/); - var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; - return (known && state.lastType != ".") ? ret(known.type, known.style, word) : - ret("variable", "variable", word); - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next; - if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){ - state.tokenize = tokenBase; - return ret("jsonld-keyword", "meta"); - } - while ((next = stream.next()) != null) { - if (next == quote && !escaped) break; - escaped = !escaped && next == "\\"; - } - if (!escaped) state.tokenize = tokenBase; - return ret("string", "string"); - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - function tokenQuasi(stream, state) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && next == "\\"; - } - return ret("quasi", "string-2", stream.current()); - } - - var brackets = "([{}])"; - // This is a crude lookahead trick to try and notice that we're - // parsing the argument patterns for a fat-arrow function before we - // actually hit the arrow token. It only works if the arrow is on - // the same line as the arguments and there's no strange noise - // (comments) in between. Fallback is to only notice when we hit the - // arrow, and not declare the arguments as locals for the arrow - // body. - function findFatArrow(stream, state) { - if (state.fatArrowAt) state.fatArrowAt = null; - var arrow = stream.string.indexOf("=>", stream.start); - if (arrow < 0) return; - - var depth = 0, sawSomething = false; - for (var pos = arrow - 1; pos >= 0; --pos) { - var ch = stream.string.charAt(pos); - var bracket = brackets.indexOf(ch); - if (bracket >= 0 && bracket < 3) { - if (!depth) { ++pos; break; } - if (--depth == 0) break; - } else if (bracket >= 3 && bracket < 6) { - ++depth; - } else if (/[$\w]/.test(ch)) { - sawSomething = true; - } else if (sawSomething && !depth) { - ++pos; - break; - } - } - if (sawSomething && !depth) state.fatArrowAt = pos; - } - - // Parser - - var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true}; - - function JSLexical(indented, column, type, align, prev, info) { - this.indented = indented; - this.column = column; - this.type = type; - this.prev = prev; - this.info = info; - if (align != null) this.align = align; - } - - function inScope(state, varname) { - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return true; - for (var cx = state.context; cx; cx = cx.prev) { - for (var v = cx.vars; v; v = v.next) - if (v.name == varname) return true; - } - } - - function parseJS(state, style, type, content, stream) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; - - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = true; - - while(true) { - var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; - if (combinator(type, content)) { - while(cc.length && cc[cc.length - 1].lex) - cc.pop()(); - if (cx.marked) return cx.marked; - if (type == "variable" && inScope(state, content)) return "variable-2"; - return style; - } - } - } - - // Combinator utils - - var cx = {state: null, column: null, marked: null, cc: null}; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - function register(varname) { - function inList(list) { - for (var v = list; v; v = v.next) - if (v.name == varname) return true; - return false; - } - var state = cx.state; - if (state.context) { - cx.marked = "def"; - if (inList(state.localVars)) return; - state.localVars = {name: varname, next: state.localVars}; - } else { - if (inList(state.globalVars)) return; - if (parserConfig.globalVars) - state.globalVars = {name: varname, next: state.globalVars}; - } - } - - // Combinators - - var defaultVars = {name: "this", next: {name: "arguments"}}; - function pushcontext() { - cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; - cx.state.localVars = defaultVars; - } - function popcontext() { - cx.state.localVars = cx.state.context.vars; - cx.state.context = cx.state.context.prev; - } - function pushlex(type, info) { - var result = function() { - var state = cx.state, indent = state.indented; - if (state.lexical.type == "stat") indent = state.lexical.indented; - state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info); - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ")") - state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - poplex.lex = true; - - function expect(wanted) { - function exp(type) { - if (type == wanted) return cont(); - else if (wanted == ";") return pass(); - else return cont(exp); - }; - return exp; - } - - function statement(type, value) { - if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex); - if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); - if (type == "keyword b") return cont(pushlex("form"), statement, poplex); - if (type == "{") return cont(pushlex("}"), block, poplex); - if (type == ";") return cont(); - if (type == "if") return cont(pushlex("form"), expression, statement, poplex, maybeelse); - if (type == "function") return cont(functiondef); - if (type == "for") return cont(pushlex("form"), forspec, statement, poplex); - if (type == "variable") return cont(pushlex("stat"), maybelabel); - if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), - block, poplex, poplex); - if (type == "case") return cont(expression, expect(":")); - if (type == "default") return cont(expect(":")); - if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), - statement, poplex, popcontext); - if (type == "module") return cont(pushlex("form"), pushcontext, afterModule, popcontext, poplex); - if (type == "class") return cont(pushlex("form"), className, objlit, poplex); - if (type == "export") return cont(pushlex("form"), afterExport, poplex); - if (type == "import") return cont(pushlex("form"), afterImport, poplex); - return pass(pushlex("stat"), expression, expect(";"), poplex); - } - function expression(type) { - return expressionInner(type, false); - } - function expressionNoComma(type) { - return expressionInner(type, true); - } - function expressionInner(type, noComma) { - if (cx.state.fatArrowAt == cx.stream.start) { - var body = noComma ? arrowBodyNoComma : arrowBody; - if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext); - else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext); - } - - var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; - if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); - if (type == "function") return cont(functiondef); - if (type == "keyword c") return cont(noComma ? maybeexpressionNoComma : maybeexpression); - if (type == "(") return cont(pushlex(")"), maybeexpression, comprehension, expect(")"), poplex, maybeop); - if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression); - if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); - if (type == "{") return contCommasep(objprop, "}", null, maybeop); - return cont(); - } - function maybeexpression(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expression); - } - function maybeexpressionNoComma(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expressionNoComma); - } - - function maybeoperatorComma(type, value) { - if (type == ",") return cont(expression); - return maybeoperatorNoComma(type, value, false); - } - function maybeoperatorNoComma(type, value, noComma) { - var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; - var expr = noComma == false ? expression : expressionNoComma; - if (value == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext); - if (type == "operator") { - if (/\+\+|--/.test(value)) return cont(me); - if (value == "?") return cont(expression, expect(":"), expr); - return cont(expr); - } - if (type == "quasi") { cx.cc.push(me); return quasi(value); } - if (type == ";") return; - if (type == "(") return contCommasep(expressionNoComma, ")", "call", me); - if (type == ".") return cont(property, me); - if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me); - } - function quasi(value) { - if (value.slice(value.length - 2) != "${") return cont(); - return cont(expression, continueQuasi); - } - function continueQuasi(type) { - if (type == "}") { - cx.marked = "string-2"; - cx.state.tokenize = tokenQuasi; - return cont(); - } - } - function arrowBody(type) { - findFatArrow(cx.stream, cx.state); - if (type == "{") return pass(statement); - return pass(expression); - } - function arrowBodyNoComma(type) { - findFatArrow(cx.stream, cx.state); - if (type == "{") return pass(statement); - return pass(expressionNoComma); - } - function maybelabel(type) { - if (type == ":") return cont(poplex, statement); - return pass(maybeoperatorComma, expect(";"), poplex); - } - function property(type) { - if (type == "variable") {cx.marked = "property"; return cont();} - } - function objprop(type, value) { - if (type == "variable") { - cx.marked = "property"; - if (value == "get" || value == "set") return cont(getterSetter); - } else if (type == "number" || type == "string") { - cx.marked = jsonldMode ? "property" : (type + " property"); - } else if (type == "[") { - return cont(expression, expect("]"), afterprop); - } - if (atomicTypes.hasOwnProperty(type)) return cont(afterprop); - } - function getterSetter(type) { - if (type != "variable") return pass(afterprop); - cx.marked = "property"; - return cont(functiondef); - } - function afterprop(type) { - if (type == ":") return cont(expressionNoComma); - if (type == "(") return pass(functiondef); - } - function commasep(what, end) { - function proceed(type) { - if (type == ",") { - var lex = cx.state.lexical; - if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; - return cont(what, proceed); - } - if (type == end) return cont(); - return cont(expect(end)); - } - return function(type) { - if (type == end) return cont(); - return pass(what, proceed); - }; - } - function contCommasep(what, end, info) { - for (var i = 3; i < arguments.length; i++) - cx.cc.push(arguments[i]); - return cont(pushlex(end, info), commasep(what, end), poplex); - } - function block(type) { - if (type == "}") return cont(); - return pass(statement, block); - } - function maybetype(type) { - if (isTS && type == ":") return cont(typedef); - } - function typedef(type) { - if (type == "variable"){cx.marked = "variable-3"; return cont();} - } - function vardef() { - return pass(pattern, maybetype, maybeAssign, vardefCont); - } - function pattern(type, value) { - if (type == "variable") { register(value); return cont(); } - if (type == "[") return contCommasep(pattern, "]"); - if (type == "{") return contCommasep(proppattern, "}"); - } - function proppattern(type, value) { - if (type == "variable" && !cx.stream.match(/^\s*:/, false)) { - register(value); - return cont(maybeAssign); - } - if (type == "variable") cx.marked = "property"; - return cont(expect(":"), pattern, maybeAssign); - } - function maybeAssign(_type, value) { - if (value == "=") return cont(expressionNoComma); - } - function vardefCont(type) { - if (type == ",") return cont(vardef); - } - function maybeelse(type, value) { - if (type == "keyword b" && value == "else") return cont(pushlex("form"), statement, poplex); - } - function forspec(type) { - if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex); - } - function forspec1(type) { - if (type == "var") return cont(vardef, expect(";"), forspec2); - if (type == ";") return cont(forspec2); - if (type == "variable") return cont(formaybeinof); - return pass(expression, expect(";"), forspec2); - } - function formaybeinof(_type, value) { - if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } - return cont(maybeoperatorComma, forspec2); - } - function forspec2(type, value) { - if (type == ";") return cont(forspec3); - if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } - return pass(expression, expect(";"), forspec3); - } - function forspec3(type) { - if (type != ")") cont(expression); - } - function functiondef(type, value) { - if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} - if (type == "variable") {register(value); return cont(functiondef);} - if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, statement, popcontext); - } - function funarg(type) { - if (type == "spread") return cont(funarg); - return pass(pattern, maybetype); - } - function className(type, value) { - if (type == "variable") {register(value); return cont(classNameAfter);} - } - function classNameAfter(_type, value) { - if (value == "extends") return cont(expression); - } - function objlit(type) { - if (type == "{") return contCommasep(objprop, "}"); - } - function afterModule(type, value) { - if (type == "string") return cont(statement); - if (type == "variable") { register(value); return cont(maybeFrom); } - } - function afterExport(_type, value) { - if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); } - if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); } - return pass(statement); - } - function afterImport(type) { - if (type == "string") return cont(); - return pass(importSpec, maybeFrom); - } - function importSpec(type, value) { - if (type == "{") return contCommasep(importSpec, "}"); - if (type == "variable") register(value); - return cont(); - } - function maybeFrom(_type, value) { - if (value == "from") { cx.marked = "keyword"; return cont(expression); } - } - function arrayLiteral(type) { - if (type == "]") return cont(); - return pass(expressionNoComma, maybeArrayComprehension); - } - function maybeArrayComprehension(type) { - if (type == "for") return pass(comprehension, expect("]")); - if (type == ",") return cont(commasep(expressionNoComma, "]")); - return pass(commasep(expressionNoComma, "]")); - } - function comprehension(type) { - if (type == "for") return cont(forspec, comprehension); - if (type == "if") return cont(expression, comprehension); - } - - // Interface - - return { - startState: function(basecolumn) { - var state = { - tokenize: tokenBase, - lastType: "sof", - cc: [], - lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), - localVars: parserConfig.localVars, - context: parserConfig.localVars && {vars: parserConfig.localVars}, - indented: 0 - }; - if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") - state.globalVars = parserConfig.globalVars; - return state; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = false; - state.indented = stream.indentation(); - findFatArrow(stream, state); - } - if (state.tokenize != tokenComment && stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (type == "comment") return style; - state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; - return parseJS(state, style, type, content, stream); - }, - - indent: function(state, textAfter) { - if (state.tokenize == tokenComment) return CodeMirror.Pass; - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; - // Kludge to prevent 'maybelse' from blocking lexical scope pops - for (var i = state.cc.length - 1; i >= 0; --i) { - var c = state.cc[i]; - if (c == poplex) lexical = lexical.prev; - else if (c != maybeelse) break; - } - if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; - if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat") - lexical = lexical.prev; - var type = lexical.type, closing = firstChar == type; - - if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0); - else if (type == "form" && firstChar == "{") return lexical.indented; - else if (type == "form") return lexical.indented + indentUnit; - else if (type == "stat") - return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? statementIndent || indentUnit : 0); - else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false) - return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); - else if (lexical.align) return lexical.column + (closing ? 0 : 1); - else return lexical.indented + (closing ? 0 : indentUnit); - }, - - electricChars: ":{}", - blockCommentStart: jsonMode ? null : "/*", - blockCommentEnd: jsonMode ? null : "*/", - lineComment: jsonMode ? null : "//", - fold: "brace", - - helperType: jsonMode ? "json" : "javascript", - jsonldMode: jsonldMode, - jsonMode: jsonMode - }; -}); - -CodeMirror.defineMIME("text/javascript", "javascript"); -CodeMirror.defineMIME("text/ecmascript", "javascript"); -CodeMirror.defineMIME("application/javascript", "javascript"); -CodeMirror.defineMIME("application/ecmascript", "javascript"); -CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); -CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true}); -CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true}); -CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); -CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); - -}); diff --git a/vendor/codemirror/mode/javascript/json-ld.html b/vendor/codemirror/mode/javascript/json-ld.html deleted file mode 100644 index 256bb0f6..00000000 --- a/vendor/codemirror/mode/javascript/json-ld.html +++ /dev/null @@ -1,72 +0,0 @@ - - -CodeMirror: JSON-LD mode - - - - - - - - - - - - -
-

JSON-LD mode

- - -
- - - -

This is a specialization of the JavaScript mode.

-
diff --git a/vendor/codemirror/mode/javascript/test.js b/vendor/codemirror/mode/javascript/test.js deleted file mode 100644 index 3f731961..00000000 --- a/vendor/codemirror/mode/javascript/test.js +++ /dev/null @@ -1,151 +0,0 @@ -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "javascript"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("locals", - "[keyword function] [variable foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }"); - - MT("comma-and-binop", - "[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }"); - - MT("destructuring", - "([keyword function]([def a], [[[def b], [def c] ]]) {", - " [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);", - " [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];", - "})();"); - - MT("class", - "[keyword class] [variable Point] [keyword extends] [variable SuperThing] {", - " [[ [string-2 /expr/] ]]: [number 24],", - " [property constructor]([def x], [def y]) {", - " [keyword super]([string 'something']);", - " [keyword this].[property x] [operator =] [variable-2 x];", - " }", - "}"); - - MT("module", - "[keyword module] [string 'foo'] {", - " [keyword export] [keyword let] [def x] [operator =] [number 42];", - " [keyword export] [keyword *] [keyword from] [string 'somewhere'];", - "}"); - - MT("import", - "[keyword function] [variable foo]() {", - " [keyword import] [def $] [keyword from] [string 'jquery'];", - " [keyword module] [def crypto] [keyword from] [string 'crypto'];", - " [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];", - "}"); - - MT("const", - "[keyword function] [variable f]() {", - " [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];", - "}"); - - MT("for/of", - "[keyword for]([keyword let] [variable of] [keyword of] [variable something]) {}"); - - MT("generator", - "[keyword function*] [variable repeat]([def n]) {", - " [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])", - " [keyword yield] [variable-2 i];", - "}"); - - MT("fatArrow", - "[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);", - "[variable a];", // No longer in scope - "[keyword let] [variable f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];", - "[variable c];"); - - MT("spread", - "[keyword function] [variable f]([def a], [meta ...][def b]) {", - " [variable something]([variable-2 a], [meta ...][variable-2 b]);", - "}"); - - MT("comprehension", - "[keyword function] [variable f]() {", - " [[([variable x] [operator +] [number 1]) [keyword for] ([keyword var] [def x] [keyword in] [variable y]) [keyword if] [variable pred]([variable-2 x]) ]];", - " ([variable u] [keyword for] ([keyword var] [def u] [keyword of] [variable generateValues]()) [keyword if] ([variable-2 u].[property color] [operator ===] [string 'blue']));", - "}"); - - MT("quasi", - "[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]"); - - MT("indent_statement", - "[keyword var] [variable x] [operator =] [number 10]", - "[variable x] [operator +=] [variable y] [operator +]", - " [atom Infinity]", - "[keyword debugger];"); - - MT("indent_if", - "[keyword if] ([number 1])", - " [keyword break];", - "[keyword else] [keyword if] ([number 2])", - " [keyword continue];", - "[keyword else]", - " [number 10];", - "[keyword if] ([number 1]) {", - " [keyword break];", - "} [keyword else] [keyword if] ([number 2]) {", - " [keyword continue];", - "} [keyword else] {", - " [number 10];", - "}"); - - MT("indent_for", - "[keyword for] ([keyword var] [variable i] [operator =] [number 0];", - " [variable i] [operator <] [number 100];", - " [variable i][operator ++])", - " [variable doSomething]([variable i]);", - "[keyword debugger];"); - - MT("indent_c_style", - "[keyword function] [variable foo]()", - "{", - " [keyword debugger];", - "}"); - - MT("multilinestring", - "[keyword var] [variable x] [operator =] [string 'foo\\]", - "[string bar'];"); - - MT("scary_regexp", - "[string-2 /foo[[/]]bar/];"); - - var jsonld_mode = CodeMirror.getMode( - {indentUnit: 2}, - {name: "javascript", jsonld: true} - ); - function LD(name) { - test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1)); - } - - LD("json_ld_keywords", - '{', - ' [meta "@context"]: {', - ' [meta "@base"]: [string "http://example.com/"],', - ' [meta "@vocab"]: [string "http://xmlns.com/foaf/0.1/"],', - ' [property "likesFlavor"]: {', - ' [meta "@container"]: [meta "@list"]', - ' [meta "@reverse"]: [string "@beFavoriteOf"]', - ' },', - ' [property "nick"]: { [meta "@container"]: [meta "@set"] },', - ' [property "nick"]: { [meta "@container"]: [meta "@index"] }', - ' },', - ' [meta "@graph"]: [[ {', - ' [meta "@id"]: [string "http://dbpedia.org/resource/John_Lennon"],', - ' [property "name"]: [string "John Lennon"],', - ' [property "modified"]: {', - ' [meta "@value"]: [string "2010-05-29T14:17:39+02:00"],', - ' [meta "@type"]: [string "http://www.w3.org/2001/XMLSchema#dateTime"]', - ' }', - ' } ]]', - '}'); - - LD("json_ld_fake", - '{', - ' [property "@fake"]: [string "@fake"],', - ' [property "@contextual"]: [string "@identifier"],', - ' [property "user@domain.com"]: [string "@graphical"],', - ' [property "@ID"]: [string "@@ID"]', - '}'); -})(); diff --git a/vendor/codemirror/mode/javascript/typescript.html b/vendor/codemirror/mode/javascript/typescript.html deleted file mode 100644 index 9cc5f493..00000000 --- a/vendor/codemirror/mode/javascript/typescript.html +++ /dev/null @@ -1,61 +0,0 @@ - - -CodeMirror: TypeScript mode - - - - - - - - - -
-

TypeScript mode

- - -
- - - -

This is a specialization of the JavaScript mode.

-
diff --git a/vendor/codemirror/mode/jinja2/jinja2.js b/vendor/codemirror/mode/jinja2/jinja2.js deleted file mode 100644 index e30ce634..00000000 --- a/vendor/codemirror/mode/jinja2/jinja2.js +++ /dev/null @@ -1,63 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("jinja2", function() { - var keywords = ["and", "as", "block", "endblock", "by", "cycle", "debug", "else", "elif", - "extends", "filter", "endfilter", "firstof", "for", - "endfor", "if", "endif", "ifchanged", "endifchanged", - "ifequal", "endifequal", "ifnotequal", - "endifnotequal", "in", "include", "load", "not", "now", "or", - "parsed", "regroup", "reversed", "spaceless", - "endspaceless", "ssi", "templatetag", "openblock", - "closeblock", "openvariable", "closevariable", - "openbrace", "closebrace", "opencomment", - "closecomment", "widthratio", "url", "with", "endwith", - "get_current_language", "trans", "noop", "blocktrans", - "endblocktrans", "get_available_languages", - "get_current_language_bidi", "plural"]; - keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b"); - - function tokenBase (stream, state) { - var ch = stream.next(); - if (ch == "{") { - if (ch = stream.eat(/\{|%|#/)) { - stream.eat("-"); - state.tokenize = inTag(ch); - return "tag"; - } - } - } - function inTag (close) { - if (close == "{") { - close = "}"; - } - return function (stream, state) { - var ch = stream.next(); - if ((ch == close || (ch == "-" && stream.eat(close))) - && stream.eat("}")) { - state.tokenize = tokenBase; - return "tag"; - } - if (stream.match(keywords)) { - return "keyword"; - } - return close == "#" ? "comment" : "string"; - }; - } - return { - startState: function () { - return {tokenize: tokenBase}; - }, - token: function (stream, state) { - return state.tokenize(stream, state); - } - }; - }); -}); diff --git a/vendor/codemirror/mode/julia/julia.js b/vendor/codemirror/mode/julia/julia.js deleted file mode 100644 index d37ab503..00000000 --- a/vendor/codemirror/mode/julia/julia.js +++ /dev/null @@ -1,298 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("julia", function(_conf, parserConf) { - var ERRORCLASS = 'error'; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var operators = parserConf.operators || /^\.?[|&^\\%*+\-<>!=\/]=?|\?|~|:|\$|\.[<>]|<<=?|>>>?=?|\.[<>=]=|->?|\/\/|\bin\b/; - var delimiters = parserConf.delimiters || /^[;,()[\]{}]/; - var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*!*/; - var blockOpeners = ["begin", "function", "type", "immutable", "let", "macro", "for", "while", "quote", "if", "else", "elseif", "try", "finally", "catch", "do"]; - var blockClosers = ["end", "else", "elseif", "catch", "finally"]; - var keywordList = ['if', 'else', 'elseif', 'while', 'for', 'begin', 'let', 'end', 'do', 'try', 'catch', 'finally', 'return', 'break', 'continue', 'global', 'local', 'const', 'export', 'import', 'importall', 'using', 'function', 'macro', 'module', 'baremodule', 'type', 'immutable', 'quote', 'typealias', 'abstract', 'bitstype', 'ccall']; - var builtinList = ['true', 'false', 'enumerate', 'open', 'close', 'nothing', 'NaN', 'Inf', 'print', 'println', 'Int', 'Int8', 'Uint8', 'Int16', 'Uint16', 'Int32', 'Uint32', 'Int64', 'Uint64', 'Int128', 'Uint128', 'Bool', 'Char', 'Float16', 'Float32', 'Float64', 'Array', 'Vector', 'Matrix', 'String', 'UTF8String', 'ASCIIString', 'error', 'warn', 'info', '@printf']; - - //var stringPrefixes = new RegExp("^[br]?('|\")") - var stringPrefixes = /^(`|'|"{3}|([br]?"))/; - var keywords = wordRegexp(keywordList); - var builtins = wordRegexp(builtinList); - var openers = wordRegexp(blockOpeners); - var closers = wordRegexp(blockClosers); - var macro = /^@[_A-Za-z][_A-Za-z0-9]*/; - var symbol = /^:[_A-Za-z][_A-Za-z0-9]*/; - var indentInfo = null; - - function in_array(state) { - var ch = cur_scope(state); - if(ch=="[" || ch=="{") { - return true; - } - else { - return false; - } - } - - function cur_scope(state) { - if(state.scopes.length==0) { - return null; - } - return state.scopes[state.scopes.length - 1]; - } - - // tokenizers - function tokenBase(stream, state) { - // Handle scope changes - var leaving_expr = state.leaving_expr; - if(stream.sol()) { - leaving_expr = false; - } - state.leaving_expr = false; - if(leaving_expr) { - if(stream.match(/^'+/)) { - return 'operator'; - } - - } - - if(stream.match(/^\.{2,3}/)) { - return 'operator'; - } - - if (stream.eatSpace()) { - return null; - } - - var ch = stream.peek(); - // Handle Comments - if (ch === '#') { - stream.skipToEnd(); - return 'comment'; - } - if(ch==='[') { - state.scopes.push("["); - } - - if(ch==='{') { - state.scopes.push("{"); - } - - var scope=cur_scope(state); - - if(scope==='[' && ch===']') { - state.scopes.pop(); - state.leaving_expr=true; - } - - if(scope==='{' && ch==='}') { - state.scopes.pop(); - state.leaving_expr=true; - } - - if(ch===')') { - state.leaving_expr = true; - } - - var match; - if(!in_array(state) && (match=stream.match(openers, false))) { - state.scopes.push(match); - } - - if(!in_array(state) && stream.match(closers, false)) { - state.scopes.pop(); - } - - if(in_array(state)) { - if(stream.match(/^end/)) { - return 'number'; - } - - } - - if(stream.match(/^=>/)) { - return 'operator'; - } - - - // Handle Number Literals - if (stream.match(/^[0-9\.]/, false)) { - var imMatcher = RegExp(/^im\b/); - var floatLiteral = false; - // Floats - if (stream.match(/^\d*\.(?!\.)\d+([ef][\+\-]?\d+)?/i)) { floatLiteral = true; } - if (stream.match(/^\d+\.(?!\.)\d*/)) { floatLiteral = true; } - if (stream.match(/^\.\d+/)) { floatLiteral = true; } - if (floatLiteral) { - // Float literals may be "imaginary" - stream.match(imMatcher); - state.leaving_expr = true; - return 'number'; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^0x[0-9a-f]+/i)) { intLiteral = true; } - // Binary - if (stream.match(/^0b[01]+/i)) { intLiteral = true; } - // Octal - if (stream.match(/^0o[0-7]+/i)) { intLiteral = true; } - // Decimal - if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { - intLiteral = true; - } - // Zero by itself with no other piece of number. - if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } - if (intLiteral) { - // Integer literals may be "long" - stream.match(imMatcher); - state.leaving_expr = true; - return 'number'; - } - } - - if(stream.match(/^(::)|(<:)/)) { - return 'operator'; - } - - // Handle symbols - if(!leaving_expr && stream.match(symbol)) { - return 'string'; - } - - // Handle operators and Delimiters - if (stream.match(operators)) { - return 'operator'; - } - - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - if (stream.match(macro)) { - return 'meta'; - } - - - if (stream.match(delimiters)) { - return null; - } - - if (stream.match(keywords)) { - return 'keyword'; - } - - if (stream.match(builtins)) { - return 'builtin'; - } - - - if (stream.match(identifiers)) { - state.leaving_expr=true; - return 'variable'; - } - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - while ('rub'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) { - delimiter = delimiter.substr(1); - } - var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; - - function tokenString(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"\\]/); - if (stream.eat('\\')) { - stream.next(); - if (singleline && stream.eol()) { - return OUTCLASS; - } - } else if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return OUTCLASS; - } else { - stream.eat(/['"]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) { - return ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return OUTCLASS; - } - tokenString.isString = true; - return tokenString; - } - - function tokenLexer(stream, state) { - indentInfo = null; - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle '.' connected identifiers - if (current === '.') { - style = stream.match(identifiers, false) ? null : ERRORCLASS; - if (style === null && state.lastStyle === 'meta') { - // Apply 'meta' style to '.' connected identifiers when - // appropriate. - style = 'meta'; - } - return style; - } - - return style; - } - - var external = { - startState: function() { - return { - tokenize: tokenBase, - scopes: [], - leaving_expr: false - }; - }, - - token: function(stream, state) { - var style = tokenLexer(stream, state); - state.lastStyle = style; - return style; - }, - - indent: function(state, textAfter) { - var delta = 0; - if(textAfter=="end" || textAfter=="]" || textAfter=="}" || textAfter=="else" || textAfter=="elseif" || textAfter=="catch" || textAfter=="finally") { - delta = -1; - } - return (state.scopes.length + delta) * 4; - }, - - lineComment: "#", - fold: "indent", - electricChars: "edlsifyh]}" - }; - return external; -}); - - -CodeMirror.defineMIME("text/x-julia", "julia"); - -}); diff --git a/vendor/codemirror/mode/livescript/livescript.js b/vendor/codemirror/mode/livescript/livescript.js deleted file mode 100644 index 9322ba80..00000000 --- a/vendor/codemirror/mode/livescript/livescript.js +++ /dev/null @@ -1,280 +0,0 @@ -/** - * Link to the project's GitHub page: - * https://github.com/duralog/CodeMirror - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -(function() { - CodeMirror.defineMode('livescript', function(){ - var tokenBase, external; - tokenBase = function(stream, state){ - var next_rule, nr, i$, len$, r, m; - if (next_rule = state.next || 'start') { - state.next = state.next; - if (Array.isArray(nr = Rules[next_rule])) { - for (i$ = 0, len$ = nr.length; i$ < len$; ++i$) { - r = nr[i$]; - if (r.regex && (m = stream.match(r.regex))) { - state.next = r.next; - return r.token; - } - } - stream.next(); - return 'error'; - } - if (stream.match(r = Rules[next_rule])) { - if (r.regex && stream.match(r.regex)) { - state.next = r.next; - return r.token; - } else { - stream.next(); - return 'error'; - } - } - } - stream.next(); - return 'error'; - }; - external = { - startState: function(){ - return { - next: 'start', - lastToken: null - }; - }, - token: function(stream, state){ - var style; - style = tokenBase(stream, state); - state.lastToken = { - style: style, - indent: stream.indentation(), - content: stream.current() - }; - return style.replace(/\./g, ' '); - }, - indent: function(state){ - var indentation; - indentation = state.lastToken.indent; - if (state.lastToken.content.match(indenter)) { - indentation += 2; - } - return indentation; - } - }; - return external; - }); - - var identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*'; - var indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$'); - var keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))'; - var stringfill = { - token: 'string', - regex: '.+' - }; - var Rules = { - start: [ - { - token: 'comment.doc', - regex: '/\\*', - next: 'comment' - }, { - token: 'comment', - regex: '#.*' - }, { - token: 'keyword', - regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend - }, { - token: 'constant.language', - regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend - }, { - token: 'invalid.illegal', - regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend - }, { - token: 'language.support.class', - regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend - }, { - token: 'language.support.function', - regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend - }, { - token: 'variable.language', - regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend - }, { - token: 'identifier', - regex: identifier + '\\s*:(?![:=])' - }, { - token: 'variable', - regex: identifier - }, { - token: 'keyword.operator', - regex: '(?:\\.{3}|\\s+\\?)' - }, { - token: 'keyword.variable', - regex: '(?:@+|::|\\.\\.)', - next: 'key' - }, { - token: 'keyword.operator', - regex: '\\.\\s*', - next: 'key' - }, { - token: 'string', - regex: '\\\\\\S[^\\s,;)}\\]]*' - }, { - token: 'string.doc', - regex: '\'\'\'', - next: 'qdoc' - }, { - token: 'string.doc', - regex: '"""', - next: 'qqdoc' - }, { - token: 'string', - regex: '\'', - next: 'qstring' - }, { - token: 'string', - regex: '"', - next: 'qqstring' - }, { - token: 'string', - regex: '`', - next: 'js' - }, { - token: 'string', - regex: '<\\[', - next: 'words' - }, { - token: 'string.regex', - regex: '//', - next: 'heregex' - }, { - token: 'string.regex', - regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}', - next: 'key' - }, { - token: 'constant.numeric', - regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)' - }, { - token: 'lparen', - regex: '[({[]' - }, { - token: 'rparen', - regex: '[)}\\]]', - next: 'key' - }, { - token: 'keyword.operator', - regex: '\\S+' - }, { - token: 'text', - regex: '\\s+' - } - ], - heregex: [ - { - token: 'string.regex', - regex: '.*?//[gimy$?]{0,4}', - next: 'start' - }, { - token: 'string.regex', - regex: '\\s*#{' - }, { - token: 'comment.regex', - regex: '\\s+(?:#.*)?' - }, { - token: 'string.regex', - regex: '\\S+' - } - ], - key: [ - { - token: 'keyword.operator', - regex: '[.?@!]+' - }, { - token: 'identifier', - regex: identifier, - next: 'start' - }, { - token: 'text', - regex: '.', - next: 'start' - } - ], - comment: [ - { - token: 'comment.doc', - regex: '.*?\\*/', - next: 'start' - }, { - token: 'comment.doc', - regex: '.+' - } - ], - qdoc: [ - { - token: 'string', - regex: ".*?'''", - next: 'key' - }, stringfill - ], - qqdoc: [ - { - token: 'string', - regex: '.*?"""', - next: 'key' - }, stringfill - ], - qstring: [ - { - token: 'string', - regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'', - next: 'key' - }, stringfill - ], - qqstring: [ - { - token: 'string', - regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', - next: 'key' - }, stringfill - ], - js: [ - { - token: 'string', - regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`', - next: 'key' - }, stringfill - ], - words: [ - { - token: 'string', - regex: '.*?\\]>', - next: 'key' - }, stringfill - ] - }; - for (var idx in Rules) { - var r = Rules[idx]; - if (Array.isArray(r)) { - for (var i = 0, len = r.length; i < len; ++i) { - var rr = r[i]; - if (rr.regex) { - Rules[idx][i].regex = new RegExp('^' + rr.regex); - } - } - } else if (r.regex) { - Rules[idx].regex = new RegExp('^' + r.regex); - } - } -})(); - -CodeMirror.defineMIME('text/x-livescript', 'livescript'); - -}); diff --git a/vendor/codemirror/mode/livescript/livescript.ls b/vendor/codemirror/mode/livescript/livescript.ls deleted file mode 100644 index 06524231..00000000 --- a/vendor/codemirror/mode/livescript/livescript.ls +++ /dev/null @@ -1,266 +0,0 @@ -/** - * Link to the project's GitHub page: - * https://github.com/duralog/CodeMirror - */ -CodeMirror.defineMode 'livescript', (conf) -> - tokenBase = (stream, state) -> - #indent = - if next_rule = state.next or \start - state.next = state.next - if Array.isArray nr = Rules[next_rule] - for r in nr - if r.regex and m = stream.match r.regex - state.next = r.next - return r.token - stream.next! - return \error - if stream.match r = Rules[next_rule] - if r.regex and stream.match r.regex - state.next = r.next - return r.token - else - stream.next! - return \error - stream.next! - return 'error' - external = { - startState: (basecolumn) -> - { - next: \start - lastToken: null - } - token: (stream, state) -> - style = tokenBase stream, state #tokenLexer stream, state - state.lastToken = { - style: style - indent: stream.indentation! - content: stream.current! - } - style.replace /\./g, ' ' - indent: (state, textAfter) -> - # XXX this won't work with backcalls - indentation = state.lastToken.indent - if state.lastToken.content.match indenter then indentation += 2 - return indentation - } - external - -### Highlight Rules -# taken from mode-ls.ls - -indenter = // (? - : [({[=:] - | [-~]> - | \b (?: e(?:lse|xport) | d(?:o|efault) | t(?:ry|hen) | finally | - import (?:\s* all)? | const | var | - let | new | catch (?:\s* #identifier)? ) - ) \s* $ // - -identifier = /(?![\d\s])[$\w\xAA-\uFFDC](?:(?!\s)[$\w\xAA-\uFFDC]|-[A-Za-z])*/$ -keywordend = /(?![$\w]|-[A-Za-z]|\s*:(?![:=]))/$ -stringfill = token: \string, regex: '.+' - -Rules = - start: - * token: \comment.doc - regex: '/\\*' - next : \comment - - * token: \comment - regex: '#.*' - - * token: \keyword - regex: //(? - :t(?:h(?:is|row|en)|ry|ypeof!?) - |c(?:on(?:tinue|st)|a(?:se|tch)|lass) - |i(?:n(?:stanceof)?|mp(?:ort(?:\s+all)?|lements)|[fs]) - |d(?:e(?:fault|lete|bugger)|o) - |f(?:or(?:\s+own)?|inally|unction) - |s(?:uper|witch) - |e(?:lse|x(?:tends|port)|val) - |a(?:nd|rguments) - |n(?:ew|ot) - |un(?:less|til) - |w(?:hile|ith) - |o[fr]|return|break|let|var|loop - )//$ + keywordend - - * token: \constant.language - regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend - - * token: \invalid.illegal - regex: '(? - :p(?:ackage|r(?:ivate|otected)|ublic) - |i(?:mplements|nterface) - |enum|static|yield - )' + keywordend - - * token: \language.support.class - regex: '(? - :R(?:e(?:gExp|ferenceError)|angeError) - |S(?:tring|yntaxError) - |E(?:rror|valError) - |Array|Boolean|Date|Function|Number|Object|TypeError|URIError - )' + keywordend - - * token: \language.support.function - regex: '(? - :is(?:NaN|Finite) - |parse(?:Int|Float) - |Math|JSON - |(?:en|de)codeURI(?:Component)? - )' + keywordend - - * token: \variable.language - regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend - - * token: \identifier - regex: identifier + /\s*:(?![:=])/$ - - * token: \variable - regex: identifier - - * token: \keyword.operator - regex: /(?:\.{3}|\s+\?)/$ - - * token: \keyword.variable - regex: /(?:@+|::|\.\.)/$ - next : \key - - * token: \keyword.operator - regex: /\.\s*/$ - next : \key - - * token: \string - regex: /\\\S[^\s,;)}\]]*/$ - - * token: \string.doc - regex: \''' - next : \qdoc - - * token: \string.doc - regex: \""" - next : \qqdoc - - * token: \string - regex: \' - next : \qstring - - * token: \string - regex: \" - next : \qqstring - - * token: \string - regex: \` - next : \js - - * token: \string - regex: '<\\[' - next : \words - - * token: \string.regex - regex: \// - next : \heregex - - * token: \string.regex - regex: // - /(?: [^ [ / \n \\ ]* - (?: (?: \\. - | \[ [^\]\n\\]* (?:\\.[^\]\n\\]*)* \] - ) [^ [ / \n \\ ]* - )* - )/ [gimy$]{0,4} - //$ - next : \key - - * token: \constant.numeric - regex: '(?:0x[\\da-fA-F][\\da-fA-F_]* - |(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]* - |(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*) - (?:e[+-]?\\d[\\d_]*)?[\\w$]*)' - - * token: \lparen - regex: '[({[]' - - * token: \rparen - regex: '[)}\\]]' - next : \key - - * token: \keyword.operator - regex: \\\S+ - - * token: \text - regex: \\\s+ - - heregex: - * token: \string.regex - regex: '.*?//[gimy$?]{0,4}' - next : \start - * token: \string.regex - regex: '\\s*#{' - * token: \comment.regex - regex: '\\s+(?:#.*)?' - * token: \string.regex - regex: '\\S+' - - key: - * token: \keyword.operator - regex: '[.?@!]+' - * token: \identifier - regex: identifier - next : \start - * token: \text - regex: '.' - next : \start - - comment: - * token: \comment.doc - regex: '.*?\\*/' - next : \start - * token: \comment.doc - regex: '.+' - - qdoc: - token: \string - regex: ".*?'''" - next : \key - stringfill - - qqdoc: - token: \string - regex: '.*?"""' - next : \key - stringfill - - qstring: - token: \string - regex: /[^\\']*(?:\\.[^\\']*)*'/$ - next : \key - stringfill - - qqstring: - token: \string - regex: /[^\\"]*(?:\\.[^\\"]*)*"/$ - next : \key - stringfill - - js: - token: \string - regex: /[^\\`]*(?:\\.[^\\`]*)*`/$ - next : \key - stringfill - - words: - token: \string - regex: '.*?\\]>' - next : \key - stringfill - -# for optimization, precompile the regexps -for idx, r of Rules - if Array.isArray r - for rr, i in r - if rr.regex then Rules[idx][i].regex = new RegExp '^'+rr.regex - else if r.regex then Rules[idx].regex = new RegExp '^'+r.regex - -CodeMirror.defineMIME 'text/x-livescript', 'livescript' diff --git a/vendor/codemirror/mode/lua/lua.js b/vendor/codemirror/mode/lua/lua.js deleted file mode 100644 index 3673557c..00000000 --- a/vendor/codemirror/mode/lua/lua.js +++ /dev/null @@ -1,156 +0,0 @@ -// LUA mode. Ported to CodeMirror 2 from Franciszek Wawrzak's -// CodeMirror 1 mode. -// highlights keywords, strings, comments (no leveling supported! ("[==[")), tokens, basic indenting - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("lua", function(config, parserConfig) { - var indentUnit = config.indentUnit; - - function prefixRE(words) { - return new RegExp("^(?:" + words.join("|") + ")", "i"); - } - function wordRE(words) { - return new RegExp("^(?:" + words.join("|") + ")$", "i"); - } - var specials = wordRE(parserConfig.specials || []); - - // long list of standard functions from lua manual - var builtins = wordRE([ - "_G","_VERSION","assert","collectgarbage","dofile","error","getfenv","getmetatable","ipairs","load", - "loadfile","loadstring","module","next","pairs","pcall","print","rawequal","rawget","rawset","require", - "select","setfenv","setmetatable","tonumber","tostring","type","unpack","xpcall", - - "coroutine.create","coroutine.resume","coroutine.running","coroutine.status","coroutine.wrap","coroutine.yield", - - "debug.debug","debug.getfenv","debug.gethook","debug.getinfo","debug.getlocal","debug.getmetatable", - "debug.getregistry","debug.getupvalue","debug.setfenv","debug.sethook","debug.setlocal","debug.setmetatable", - "debug.setupvalue","debug.traceback", - - "close","flush","lines","read","seek","setvbuf","write", - - "io.close","io.flush","io.input","io.lines","io.open","io.output","io.popen","io.read","io.stderr","io.stdin", - "io.stdout","io.tmpfile","io.type","io.write", - - "math.abs","math.acos","math.asin","math.atan","math.atan2","math.ceil","math.cos","math.cosh","math.deg", - "math.exp","math.floor","math.fmod","math.frexp","math.huge","math.ldexp","math.log","math.log10","math.max", - "math.min","math.modf","math.pi","math.pow","math.rad","math.random","math.randomseed","math.sin","math.sinh", - "math.sqrt","math.tan","math.tanh", - - "os.clock","os.date","os.difftime","os.execute","os.exit","os.getenv","os.remove","os.rename","os.setlocale", - "os.time","os.tmpname", - - "package.cpath","package.loaded","package.loaders","package.loadlib","package.path","package.preload", - "package.seeall", - - "string.byte","string.char","string.dump","string.find","string.format","string.gmatch","string.gsub", - "string.len","string.lower","string.match","string.rep","string.reverse","string.sub","string.upper", - - "table.concat","table.insert","table.maxn","table.remove","table.sort" - ]); - var keywords = wordRE(["and","break","elseif","false","nil","not","or","return", - "true","function", "end", "if", "then", "else", "do", - "while", "repeat", "until", "for", "in", "local" ]); - - var indentTokens = wordRE(["function", "if","repeat","do", "\\(", "{"]); - var dedentTokens = wordRE(["end", "until", "\\)", "}"]); - var dedentPartial = prefixRE(["end", "until", "\\)", "}", "else", "elseif"]); - - function readBracket(stream) { - var level = 0; - while (stream.eat("=")) ++level; - stream.eat("["); - return level; - } - - function normal(stream, state) { - var ch = stream.next(); - if (ch == "-" && stream.eat("-")) { - if (stream.eat("[") && stream.eat("[")) - return (state.cur = bracketed(readBracket(stream), "comment"))(stream, state); - stream.skipToEnd(); - return "comment"; - } - if (ch == "\"" || ch == "'") - return (state.cur = string(ch))(stream, state); - if (ch == "[" && /[\[=]/.test(stream.peek())) - return (state.cur = bracketed(readBracket(stream), "string"))(stream, state); - if (/\d/.test(ch)) { - stream.eatWhile(/[\w.%]/); - return "number"; - } - if (/[\w_]/.test(ch)) { - stream.eatWhile(/[\w\\\-_.]/); - return "variable"; - } - return null; - } - - function bracketed(level, style) { - return function(stream, state) { - var curlev = null, ch; - while ((ch = stream.next()) != null) { - if (curlev == null) {if (ch == "]") curlev = 0;} - else if (ch == "=") ++curlev; - else if (ch == "]" && curlev == level) { state.cur = normal; break; } - else curlev = null; - } - return style; - }; - } - - function string(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) break; - escaped = !escaped && ch == "\\"; - } - if (!escaped) state.cur = normal; - return "string"; - }; - } - - return { - startState: function(basecol) { - return {basecol: basecol || 0, indentDepth: 0, cur: normal}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = state.cur(stream, state); - var word = stream.current(); - if (style == "variable") { - if (keywords.test(word)) style = "keyword"; - else if (builtins.test(word)) style = "builtin"; - else if (specials.test(word)) style = "variable-2"; - } - if ((style != "comment") && (style != "string")){ - if (indentTokens.test(word)) ++state.indentDepth; - else if (dedentTokens.test(word)) --state.indentDepth; - } - return style; - }, - - indent: function(state, textAfter) { - var closing = dedentPartial.test(textAfter); - return state.basecol + indentUnit * (state.indentDepth - (closing ? 1 : 0)); - }, - - lineComment: "--", - blockCommentStart: "--[[", - blockCommentEnd: "]]" - }; -}); - -CodeMirror.defineMIME("text/x-lua", "lua"); - -}); diff --git a/vendor/codemirror/mode/markdown/markdown.js b/vendor/codemirror/mode/markdown/markdown.js deleted file mode 100644 index 199c7a71..00000000 --- a/vendor/codemirror/mode/markdown/markdown.js +++ /dev/null @@ -1,760 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror", require("../xml/xml"))); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../xml/xml"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { - - var htmlFound = CodeMirror.modes.hasOwnProperty("xml"); - var htmlMode = CodeMirror.getMode(cmCfg, htmlFound ? {name: "xml", htmlMode: true} : "text/plain"); - var aliases = { - html: "htmlmixed", - js: "javascript", - json: "application/json", - c: "text/x-csrc", - "c++": "text/x-c++src", - java: "text/x-java", - csharp: "text/x-csharp", - "c#": "text/x-csharp", - scala: "text/x-scala" - }; - - var getMode = (function () { - var i, modes = {}, mimes = {}, mime; - - var list = []; - for (var m in CodeMirror.modes) - if (CodeMirror.modes.propertyIsEnumerable(m)) list.push(m); - for (i = 0; i < list.length; i++) { - modes[list[i]] = list[i]; - } - var mimesList = []; - for (var m in CodeMirror.mimeModes) - if (CodeMirror.mimeModes.propertyIsEnumerable(m)) - mimesList.push({mime: m, mode: CodeMirror.mimeModes[m]}); - for (i = 0; i < mimesList.length; i++) { - mime = mimesList[i].mime; - mimes[mime] = mimesList[i].mime; - } - - for (var a in aliases) { - if (aliases[a] in modes || aliases[a] in mimes) - modes[a] = aliases[a]; - } - - return function (lang) { - return modes[lang] ? CodeMirror.getMode(cmCfg, modes[lang]) : null; - }; - }()); - - // Should characters that affect highlighting be highlighted separate? - // Does not include characters that will be output (such as `1.` and `-` for lists) - if (modeCfg.highlightFormatting === undefined) - modeCfg.highlightFormatting = false; - - // Maximum number of nested blockquotes. Set to 0 for infinite nesting. - // Excess `>` will emit `error` token. - if (modeCfg.maxBlockquoteDepth === undefined) - modeCfg.maxBlockquoteDepth = 0; - - // Should underscores in words open/close em/strong? - if (modeCfg.underscoresBreakWords === undefined) - modeCfg.underscoresBreakWords = true; - - // Turn on fenced code blocks? ("```" to start/end) - if (modeCfg.fencedCodeBlocks === undefined) modeCfg.fencedCodeBlocks = false; - - // Turn on task lists? ("- [ ] " and "- [x] ") - if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; - - var codeDepth = 0; - - var header = 'header' - , code = 'comment' - , quote = 'quote' - , list1 = 'variable-2' - , list2 = 'variable-3' - , list3 = 'keyword' - , hr = 'hr' - , image = 'tag' - , formatting = 'formatting' - , linkinline = 'link' - , linkemail = 'link' - , linktext = 'link' - , linkhref = 'string' - , em = 'em' - , strong = 'strong'; - - var hrRE = /^([*\-=_])(?:\s*\1){2,}\s*$/ - , ulRE = /^[*\-+]\s+/ - , olRE = /^[0-9]+\.\s+/ - , taskListRE = /^\[(x| )\](?=\s)/ // Must follow ulRE or olRE - , atxHeaderRE = /^#+/ - , setextHeaderRE = /^(?:\={1,}|-{1,})$/ - , textRE = /^[^#!\[\]*_\\<>` "'(]+/; - - function switchInline(stream, state, f) { - state.f = state.inline = f; - return f(stream, state); - } - - function switchBlock(stream, state, f) { - state.f = state.block = f; - return f(stream, state); - } - - - // Blocks - - function blankLine(state) { - // Reset linkTitle state - state.linkTitle = false; - // Reset EM state - state.em = false; - // Reset STRONG state - state.strong = false; - // Reset state.quote - state.quote = 0; - if (!htmlFound && state.f == htmlBlock) { - state.f = inlineNormal; - state.block = blockNormal; - } - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - // Mark this line as blank - state.thisLineHasContent = false; - return null; - } - - function blockNormal(stream, state) { - - var sol = stream.sol(); - - var prevLineIsList = (state.list !== false); - if (state.list !== false && state.indentationDiff >= 0) { // Continued list - if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block - state.indentation -= state.indentationDiff; - } - state.list = null; - } else if (state.list !== false && state.indentation > 0) { - state.list = null; - state.listDepth = Math.floor(state.indentation / 4); - } else if (state.list !== false) { // No longer a list - state.list = false; - state.listDepth = 0; - } - - var match = null; - if (state.indentationDiff >= 4) { - state.indentation -= 4; - stream.skipToEnd(); - return code; - } else if (stream.eatSpace()) { - return null; - } else if (match = stream.match(atxHeaderRE)) { - state.header = match[0].length <= 6 ? match[0].length : 6; - if (modeCfg.highlightFormatting) state.formatting = "header"; - state.f = state.inline; - return getType(state); - } else if (state.prevLineHasContent && (match = stream.match(setextHeaderRE))) { - state.header = match[0].charAt(0) == '=' ? 1 : 2; - if (modeCfg.highlightFormatting) state.formatting = "header"; - state.f = state.inline; - return getType(state); - } else if (stream.eat('>')) { - state.indentation++; - state.quote = sol ? 1 : state.quote + 1; - if (modeCfg.highlightFormatting) state.formatting = "quote"; - stream.eatSpace(); - return getType(state); - } else if (stream.peek() === '[') { - return switchInline(stream, state, footnoteLink); - } else if (stream.match(hrRE, true)) { - return hr; - } else if ((!state.prevLineHasContent || prevLineIsList) && (stream.match(ulRE, false) || stream.match(olRE, false))) { - var listType = null; - if (stream.match(ulRE, true)) { - listType = 'ul'; - } else { - stream.match(olRE, true); - listType = 'ol'; - } - state.indentation += 4; - state.list = true; - state.listDepth++; - if (modeCfg.taskLists && stream.match(taskListRE, false)) { - state.taskList = true; - } - state.f = state.inline; - if (modeCfg.highlightFormatting) state.formatting = ["list", "list-" + listType]; - return getType(state); - } else if (modeCfg.fencedCodeBlocks && stream.match(/^```([\w+#]*)/, true)) { - // try switching mode - state.localMode = getMode(RegExp.$1); - if (state.localMode) state.localState = state.localMode.startState(); - switchBlock(stream, state, local); - if (modeCfg.highlightFormatting) state.formatting = "code-block"; - state.code = true; - return getType(state); - } - - return switchInline(stream, state, state.inline); - } - - function htmlBlock(stream, state) { - var style = htmlMode.token(stream, state.htmlState); - if ((htmlFound && !state.htmlState.tagName && !state.htmlState.context) || - (state.md_inside && stream.current().indexOf(">") > -1)) { - state.f = inlineNormal; - state.block = blockNormal; - state.htmlState = null; - } - return style; - } - - function local(stream, state) { - if (stream.sol() && stream.match(/^```/, true)) { - state.localMode = state.localState = null; - state.f = inlineNormal; - state.block = blockNormal; - if (modeCfg.highlightFormatting) state.formatting = "code-block"; - state.code = true; - var returnType = getType(state); - state.code = false; - return returnType; - } else if (state.localMode) { - return state.localMode.token(stream, state.localState); - } else { - stream.skipToEnd(); - return code; - } - } - - // Inline - function getType(state) { - var styles = []; - - if (state.formatting) { - styles.push(formatting); - - if (typeof state.formatting === "string") state.formatting = [state.formatting]; - - for (var i = 0; i < state.formatting.length; i++) { - styles.push(formatting + "-" + state.formatting[i]); - - if (state.formatting[i] === "header") { - styles.push(formatting + "-" + state.formatting[i] + "-" + state.header); - } - - // Add `formatting-quote` and `formatting-quote-#` for blockquotes - // Add `error` instead if the maximum blockquote nesting depth is passed - if (state.formatting[i] === "quote") { - if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { - styles.push(formatting + "-" + state.formatting[i] + "-" + state.quote); - } else { - styles.push("error"); - } - } - } - } - - if (state.taskOpen) { - styles.push("meta"); - return styles.length ? styles.join(' ') : null; - } - if (state.taskClosed) { - styles.push("property"); - return styles.length ? styles.join(' ') : null; - } - - if (state.linkHref) { - styles.push(linkhref); - return styles.length ? styles.join(' ') : null; - } - - if (state.strong) { styles.push(strong); } - if (state.em) { styles.push(em); } - - if (state.linkText) { styles.push(linktext); } - - if (state.code) { styles.push(code); } - - if (state.header) { styles.push(header); styles.push(header + "-" + state.header); } - - if (state.quote) { - styles.push(quote); - - // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth - if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { - styles.push(quote + "-" + state.quote); - } else { - styles.push(quote + "-" + modeCfg.maxBlockquoteDepth); - } - } - - if (state.list !== false) { - var listMod = (state.listDepth - 1) % 3; - if (!listMod) { - styles.push(list1); - } else if (listMod === 1) { - styles.push(list2); - } else { - styles.push(list3); - } - } - - if (state.trailingSpaceNewLine) { - styles.push("trailing-space-new-line"); - } else if (state.trailingSpace) { - styles.push("trailing-space-" + (state.trailingSpace % 2 ? "a" : "b")); - } - - return styles.length ? styles.join(' ') : null; - } - - function handleText(stream, state) { - if (stream.match(textRE, true)) { - return getType(state); - } - return undefined; - } - - function inlineNormal(stream, state) { - var style = state.text(stream, state); - if (typeof style !== 'undefined') - return style; - - if (state.list) { // List marker (*, +, -, 1., etc) - state.list = null; - return getType(state); - } - - if (state.taskList) { - var taskOpen = stream.match(taskListRE, true)[1] !== "x"; - if (taskOpen) state.taskOpen = true; - else state.taskClosed = true; - if (modeCfg.highlightFormatting) state.formatting = "task"; - state.taskList = false; - return getType(state); - } - - state.taskOpen = false; - state.taskClosed = false; - - if (state.header && stream.match(/^#+$/, true)) { - if (modeCfg.highlightFormatting) state.formatting = "header"; - return getType(state); - } - - // Get sol() value now, before character is consumed - var sol = stream.sol(); - - var ch = stream.next(); - - if (state.escape) { - state.escape = false; - return getType(state); - } - - if (ch === '\\') { - if (modeCfg.highlightFormatting) state.formatting = "escape"; - state.escape = true; - return getType(state); - } - - // Matches link titles present on next line - if (state.linkTitle) { - state.linkTitle = false; - var matchCh = ch; - if (ch === '(') { - matchCh = ')'; - } - matchCh = (matchCh+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); - var regex = '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh; - if (stream.match(new RegExp(regex), true)) { - return linkhref; - } - } - - // If this block is changed, it may need to be updated in GFM mode - if (ch === '`') { - var previousFormatting = state.formatting; - if (modeCfg.highlightFormatting) state.formatting = "code"; - var t = getType(state); - var before = stream.pos; - stream.eatWhile('`'); - var difference = 1 + stream.pos - before; - if (!state.code) { - codeDepth = difference; - state.code = true; - return getType(state); - } else { - if (difference === codeDepth) { // Must be exact - state.code = false; - return t; - } - state.formatting = previousFormatting; - return getType(state); - } - } else if (state.code) { - return getType(state); - } - - if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) { - stream.match(/\[[^\]]*\]/); - state.inline = state.f = linkHref; - return image; - } - - if (ch === '[' && stream.match(/.*\](\(| ?\[)/, false)) { - state.linkText = true; - if (modeCfg.highlightFormatting) state.formatting = "link"; - return getType(state); - } - - if (ch === ']' && state.linkText) { - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - state.linkText = false; - state.inline = state.f = linkHref; - return type; - } - - if (ch === '<' && stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false)) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + linkinline; - } - - if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + linkemail; - } - - if (ch === '<' && stream.match(/^\w/, false)) { - if (stream.string.indexOf(">") != -1) { - var atts = stream.string.substring(1,stream.string.indexOf(">")); - if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) { - state.md_inside = true; - } - } - stream.backUp(1); - state.htmlState = CodeMirror.startState(htmlMode); - return switchBlock(stream, state, htmlBlock); - } - - if (ch === '<' && stream.match(/^\/\w*?>/)) { - state.md_inside = false; - return "tag"; - } - - var ignoreUnderscore = false; - if (!modeCfg.underscoresBreakWords) { - if (ch === '_' && stream.peek() !== '_' && stream.match(/(\w)/, false)) { - var prevPos = stream.pos - 2; - if (prevPos >= 0) { - var prevCh = stream.string.charAt(prevPos); - if (prevCh !== '_' && prevCh.match(/(\w)/, false)) { - ignoreUnderscore = true; - } - } - } - } - if (ch === '*' || (ch === '_' && !ignoreUnderscore)) { - if (sol && stream.peek() === ' ') { - // Do nothing, surrounded by newline and space - } else if (state.strong === ch && stream.eat(ch)) { // Remove STRONG - if (modeCfg.highlightFormatting) state.formatting = "strong"; - var t = getType(state); - state.strong = false; - return t; - } else if (!state.strong && stream.eat(ch)) { // Add STRONG - state.strong = ch; - if (modeCfg.highlightFormatting) state.formatting = "strong"; - return getType(state); - } else if (state.em === ch) { // Remove EM - if (modeCfg.highlightFormatting) state.formatting = "em"; - var t = getType(state); - state.em = false; - return t; - } else if (!state.em) { // Add EM - state.em = ch; - if (modeCfg.highlightFormatting) state.formatting = "em"; - return getType(state); - } - } else if (ch === ' ') { - if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces - if (stream.peek() === ' ') { // Surrounded by spaces, ignore - return getType(state); - } else { // Not surrounded by spaces, back up pointer - stream.backUp(1); - } - } - } - - if (ch === ' ') { - if (stream.match(/ +$/, false)) { - state.trailingSpace++; - } else if (state.trailingSpace) { - state.trailingSpaceNewLine = true; - } - } - - return getType(state); - } - - function linkInline(stream, state) { - var ch = stream.next(); - - if (ch === ">") { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + linkinline; - } - - stream.match(/^[^>]+/, true); - - return linkinline; - } - - function linkHref(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if(stream.eatSpace()){ - return null; - } - var ch = stream.next(); - if (ch === '(' || ch === '[') { - state.f = state.inline = getLinkHrefInside(ch === "(" ? ")" : "]"); - if (modeCfg.highlightFormatting) state.formatting = "link-string"; - state.linkHref = true; - return getType(state); - } - return 'error'; - } - - function getLinkHrefInside(endChar) { - return function(stream, state) { - var ch = stream.next(); - - if (ch === endChar) { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = "link-string"; - var returnState = getType(state); - state.linkHref = false; - return returnState; - } - - if (stream.match(inlineRE(endChar), true)) { - stream.backUp(1); - } - - state.linkHref = true; - return getType(state); - }; - } - - function footnoteLink(stream, state) { - if (stream.match(/^[^\]]*\]:/, false)) { - state.f = footnoteLinkInside; - stream.next(); // Consume [ - if (modeCfg.highlightFormatting) state.formatting = "link"; - state.linkText = true; - return getType(state); - } - return switchInline(stream, state, inlineNormal); - } - - function footnoteLinkInside(stream, state) { - if (stream.match(/^\]:/, true)) { - state.f = state.inline = footnoteUrl; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var returnType = getType(state); - state.linkText = false; - return returnType; - } - - stream.match(/^[^\]]+/, true); - - return linktext; - } - - function footnoteUrl(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if(stream.eatSpace()){ - return null; - } - // Match URL - stream.match(/^[^\s]+/, true); - // Check for link title - if (stream.peek() === undefined) { // End of line, set flag to check next line - state.linkTitle = true; - } else { // More content on line, check if link title - stream.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/, true); - } - state.f = state.inline = inlineNormal; - return linkhref; - } - - var savedInlineRE = []; - function inlineRE(endChar) { - if (!savedInlineRE[endChar]) { - // Escape endChar for RegExp (taken from http://stackoverflow.com/a/494122/526741) - endChar = (endChar+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); - // Match any non-endChar, escaped character, as well as the closing - // endChar. - savedInlineRE[endChar] = new RegExp('^(?:[^\\\\]|\\\\.)*?(' + endChar + ')'); - } - return savedInlineRE[endChar]; - } - - var mode = { - startState: function() { - return { - f: blockNormal, - - prevLineHasContent: false, - thisLineHasContent: false, - - block: blockNormal, - htmlState: null, - indentation: 0, - - inline: inlineNormal, - text: handleText, - - escape: false, - formatting: false, - linkText: false, - linkHref: false, - linkTitle: false, - em: false, - strong: false, - header: 0, - taskList: false, - list: false, - listDepth: 0, - quote: 0, - trailingSpace: 0, - trailingSpaceNewLine: false - }; - }, - - copyState: function(s) { - return { - f: s.f, - - prevLineHasContent: s.prevLineHasContent, - thisLineHasContent: s.thisLineHasContent, - - block: s.block, - htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState), - indentation: s.indentation, - - localMode: s.localMode, - localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null, - - inline: s.inline, - text: s.text, - escape: false, - formatting: false, - linkTitle: s.linkTitle, - em: s.em, - strong: s.strong, - header: s.header, - taskList: s.taskList, - list: s.list, - listDepth: s.listDepth, - quote: s.quote, - trailingSpace: s.trailingSpace, - trailingSpaceNewLine: s.trailingSpaceNewLine, - md_inside: s.md_inside - }; - }, - - token: function(stream, state) { - - // Reset state.formatting - state.formatting = false; - - if (stream.sol()) { - var forceBlankLine = stream.match(/^\s*$/, true) || state.header; - - // Reset state.header - state.header = 0; - - if (forceBlankLine) { - state.prevLineHasContent = false; - return blankLine(state); - } else { - state.prevLineHasContent = state.thisLineHasContent; - state.thisLineHasContent = true; - } - - // Reset state.escape - state.escape = false; - - // Reset state.taskList - state.taskList = false; - - // Reset state.code - state.code = false; - - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - - state.f = state.block; - var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g, ' ').length; - var difference = Math.floor((indentation - state.indentation) / 4) * 4; - if (difference > 4) difference = 4; - var adjustedIndentation = state.indentation + difference; - state.indentationDiff = adjustedIndentation - state.indentation; - state.indentation = adjustedIndentation; - if (indentation > 0) return null; - } - return state.f(stream, state); - }, - - innerMode: function(state) { - if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode}; - if (state.localState) return {state: state.localState, mode: state.localMode}; - return {state: state, mode: mode}; - }, - - blankLine: blankLine, - - getType: getType, - - fold: "markdown" - }; - return mode; -}, "xml"); - -CodeMirror.defineMIME("text/x-markdown", "markdown"); - -}); diff --git a/vendor/codemirror/mode/markdown/test.js b/vendor/codemirror/mode/markdown/test.js deleted file mode 100644 index c3016d3a..00000000 --- a/vendor/codemirror/mode/markdown/test.js +++ /dev/null @@ -1,724 +0,0 @@ -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, "markdown"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "markdown", highlightFormatting: true}); - function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } - - FT("formatting_emAsterisk", - "[em&formatting&formatting-em *][em foo][em&formatting&formatting-em *]"); - - FT("formatting_emUnderscore", - "[em&formatting&formatting-em _][em foo][em&formatting&formatting-em _]"); - - FT("formatting_strongAsterisk", - "[strong&formatting&formatting-strong **][strong foo][strong&formatting&formatting-strong **]"); - - FT("formatting_strongUnderscore", - "[strong&formatting&formatting-strong __][strong foo][strong&formatting&formatting-strong __]"); - - FT("formatting_codeBackticks", - "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); - - FT("formatting_doubleBackticks", - "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); - - FT("formatting_atxHeader", - "[header&header-1&formatting&formatting-header&formatting-header-1 #][header&header-1 foo # bar ][header&header-1&formatting&formatting-header&formatting-header-1 #]"); - - FT("formatting_setextHeader", - "foo", - "[header&header-1&formatting&formatting-header&formatting-header-1 =]"); - - FT("formatting_blockquote", - "[quote"e-1&formatting&formatting-quote&formatting-quote-1 > ][quote"e-1 foo]"); - - FT("formatting_list", - "[variable-2&formatting&formatting-list&formatting-list-ul - ][variable-2 foo]"); - FT("formatting_list", - "[variable-2&formatting&formatting-list&formatting-list-ol 1. ][variable-2 foo]"); - - FT("formatting_link", - "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string (][string http://example.com/][string&formatting&formatting-link-string )]"); - - FT("formatting_linkReference", - "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string [][string bar][string&formatting&formatting-link-string ]]]", - "[link&formatting&formatting-link [][link bar][link&formatting&formatting-link ]]:] [string http://example.com/]"); - - FT("formatting_linkWeb", - "[link&formatting&formatting-link <][link http://example.com/][link&formatting&formatting-link >]"); - - FT("formatting_linkEmail", - "[link&formatting&formatting-link <][link user@example.com][link&formatting&formatting-link >]"); - - FT("formatting_escape", - "[formatting&formatting-escape \\]*"); - - MT("plainText", - "foo"); - - // Don't style single trailing space - MT("trailingSpace1", - "foo "); - - // Two or more trailing spaces should be styled with line break character - MT("trailingSpace2", - "foo[trailing-space-a ][trailing-space-new-line ]"); - - MT("trailingSpace3", - "foo[trailing-space-a ][trailing-space-b ][trailing-space-new-line ]"); - - MT("trailingSpace4", - "foo[trailing-space-a ][trailing-space-b ][trailing-space-a ][trailing-space-new-line ]"); - - // Code blocks using 4 spaces (regardless of CodeMirror.tabSize value) - MT("codeBlocksUsing4Spaces", - " [comment foo]"); - - // Code blocks using 4 spaces with internal indentation - MT("codeBlocksUsing4SpacesIndentation", - " [comment bar]", - " [comment hello]", - " [comment world]", - " [comment foo]", - "bar"); - - // Code blocks using 4 spaces with internal indentation - MT("codeBlocksUsing4SpacesIndentation", - " foo", - " [comment bar]", - " [comment hello]", - " [comment world]"); - - // Code blocks using 1 tab (regardless of CodeMirror.indentWithTabs value) - MT("codeBlocksUsing1Tab", - "\t[comment foo]"); - - // Inline code using backticks - MT("inlineCodeUsingBackticks", - "foo [comment `bar`]"); - - // Block code using single backtick (shouldn't work) - MT("blockCodeSingleBacktick", - "[comment `]", - "foo", - "[comment `]"); - - // Unclosed backticks - // Instead of simply marking as CODE, it would be nice to have an - // incomplete flag for CODE, that is styled slightly different. - MT("unclosedBackticks", - "foo [comment `bar]"); - - // Per documentation: "To include a literal backtick character within a - // code span, you can use multiple backticks as the opening and closing - // delimiters" - MT("doubleBackticks", - "[comment ``foo ` bar``]"); - - // Tests based on Dingus - // http://daringfireball.net/projects/markdown/dingus - // - // Multiple backticks within an inline code block - MT("consecutiveBackticks", - "[comment `foo```bar`]"); - - // Multiple backticks within an inline code block with a second code block - MT("consecutiveBackticks", - "[comment `foo```bar`] hello [comment `world`]"); - - // Unclosed with several different groups of backticks - MT("unclosedBackticks", - "[comment ``foo ``` bar` hello]"); - - // Closed with several different groups of backticks - MT("closedBackticks", - "[comment ``foo ``` bar` hello``] world"); - - // atx headers - // http://daringfireball.net/projects/markdown/syntax#header - - MT("atxH1", - "[header&header-1 # foo]"); - - MT("atxH2", - "[header&header-2 ## foo]"); - - MT("atxH3", - "[header&header-3 ### foo]"); - - MT("atxH4", - "[header&header-4 #### foo]"); - - MT("atxH5", - "[header&header-5 ##### foo]"); - - MT("atxH6", - "[header&header-6 ###### foo]"); - - // H6 - 7x '#' should still be H6, per Dingus - // http://daringfireball.net/projects/markdown/dingus - MT("atxH6NotH7", - "[header&header-6 ####### foo]"); - - // Inline styles should be parsed inside headers - MT("atxH1inline", - "[header&header-1 # foo ][header&header-1&em *bar*]"); - - // Setext headers - H1, H2 - // Per documentation, "Any number of underlining =’s or -’s will work." - // http://daringfireball.net/projects/markdown/syntax#header - // Ideally, the text would be marked as `header` as well, but this is - // not really feasible at the moment. So, instead, we're testing against - // what works today, to avoid any regressions. - // - // Check if single underlining = works - MT("setextH1", - "foo", - "[header&header-1 =]"); - - // Check if 3+ ='s work - MT("setextH1", - "foo", - "[header&header-1 ===]"); - - // Check if single underlining - works - MT("setextH2", - "foo", - "[header&header-2 -]"); - - // Check if 3+ -'s work - MT("setextH2", - "foo", - "[header&header-2 ---]"); - - // Single-line blockquote with trailing space - MT("blockquoteSpace", - "[quote"e-1 > foo]"); - - // Single-line blockquote - MT("blockquoteNoSpace", - "[quote"e-1 >foo]"); - - // No blank line before blockquote - MT("blockquoteNoBlankLine", - "foo", - "[quote"e-1 > bar]"); - - // Nested blockquote - MT("blockquoteSpace", - "[quote"e-1 > foo]", - "[quote"e-1 >][quote"e-2 > foo]", - "[quote"e-1 >][quote"e-2 >][quote"e-3 > foo]"); - - // Single-line blockquote followed by normal paragraph - MT("blockquoteThenParagraph", - "[quote"e-1 >foo]", - "", - "bar"); - - // Multi-line blockquote (lazy mode) - MT("multiBlockquoteLazy", - "[quote"e-1 >foo]", - "[quote"e-1 bar]"); - - // Multi-line blockquote followed by normal paragraph (lazy mode) - MT("multiBlockquoteLazyThenParagraph", - "[quote"e-1 >foo]", - "[quote"e-1 bar]", - "", - "hello"); - - // Multi-line blockquote (non-lazy mode) - MT("multiBlockquote", - "[quote"e-1 >foo]", - "[quote"e-1 >bar]"); - - // Multi-line blockquote followed by normal paragraph (non-lazy mode) - MT("multiBlockquoteThenParagraph", - "[quote"e-1 >foo]", - "[quote"e-1 >bar]", - "", - "hello"); - - // Check list types - - MT("listAsterisk", - "foo", - "bar", - "", - "[variable-2 * foo]", - "[variable-2 * bar]"); - - MT("listPlus", - "foo", - "bar", - "", - "[variable-2 + foo]", - "[variable-2 + bar]"); - - MT("listDash", - "foo", - "bar", - "", - "[variable-2 - foo]", - "[variable-2 - bar]"); - - MT("listNumber", - "foo", - "bar", - "", - "[variable-2 1. foo]", - "[variable-2 2. bar]"); - - // Lists require a preceding blank line (per Dingus) - MT("listBogus", - "foo", - "1. bar", - "2. hello"); - - // List after header - MT("listAfterHeader", - "[header&header-1 # foo]", - "[variable-2 - bar]"); - - // Formatting in lists (*) - MT("listAsteriskFormatting", - "[variable-2 * ][variable-2&em *foo*][variable-2 bar]", - "[variable-2 * ][variable-2&strong **foo**][variable-2 bar]", - "[variable-2 * ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", - "[variable-2 * ][variable-2&comment `foo`][variable-2 bar]"); - - // Formatting in lists (+) - MT("listPlusFormatting", - "[variable-2 + ][variable-2&em *foo*][variable-2 bar]", - "[variable-2 + ][variable-2&strong **foo**][variable-2 bar]", - "[variable-2 + ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", - "[variable-2 + ][variable-2&comment `foo`][variable-2 bar]"); - - // Formatting in lists (-) - MT("listDashFormatting", - "[variable-2 - ][variable-2&em *foo*][variable-2 bar]", - "[variable-2 - ][variable-2&strong **foo**][variable-2 bar]", - "[variable-2 - ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", - "[variable-2 - ][variable-2&comment `foo`][variable-2 bar]"); - - // Formatting in lists (1.) - MT("listNumberFormatting", - "[variable-2 1. ][variable-2&em *foo*][variable-2 bar]", - "[variable-2 2. ][variable-2&strong **foo**][variable-2 bar]", - "[variable-2 3. ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", - "[variable-2 4. ][variable-2&comment `foo`][variable-2 bar]"); - - // Paragraph lists - MT("listParagraph", - "[variable-2 * foo]", - "", - "[variable-2 * bar]"); - - // Multi-paragraph lists - // - // 4 spaces - MT("listMultiParagraph", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - " [variable-2 hello]"); - - // 4 spaces, extra blank lines (should still be list, per Dingus) - MT("listMultiParagraphExtra", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - "", - " [variable-2 hello]"); - - // 4 spaces, plus 1 space (should still be list, per Dingus) - MT("listMultiParagraphExtraSpace", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - " [variable-2 hello]", - "", - " [variable-2 world]"); - - // 1 tab - MT("listTab", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - "\t[variable-2 hello]"); - - // No indent - MT("listNoIndent", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - "hello"); - - // Blockquote - MT("blockquote", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - " [variable-2"e"e-1 > hello]"); - - // Code block - MT("blockquoteCode", - "[variable-2 * foo]", - "", - "[variable-2 * bar]", - "", - " [comment > hello]", - "", - " [variable-2 world]"); - - // Code block followed by text - MT("blockquoteCodeText", - "[variable-2 * foo]", - "", - " [variable-2 bar]", - "", - " [comment hello]", - "", - " [variable-2 world]"); - - // Nested list - - MT("listAsteriskNested", - "[variable-2 * foo]", - "", - " [variable-3 * bar]"); - - MT("listPlusNested", - "[variable-2 + foo]", - "", - " [variable-3 + bar]"); - - MT("listDashNested", - "[variable-2 - foo]", - "", - " [variable-3 - bar]"); - - MT("listNumberNested", - "[variable-2 1. foo]", - "", - " [variable-3 2. bar]"); - - MT("listMixed", - "[variable-2 * foo]", - "", - " [variable-3 + bar]", - "", - " [keyword - hello]", - "", - " [variable-2 1. world]"); - - MT("listBlockquote", - "[variable-2 * foo]", - "", - " [variable-3 + bar]", - "", - " [quote"e-1&variable-3 > hello]"); - - MT("listCode", - "[variable-2 * foo]", - "", - " [variable-3 + bar]", - "", - " [comment hello]"); - - // Code with internal indentation - MT("listCodeIndentation", - "[variable-2 * foo]", - "", - " [comment bar]", - " [comment hello]", - " [comment world]", - " [comment foo]", - " [variable-2 bar]"); - - // List nesting edge cases - MT("listNested", - "[variable-2 * foo]", - "", - " [variable-3 * bar]", - "", - " [variable-2 hello]" - ); - MT("listNested", - "[variable-2 * foo]", - "", - " [variable-3 * bar]", - "", - " [variable-3 * foo]" - ); - - // Code followed by text - MT("listCodeText", - "[variable-2 * foo]", - "", - " [comment bar]", - "", - "hello"); - - // Following tests directly from official Markdown documentation - // http://daringfireball.net/projects/markdown/syntax#hr - - MT("hrSpace", - "[hr * * *]"); - - MT("hr", - "[hr ***]"); - - MT("hrLong", - "[hr *****]"); - - MT("hrSpaceDash", - "[hr - - -]"); - - MT("hrDashLong", - "[hr ---------------------------------------]"); - - // Inline link with title - MT("linkTitle", - "[link [[foo]]][string (http://example.com/ \"bar\")] hello"); - - // Inline link without title - MT("linkNoTitle", - "[link [[foo]]][string (http://example.com/)] bar"); - - // Inline link with image - MT("linkImage", - "[link [[][tag ![[foo]]][string (http://example.com/)][link ]]][string (http://example.com/)] bar"); - - // Inline link with Em - MT("linkEm", - "[link [[][link&em *foo*][link ]]][string (http://example.com/)] bar"); - - // Inline link with Strong - MT("linkStrong", - "[link [[][link&strong **foo**][link ]]][string (http://example.com/)] bar"); - - // Inline link with EmStrong - MT("linkEmStrong", - "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string (http://example.com/)] bar"); - - // Image with title - MT("imageTitle", - "[tag ![[foo]]][string (http://example.com/ \"bar\")] hello"); - - // Image without title - MT("imageNoTitle", - "[tag ![[foo]]][string (http://example.com/)] bar"); - - // Image with asterisks - MT("imageAsterisks", - "[tag ![[*foo*]]][string (http://example.com/)] bar"); - - // Not a link. Should be normal text due to square brackets being used - // regularly in text, especially in quoted material, and no space is allowed - // between square brackets and parentheses (per Dingus). - MT("notALink", - "[[foo]] (bar)"); - - // Reference-style links - MT("linkReference", - "[link [[foo]]][string [[bar]]] hello"); - - // Reference-style links with Em - MT("linkReferenceEm", - "[link [[][link&em *foo*][link ]]][string [[bar]]] hello"); - - // Reference-style links with Strong - MT("linkReferenceStrong", - "[link [[][link&strong **foo**][link ]]][string [[bar]]] hello"); - - // Reference-style links with EmStrong - MT("linkReferenceEmStrong", - "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string [[bar]]] hello"); - - // Reference-style links with optional space separator (per docuentation) - // "You can optionally use a space to separate the sets of brackets" - MT("linkReferenceSpace", - "[link [[foo]]] [string [[bar]]] hello"); - - // Should only allow a single space ("...use *a* space...") - MT("linkReferenceDoubleSpace", - "[[foo]] [[bar]] hello"); - - // Reference-style links with implicit link name - MT("linkImplicit", - "[link [[foo]]][string [[]]] hello"); - - // @todo It would be nice if, at some point, the document was actually - // checked to see if the referenced link exists - - // Link label, for reference-style links (taken from documentation) - - MT("labelNoTitle", - "[link [[foo]]:] [string http://example.com/]"); - - MT("labelIndented", - " [link [[foo]]:] [string http://example.com/]"); - - MT("labelSpaceTitle", - "[link [[foo bar]]:] [string http://example.com/ \"hello\"]"); - - MT("labelDoubleTitle", - "[link [[foo bar]]:] [string http://example.com/ \"hello\"] \"world\""); - - MT("labelTitleDoubleQuotes", - "[link [[foo]]:] [string http://example.com/ \"bar\"]"); - - MT("labelTitleSingleQuotes", - "[link [[foo]]:] [string http://example.com/ 'bar']"); - - MT("labelTitleParenthese", - "[link [[foo]]:] [string http://example.com/ (bar)]"); - - MT("labelTitleInvalid", - "[link [[foo]]:] [string http://example.com/] bar"); - - MT("labelLinkAngleBrackets", - "[link [[foo]]:] [string \"bar\"]"); - - MT("labelTitleNextDoubleQuotes", - "[link [[foo]]:] [string http://example.com/]", - "[string \"bar\"] hello"); - - MT("labelTitleNextSingleQuotes", - "[link [[foo]]:] [string http://example.com/]", - "[string 'bar'] hello"); - - MT("labelTitleNextParenthese", - "[link [[foo]]:] [string http://example.com/]", - "[string (bar)] hello"); - - MT("labelTitleNextMixed", - "[link [[foo]]:] [string http://example.com/]", - "(bar\" hello"); - - MT("linkWeb", - "[link ] foo"); - - MT("linkWebDouble", - "[link ] foo [link ]"); - - MT("linkEmail", - "[link ] foo"); - - MT("linkEmailDouble", - "[link ] foo [link ]"); - - MT("emAsterisk", - "[em *foo*] bar"); - - MT("emUnderscore", - "[em _foo_] bar"); - - MT("emInWordAsterisk", - "foo[em *bar*]hello"); - - MT("emInWordUnderscore", - "foo[em _bar_]hello"); - - // Per documentation: "...surround an * or _ with spaces, it’ll be - // treated as a literal asterisk or underscore." - - MT("emEscapedBySpaceIn", - "foo [em _bar _ hello_] world"); - - MT("emEscapedBySpaceOut", - "foo _ bar[em _hello_]world"); - - MT("emEscapedByNewline", - "foo", - "_ bar[em _hello_]world"); - - // Unclosed emphasis characters - // Instead of simply marking as EM / STRONG, it would be nice to have an - // incomplete flag for EM and STRONG, that is styled slightly different. - MT("emIncompleteAsterisk", - "foo [em *bar]"); - - MT("emIncompleteUnderscore", - "foo [em _bar]"); - - MT("strongAsterisk", - "[strong **foo**] bar"); - - MT("strongUnderscore", - "[strong __foo__] bar"); - - MT("emStrongAsterisk", - "[em *foo][em&strong **bar*][strong hello**] world"); - - MT("emStrongUnderscore", - "[em _foo][em&strong __bar_][strong hello__] world"); - - // "...same character must be used to open and close an emphasis span."" - MT("emStrongMixed", - "[em _foo][em&strong **bar*hello__ world]"); - - MT("emStrongMixed", - "[em *foo][em&strong __bar_hello** world]"); - - // These characters should be escaped: - // \ backslash - // ` backtick - // * asterisk - // _ underscore - // {} curly braces - // [] square brackets - // () parentheses - // # hash mark - // + plus sign - // - minus sign (hyphen) - // . dot - // ! exclamation mark - - MT("escapeBacktick", - "foo \\`bar\\`"); - - MT("doubleEscapeBacktick", - "foo \\\\[comment `bar\\\\`]"); - - MT("escapeAsterisk", - "foo \\*bar\\*"); - - MT("doubleEscapeAsterisk", - "foo \\\\[em *bar\\\\*]"); - - MT("escapeUnderscore", - "foo \\_bar\\_"); - - MT("doubleEscapeUnderscore", - "foo \\\\[em _bar\\\\_]"); - - MT("escapeHash", - "\\# foo"); - - MT("doubleEscapeHash", - "\\\\# foo"); - - MT("escapeNewline", - "\\", - "[em *foo*]"); - - - // Tests to make sure GFM-specific things aren't getting through - - MT("taskList", - "[variable-2 * [ ]] bar]"); - - MT("fencedCodeBlocks", - "[comment ```]", - "foo", - "[comment ```]"); -})(); diff --git a/vendor/codemirror/mode/meta.js b/vendor/codemirror/mode/meta.js deleted file mode 100644 index 142d9595..00000000 --- a/vendor/codemirror/mode/meta.js +++ /dev/null @@ -1,106 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - -CodeMirror.modeInfo = [ - {name: 'APL', mime: 'text/apl', mode: 'apl'}, - {name: 'Asterisk', mime: 'text/x-asterisk', mode: 'asterisk'}, - {name: 'C', mime: 'text/x-csrc', mode: 'clike'}, - {name: 'C++', mime: 'text/x-c++src', mode: 'clike'}, - {name: 'Cobol', mime: 'text/x-cobol', mode: 'cobol'}, - {name: 'Java', mime: 'text/x-java', mode: 'clike'}, - {name: 'C#', mime: 'text/x-csharp', mode: 'clike'}, - {name: 'Scala', mime: 'text/x-scala', mode: 'clike'}, - {name: 'Clojure', mime: 'text/x-clojure', mode: 'clojure'}, - {name: 'CoffeeScript', mime: 'text/x-coffeescript', mode: 'coffeescript'}, - {name: 'Common Lisp', mime: 'text/x-common-lisp', mode: 'commonlisp'}, - {name: 'CSS', mime: 'text/css', mode: 'css'}, - {name: 'D', mime: 'text/x-d', mode: 'd'}, - {name: 'diff', mime: 'text/x-diff', mode: 'diff'}, - {name: 'DTD', mime: 'application/xml-dtd', mode: 'dtd'}, - {name: 'ECL', mime: 'text/x-ecl', mode: 'ecl'}, - {name: 'Eiffel', mime: 'text/x-eiffel', mode: 'eiffel'}, - {name: 'Erlang', mime: 'text/x-erlang', mode: 'erlang'}, - {name: 'Fortran', mime: 'text/x-fortran', mode: 'fortran'}, - {name: 'F#', mime: 'text/x-fsharp', mode: 'mllike'}, - {name: 'Gas', mime: 'text/x-gas', mode: 'gas'}, - {name: 'Gherkin', mime: 'text/x-feature', mode: 'gherkin'}, - {name: 'GitHub Flavored Markdown', mime: 'text/x-gfm', mode: 'gfm'}, - {name: 'Go', mime: 'text/x-go', mode: 'go'}, - {name: 'Groovy', mime: 'text/x-groovy', mode: 'groovy'}, - {name: 'HAML', mime: 'text/x-haml', mode: 'haml'}, - {name: 'Haskell', mime: 'text/x-haskell', mode: 'haskell'}, - {name: 'Haxe', mime: 'text/x-haxe', mode: 'haxe'}, - {name: 'ASP.NET', mime: 'application/x-aspx', mode: 'htmlembedded'}, - {name: 'Embedded Javascript', mime: 'application/x-ejs', mode: 'htmlembedded'}, - {name: 'JavaServer Pages', mime: 'application/x-jsp', mode: 'htmlembedded'}, - {name: 'HTML', mime: 'text/html', mode: 'htmlmixed'}, - {name: 'HTTP', mime: 'message/http', mode: 'http'}, - {name: 'Jade', mime: 'text/x-jade', mode: 'jade'}, - {name: 'JavaScript', mime: 'text/javascript', mode: 'javascript'}, - {name: 'JSON', mime: 'application/x-json', mode: 'javascript'}, - {name: 'JSON', mime: 'application/json', mode: 'javascript'}, - {name: 'JSON-LD', mime: 'application/ld+json', mode: 'javascript'}, - {name: 'TypeScript', mime: 'application/typescript', mode: 'javascript'}, - {name: 'Jinja2', mime: null, mode: 'jinja2'}, - {name: 'Julia', mime: 'text/x-julia', mode: 'julia'}, - {name: 'LESS', mime: 'text/x-less', mode: 'css'}, - {name: 'LiveScript', mime: 'text/x-livescript', mode: 'livescript'}, - {name: 'Lua', mime: 'text/x-lua', mode: 'lua'}, - {name: 'Markdown (GitHub-flavour)', mime: 'text/x-markdown', mode: 'markdown'}, - {name: 'mIRC', mime: 'text/mirc', mode: 'mirc'}, - {name: 'Nginx', mime: 'text/x-nginx-conf', mode: 'nginx'}, - {name: 'NTriples', mime: 'text/n-triples', mode: 'ntriples'}, - {name: 'OCaml', mime: 'text/x-ocaml', mode: 'mllike'}, - {name: 'Octave', mime: 'text/x-octave', mode: 'octave'}, - {name: 'Pascal', mime: 'text/x-pascal', mode: 'pascal'}, - {name: 'PEG.js', mime: null, mode: 'pegjs'}, - {name: 'Perl', mime: 'text/x-perl', mode: 'perl'}, - {name: 'PHP', mime: 'text/x-php', mode: 'php'}, - {name: 'PHP(HTML)', mime: 'application/x-httpd-php', mode: 'php'}, - {name: 'Pig', mime: 'text/x-pig', mode: 'pig'}, - {name: 'Plain Text', mime: 'text/plain', mode: 'null'}, - {name: 'Properties files', mime: 'text/x-properties', mode: 'properties'}, - {name: 'Python', mime: 'text/x-python', mode: 'python'}, - {name: 'Puppet', mime: 'text/x-puppet', mode: 'puppet'}, - {name: 'Cython', mime: 'text/x-cython', mode: 'python'}, - {name: 'R', mime: 'text/x-rsrc', mode: 'r'}, - {name: 'reStructuredText', mime: 'text/x-rst', mode: 'rst'}, - {name: 'Ruby', mime: 'text/x-ruby', mode: 'ruby'}, - {name: 'Rust', mime: 'text/x-rustsrc', mode: 'rust'}, - {name: 'Sass', mime: 'text/x-sass', mode: 'sass'}, - {name: 'Scheme', mime: 'text/x-scheme', mode: 'scheme'}, - {name: 'SCSS', mime: 'text/x-scss', mode: 'css'}, - {name: 'Shell', mime: 'text/x-sh', mode: 'shell'}, - {name: 'Sieve', mime: 'application/sieve', mode: 'sieve'}, - {name: 'Smalltalk', mime: 'text/x-stsrc', mode: 'smalltalk'}, - {name: 'Smarty', mime: 'text/x-smarty', mode: 'smarty'}, - {name: 'SmartyMixed', mime: 'text/x-smarty', mode: 'smartymixed'}, - {name: 'Solr', mime: 'text/x-solr', mode: 'solr'}, - {name: 'SPARQL', mime: 'application/x-sparql-query', mode: 'sparql'}, - {name: 'SQL', mime: 'text/x-sql', mode: 'sql'}, - {name: 'MariaDB', mime: 'text/x-mariadb', mode: 'sql'}, - {name: 'sTeX', mime: 'text/x-stex', mode: 'stex'}, - {name: 'LaTeX', mime: 'text/x-latex', mode: 'stex'}, - {name: 'Tcl', mime: 'text/x-tcl', mode: 'tcl'}, - {name: 'TiddlyWiki ', mime: 'text/x-tiddlywiki', mode: 'tiddlywiki'}, - {name: 'Tiki wiki', mime: 'text/tiki', mode: 'tiki'}, - {name: 'TOML', mime: 'text/x-toml', mode: 'toml'}, - {name: 'Turtle', mime: 'text/turtle', mode: 'turtle'}, - {name: 'VB.NET', mime: 'text/x-vb', mode: 'vb'}, - {name: 'VBScript', mime: 'text/vbscript', mode: 'vbscript'}, - {name: 'Velocity', mime: 'text/velocity', mode: 'velocity'}, - {name: 'Verilog', mime: 'text/x-verilog', mode: 'verilog'}, - {name: 'XML', mime: 'application/xml', mode: 'xml'}, - {name: 'XQuery', mime: 'application/xquery', mode: 'xquery'}, - {name: 'YAML', mime: 'text/x-yaml', mode: 'yaml'}, - {name: 'Z80', mime: 'text/x-z80', mode: 'z80'} -]; - -}); diff --git a/vendor/codemirror/mode/mirc/mirc.js b/vendor/codemirror/mode/mirc/mirc.js deleted file mode 100644 index 6b2a23a1..00000000 --- a/vendor/codemirror/mode/mirc/mirc.js +++ /dev/null @@ -1,190 +0,0 @@ -//mIRC mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMIME("text/mirc", "mirc"); -CodeMirror.defineMode("mirc", function() { - function parseWords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var specials = parseWords("$! $$ $& $? $+ $abook $abs $active $activecid " + - "$activewid $address $addtok $agent $agentname $agentstat $agentver " + - "$alias $and $anick $ansi2mirc $aop $appactive $appstate $asc $asctime " + - "$asin $atan $avoice $away $awaymsg $awaytime $banmask $base $bfind " + - "$binoff $biton $bnick $bvar $bytes $calc $cb $cd $ceil $chan $chanmodes " + - "$chantypes $chat $chr $cid $clevel $click $cmdbox $cmdline $cnick $color " + - "$com $comcall $comchan $comerr $compact $compress $comval $cos $count " + - "$cr $crc $creq $crlf $ctime $ctimer $ctrlenter $date $day $daylight " + - "$dbuh $dbuw $dccignore $dccport $dde $ddename $debug $decode $decompress " + - "$deltok $devent $dialog $did $didreg $didtok $didwm $disk $dlevel $dll " + - "$dllcall $dname $dns $duration $ebeeps $editbox $emailaddr $encode $error " + - "$eval $event $exist $feof $ferr $fgetc $file $filename $filtered $finddir " + - "$finddirn $findfile $findfilen $findtok $fline $floor $fopen $fread $fserve " + - "$fulladdress $fulldate $fullname $fullscreen $get $getdir $getdot $gettok $gmt " + - "$group $halted $hash $height $hfind $hget $highlight $hnick $hotline " + - "$hotlinepos $ial $ialchan $ibl $idle $iel $ifmatch $ignore $iif $iil " + - "$inelipse $ini $inmidi $inpaste $inpoly $input $inrect $inroundrect " + - "$insong $instok $int $inwave $ip $isalias $isbit $isdde $isdir $isfile " + - "$isid $islower $istok $isupper $keychar $keyrpt $keyval $knick $lactive " + - "$lactivecid $lactivewid $left $len $level $lf $line $lines $link $lock " + - "$lock $locked $log $logstamp $logstampfmt $longfn $longip $lower $ltimer " + - "$maddress $mask $matchkey $matchtok $md5 $me $menu $menubar $menucontext " + - "$menutype $mid $middir $mircdir $mircexe $mircini $mklogfn $mnick $mode " + - "$modefirst $modelast $modespl $mouse $msfile $network $newnick $nick $nofile " + - "$nopath $noqt $not $notags $notify $null $numeric $numok $oline $onpoly " + - "$opnick $or $ord $os $passivedcc $pic $play $pnick $port $portable $portfree " + - "$pos $prefix $prop $protect $puttok $qt $query $rand $r $rawmsg $read $readomo " + - "$readn $regex $regml $regsub $regsubex $remove $remtok $replace $replacex " + - "$reptok $result $rgb $right $round $scid $scon $script $scriptdir $scriptline " + - "$sdir $send $server $serverip $sfile $sha1 $shortfn $show $signal $sin " + - "$site $sline $snick $snicks $snotify $sock $sockbr $sockerr $sockname " + - "$sorttok $sound $sqrt $ssl $sreq $sslready $status $strip $str $stripped " + - "$syle $submenu $switchbar $tan $target $ticks $time $timer $timestamp " + - "$timestampfmt $timezone $tip $titlebar $toolbar $treebar $trust $ulevel " + - "$ulist $upper $uptime $url $usermode $v1 $v2 $var $vcmd $vcmdstat $vcmdver " + - "$version $vnick $vol $wid $width $wildsite $wildtok $window $wrap $xor"); - var keywords = parseWords("abook ajinvite alias aline ame amsg anick aop auser autojoin avoice " + - "away background ban bcopy beep bread break breplace bset btrunc bunset bwrite " + - "channel clear clearall cline clipboard close cnick color comclose comopen " + - "comreg continue copy creq ctcpreply ctcps dcc dccserver dde ddeserver " + - "debug dec describe dialog did didtok disable disconnect dlevel dline dll " + - "dns dqwindow drawcopy drawdot drawfill drawline drawpic drawrect drawreplace " + - "drawrot drawsave drawscroll drawtext ebeeps echo editbox emailaddr enable " + - "events exit fclose filter findtext finger firewall flash flist flood flush " + - "flushini font fopen fseek fsend fserve fullname fwrite ghide gload gmove " + - "gopts goto gplay gpoint gqreq groups gshow gsize gstop gtalk gunload hadd " + - "halt haltdef hdec hdel help hfree hinc hload hmake hop hsave ial ialclear " + - "ialmark identd if ignore iline inc invite iuser join kick linesep links list " + - "load loadbuf localinfo log mdi me menubar mkdir mnick mode msg nick noop notice " + - "notify omsg onotice part partall pdcc perform play playctrl pop protect pvoice " + - "qme qmsg query queryn quit raw reload remini remote remove rename renwin " + - "reseterror resetidle return rlevel rline rmdir run ruser save savebuf saveini " + - "say scid scon server set showmirc signam sline sockaccept sockclose socklist " + - "socklisten sockmark sockopen sockpause sockread sockrename sockudp sockwrite " + - "sound speak splay sreq strip switchbar timer timestamp titlebar tnick tokenize " + - "toolbar topic tray treebar ulist unload unset unsetall updatenl url uwho " + - "var vcadd vcmd vcrem vol while whois window winhelp write writeint if isalnum " + - "isalpha isaop isavoice isban ischan ishop isignore isin isincs isletter islower " + - "isnotify isnum ison isop isprotect isreg isupper isvoice iswm iswmcs " + - "elseif else goto menu nicklist status title icon size option text edit " + - "button check radio box scroll list combo link tab item"); - var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch"); - var isOperatorChar = /[+\-*&%=<>!?^\/\|]/; - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - function tokenBase(stream, state) { - var beforeParams = state.beforeParams; - state.beforeParams = false; - var ch = stream.next(); - if (/[\[\]{}\(\),\.]/.test(ch)) { - if (ch == "(" && beforeParams) state.inParams = true; - else if (ch == ")") state.inParams = false; - return null; - } - else if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - else if (ch == "\\") { - stream.eat("\\"); - stream.eat(/./); - return "number"; - } - else if (ch == "/" && stream.eat("*")) { - return chain(stream, state, tokenComment); - } - else if (ch == ";" && stream.match(/ *\( *\(/)) { - return chain(stream, state, tokenUnparsed); - } - else if (ch == ";" && !state.inParams) { - stream.skipToEnd(); - return "comment"; - } - else if (ch == '"') { - stream.eat(/"/); - return "keyword"; - } - else if (ch == "$") { - stream.eatWhile(/[$_a-z0-9A-Z\.:]/); - if (specials && specials.propertyIsEnumerable(stream.current().toLowerCase())) { - return "keyword"; - } - else { - state.beforeParams = true; - return "builtin"; - } - } - else if (ch == "%") { - stream.eatWhile(/[^,^\s^\(^\)]/); - state.beforeParams = true; - return "string"; - } - else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - else { - stream.eatWhile(/[\w\$_{}]/); - var word = stream.current().toLowerCase(); - if (keywords && keywords.propertyIsEnumerable(word)) - return "keyword"; - if (functions && functions.propertyIsEnumerable(word)) { - state.beforeParams = true; - return "keyword"; - } - return null; - } - } - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - function tokenUnparsed(stream, state) { - var maybeEnd = 0, ch; - while (ch = stream.next()) { - if (ch == ";" && maybeEnd == 2) { - state.tokenize = tokenBase; - break; - } - if (ch == ")") - maybeEnd++; - else if (ch != " ") - maybeEnd = 0; - } - return "meta"; - } - return { - startState: function() { - return { - tokenize: tokenBase, - beforeParams: false, - inParams: false - }; - }, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - } - }; -}); - -}); diff --git a/vendor/codemirror/mode/mllike/mllike.js b/vendor/codemirror/mode/mllike/mllike.js deleted file mode 100644 index d4d59fce..00000000 --- a/vendor/codemirror/mode/mllike/mllike.js +++ /dev/null @@ -1,202 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('mllike', function(_config, parserConfig) { - var words = { - 'let': 'keyword', - 'rec': 'keyword', - 'in': 'keyword', - 'of': 'keyword', - 'and': 'keyword', - 'if': 'keyword', - 'then': 'keyword', - 'else': 'keyword', - 'for': 'keyword', - 'to': 'keyword', - 'while': 'keyword', - 'do': 'keyword', - 'done': 'keyword', - 'fun': 'keyword', - 'function': 'keyword', - 'val': 'keyword', - 'type': 'keyword', - 'mutable': 'keyword', - 'match': 'keyword', - 'with': 'keyword', - 'try': 'keyword', - 'open': 'builtin', - 'ignore': 'builtin', - 'begin': 'keyword', - 'end': 'keyword' - }; - - var extraWords = parserConfig.extraWords || {}; - for (var prop in extraWords) { - if (extraWords.hasOwnProperty(prop)) { - words[prop] = parserConfig.extraWords[prop]; - } - } - - function tokenBase(stream, state) { - var ch = stream.next(); - - if (ch === '"') { - state.tokenize = tokenString; - return state.tokenize(stream, state); - } - if (ch === '(') { - if (stream.eat('*')) { - state.commentLevel++; - state.tokenize = tokenComment; - return state.tokenize(stream, state); - } - } - if (ch === '~') { - stream.eatWhile(/\w/); - return 'variable-2'; - } - if (ch === '`') { - stream.eatWhile(/\w/); - return 'quote'; - } - if (ch === '/' && parserConfig.slashComments && stream.eat('/')) { - stream.skipToEnd(); - return 'comment'; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\d]/); - if (stream.eat('.')) { - stream.eatWhile(/[\d]/); - } - return 'number'; - } - if ( /[+\-*&%=<>!?|]/.test(ch)) { - return 'operator'; - } - stream.eatWhile(/\w/); - var cur = stream.current(); - return words[cur] || 'variable'; - } - - function tokenString(stream, state) { - var next, end = false, escaped = false; - while ((next = stream.next()) != null) { - if (next === '"' && !escaped) { - end = true; - break; - } - escaped = !escaped && next === '\\'; - } - if (end && !escaped) { - state.tokenize = tokenBase; - } - return 'string'; - }; - - function tokenComment(stream, state) { - var prev, next; - while(state.commentLevel > 0 && (next = stream.next()) != null) { - if (prev === '(' && next === '*') state.commentLevel++; - if (prev === '*' && next === ')') state.commentLevel--; - prev = next; - } - if (state.commentLevel <= 0) { - state.tokenize = tokenBase; - } - return 'comment'; - } - - return { - startState: function() {return {tokenize: tokenBase, commentLevel: 0};}, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - }, - - blockCommentStart: "(*", - blockCommentEnd: "*)", - lineComment: parserConfig.slashComments ? "//" : null - }; -}); - -CodeMirror.defineMIME('text/x-ocaml', { - name: 'mllike', - extraWords: { - 'succ': 'keyword', - 'trace': 'builtin', - 'exit': 'builtin', - 'print_string': 'builtin', - 'print_endline': 'builtin', - 'true': 'atom', - 'false': 'atom', - 'raise': 'keyword' - } -}); - -CodeMirror.defineMIME('text/x-fsharp', { - name: 'mllike', - extraWords: { - 'abstract': 'keyword', - 'as': 'keyword', - 'assert': 'keyword', - 'base': 'keyword', - 'class': 'keyword', - 'default': 'keyword', - 'delegate': 'keyword', - 'downcast': 'keyword', - 'downto': 'keyword', - 'elif': 'keyword', - 'exception': 'keyword', - 'extern': 'keyword', - 'finally': 'keyword', - 'global': 'keyword', - 'inherit': 'keyword', - 'inline': 'keyword', - 'interface': 'keyword', - 'internal': 'keyword', - 'lazy': 'keyword', - 'let!': 'keyword', - 'member' : 'keyword', - 'module': 'keyword', - 'namespace': 'keyword', - 'new': 'keyword', - 'null': 'keyword', - 'override': 'keyword', - 'private': 'keyword', - 'public': 'keyword', - 'return': 'keyword', - 'return!': 'keyword', - 'select': 'keyword', - 'static': 'keyword', - 'struct': 'keyword', - 'upcast': 'keyword', - 'use': 'keyword', - 'use!': 'keyword', - 'val': 'keyword', - 'when': 'keyword', - 'yield': 'keyword', - 'yield!': 'keyword', - - 'List': 'builtin', - 'Seq': 'builtin', - 'Map': 'builtin', - 'Set': 'builtin', - 'int': 'builtin', - 'string': 'builtin', - 'raise': 'builtin', - 'failwith': 'builtin', - 'not': 'builtin', - 'true': 'builtin', - 'false': 'builtin' - }, - slashComments: true -}); - -}); diff --git a/vendor/codemirror/mode/nginx/nginx.js b/vendor/codemirror/mode/nginx/nginx.js deleted file mode 100644 index 4e17cdb3..00000000 --- a/vendor/codemirror/mode/nginx/nginx.js +++ /dev/null @@ -1,175 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("nginx", function(config) { - - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var keywords = words( - /* ngxDirectiveControl */ "break return rewrite set" + - /* ngxDirective */ " accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_types aio alias allow ancient_browser ancient_browser_value auth_basic auth_basic_user_file auth_http auth_http_header auth_http_timeout autoindex autoindex_exact_size autoindex_localtime charset charset_types client_body_buffer_size client_body_in_file_only client_body_in_single_buffer client_body_temp_path client_body_timeout client_header_buffer_size client_header_timeout client_max_body_size connection_pool_size create_full_put_path daemon dav_access dav_methods debug_connection debug_points default_type degradation degrade deny devpoll_changes devpoll_events directio directio_alignment empty_gif env epoll_events error_log eventport_events expires fastcgi_bind fastcgi_buffer_size fastcgi_buffers fastcgi_busy_buffers_size fastcgi_cache fastcgi_cache_key fastcgi_cache_methods fastcgi_cache_min_uses fastcgi_cache_path fastcgi_cache_use_stale fastcgi_cache_valid fastcgi_catch_stderr fastcgi_connect_timeout fastcgi_hide_header fastcgi_ignore_client_abort fastcgi_ignore_headers fastcgi_index fastcgi_intercept_errors fastcgi_max_temp_file_size fastcgi_next_upstream fastcgi_param fastcgi_pass_header fastcgi_pass_request_body fastcgi_pass_request_headers fastcgi_read_timeout fastcgi_send_lowat fastcgi_send_timeout fastcgi_split_path_info fastcgi_store fastcgi_store_access fastcgi_temp_file_write_size fastcgi_temp_path fastcgi_upstream_fail_timeout fastcgi_upstream_max_fails flv geoip_city geoip_country google_perftools_profiles gzip gzip_buffers gzip_comp_level gzip_disable gzip_hash gzip_http_version gzip_min_length gzip_no_buffer gzip_proxied gzip_static gzip_types gzip_vary gzip_window if_modified_since ignore_invalid_headers image_filter image_filter_buffer image_filter_jpeg_quality image_filter_transparency imap_auth imap_capabilities imap_client_buffer index ip_hash keepalive_requests keepalive_timeout kqueue_changes kqueue_events large_client_header_buffers limit_conn limit_conn_log_level limit_rate limit_rate_after limit_req limit_req_log_level limit_req_zone limit_zone lingering_time lingering_timeout lock_file log_format log_not_found log_subrequest map_hash_bucket_size map_hash_max_size master_process memcached_bind memcached_buffer_size memcached_connect_timeout memcached_next_upstream memcached_read_timeout memcached_send_timeout memcached_upstream_fail_timeout memcached_upstream_max_fails merge_slashes min_delete_depth modern_browser modern_browser_value msie_padding msie_refresh multi_accept open_file_cache open_file_cache_errors open_file_cache_events open_file_cache_min_uses open_file_cache_valid open_log_file_cache output_buffers override_charset perl perl_modules perl_require perl_set pid pop3_auth pop3_capabilities port_in_redirect postpone_gzipping postpone_output protocol proxy proxy_bind proxy_buffer proxy_buffer_size proxy_buffering proxy_buffers proxy_busy_buffers_size proxy_cache proxy_cache_key proxy_cache_methods proxy_cache_min_uses proxy_cache_path proxy_cache_use_stale proxy_cache_valid proxy_connect_timeout proxy_headers_hash_bucket_size proxy_headers_hash_max_size proxy_hide_header proxy_ignore_client_abort proxy_ignore_headers proxy_intercept_errors proxy_max_temp_file_size proxy_method proxy_next_upstream proxy_pass_error_message proxy_pass_header proxy_pass_request_body proxy_pass_request_headers proxy_read_timeout proxy_redirect proxy_send_lowat proxy_send_timeout proxy_set_body proxy_set_header proxy_ssl_session_reuse proxy_store proxy_store_access proxy_temp_file_write_size proxy_temp_path proxy_timeout proxy_upstream_fail_timeout proxy_upstream_max_fails random_index read_ahead real_ip_header recursive_error_pages request_pool_size reset_timedout_connection resolver resolver_timeout rewrite_log rtsig_overflow_events rtsig_overflow_test rtsig_overflow_threshold rtsig_signo satisfy secure_link_secret send_lowat send_timeout sendfile sendfile_max_chunk server_name_in_redirect server_names_hash_bucket_size server_names_hash_max_size server_tokens set_real_ip_from smtp_auth smtp_capabilities smtp_client_buffer smtp_greeting_delay so_keepalive source_charset ssi ssi_ignore_recycled_buffers ssi_min_file_chunk ssi_silent_errors ssi_types ssi_value_length ssl ssl_certificate ssl_certificate_key ssl_ciphers ssl_client_certificate ssl_crl ssl_dhparam ssl_engine ssl_prefer_server_ciphers ssl_protocols ssl_session_cache ssl_session_timeout ssl_verify_client ssl_verify_depth starttls stub_status sub_filter sub_filter_once sub_filter_types tcp_nodelay tcp_nopush thread_stack_size timeout timer_resolution types_hash_bucket_size types_hash_max_size underscores_in_headers uninitialized_variable_warn use user userid userid_domain userid_expires userid_mark userid_name userid_p3p userid_path userid_service valid_referers variables_hash_bucket_size variables_hash_max_size worker_connections worker_cpu_affinity worker_priority worker_processes worker_rlimit_core worker_rlimit_nofile worker_rlimit_sigpending worker_threads working_directory xclient xml_entities xslt_stylesheet xslt_typesdrew@li229-23" - ); - - var keywords_block = words( - /* ngxDirectiveBlock */ "http mail events server types location upstream charset_map limit_except if geo map" - ); - - var keywords_important = words( - /* ngxDirectiveImportant */ "include root server server_name listen internal proxy_pass memcached_pass fastcgi_pass try_files" - ); - - var indentUnit = config.indentUnit, type; - function ret(style, tp) {type = tp; return style;} - - function tokenBase(stream, state) { - - - stream.eatWhile(/[\w\$_]/); - - var cur = stream.current(); - - - if (keywords.propertyIsEnumerable(cur)) { - return "keyword"; - } - else if (keywords_block.propertyIsEnumerable(cur)) { - return "variable-2"; - } - else if (keywords_important.propertyIsEnumerable(cur)) { - return "string-2"; - } - /**/ - - var ch = stream.next(); - if (ch == "@") {stream.eatWhile(/[\w\\\-]/); return ret("meta", stream.current());} - else if (ch == "/" && stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - else if (ch == "<" && stream.eat("!")) { - state.tokenize = tokenSGMLComment; - return tokenSGMLComment(stream, state); - } - else if (ch == "=") ret(null, "compare"); - else if ((ch == "~" || ch == "|") && stream.eat("=")) return ret(null, "compare"); - else if (ch == "\"" || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - else if (ch == "#") { - stream.skipToEnd(); - return ret("comment", "comment"); - } - else if (ch == "!") { - stream.match(/^\s*\w*/); - return ret("keyword", "important"); - } - else if (/\d/.test(ch)) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } - else if (/[,.+>*\/]/.test(ch)) { - return ret(null, "select-op"); - } - else if (/[;{}:\[\]]/.test(ch)) { - return ret(null, ch); - } - else { - stream.eatWhile(/[\w\\\-]/); - return ret("variable", "variable"); - } - } - - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - function tokenSGMLComment(stream, state) { - var dashes = 0, ch; - while ((ch = stream.next()) != null) { - if (dashes >= 2 && ch == ">") { - state.tokenize = tokenBase; - break; - } - dashes = (ch == "-") ? dashes + 1 : 0; - } - return ret("comment", "comment"); - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) - break; - escaped = !escaped && ch == "\\"; - } - if (!escaped) state.tokenize = tokenBase; - return ret("string", "string"); - }; - } - - return { - startState: function(base) { - return {tokenize: tokenBase, - baseIndent: base || 0, - stack: []}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - type = null; - var style = state.tokenize(stream, state); - - var context = state.stack[state.stack.length-1]; - if (type == "hash" && context == "rule") style = "atom"; - else if (style == "variable") { - if (context == "rule") style = "number"; - else if (!context || context == "@media{") style = "tag"; - } - - if (context == "rule" && /^[\{\};]$/.test(type)) - state.stack.pop(); - if (type == "{") { - if (context == "@media") state.stack[state.stack.length-1] = "@media{"; - else state.stack.push("{"); - } - else if (type == "}") state.stack.pop(); - else if (type == "@media") state.stack.push("@media"); - else if (context == "{" && type != "comment") state.stack.push("rule"); - return style; - }, - - indent: function(state, textAfter) { - var n = state.stack.length; - if (/^\}/.test(textAfter)) - n -= state.stack[state.stack.length-1] == "rule" ? 2 : 1; - return state.baseIndent + n * indentUnit; - }, - - electricChars: "}" - }; -}); - -CodeMirror.defineMIME("text/nginx", "text/x-nginx-conf"); - -}); diff --git a/vendor/codemirror/mode/ntriples/ntriples.js b/vendor/codemirror/mode/ntriples/ntriples.js deleted file mode 100644 index cd5eb24f..00000000 --- a/vendor/codemirror/mode/ntriples/ntriples.js +++ /dev/null @@ -1,183 +0,0 @@ -/********************************************************** -* This script provides syntax highlighting support for -* the Ntriples format. -* Ntriples format specification: -* http://www.w3.org/TR/rdf-testcases/#ntriples -***********************************************************/ - -/* - The following expression defines the defined ASF grammar transitions. - - pre_subject -> - { - ( writing_subject_uri | writing_bnode_uri ) - -> pre_predicate - -> writing_predicate_uri - -> pre_object - -> writing_object_uri | writing_object_bnode | - ( - writing_object_literal - -> writing_literal_lang | writing_literal_type - ) - -> post_object - -> BEGIN - } otherwise { - -> ERROR - } -*/ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("ntriples", function() { - - var Location = { - PRE_SUBJECT : 0, - WRITING_SUB_URI : 1, - WRITING_BNODE_URI : 2, - PRE_PRED : 3, - WRITING_PRED_URI : 4, - PRE_OBJ : 5, - WRITING_OBJ_URI : 6, - WRITING_OBJ_BNODE : 7, - WRITING_OBJ_LITERAL : 8, - WRITING_LIT_LANG : 9, - WRITING_LIT_TYPE : 10, - POST_OBJ : 11, - ERROR : 12 - }; - function transitState(currState, c) { - var currLocation = currState.location; - var ret; - - // Opening. - if (currLocation == Location.PRE_SUBJECT && c == '<') ret = Location.WRITING_SUB_URI; - else if(currLocation == Location.PRE_SUBJECT && c == '_') ret = Location.WRITING_BNODE_URI; - else if(currLocation == Location.PRE_PRED && c == '<') ret = Location.WRITING_PRED_URI; - else if(currLocation == Location.PRE_OBJ && c == '<') ret = Location.WRITING_OBJ_URI; - else if(currLocation == Location.PRE_OBJ && c == '_') ret = Location.WRITING_OBJ_BNODE; - else if(currLocation == Location.PRE_OBJ && c == '"') ret = Location.WRITING_OBJ_LITERAL; - - // Closing. - else if(currLocation == Location.WRITING_SUB_URI && c == '>') ret = Location.PRE_PRED; - else if(currLocation == Location.WRITING_BNODE_URI && c == ' ') ret = Location.PRE_PRED; - else if(currLocation == Location.WRITING_PRED_URI && c == '>') ret = Location.PRE_OBJ; - else if(currLocation == Location.WRITING_OBJ_URI && c == '>') ret = Location.POST_OBJ; - else if(currLocation == Location.WRITING_OBJ_BNODE && c == ' ') ret = Location.POST_OBJ; - else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '"') ret = Location.POST_OBJ; - else if(currLocation == Location.WRITING_LIT_LANG && c == ' ') ret = Location.POST_OBJ; - else if(currLocation == Location.WRITING_LIT_TYPE && c == '>') ret = Location.POST_OBJ; - - // Closing typed and language literal. - else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '@') ret = Location.WRITING_LIT_LANG; - else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '^') ret = Location.WRITING_LIT_TYPE; - - // Spaces. - else if( c == ' ' && - ( - currLocation == Location.PRE_SUBJECT || - currLocation == Location.PRE_PRED || - currLocation == Location.PRE_OBJ || - currLocation == Location.POST_OBJ - ) - ) ret = currLocation; - - // Reset. - else if(currLocation == Location.POST_OBJ && c == '.') ret = Location.PRE_SUBJECT; - - // Error - else ret = Location.ERROR; - - currState.location=ret; - } - - return { - startState: function() { - return { - location : Location.PRE_SUBJECT, - uris : [], - anchors : [], - bnodes : [], - langs : [], - types : [] - }; - }, - token: function(stream, state) { - var ch = stream.next(); - if(ch == '<') { - transitState(state, ch); - var parsedURI = ''; - stream.eatWhile( function(c) { if( c != '#' && c != '>' ) { parsedURI += c; return true; } return false;} ); - state.uris.push(parsedURI); - if( stream.match('#', false) ) return 'variable'; - stream.next(); - transitState(state, '>'); - return 'variable'; - } - if(ch == '#') { - var parsedAnchor = ''; - stream.eatWhile(function(c) { if(c != '>' && c != ' ') { parsedAnchor+= c; return true; } return false;}); - state.anchors.push(parsedAnchor); - return 'variable-2'; - } - if(ch == '>') { - transitState(state, '>'); - return 'variable'; - } - if(ch == '_') { - transitState(state, ch); - var parsedBNode = ''; - stream.eatWhile(function(c) { if( c != ' ' ) { parsedBNode += c; return true; } return false;}); - state.bnodes.push(parsedBNode); - stream.next(); - transitState(state, ' '); - return 'builtin'; - } - if(ch == '"') { - transitState(state, ch); - stream.eatWhile( function(c) { return c != '"'; } ); - stream.next(); - if( stream.peek() != '@' && stream.peek() != '^' ) { - transitState(state, '"'); - } - return 'string'; - } - if( ch == '@' ) { - transitState(state, '@'); - var parsedLang = ''; - stream.eatWhile(function(c) { if( c != ' ' ) { parsedLang += c; return true; } return false;}); - state.langs.push(parsedLang); - stream.next(); - transitState(state, ' '); - return 'string-2'; - } - if( ch == '^' ) { - stream.next(); - transitState(state, '^'); - var parsedType = ''; - stream.eatWhile(function(c) { if( c != '>' ) { parsedType += c; return true; } return false;} ); - state.types.push(parsedType); - stream.next(); - transitState(state, '>'); - return 'variable'; - } - if( ch == ' ' ) { - transitState(state, ch); - } - if( ch == '.' ) { - transitState(state, ch); - } - } - }; -}); - -CodeMirror.defineMIME("text/n-triples", "ntriples"); - -}); diff --git a/vendor/codemirror/mode/octave/octave.js b/vendor/codemirror/mode/octave/octave.js deleted file mode 100644 index 16fe4dfd..00000000 --- a/vendor/codemirror/mode/octave/octave.js +++ /dev/null @@ -1,132 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("octave", function() { - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var singleOperators = new RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]"); - var singleDelimiters = new RegExp('^[\\(\\[\\{\\},:=;]'); - var doubleOperators = new RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))"); - var doubleDelimiters = new RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))"); - var tripleDelimiters = new RegExp("^((>>=)|(<<=))"); - var expressionEnd = new RegExp("^[\\]\\)]"); - var identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); - - var builtins = wordRegexp([ - 'error', 'eval', 'function', 'abs', 'acos', 'atan', 'asin', 'cos', - 'cosh', 'exp', 'log', 'prod', 'sum', 'log10', 'max', 'min', 'sign', 'sin', 'sinh', - 'sqrt', 'tan', 'reshape', 'break', 'zeros', 'default', 'margin', 'round', 'ones', - 'rand', 'syn', 'ceil', 'floor', 'size', 'clear', 'zeros', 'eye', 'mean', 'std', 'cov', - 'det', 'eig', 'inv', 'norm', 'rank', 'trace', 'expm', 'logm', 'sqrtm', 'linspace', 'plot', - 'title', 'xlabel', 'ylabel', 'legend', 'text', 'grid', 'meshgrid', 'mesh', 'num2str', - 'fft', 'ifft', 'arrayfun', 'cellfun', 'input', 'fliplr', 'flipud', 'ismember' - ]); - - var keywords = wordRegexp([ - 'return', 'case', 'switch', 'else', 'elseif', 'end', 'endif', 'endfunction', - 'if', 'otherwise', 'do', 'for', 'while', 'try', 'catch', 'classdef', 'properties', 'events', - 'methods', 'global', 'persistent', 'endfor', 'endwhile', 'printf', 'sprintf', 'disp', 'until', - 'continue', 'pkg' - ]); - - - // tokenizers - function tokenTranspose(stream, state) { - if (!stream.sol() && stream.peek() === '\'') { - stream.next(); - state.tokenize = tokenBase; - return 'operator'; - } - state.tokenize = tokenBase; - return tokenBase(stream, state); - } - - - function tokenComment(stream, state) { - if (stream.match(/^.*%}/)) { - state.tokenize = tokenBase; - return 'comment'; - }; - stream.skipToEnd(); - return 'comment'; - } - - function tokenBase(stream, state) { - // whitespaces - if (stream.eatSpace()) return null; - - // Handle one line Comments - if (stream.match('%{')){ - state.tokenize = tokenComment; - stream.skipToEnd(); - return 'comment'; - } - - if (stream.match(/^[%#]/)){ - stream.skipToEnd(); - return 'comment'; - } - - // Handle Number Literals - if (stream.match(/^[0-9\.+-]/, false)) { - if (stream.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/)) { - stream.tokenize = tokenBase; - return 'number'; }; - if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; }; - if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; }; - } - if (stream.match(wordRegexp(['nan','NaN','inf','Inf']))) { return 'number'; }; - - // Handle Strings - if (stream.match(/^"([^"]|(""))*"/)) { return 'string'; } ; - if (stream.match(/^'([^']|(''))*'/)) { return 'string'; } ; - - // Handle words - if (stream.match(keywords)) { return 'keyword'; } ; - if (stream.match(builtins)) { return 'builtin'; } ; - if (stream.match(identifiers)) { return 'variable'; } ; - - if (stream.match(singleOperators) || stream.match(doubleOperators)) { return 'operator'; }; - if (stream.match(singleDelimiters) || stream.match(doubleDelimiters) || stream.match(tripleDelimiters)) { return null; }; - - if (stream.match(expressionEnd)) { - state.tokenize = tokenTranspose; - return null; - }; - - - // Handle non-detected items - stream.next(); - return 'error'; - }; - - - return { - startState: function() { - return { - tokenize: tokenBase - }; - }, - - token: function(stream, state) { - var style = state.tokenize(stream, state); - if (style === 'number' || style === 'variable'){ - state.tokenize = tokenTranspose; - } - return style; - } - }; -}); - -CodeMirror.defineMIME("text/x-octave", "octave"); - -}); diff --git a/vendor/codemirror/mode/pascal/pascal.js b/vendor/codemirror/mode/pascal/pascal.js deleted file mode 100644 index 642dd9bf..00000000 --- a/vendor/codemirror/mode/pascal/pascal.js +++ /dev/null @@ -1,106 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("pascal", function() { - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var keywords = words("and array begin case const div do downto else end file for forward integer " + - "boolean char function goto if in label mod nil not of or packed procedure " + - "program record repeat set string then to type until var while with"); - var atoms = {"null": true}; - - var isOperatorChar = /[+\-*&%=<>!?|\/]/; - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == "#" && state.startOfLine) { - stream.skipToEnd(); - return "meta"; - } - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - if (ch == "(" && stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } - if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - return null; - } - if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - if (ch == "/") { - if (stream.eat("/")) { - stream.skipToEnd(); - return "comment"; - } - } - if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "operator"; - } - stream.eatWhile(/[\w\$_]/); - var cur = stream.current(); - if (keywords.propertyIsEnumerable(cur)) return "keyword"; - if (atoms.propertyIsEnumerable(cur)) return "atom"; - return "variable"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) {end = true; break;} - escaped = !escaped && next == "\\"; - } - if (end || !escaped) state.tokenize = null; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == ")" && maybeEnd) { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - // Interface - - return { - startState: function() { - return {tokenize: null}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style == "comment" || style == "meta") return style; - return style; - }, - - electricChars: "{}" - }; -}); - -CodeMirror.defineMIME("text/x-pascal", "pascal"); - -}); diff --git a/vendor/codemirror/mode/pegjs/pegjs.js b/vendor/codemirror/mode/pegjs/pegjs.js deleted file mode 100644 index f74f2a4f..00000000 --- a/vendor/codemirror/mode/pegjs/pegjs.js +++ /dev/null @@ -1,111 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../javascript/javascript")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../javascript/javascript"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("pegjs", function (config) { - var jsMode = CodeMirror.getMode(config, "javascript"); - - function identifier(stream) { - return stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/); - } - - return { - startState: function () { - return { - inString: false, - stringType: null, - inComment: false, - inChracterClass: false, - braced: 0, - lhs: true, - localState: null - }; - }, - token: function (stream, state) { - if (stream) - - //check for state changes - if (!state.inString && !state.inComment && ((stream.peek() == '"') || (stream.peek() == "'"))) { - state.stringType = stream.peek(); - stream.next(); // Skip quote - state.inString = true; // Update state - } - if (!state.inString && !state.inComment && stream.match(/^\/\*/)) { - state.inComment = true; - } - - //return state - if (state.inString) { - while (state.inString && !stream.eol()) { - if (stream.peek() === state.stringType) { - stream.next(); // Skip quote - state.inString = false; // Clear flag - } else if (stream.peek() === '\\') { - stream.next(); - stream.next(); - } else { - stream.match(/^.[^\\\"\']*/); - } - } - return state.lhs ? "property string" : "string"; // Token style - } else if (state.inComment) { - while (state.inComment && !stream.eol()) { - if (stream.match(/\*\//)) { - state.inComment = false; // Clear flag - } else { - stream.match(/^.[^\*]*/); - } - } - return "comment"; - } else if (state.inChracterClass) { - while (state.inChracterClass && !stream.eol()) { - if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) { - state.inChracterClass = false; - } - } - } else if (stream.peek() === '[') { - stream.next(); - state.inChracterClass = true; - return 'bracket'; - } else if (stream.match(/^\/\//)) { - stream.skipToEnd(); - return "comment"; - } else if (state.braced || stream.peek() === '{') { - if (state.localState === null) { - state.localState = jsMode.startState(); - } - var token = jsMode.token(stream, state.localState); - var text = stream.current(); - if (!token) { - for (var i = 0; i < text.length; i++) { - if (text[i] === '{') { - state.braced++; - } else if (text[i] === '}') { - state.braced--; - } - }; - } - return token; - } else if (identifier(stream)) { - if (stream.peek() === ':') { - return 'variable'; - } - return 'variable-2'; - } else if (['[', ']', '(', ')'].indexOf(stream.peek()) != -1) { - stream.next(); - return 'bracket'; - } else if (!stream.eatSpace()) { - stream.next(); - } - return null; - } - }; -}, "javascript"); - -}); diff --git a/vendor/codemirror/mode/perl/perl.js b/vendor/codemirror/mode/perl/perl.js deleted file mode 100644 index 84392e4a..00000000 --- a/vendor/codemirror/mode/perl/perl.js +++ /dev/null @@ -1,827 +0,0 @@ -// CodeMirror2 mode/perl/perl.js (text/x-perl) beta 0.10 (2011-11-08) -// This is a part of CodeMirror from https://github.com/sabaca/CodeMirror_mode_perl (mail@sabaca.com) - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("perl",function(){ - // http://perldoc.perl.org - var PERL={ // null - magic touch - // 1 - keyword - // 2 - def - // 3 - atom - // 4 - operator - // 5 - variable-2 (predefined) - // [x,y] - x=1,2,3; y=must be defined if x{...} - // PERL operators - '->' : 4, - '++' : 4, - '--' : 4, - '**' : 4, - // ! ~ \ and unary + and - - '=~' : 4, - '!~' : 4, - '*' : 4, - '/' : 4, - '%' : 4, - 'x' : 4, - '+' : 4, - '-' : 4, - '.' : 4, - '<<' : 4, - '>>' : 4, - // named unary operators - '<' : 4, - '>' : 4, - '<=' : 4, - '>=' : 4, - 'lt' : 4, - 'gt' : 4, - 'le' : 4, - 'ge' : 4, - '==' : 4, - '!=' : 4, - '<=>' : 4, - 'eq' : 4, - 'ne' : 4, - 'cmp' : 4, - '~~' : 4, - '&' : 4, - '|' : 4, - '^' : 4, - '&&' : 4, - '||' : 4, - '//' : 4, - '..' : 4, - '...' : 4, - '?' : 4, - ':' : 4, - '=' : 4, - '+=' : 4, - '-=' : 4, - '*=' : 4, // etc. ??? - ',' : 4, - '=>' : 4, - '::' : 4, - // list operators (rightward) - 'not' : 4, - 'and' : 4, - 'or' : 4, - 'xor' : 4, - // PERL predefined variables (I know, what this is a paranoid idea, but may be needed for people, who learn PERL, and for me as well, ...and may be for you?;) - 'BEGIN' : [5,1], - 'END' : [5,1], - 'PRINT' : [5,1], - 'PRINTF' : [5,1], - 'GETC' : [5,1], - 'READ' : [5,1], - 'READLINE' : [5,1], - 'DESTROY' : [5,1], - 'TIE' : [5,1], - 'TIEHANDLE' : [5,1], - 'UNTIE' : [5,1], - 'STDIN' : 5, - 'STDIN_TOP' : 5, - 'STDOUT' : 5, - 'STDOUT_TOP' : 5, - 'STDERR' : 5, - 'STDERR_TOP' : 5, - '$ARG' : 5, - '$_' : 5, - '@ARG' : 5, - '@_' : 5, - '$LIST_SEPARATOR' : 5, - '$"' : 5, - '$PROCESS_ID' : 5, - '$PID' : 5, - '$$' : 5, - '$REAL_GROUP_ID' : 5, - '$GID' : 5, - '$(' : 5, - '$EFFECTIVE_GROUP_ID' : 5, - '$EGID' : 5, - '$)' : 5, - '$PROGRAM_NAME' : 5, - '$0' : 5, - '$SUBSCRIPT_SEPARATOR' : 5, - '$SUBSEP' : 5, - '$;' : 5, - '$REAL_USER_ID' : 5, - '$UID' : 5, - '$<' : 5, - '$EFFECTIVE_USER_ID' : 5, - '$EUID' : 5, - '$>' : 5, - '$a' : 5, - '$b' : 5, - '$COMPILING' : 5, - '$^C' : 5, - '$DEBUGGING' : 5, - '$^D' : 5, - '${^ENCODING}' : 5, - '$ENV' : 5, - '%ENV' : 5, - '$SYSTEM_FD_MAX' : 5, - '$^F' : 5, - '@F' : 5, - '${^GLOBAL_PHASE}' : 5, - '$^H' : 5, - '%^H' : 5, - '@INC' : 5, - '%INC' : 5, - '$INPLACE_EDIT' : 5, - '$^I' : 5, - '$^M' : 5, - '$OSNAME' : 5, - '$^O' : 5, - '${^OPEN}' : 5, - '$PERLDB' : 5, - '$^P' : 5, - '$SIG' : 5, - '%SIG' : 5, - '$BASETIME' : 5, - '$^T' : 5, - '${^TAINT}' : 5, - '${^UNICODE}' : 5, - '${^UTF8CACHE}' : 5, - '${^UTF8LOCALE}' : 5, - '$PERL_VERSION' : 5, - '$^V' : 5, - '${^WIN32_SLOPPY_STAT}' : 5, - '$EXECUTABLE_NAME' : 5, - '$^X' : 5, - '$1' : 5, // - regexp $1, $2... - '$MATCH' : 5, - '$&' : 5, - '${^MATCH}' : 5, - '$PREMATCH' : 5, - '$`' : 5, - '${^PREMATCH}' : 5, - '$POSTMATCH' : 5, - "$'" : 5, - '${^POSTMATCH}' : 5, - '$LAST_PAREN_MATCH' : 5, - '$+' : 5, - '$LAST_SUBMATCH_RESULT' : 5, - '$^N' : 5, - '@LAST_MATCH_END' : 5, - '@+' : 5, - '%LAST_PAREN_MATCH' : 5, - '%+' : 5, - '@LAST_MATCH_START' : 5, - '@-' : 5, - '%LAST_MATCH_START' : 5, - '%-' : 5, - '$LAST_REGEXP_CODE_RESULT' : 5, - '$^R' : 5, - '${^RE_DEBUG_FLAGS}' : 5, - '${^RE_TRIE_MAXBUF}' : 5, - '$ARGV' : 5, - '@ARGV' : 5, - 'ARGV' : 5, - 'ARGVOUT' : 5, - '$OUTPUT_FIELD_SEPARATOR' : 5, - '$OFS' : 5, - '$,' : 5, - '$INPUT_LINE_NUMBER' : 5, - '$NR' : 5, - '$.' : 5, - '$INPUT_RECORD_SEPARATOR' : 5, - '$RS' : 5, - '$/' : 5, - '$OUTPUT_RECORD_SEPARATOR' : 5, - '$ORS' : 5, - '$\\' : 5, - '$OUTPUT_AUTOFLUSH' : 5, - '$|' : 5, - '$ACCUMULATOR' : 5, - '$^A' : 5, - '$FORMAT_FORMFEED' : 5, - '$^L' : 5, - '$FORMAT_PAGE_NUMBER' : 5, - '$%' : 5, - '$FORMAT_LINES_LEFT' : 5, - '$-' : 5, - '$FORMAT_LINE_BREAK_CHARACTERS' : 5, - '$:' : 5, - '$FORMAT_LINES_PER_PAGE' : 5, - '$=' : 5, - '$FORMAT_TOP_NAME' : 5, - '$^' : 5, - '$FORMAT_NAME' : 5, - '$~' : 5, - '${^CHILD_ERROR_NATIVE}' : 5, - '$EXTENDED_OS_ERROR' : 5, - '$^E' : 5, - '$EXCEPTIONS_BEING_CAUGHT' : 5, - '$^S' : 5, - '$WARNING' : 5, - '$^W' : 5, - '${^WARNING_BITS}' : 5, - '$OS_ERROR' : 5, - '$ERRNO' : 5, - '$!' : 5, - '%OS_ERROR' : 5, - '%ERRNO' : 5, - '%!' : 5, - '$CHILD_ERROR' : 5, - '$?' : 5, - '$EVAL_ERROR' : 5, - '$@' : 5, - '$OFMT' : 5, - '$#' : 5, - '$*' : 5, - '$ARRAY_BASE' : 5, - '$[' : 5, - '$OLD_PERL_VERSION' : 5, - '$]' : 5, - // PERL blocks - 'if' :[1,1], - elsif :[1,1], - 'else' :[1,1], - 'while' :[1,1], - unless :[1,1], - 'for' :[1,1], - foreach :[1,1], - // PERL functions - 'abs' :1, // - absolute value function - accept :1, // - accept an incoming socket connect - alarm :1, // - schedule a SIGALRM - 'atan2' :1, // - arctangent of Y/X in the range -PI to PI - bind :1, // - binds an address to a socket - binmode :1, // - prepare binary files for I/O - bless :1, // - create an object - bootstrap :1, // - 'break' :1, // - break out of a "given" block - caller :1, // - get context of the current subroutine call - chdir :1, // - change your current working directory - chmod :1, // - changes the permissions on a list of files - chomp :1, // - remove a trailing record separator from a string - chop :1, // - remove the last character from a string - chown :1, // - change the owership on a list of files - chr :1, // - get character this number represents - chroot :1, // - make directory new root for path lookups - close :1, // - close file (or pipe or socket) handle - closedir :1, // - close directory handle - connect :1, // - connect to a remote socket - 'continue' :[1,1], // - optional trailing block in a while or foreach - 'cos' :1, // - cosine function - crypt :1, // - one-way passwd-style encryption - dbmclose :1, // - breaks binding on a tied dbm file - dbmopen :1, // - create binding on a tied dbm file - 'default' :1, // - defined :1, // - test whether a value, variable, or function is defined - 'delete' :1, // - deletes a value from a hash - die :1, // - raise an exception or bail out - 'do' :1, // - turn a BLOCK into a TERM - dump :1, // - create an immediate core dump - each :1, // - retrieve the next key/value pair from a hash - endgrent :1, // - be done using group file - endhostent :1, // - be done using hosts file - endnetent :1, // - be done using networks file - endprotoent :1, // - be done using protocols file - endpwent :1, // - be done using passwd file - endservent :1, // - be done using services file - eof :1, // - test a filehandle for its end - 'eval' :1, // - catch exceptions or compile and run code - 'exec' :1, // - abandon this program to run another - exists :1, // - test whether a hash key is present - exit :1, // - terminate this program - 'exp' :1, // - raise I to a power - fcntl :1, // - file control system call - fileno :1, // - return file descriptor from filehandle - flock :1, // - lock an entire file with an advisory lock - fork :1, // - create a new process just like this one - format :1, // - declare a picture format with use by the write() function - formline :1, // - internal function used for formats - getc :1, // - get the next character from the filehandle - getgrent :1, // - get next group record - getgrgid :1, // - get group record given group user ID - getgrnam :1, // - get group record given group name - gethostbyaddr :1, // - get host record given its address - gethostbyname :1, // - get host record given name - gethostent :1, // - get next hosts record - getlogin :1, // - return who logged in at this tty - getnetbyaddr :1, // - get network record given its address - getnetbyname :1, // - get networks record given name - getnetent :1, // - get next networks record - getpeername :1, // - find the other end of a socket connection - getpgrp :1, // - get process group - getppid :1, // - get parent process ID - getpriority :1, // - get current nice value - getprotobyname :1, // - get protocol record given name - getprotobynumber :1, // - get protocol record numeric protocol - getprotoent :1, // - get next protocols record - getpwent :1, // - get next passwd record - getpwnam :1, // - get passwd record given user login name - getpwuid :1, // - get passwd record given user ID - getservbyname :1, // - get services record given its name - getservbyport :1, // - get services record given numeric port - getservent :1, // - get next services record - getsockname :1, // - retrieve the sockaddr for a given socket - getsockopt :1, // - get socket options on a given socket - given :1, // - glob :1, // - expand filenames using wildcards - gmtime :1, // - convert UNIX time into record or string using Greenwich time - 'goto' :1, // - create spaghetti code - grep :1, // - locate elements in a list test true against a given criterion - hex :1, // - convert a string to a hexadecimal number - 'import' :1, // - patch a module's namespace into your own - index :1, // - find a substring within a string - 'int' :1, // - get the integer portion of a number - ioctl :1, // - system-dependent device control system call - 'join' :1, // - join a list into a string using a separator - keys :1, // - retrieve list of indices from a hash - kill :1, // - send a signal to a process or process group - last :1, // - exit a block prematurely - lc :1, // - return lower-case version of a string - lcfirst :1, // - return a string with just the next letter in lower case - length :1, // - return the number of bytes in a string - 'link' :1, // - create a hard link in the filesytem - listen :1, // - register your socket as a server - local : 2, // - create a temporary value for a global variable (dynamic scoping) - localtime :1, // - convert UNIX time into record or string using local time - lock :1, // - get a thread lock on a variable, subroutine, or method - 'log' :1, // - retrieve the natural logarithm for a number - lstat :1, // - stat a symbolic link - m :null, // - match a string with a regular expression pattern - map :1, // - apply a change to a list to get back a new list with the changes - mkdir :1, // - create a directory - msgctl :1, // - SysV IPC message control operations - msgget :1, // - get SysV IPC message queue - msgrcv :1, // - receive a SysV IPC message from a message queue - msgsnd :1, // - send a SysV IPC message to a message queue - my : 2, // - declare and assign a local variable (lexical scoping) - 'new' :1, // - next :1, // - iterate a block prematurely - no :1, // - unimport some module symbols or semantics at compile time - oct :1, // - convert a string to an octal number - open :1, // - open a file, pipe, or descriptor - opendir :1, // - open a directory - ord :1, // - find a character's numeric representation - our : 2, // - declare and assign a package variable (lexical scoping) - pack :1, // - convert a list into a binary representation - 'package' :1, // - declare a separate global namespace - pipe :1, // - open a pair of connected filehandles - pop :1, // - remove the last element from an array and return it - pos :1, // - find or set the offset for the last/next m//g search - print :1, // - output a list to a filehandle - printf :1, // - output a formatted list to a filehandle - prototype :1, // - get the prototype (if any) of a subroutine - push :1, // - append one or more elements to an array - q :null, // - singly quote a string - qq :null, // - doubly quote a string - qr :null, // - Compile pattern - quotemeta :null, // - quote regular expression magic characters - qw :null, // - quote a list of words - qx :null, // - backquote quote a string - rand :1, // - retrieve the next pseudorandom number - read :1, // - fixed-length buffered input from a filehandle - readdir :1, // - get a directory from a directory handle - readline :1, // - fetch a record from a file - readlink :1, // - determine where a symbolic link is pointing - readpipe :1, // - execute a system command and collect standard output - recv :1, // - receive a message over a Socket - redo :1, // - start this loop iteration over again - ref :1, // - find out the type of thing being referenced - rename :1, // - change a filename - require :1, // - load in external functions from a library at runtime - reset :1, // - clear all variables of a given name - 'return' :1, // - get out of a function early - reverse :1, // - flip a string or a list - rewinddir :1, // - reset directory handle - rindex :1, // - right-to-left substring search - rmdir :1, // - remove a directory - s :null, // - replace a pattern with a string - say :1, // - print with newline - scalar :1, // - force a scalar context - seek :1, // - reposition file pointer for random-access I/O - seekdir :1, // - reposition directory pointer - select :1, // - reset default output or do I/O multiplexing - semctl :1, // - SysV semaphore control operations - semget :1, // - get set of SysV semaphores - semop :1, // - SysV semaphore operations - send :1, // - send a message over a socket - setgrent :1, // - prepare group file for use - sethostent :1, // - prepare hosts file for use - setnetent :1, // - prepare networks file for use - setpgrp :1, // - set the process group of a process - setpriority :1, // - set a process's nice value - setprotoent :1, // - prepare protocols file for use - setpwent :1, // - prepare passwd file for use - setservent :1, // - prepare services file for use - setsockopt :1, // - set some socket options - shift :1, // - remove the first element of an array, and return it - shmctl :1, // - SysV shared memory operations - shmget :1, // - get SysV shared memory segment identifier - shmread :1, // - read SysV shared memory - shmwrite :1, // - write SysV shared memory - shutdown :1, // - close down just half of a socket connection - 'sin' :1, // - return the sine of a number - sleep :1, // - block for some number of seconds - socket :1, // - create a socket - socketpair :1, // - create a pair of sockets - 'sort' :1, // - sort a list of values - splice :1, // - add or remove elements anywhere in an array - 'split' :1, // - split up a string using a regexp delimiter - sprintf :1, // - formatted print into a string - 'sqrt' :1, // - square root function - srand :1, // - seed the random number generator - stat :1, // - get a file's status information - state :1, // - declare and assign a state variable (persistent lexical scoping) - study :1, // - optimize input data for repeated searches - 'sub' :1, // - declare a subroutine, possibly anonymously - 'substr' :1, // - get or alter a portion of a stirng - symlink :1, // - create a symbolic link to a file - syscall :1, // - execute an arbitrary system call - sysopen :1, // - open a file, pipe, or descriptor - sysread :1, // - fixed-length unbuffered input from a filehandle - sysseek :1, // - position I/O pointer on handle used with sysread and syswrite - system :1, // - run a separate program - syswrite :1, // - fixed-length unbuffered output to a filehandle - tell :1, // - get current seekpointer on a filehandle - telldir :1, // - get current seekpointer on a directory handle - tie :1, // - bind a variable to an object class - tied :1, // - get a reference to the object underlying a tied variable - time :1, // - return number of seconds since 1970 - times :1, // - return elapsed time for self and child processes - tr :null, // - transliterate a string - truncate :1, // - shorten a file - uc :1, // - return upper-case version of a string - ucfirst :1, // - return a string with just the next letter in upper case - umask :1, // - set file creation mode mask - undef :1, // - remove a variable or function definition - unlink :1, // - remove one link to a file - unpack :1, // - convert binary structure into normal perl variables - unshift :1, // - prepend more elements to the beginning of a list - untie :1, // - break a tie binding to a variable - use :1, // - load in a module at compile time - utime :1, // - set a file's last access and modify times - values :1, // - return a list of the values in a hash - vec :1, // - test or set particular bits in a string - wait :1, // - wait for any child process to die - waitpid :1, // - wait for a particular child process to die - wantarray :1, // - get void vs scalar vs list context of current subroutine call - warn :1, // - print debugging info - when :1, // - write :1, // - print a picture record - y :null}; // - transliterate a string - - var RXstyle="string-2"; - var RXmodifiers=/[goseximacplud]/; // NOTE: "m", "s", "y" and "tr" need to correct real modifiers for each regexp type - - function tokenChain(stream,state,chain,style,tail){ // NOTE: chain.length > 2 is not working now (it's for s[...][...]geos;) - state.chain=null; // 12 3tail - state.style=null; - state.tail=null; - state.tokenize=function(stream,state){ - var e=false,c,i=0; - while(c=stream.next()){ - if(c===chain[i]&&!e){ - if(chain[++i]!==undefined){ - state.chain=chain[i]; - state.style=style; - state.tail=tail;} - else if(tail) - stream.eatWhile(tail); - state.tokenize=tokenPerl; - return style;} - e=!e&&c=="\\";} - return style;}; - return state.tokenize(stream,state);} - - function tokenSOMETHING(stream,state,string){ - state.tokenize=function(stream,state){ - if(stream.string==string) - state.tokenize=tokenPerl; - stream.skipToEnd(); - return "string";}; - return state.tokenize(stream,state);} - - function tokenPerl(stream,state){ - if(stream.eatSpace()) - return null; - if(state.chain) - return tokenChain(stream,state,state.chain,state.style,state.tail); - if(stream.match(/^\-?[\d\.]/,false)) - if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/)) - return 'number'; - if(stream.match(/^<<(?=\w)/)){ // NOTE: <"],RXstyle,RXmodifiers);} - if(/[\^'"!~\/]/.test(c)){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} - else if(c=="q"){ - c=look(stream, 1); - if(c=="("){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[")"],"string");} - if(c=="["){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["]"],"string");} - if(c=="{"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["}"],"string");} - if(c=="<"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[">"],"string");} - if(/[\^'"!~\/]/.test(c)){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[stream.eat(c)],"string");}} - else if(c=="w"){ - c=look(stream, 1); - if(c=="("){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[")"],"bracket");} - if(c=="["){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["]"],"bracket");} - if(c=="{"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["}"],"bracket");} - if(c=="<"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[">"],"bracket");} - if(/[\^'"!~\/]/.test(c)){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[stream.eat(c)],"bracket");}} - else if(c=="r"){ - c=look(stream, 1); - if(c=="("){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} - if(c=="["){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} - if(c=="{"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} - if(c=="<"){ - eatSuffix(stream, 2); - return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);} - if(/[\^'"!~\/]/.test(c)){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} - else if(/[\^'"!~\/(\[{<]/.test(c)){ - if(c=="("){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[")"],"string");} - if(c=="["){ - eatSuffix(stream, 1); - return tokenChain(stream,state,["]"],"string");} - if(c=="{"){ - eatSuffix(stream, 1); - return tokenChain(stream,state,["}"],"string");} - if(c=="<"){ - eatSuffix(stream, 1); - return tokenChain(stream,state,[">"],"string");} - if(/[\^'"!~\/]/.test(c)){ - return tokenChain(stream,state,[stream.eat(c)],"string");}}}} - if(ch=="m"){ - var c=look(stream, -2); - if(!(c&&/\w/.test(c))){ - c=stream.eat(/[(\[{<\^'"!~\/]/); - if(c){ - if(/[\^'"!~\/]/.test(c)){ - return tokenChain(stream,state,[c],RXstyle,RXmodifiers);} - if(c=="("){ - return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} - if(c=="["){ - return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} - if(c=="{"){ - return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} - if(c=="<"){ - return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}}}} - if(ch=="s"){ - var c=/[\/>\]})\w]/.test(look(stream, -2)); - if(!c){ - c=stream.eat(/[(\[{<\^'"!~\/]/); - if(c){ - if(c=="[") - return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); - if(c=="{") - return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); - if(c=="<") - return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); - if(c=="(") - return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); - return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}} - if(ch=="y"){ - var c=/[\/>\]})\w]/.test(look(stream, -2)); - if(!c){ - c=stream.eat(/[(\[{<\^'"!~\/]/); - if(c){ - if(c=="[") - return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); - if(c=="{") - return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); - if(c=="<") - return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); - if(c=="(") - return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); - return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}} - if(ch=="t"){ - var c=/[\/>\]})\w]/.test(look(stream, -2)); - if(!c){ - c=stream.eat("r");if(c){ - c=stream.eat(/[(\[{<\^'"!~\/]/); - if(c){ - if(c=="[") - return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); - if(c=="{") - return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); - if(c=="<") - return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); - if(c=="(") - return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); - return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}} - if(ch=="`"){ - return tokenChain(stream,state,[ch],"variable-2");} - if(ch=="/"){ - if(!/~\s*$/.test(prefix(stream))) - return "operator"; - else - return tokenChain(stream,state,[ch],RXstyle,RXmodifiers);} - if(ch=="$"){ - var p=stream.pos; - if(stream.eatWhile(/\d/)||stream.eat("{")&&stream.eatWhile(/\d/)&&stream.eat("}")) - return "variable-2"; - else - stream.pos=p;} - if(/[$@%]/.test(ch)){ - var p=stream.pos; - if(stream.eat("^")&&stream.eat(/[A-Z]/)||!/[@$%&]/.test(look(stream, -2))&&stream.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){ - var c=stream.current(); - if(PERL[c]) - return "variable-2";} - stream.pos=p;} - if(/[$@%&]/.test(ch)){ - if(stream.eatWhile(/[\w$\[\]]/)||stream.eat("{")&&stream.eatWhile(/[\w$\[\]]/)&&stream.eat("}")){ - var c=stream.current(); - if(PERL[c]) - return "variable-2"; - else - return "variable";}} - if(ch=="#"){ - if(look(stream, -2)!="$"){ - stream.skipToEnd(); - return "comment";}} - if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(ch)){ - var p=stream.pos; - stream.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/); - if(PERL[stream.current()]) - return "operator"; - else - stream.pos=p;} - if(ch=="_"){ - if(stream.pos==1){ - if(suffix(stream, 6)=="_END__"){ - return tokenChain(stream,state,['\0'],"comment");} - else if(suffix(stream, 7)=="_DATA__"){ - return tokenChain(stream,state,['\0'],"variable-2");} - else if(suffix(stream, 7)=="_C__"){ - return tokenChain(stream,state,['\0'],"string");}}} - if(/\w/.test(ch)){ - var p=stream.pos; - if(look(stream, -2)=="{"&&(look(stream, 0)=="}"||stream.eatWhile(/\w/)&&look(stream, 0)=="}")) - return "string"; - else - stream.pos=p;} - if(/[A-Z]/.test(ch)){ - var l=look(stream, -2); - var p=stream.pos; - stream.eatWhile(/[A-Z_]/); - if(/[\da-z]/.test(look(stream, 0))){ - stream.pos=p;} - else{ - var c=PERL[stream.current()]; - if(!c) - return "meta"; - if(c[1]) - c=c[0]; - if(l!=":"){ - if(c==1) - return "keyword"; - else if(c==2) - return "def"; - else if(c==3) - return "atom"; - else if(c==4) - return "operator"; - else if(c==5) - return "variable-2"; - else - return "meta";} - else - return "meta";}} - if(/[a-zA-Z_]/.test(ch)){ - var l=look(stream, -2); - stream.eatWhile(/\w/); - var c=PERL[stream.current()]; - if(!c) - return "meta"; - if(c[1]) - c=c[0]; - if(l!=":"){ - if(c==1) - return "keyword"; - else if(c==2) - return "def"; - else if(c==3) - return "atom"; - else if(c==4) - return "operator"; - else if(c==5) - return "variable-2"; - else - return "meta";} - else - return "meta";} - return null;} - - return{ - startState:function(){ - return{ - tokenize:tokenPerl, - chain:null, - style:null, - tail:null};}, - token:function(stream,state){ - return (state.tokenize||tokenPerl)(stream,state);}, - electricChars:"{}"};}); - -CodeMirror.defineMIME("text/x-perl", "perl"); - -// it's like "peek", but need for look-ahead or look-behind if index < 0 -function look(stream, c){ - return stream.string.charAt(stream.pos+(c||0)); -} - -// return a part of prefix of current stream from current position -function prefix(stream, c){ - if(c){ - var x=stream.pos-c; - return stream.string.substr((x>=0?x:0),c);} - else{ - return stream.string.substr(0,stream.pos-1); - } -} - -// return a part of suffix of current stream from current position -function suffix(stream, c){ - var y=stream.string.length; - var x=y-stream.pos+1; - return stream.string.substr(stream.pos,(c&&c=(y=stream.string.length-1)) - stream.pos=y; - else - stream.pos=x; -} - -}); diff --git a/vendor/codemirror/mode/php/php.js b/vendor/codemirror/mode/php/php.js deleted file mode 100644 index 7156dbba..00000000 --- a/vendor/codemirror/mode/php/php.js +++ /dev/null @@ -1,140 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../clike/clike")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../clike/clike"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - function keywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - function heredoc(delim) { - return function(stream, state) { - if (stream.match(delim)) state.tokenize = null; - else stream.skipToEnd(); - return "string"; - }; - } - var phpConfig = { - name: "clike", - keywords: keywords("abstract and array as break case catch class clone const continue declare default " + - "do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final " + - "for foreach function global goto if implements interface instanceof namespace " + - "new or private protected public static switch throw trait try use var while xor " + - "die echo empty exit eval include include_once isset list require require_once return " + - "print unset __halt_compiler self static parent yield insteadof finally"), - blockKeywords: keywords("catch do else elseif for foreach if switch try while finally"), - atoms: keywords("true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__"), - builtin: keywords("func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once"), - multiLineStrings: true, - hooks: { - "$": function(stream) { - stream.eatWhile(/[\w\$_]/); - return "variable-2"; - }, - "<": function(stream, state) { - if (stream.match(/<", false)) stream.next(); - return "comment"; - }, - "/": function(stream) { - if (stream.eat("/")) { - while (!stream.eol() && !stream.match("?>", false)) stream.next(); - return "comment"; - } - return false; - } - } - }; - - CodeMirror.defineMode("php", function(config, parserConfig) { - var htmlMode = CodeMirror.getMode(config, "text/html"); - var phpMode = CodeMirror.getMode(config, phpConfig); - - function dispatch(stream, state) { - var isPHP = state.curMode == phpMode; - if (stream.sol() && state.pending && state.pending != '"' && state.pending != "'") state.pending = null; - if (!isPHP) { - if (stream.match(/^<\?\w*/)) { - state.curMode = phpMode; - state.curState = state.php; - return "meta"; - } - if (state.pending == '"' || state.pending == "'") { - while (!stream.eol() && stream.next() != state.pending) {} - var style = "string"; - } else if (state.pending && stream.pos < state.pending.end) { - stream.pos = state.pending.end; - var style = state.pending.style; - } else { - var style = htmlMode.token(stream, state.curState); - } - if (state.pending) state.pending = null; - var cur = stream.current(), openPHP = cur.search(/<\?/), m; - if (openPHP != -1) { - if (style == "string" && (m = cur.match(/[\'\"]$/)) && !/\?>/.test(cur)) state.pending = m[0]; - else state.pending = {end: stream.pos, style: style}; - stream.backUp(cur.length - openPHP); - } - return style; - } else if (isPHP && state.php.tokenize == null && stream.match("?>")) { - state.curMode = htmlMode; - state.curState = state.html; - return "meta"; - } else { - return phpMode.token(stream, state.curState); - } - } - - return { - startState: function() { - var html = CodeMirror.startState(htmlMode), php = CodeMirror.startState(phpMode); - return {html: html, - php: php, - curMode: parserConfig.startOpen ? phpMode : htmlMode, - curState: parserConfig.startOpen ? php : html, - pending: null}; - }, - - copyState: function(state) { - var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html), - php = state.php, phpNew = CodeMirror.copyState(phpMode, php), cur; - if (state.curMode == htmlMode) cur = htmlNew; - else cur = phpNew; - return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur, - pending: state.pending}; - }, - - token: dispatch, - - indent: function(state, textAfter) { - if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) || - (state.curMode == phpMode && /^\?>/.test(textAfter))) - return htmlMode.indent(state.html, textAfter); - return state.curMode.indent(state.curState, textAfter); - }, - - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//", - - innerMode: function(state) { return {state: state.curState, mode: state.curMode}; } - }; - }, "htmlmixed", "clike"); - - CodeMirror.defineMIME("application/x-httpd-php", "php"); - CodeMirror.defineMIME("application/x-httpd-php-open", {name: "php", startOpen: true}); - CodeMirror.defineMIME("text/x-php", phpConfig); -}); diff --git a/vendor/codemirror/mode/pig/pig.js b/vendor/codemirror/mode/pig/pig.js deleted file mode 100644 index 64ac506a..00000000 --- a/vendor/codemirror/mode/pig/pig.js +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Pig Latin Mode for CodeMirror 2 - * @author Prasanth Jayachandran - * @link https://github.com/prasanthj/pig-codemirror-2 - * This implementation is adapted from PL/SQL mode in CodeMirror 2. - */ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("pig", function(_config, parserConfig) { - var keywords = parserConfig.keywords, - builtins = parserConfig.builtins, - types = parserConfig.types, - multiLineStrings = parserConfig.multiLineStrings; - - var isOperatorChar = /[*+\-%<>=&?:\/!|]/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - var type; - function ret(tp, style) { - type = tp; - return style; - } - - function tokenComment(stream, state) { - var isEnd = false; - var ch; - while(ch = stream.next()) { - if(ch == "/" && isEnd) { - state.tokenize = tokenBase; - break; - } - isEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while((next = stream.next()) != null) { - if (next == quote && !escaped) { - end = true; break; - } - escaped = !escaped && next == "\\"; - } - if (end || !(escaped || multiLineStrings)) - state.tokenize = tokenBase; - return ret("string", "error"); - }; - } - - function tokenBase(stream, state) { - var ch = stream.next(); - - // is a start of string? - if (ch == '"' || ch == "'") - return chain(stream, state, tokenString(ch)); - // is it one of the special chars - else if(/[\[\]{}\(\),;\.]/.test(ch)) - return ret(ch); - // is it a number? - else if(/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return ret("number", "number"); - } - // multi line comment or operator - else if (ch == "/") { - if (stream.eat("*")) { - return chain(stream, state, tokenComment); - } - else { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator"); - } - } - // single line comment or operator - else if (ch=="-") { - if(stream.eat("-")){ - stream.skipToEnd(); - return ret("comment", "comment"); - } - else { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator"); - } - } - // is it an operator - else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator"); - } - else { - // get the while word - stream.eatWhile(/[\w\$_]/); - // is it one of the listed keywords? - if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) { - if (stream.eat(")") || stream.eat(".")) { - //keywords can be used as variables like flatten(group), group.$0 etc.. - } - else { - return ("keyword", "keyword"); - } - } - // is it one of the builtin functions? - if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) - { - return ("keyword", "variable-2"); - } - // is it one of the listed types? - if (types && types.propertyIsEnumerable(stream.current().toUpperCase())) - return ("keyword", "variable-3"); - // default is a 'variable' - return ret("variable", "pig-word"); - } - } - - // Interface - return { - startState: function() { - return { - tokenize: tokenBase, - startOfLine: true - }; - }, - - token: function(stream, state) { - if(stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - return style; - } - }; -}); - -(function() { - function keywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - // builtin funcs taken from trunk revision 1303237 - var pBuiltins = "ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL " - + "CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS " - + "DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG " - + "FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN " - + "INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER " - + "ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS " - + "LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA " - + "PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE " - + "SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG " - + "TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER "; - - // taken from QueryLexer.g - var pKeywords = "VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP " - + "JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL " - + "PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE " - + "SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE " - + "NEQ MATCHES TRUE FALSE DUMP"; - - // data types - var pTypes = "BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP "; - - CodeMirror.defineMIME("text/x-pig", { - name: "pig", - builtins: keywords(pBuiltins), - keywords: keywords(pKeywords), - types: keywords(pTypes) - }); - - CodeMirror.registerHelper("hintWords", "pig", (pBuiltins + pTypes + pKeywords).split(" ")); -}()); - -}); diff --git a/vendor/codemirror/mode/properties/properties.js b/vendor/codemirror/mode/properties/properties.js deleted file mode 100644 index 6dfe06f1..00000000 --- a/vendor/codemirror/mode/properties/properties.js +++ /dev/null @@ -1,75 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("properties", function() { - return { - token: function(stream, state) { - var sol = stream.sol() || state.afterSection; - var eol = stream.eol(); - - state.afterSection = false; - - if (sol) { - if (state.nextMultiline) { - state.inMultiline = true; - state.nextMultiline = false; - } else { - state.position = "def"; - } - } - - if (eol && ! state.nextMultiline) { - state.inMultiline = false; - state.position = "def"; - } - - if (sol) { - while(stream.eatSpace()); - } - - var ch = stream.next(); - - if (sol && (ch === "#" || ch === "!" || ch === ";")) { - state.position = "comment"; - stream.skipToEnd(); - return "comment"; - } else if (sol && ch === "[") { - state.afterSection = true; - stream.skipTo("]"); stream.eat("]"); - return "header"; - } else if (ch === "=" || ch === ":") { - state.position = "quote"; - return null; - } else if (ch === "\\" && state.position === "quote") { - if (stream.next() !== "u") { // u = Unicode sequence \u1234 - // Multiline value - state.nextMultiline = true; - } - } - - return state.position; - }, - - startState: function() { - return { - position : "def", // Current position, "def", "quote" or "comment" - nextMultiline : false, // Is the next line multiline value - inMultiline : false, // Is the current line a multiline value - afterSection : false // Did we just open a section - }; - } - - }; -}); - -CodeMirror.defineMIME("text/x-properties", "properties"); -CodeMirror.defineMIME("text/x-ini", "properties"); - -}); diff --git a/vendor/codemirror/mode/puppet/puppet.js b/vendor/codemirror/mode/puppet/puppet.js deleted file mode 100644 index da8823e5..00000000 --- a/vendor/codemirror/mode/puppet/puppet.js +++ /dev/null @@ -1,217 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("puppet", function () { - // Stores the words from the define method - var words = {}; - // Taken, mostly, from the Puppet official variable standards regex - var variable_regex = /({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/; - - // Takes a string of words separated by spaces and adds them as - // keys with the value of the first argument 'style' - function define(style, string) { - var split = string.split(' '); - for (var i = 0; i < split.length; i++) { - words[split[i]] = style; - } - } - - // Takes commonly known puppet types/words and classifies them to a style - define('keyword', 'class define site node include import inherits'); - define('keyword', 'case if else in and elsif default or'); - define('atom', 'false true running present absent file directory undef'); - define('builtin', 'action augeas burst chain computer cron destination dport exec ' + - 'file filebucket group host icmp iniface interface jump k5login limit log_level ' + - 'log_prefix macauthorization mailalias maillist mcx mount nagios_command ' + - 'nagios_contact nagios_contactgroup nagios_host nagios_hostdependency ' + - 'nagios_hostescalation nagios_hostextinfo nagios_hostgroup nagios_service ' + - 'nagios_servicedependency nagios_serviceescalation nagios_serviceextinfo ' + - 'nagios_servicegroup nagios_timeperiod name notify outiface package proto reject ' + - 'resources router schedule scheduled_task selboolean selmodule service source ' + - 'sport ssh_authorized_key sshkey stage state table tidy todest toports tosource ' + - 'user vlan yumrepo zfs zone zpool'); - - // After finding a start of a string ('|") this function attempts to find the end; - // If a variable is encountered along the way, we display it differently when it - // is encapsulated in a double-quoted string. - function tokenString(stream, state) { - var current, prev, found_var = false; - while (!stream.eol() && (current = stream.next()) != state.pending) { - if (current === '$' && prev != '\\' && state.pending == '"') { - found_var = true; - break; - } - prev = current; - } - if (found_var) { - stream.backUp(1); - } - if (current == state.pending) { - state.continueString = false; - } else { - state.continueString = true; - } - return "string"; - } - - // Main function - function tokenize(stream, state) { - // Matches one whole word - var word = stream.match(/[\w]+/, false); - // Matches attributes (i.e. ensure => present ; 'ensure' would be matched) - var attribute = stream.match(/(\s+)?\w+\s+=>.*/, false); - // Matches non-builtin resource declarations - // (i.e. "apache::vhost {" or "mycustomclasss {" would be matched) - var resource = stream.match(/(\s+)?[\w:_]+(\s+)?{/, false); - // Matches virtual and exported resources (i.e. @@user { ; and the like) - var special_resource = stream.match(/(\s+)?[@]{1,2}[\w:_]+(\s+)?{/, false); - - // Finally advance the stream - var ch = stream.next(); - - // Have we found a variable? - if (ch === '$') { - if (stream.match(variable_regex)) { - // If so, and its in a string, assign it a different color - return state.continueString ? 'variable-2' : 'variable'; - } - // Otherwise return an invalid variable - return "error"; - } - // Should we still be looking for the end of a string? - if (state.continueString) { - // If so, go through the loop again - stream.backUp(1); - return tokenString(stream, state); - } - // Are we in a definition (class, node, define)? - if (state.inDefinition) { - // If so, return def (i.e. for 'class myclass {' ; 'myclass' would be matched) - if (stream.match(/(\s+)?[\w:_]+(\s+)?/)) { - return 'def'; - } - // Match the rest it the next time around - stream.match(/\s+{/); - state.inDefinition = false; - } - // Are we in an 'include' statement? - if (state.inInclude) { - // Match and return the included class - stream.match(/(\s+)?\S+(\s+)?/); - state.inInclude = false; - return 'def'; - } - // Do we just have a function on our hands? - // In 'ensure_resource("myclass")', 'ensure_resource' is matched - if (stream.match(/(\s+)?\w+\(/)) { - stream.backUp(1); - return 'def'; - } - // Have we matched the prior attribute regex? - if (attribute) { - stream.match(/(\s+)?\w+/); - return 'tag'; - } - // Do we have Puppet specific words? - if (word && words.hasOwnProperty(word)) { - // Negates the initial next() - stream.backUp(1); - // Acutally move the stream - stream.match(/[\w]+/); - // We want to process these words differently - // do to the importance they have in Puppet - if (stream.match(/\s+\S+\s+{/, false)) { - state.inDefinition = true; - } - if (word == 'include') { - state.inInclude = true; - } - // Returns their value as state in the prior define methods - return words[word]; - } - // Is there a match on a reference? - if (/(\s+)?[A-Z]/.test(word)) { - // Negate the next() - stream.backUp(1); - // Match the full reference - stream.match(/(\s+)?[A-Z][\w:_]+/); - return 'def'; - } - // Have we matched the prior resource regex? - if (resource) { - stream.match(/(\s+)?[\w:_]+/); - return 'def'; - } - // Have we matched the prior special_resource regex? - if (special_resource) { - stream.match(/(\s+)?[@]{1,2}/); - return 'special'; - } - // Match all the comments. All of them. - if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - // Have we found a string? - if (ch == "'" || ch == '"') { - // Store the type (single or double) - state.pending = ch; - // Perform the looping function to find the end - return tokenString(stream, state); - } - // Match all the brackets - if (ch == '{' || ch == '}') { - return 'bracket'; - } - // Match characters that we are going to assume - // are trying to be regex - if (ch == '/') { - stream.match(/.*\//); - return 'variable-3'; - } - // Match all the numbers - if (ch.match(/[0-9]/)) { - stream.eatWhile(/[0-9]+/); - return 'number'; - } - // Match the '=' and '=>' operators - if (ch == '=') { - if (stream.peek() == '>') { - stream.next(); - } - return "operator"; - } - // Keep advancing through all the rest - stream.eatWhile(/[\w-]/); - // Return a blank line for everything else - return null; - } - // Start it all - return { - startState: function () { - var state = {}; - state.inDefinition = false; - state.inInclude = false; - state.continueString = false; - state.pending = false; - return state; - }, - token: function (stream, state) { - // Strip the spaces, but regex will account for them eitherway - if (stream.eatSpace()) return null; - // Go through the main process - return tokenize(stream, state); - } - }; -}); - -CodeMirror.defineMIME("text/x-puppet", "puppet"); - -}); diff --git a/vendor/codemirror/mode/python/python.js b/vendor/codemirror/mode/python/python.js deleted file mode 100644 index f5530bcf..00000000 --- a/vendor/codemirror/mode/python/python.js +++ /dev/null @@ -1,388 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - - -CodeMirror.defineMode("python", function(conf, parserConf) { - var ERRORCLASS = 'error'; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var singleOperators = parserConf.singleOperators || new RegExp("^[\\+\\-\\*/%&|\\^~<>!]"); - var singleDelimiters = parserConf.singleDelimiters || new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]'); - var doubleOperators = parserConf.doubleOperators || new RegExp("^((==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"); - var doubleDelimiters = parserConf.doubleDelimiters || new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"); - var tripleDelimiters = parserConf.tripleDelimiters || new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"); - var identifiers = parserConf.identifiers|| new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); - var hangingIndent = parserConf.hangingIndent || parserConf.indentUnit; - - var wordOperators = wordRegexp(['and', 'or', 'not', 'is', 'in']); - var commonkeywords = ['as', 'assert', 'break', 'class', 'continue', - 'def', 'del', 'elif', 'else', 'except', 'finally', - 'for', 'from', 'global', 'if', 'import', - 'lambda', 'pass', 'raise', 'return', - 'try', 'while', 'with', 'yield']; - var commonBuiltins = ['abs', 'all', 'any', 'bin', 'bool', 'bytearray', 'callable', 'chr', - 'classmethod', 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', - 'enumerate', 'eval', 'filter', 'float', 'format', 'frozenset', - 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', - 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', - 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', - 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range', - 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', - 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', - 'type', 'vars', 'zip', '__import__', 'NotImplemented', - 'Ellipsis', '__debug__']; - var py2 = {'builtins': ['apply', 'basestring', 'buffer', 'cmp', 'coerce', 'execfile', - 'file', 'intern', 'long', 'raw_input', 'reduce', 'reload', - 'unichr', 'unicode', 'xrange', 'False', 'True', 'None'], - 'keywords': ['exec', 'print']}; - var py3 = {'builtins': ['ascii', 'bytes', 'exec', 'print'], - 'keywords': ['nonlocal', 'False', 'True', 'None']}; - - if(parserConf.extra_keywords != undefined){ - commonkeywords = commonkeywords.concat(parserConf.extra_keywords); - } - if(parserConf.extra_builtins != undefined){ - commonBuiltins = commonBuiltins.concat(parserConf.extra_builtins); - } - if (!!parserConf.version && parseInt(parserConf.version, 10) === 3) { - commonkeywords = commonkeywords.concat(py3.keywords); - commonBuiltins = commonBuiltins.concat(py3.builtins); - var stringPrefixes = new RegExp("^(([rb]|(br))?('{3}|\"{3}|['\"]))", "i"); - } else { - commonkeywords = commonkeywords.concat(py2.keywords); - commonBuiltins = commonBuiltins.concat(py2.builtins); - var stringPrefixes = new RegExp("^(([rub]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i"); - } - var keywords = wordRegexp(commonkeywords); - var builtins = wordRegexp(commonBuiltins); - - var indentInfo = null; - - // tokenizers - function tokenBase(stream, state) { - // Handle scope changes - if (stream.sol()) { - var scopeOffset = state.scopes[0].offset; - if (stream.eatSpace()) { - var lineOffset = stream.indentation(); - if (lineOffset > scopeOffset) { - indentInfo = 'indent'; - } else if (lineOffset < scopeOffset) { - indentInfo = 'dedent'; - } - return null; - } else { - if (scopeOffset > 0) { - dedent(stream, state); - } - } - } - if (stream.eatSpace()) { - return null; - } - - var ch = stream.peek(); - - // Handle Comments - if (ch === '#') { - stream.skipToEnd(); - return 'comment'; - } - - // Handle Number Literals - if (stream.match(/^[0-9\.]/, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } - if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } - if (stream.match(/^\.\d+/)) { floatLiteral = true; } - if (floatLiteral) { - // Float literals may be "imaginary" - stream.eat(/J/i); - return 'number'; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^0x[0-9a-f]+/i)) { intLiteral = true; } - // Binary - if (stream.match(/^0b[01]+/i)) { intLiteral = true; } - // Octal - if (stream.match(/^0o[0-7]+/i)) { intLiteral = true; } - // Decimal - if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { - // Decimal literals may be "imaginary" - stream.eat(/J/i); - // TODO - Can you have imaginary longs? - intLiteral = true; - } - // Zero by itself with no other piece of number. - if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } - if (intLiteral) { - // Integer literals may be "long" - stream.eat(/L/i); - return 'number'; - } - } - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - // Handle operators and Delimiters - if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) { - return null; - } - if (stream.match(doubleOperators) - || stream.match(singleOperators) - || stream.match(wordOperators)) { - return 'operator'; - } - if (stream.match(singleDelimiters)) { - return null; - } - - if (stream.match(keywords)) { - return 'keyword'; - } - - if (stream.match(builtins)) { - return 'builtin'; - } - - if (stream.match(/^(self|cls)\b/)) { - return "variable-2"; - } - - if (stream.match(identifiers)) { - if (state.lastToken == 'def' || state.lastToken == 'class') { - return 'def'; - } - return 'variable'; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - while ('rub'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) { - delimiter = delimiter.substr(1); - } - var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; - - function tokenString(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"\\]/); - if (stream.eat('\\')) { - stream.next(); - if (singleline && stream.eol()) { - return OUTCLASS; - } - } else if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return OUTCLASS; - } else { - stream.eat(/['"]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) { - return ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return OUTCLASS; - } - tokenString.isString = true; - return tokenString; - } - - function indent(stream, state, type) { - type = type || 'py'; - var indentUnit = 0; - if (type === 'py') { - if (state.scopes[0].type !== 'py') { - state.scopes[0].offset = stream.indentation(); - return; - } - for (var i = 0; i < state.scopes.length; ++i) { - if (state.scopes[i].type === 'py') { - indentUnit = state.scopes[i].offset + conf.indentUnit; - break; - } - } - } else if (stream.match(/\s*($|#)/, false)) { - // An open paren/bracket/brace with only space or comments after it - // on the line will indent the next line a fixed amount, to make it - // easier to put arguments, list items, etc. on their own lines. - indentUnit = stream.indentation() + hangingIndent; - } else { - indentUnit = stream.column() + stream.current().length; - } - state.scopes.unshift({ - offset: indentUnit, - type: type - }); - } - - function dedent(stream, state, type) { - type = type || 'py'; - if (state.scopes.length == 1) return; - if (state.scopes[0].type === 'py') { - var _indent = stream.indentation(); - var _indent_index = -1; - for (var i = 0; i < state.scopes.length; ++i) { - if (_indent === state.scopes[i].offset) { - _indent_index = i; - break; - } - } - if (_indent_index === -1) { - return true; - } - while (state.scopes[0].offset !== _indent) { - state.scopes.shift(); - } - return false; - } else { - if (type === 'py') { - state.scopes[0].offset = stream.indentation(); - return false; - } else { - if (state.scopes[0].type != type) { - return true; - } - state.scopes.shift(); - return false; - } - } - } - - function tokenLexer(stream, state) { - indentInfo = null; - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle '.' connected identifiers - if (current === '.') { - style = stream.match(identifiers, false) ? null : ERRORCLASS; - if (style === null && state.lastStyle === 'meta') { - // Apply 'meta' style to '.' connected identifiers when - // appropriate. - style = 'meta'; - } - return style; - } - - // Handle decorators - if (current === '@') { - return stream.match(identifiers, false) ? 'meta' : ERRORCLASS; - } - - if ((style === 'variable' || style === 'builtin') - && state.lastStyle === 'meta') { - style = 'meta'; - } - - // Handle scope changes. - if (current === 'pass' || current === 'return') { - state.dedent += 1; - } - if (current === 'lambda') state.lambda = true; - if ((current === ':' && !state.lambda && state.scopes[0].type == 'py') - || indentInfo === 'indent') { - indent(stream, state); - } - var delimiter_index = '[({'.indexOf(current); - if (delimiter_index !== -1) { - indent(stream, state, '])}'.slice(delimiter_index, delimiter_index+1)); - } - if (indentInfo === 'dedent') { - if (dedent(stream, state)) { - return ERRORCLASS; - } - } - delimiter_index = '])}'.indexOf(current); - if (delimiter_index !== -1) { - if (dedent(stream, state, current)) { - return ERRORCLASS; - } - } - if (state.dedent > 0 && stream.eol() && state.scopes[0].type == 'py') { - if (state.scopes.length > 1) state.scopes.shift(); - state.dedent -= 1; - } - - return style; - } - - var external = { - startState: function(basecolumn) { - return { - tokenize: tokenBase, - scopes: [{offset:basecolumn || 0, type:'py'}], - lastStyle: null, - lastToken: null, - lambda: false, - dedent: 0 - }; - }, - - token: function(stream, state) { - var style = tokenLexer(stream, state); - - state.lastStyle = style; - - var current = stream.current(); - if (current && style) { - state.lastToken = current; - } - - if (stream.eol() && state.lambda) { - state.lambda = false; - } - return style; - }, - - indent: function(state) { - if (state.tokenize != tokenBase) { - return state.tokenize.isString ? CodeMirror.Pass : 0; - } - - return state.scopes[0].offset; - }, - - lineComment: "#", - fold: "indent" - }; - return external; -}); - -CodeMirror.defineMIME("text/x-python", "python"); - -var words = function(str){return str.split(' ');}; - -CodeMirror.defineMIME("text/x-cython", { - name: "python", - extra_keywords: words("by cdef cimport cpdef ctypedef enum except"+ - "extern gil include nogil property public"+ - "readonly struct union DEF IF ELIF ELSE") -}); - -}); diff --git a/vendor/codemirror/mode/q/q.js b/vendor/codemirror/mode/q/q.js deleted file mode 100644 index d6e3b666..00000000 --- a/vendor/codemirror/mode/q/q.js +++ /dev/null @@ -1,136 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("q",function(config){ - var indentUnit=config.indentUnit, - curPunc, - keywords=buildRE(["abs","acos","aj","aj0","all","and","any","asc","asin","asof","atan","attr","avg","avgs","bin","by","ceiling","cols","cor","cos","count","cov","cross","csv","cut","delete","deltas","desc","dev","differ","distinct","div","do","each","ej","enlist","eval","except","exec","exit","exp","fby","fills","first","fkeys","flip","floor","from","get","getenv","group","gtime","hclose","hcount","hdel","hopen","hsym","iasc","idesc","if","ij","in","insert","inter","inv","key","keys","last","like","list","lj","load","log","lower","lsq","ltime","ltrim","mavg","max","maxs","mcount","md5","mdev","med","meta","min","mins","mmax","mmin","mmu","mod","msum","neg","next","not","null","or","over","parse","peach","pj","plist","prd","prds","prev","prior","rand","rank","ratios","raze","read0","read1","reciprocal","reverse","rload","rotate","rsave","rtrim","save","scan","select","set","setenv","show","signum","sin","sqrt","ss","ssr","string","sublist","sum","sums","sv","system","tables","tan","til","trim","txf","type","uj","ungroup","union","update","upper","upsert","value","var","view","views","vs","wavg","where","where","while","within","wj","wj1","wsum","xasc","xbar","xcol","xcols","xdesc","xexp","xgroup","xkey","xlog","xprev","xrank"]), - E=/[|/&^!+:\\\-*%$=~#;@><,?_\'\"\[\(\]\)\s{}]/; - function buildRE(w){return new RegExp("^("+w.join("|")+")$");} - function tokenBase(stream,state){ - var sol=stream.sol(),c=stream.next(); - curPunc=null; - if(sol) - if(c=="/") - return(state.tokenize=tokenLineComment)(stream,state); - else if(c=="\\"){ - if(stream.eol()||/\s/.test(stream.peek())) - return stream.skipToEnd(),/^\\\s*$/.test(stream.current())?(state.tokenize=tokenCommentToEOF)(stream, state):state.tokenize=tokenBase,"comment"; - else - return state.tokenize=tokenBase,"builtin"; - } - if(/\s/.test(c)) - return stream.peek()=="/"?(stream.skipToEnd(),"comment"):"whitespace"; - if(c=='"') - return(state.tokenize=tokenString)(stream,state); - if(c=='`') - return stream.eatWhile(/[A-Z|a-z|\d|_|:|\/|\.]/),"symbol"; - if(("."==c&&/\d/.test(stream.peek()))||/\d/.test(c)){ - var t=null; - stream.backUp(1); - if(stream.match(/^\d{4}\.\d{2}(m|\.\d{2}([D|T](\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)?)?)/) - || stream.match(/^\d+D(\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)/) - || stream.match(/^\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?/) - || stream.match(/^\d+[ptuv]{1}/)) - t="temporal"; - else if(stream.match(/^0[NwW]{1}/) - || stream.match(/^0x[\d|a-f|A-F]*/) - || stream.match(/^[0|1]+[b]{1}/) - || stream.match(/^\d+[chijn]{1}/) - || stream.match(/-?\d*(\.\d*)?(e[+\-]?\d+)?(e|f)?/)) - t="number"; - return(t&&(!(c=stream.peek())||E.test(c)))?t:(stream.next(),"error"); - } - if(/[A-Z|a-z]|\./.test(c)) - return stream.eatWhile(/[A-Z|a-z|\.|_|\d]/),keywords.test(stream.current())?"keyword":"variable"; - if(/[|/&^!+:\\\-*%$=~#;@><\.,?_\']/.test(c)) - return null; - if(/[{}\(\[\]\)]/.test(c)) - return null; - return"error"; - } - function tokenLineComment(stream,state){ - return stream.skipToEnd(),/\/\s*$/.test(stream.current())?(state.tokenize=tokenBlockComment)(stream,state):(state.tokenize=tokenBase),"comment"; - } - function tokenBlockComment(stream,state){ - var f=stream.sol()&&stream.peek()=="\\"; - stream.skipToEnd(); - if(f&&/^\\\s*$/.test(stream.current())) - state.tokenize=tokenBase; - return"comment"; - } - function tokenCommentToEOF(stream){return stream.skipToEnd(),"comment";} - function tokenString(stream,state){ - var escaped=false,next,end=false; - while((next=stream.next())){ - if(next=="\""&&!escaped){end=true;break;} - escaped=!escaped&&next=="\\"; - } - if(end)state.tokenize=tokenBase; - return"string"; - } - function pushContext(state,type,col){state.context={prev:state.context,indent:state.indent,col:col,type:type};} - function popContext(state){state.indent=state.context.indent;state.context=state.context.prev;} - return{ - startState:function(){ - return{tokenize:tokenBase, - context:null, - indent:0, - col:0}; - }, - token:function(stream,state){ - if(stream.sol()){ - if(state.context&&state.context.align==null) - state.context.align=false; - state.indent=stream.indentation(); - } - //if (stream.eatSpace()) return null; - var style=state.tokenize(stream,state); - if(style!="comment"&&state.context&&state.context.align==null&&state.context.type!="pattern"){ - state.context.align=true; - } - if(curPunc=="(")pushContext(state,")",stream.column()); - else if(curPunc=="[")pushContext(state,"]",stream.column()); - else if(curPunc=="{")pushContext(state,"}",stream.column()); - else if(/[\]\}\)]/.test(curPunc)){ - while(state.context&&state.context.type=="pattern")popContext(state); - if(state.context&&curPunc==state.context.type)popContext(state); - } - else if(curPunc=="."&&state.context&&state.context.type=="pattern")popContext(state); - else if(/atom|string|variable/.test(style)&&state.context){ - if(/[\}\]]/.test(state.context.type)) - pushContext(state,"pattern",stream.column()); - else if(state.context.type=="pattern"&&!state.context.align){ - state.context.align=true; - state.context.col=stream.column(); - } - } - return style; - }, - indent:function(state,textAfter){ - var firstChar=textAfter&&textAfter.charAt(0); - var context=state.context; - if(/[\]\}]/.test(firstChar)) - while (context&&context.type=="pattern")context=context.prev; - var closing=context&&firstChar==context.type; - if(!context) - return 0; - else if(context.type=="pattern") - return context.col; - else if(context.align) - return context.col+(closing?0:1); - else - return context.indent+(closing?0:indentUnit); - } - }; -}); -CodeMirror.defineMIME("text/x-q","q"); - -}); diff --git a/vendor/codemirror/mode/r/r.js b/vendor/codemirror/mode/r/r.js deleted file mode 100644 index 7f4feb23..00000000 --- a/vendor/codemirror/mode/r/r.js +++ /dev/null @@ -1,157 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("r", function(config) { - function wordObj(str) { - var words = str.split(" "), res = {}; - for (var i = 0; i < words.length; ++i) res[words[i]] = true; - return res; - } - var atoms = wordObj("NULL NA Inf NaN NA_integer_ NA_real_ NA_complex_ NA_character_"); - var builtins = wordObj("list quote bquote eval return call parse deparse"); - var keywords = wordObj("if else repeat while function for in next break"); - var blockkeywords = wordObj("if else repeat while function for"); - var opChars = /[+\-*\/^<>=!&|~$:]/; - var curPunc; - - function tokenBase(stream, state) { - curPunc = null; - var ch = stream.next(); - if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } else if (ch == "0" && stream.eat("x")) { - stream.eatWhile(/[\da-f]/i); - return "number"; - } else if (ch == "." && stream.eat(/\d/)) { - stream.match(/\d*(?:e[+\-]?\d+)?/); - return "number"; - } else if (/\d/.test(ch)) { - stream.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/); - return "number"; - } else if (ch == "'" || ch == '"') { - state.tokenize = tokenString(ch); - return "string"; - } else if (ch == "." && stream.match(/.[.\d]+/)) { - return "keyword"; - } else if (/[\w\.]/.test(ch) && ch != "_") { - stream.eatWhile(/[\w\.]/); - var word = stream.current(); - if (atoms.propertyIsEnumerable(word)) return "atom"; - if (keywords.propertyIsEnumerable(word)) { - // Block keywords start new blocks, except 'else if', which only starts - // one new block for the 'if', no block for the 'else'. - if (blockkeywords.propertyIsEnumerable(word) && - !stream.match(/\s*if(\s+|$)/, false)) - curPunc = "block"; - return "keyword"; - } - if (builtins.propertyIsEnumerable(word)) return "builtin"; - return "variable"; - } else if (ch == "%") { - if (stream.skipTo("%")) stream.next(); - return "variable-2"; - } else if (ch == "<" && stream.eat("-")) { - return "arrow"; - } else if (ch == "=" && state.ctx.argList) { - return "arg-is"; - } else if (opChars.test(ch)) { - if (ch == "$") return "dollar"; - stream.eatWhile(opChars); - return "operator"; - } else if (/[\(\){}\[\];]/.test(ch)) { - curPunc = ch; - if (ch == ";") return "semi"; - return null; - } else { - return null; - } - } - - function tokenString(quote) { - return function(stream, state) { - if (stream.eat("\\")) { - var ch = stream.next(); - if (ch == "x") stream.match(/^[a-f0-9]{2}/i); - else if ((ch == "u" || ch == "U") && stream.eat("{") && stream.skipTo("}")) stream.next(); - else if (ch == "u") stream.match(/^[a-f0-9]{4}/i); - else if (ch == "U") stream.match(/^[a-f0-9]{8}/i); - else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/); - return "string-2"; - } else { - var next; - while ((next = stream.next()) != null) { - if (next == quote) { state.tokenize = tokenBase; break; } - if (next == "\\") { stream.backUp(1); break; } - } - return "string"; - } - }; - } - - function push(state, type, stream) { - state.ctx = {type: type, - indent: state.indent, - align: null, - column: stream.column(), - prev: state.ctx}; - } - function pop(state) { - state.indent = state.ctx.indent; - state.ctx = state.ctx.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, - ctx: {type: "top", - indent: -config.indentUnit, - align: false}, - indent: 0, - afterIdent: false}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.ctx.align == null) state.ctx.align = false; - state.indent = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (style != "comment" && state.ctx.align == null) state.ctx.align = true; - - var ctype = state.ctx.type; - if ((curPunc == ";" || curPunc == "{" || curPunc == "}") && ctype == "block") pop(state); - if (curPunc == "{") push(state, "}", stream); - else if (curPunc == "(") { - push(state, ")", stream); - if (state.afterIdent) state.ctx.argList = true; - } - else if (curPunc == "[") push(state, "]", stream); - else if (curPunc == "block") push(state, "block", stream); - else if (curPunc == ctype) pop(state); - state.afterIdent = style == "variable" || style == "keyword"; - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), ctx = state.ctx, - closing = firstChar == ctx.type; - if (ctx.type == "block") return ctx.indent + (firstChar == "{" ? 0 : config.indentUnit); - else if (ctx.align) return ctx.column + (closing ? 0 : 1); - else return ctx.indent + (closing ? 0 : config.indentUnit); - } - }; -}); - -CodeMirror.defineMIME("text/x-rsrc", "r"); - -}); diff --git a/vendor/codemirror/mode/rpm/rpm.js b/vendor/codemirror/mode/rpm/rpm.js deleted file mode 100644 index 497997c4..00000000 --- a/vendor/codemirror/mode/rpm/rpm.js +++ /dev/null @@ -1,98 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("rpm-changes", function() { - var headerSeperator = /^-+$/; - var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /; - var simpleEmail = /^[\w+.-]+@[\w.-]+/; - - return { - token: function(stream) { - if (stream.sol()) { - if (stream.match(headerSeperator)) { return 'tag'; } - if (stream.match(headerLine)) { return 'tag'; } - } - if (stream.match(simpleEmail)) { return 'string'; } - stream.next(); - return null; - } - }; -}); - -CodeMirror.defineMIME("text/x-rpm-changes", "rpm-changes"); - -// Quick and dirty spec file highlighting - -CodeMirror.defineMode("rpm-spec", function() { - var arch = /^(i386|i586|i686|x86_64|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/; - - var preamble = /^(Name|Version|Release|License|Summary|Url|Group|Source|BuildArch|BuildRequires|BuildRoot|AutoReqProv|Provides|Requires(\(\w+\))?|Obsoletes|Conflicts|Recommends|Source\d*|Patch\d*|ExclusiveArch|NoSource|Supplements):/; - var section = /^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pre|post|triggerin|triggerun|pretrans|posttrans|verifyscript|check|triggerpostun|triggerprein|trigger)/; - var control_flow_complex = /^%(ifnarch|ifarch|if)/; // rpm control flow macros - var control_flow_simple = /^%(else|endif)/; // rpm control flow macros - var operators = /^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/; // operators in control flow macros - - return { - startState: function () { - return { - controlFlow: false, - macroParameters: false, - section: false - }; - }, - token: function (stream, state) { - var ch = stream.peek(); - if (ch == "#") { stream.skipToEnd(); return "comment"; } - - if (stream.sol()) { - if (stream.match(preamble)) { return "preamble"; } - if (stream.match(section)) { return "section"; } - } - - if (stream.match(/^\$\w+/)) { return "def"; } // Variables like '$RPM_BUILD_ROOT' - if (stream.match(/^\$\{\w+\}/)) { return "def"; } // Variables like '${RPM_BUILD_ROOT}' - - if (stream.match(control_flow_simple)) { return "keyword"; } - if (stream.match(control_flow_complex)) { - state.controlFlow = true; - return "keyword"; - } - if (state.controlFlow) { - if (stream.match(operators)) { return "operator"; } - if (stream.match(/^(\d+)/)) { return "number"; } - if (stream.eol()) { state.controlFlow = false; } - } - - if (stream.match(arch)) { return "number"; } - - // Macros like '%make_install' or '%attr(0775,root,root)' - if (stream.match(/^%[\w]+/)) { - if (stream.match(/^\(/)) { state.macroParameters = true; } - return "macro"; - } - if (state.macroParameters) { - if (stream.match(/^\d+/)) { return "number";} - if (stream.match(/^\)/)) { - state.macroParameters = false; - return "macro"; - } - } - if (stream.match(/^%\{\??[\w \-]+\}/)) { return "macro"; } // Macros like '%{defined fedora}' - - //TODO: Include bash script sub-parser (CodeMirror supports that) - stream.next(); - return null; - } - }; -}); - -CodeMirror.defineMIME("text/x-rpm-spec", "rpm-spec"); - -}); diff --git a/vendor/codemirror/mode/rst/rst.js b/vendor/codemirror/mode/rst/rst.js deleted file mode 100644 index 0763d4b9..00000000 --- a/vendor/codemirror/mode/rst/rst.js +++ /dev/null @@ -1,575 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../python/python"), require("../stex/stex"), require("../../addon/mode/overlay")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../python/python", "../stex/stex", "../../addon/mode/overlay"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('rst', function (config, options) { - - var rx_strong = /^\*\*[^\*\s](?:[^\*]*[^\*\s])?\*\*/; - var rx_emphasis = /^\*[^\*\s](?:[^\*]*[^\*\s])?\*/; - var rx_literal = /^``[^`\s](?:[^`]*[^`\s])``/; - - var rx_number = /^(?:[\d]+(?:[\.,]\d+)*)/; - var rx_positive = /^(?:\s\+[\d]+(?:[\.,]\d+)*)/; - var rx_negative = /^(?:\s\-[\d]+(?:[\.,]\d+)*)/; - - var rx_uri_protocol = "[Hh][Tt][Tt][Pp][Ss]?://"; - var rx_uri_domain = "(?:[\\d\\w.-]+)\\.(?:\\w{2,6})"; - var rx_uri_path = "(?:/[\\d\\w\\#\\%\\&\\-\\.\\,\\/\\:\\=\\?\\~]+)*"; - var rx_uri = new RegExp("^" + rx_uri_protocol + rx_uri_domain + rx_uri_path); - - var overlay = { - token: function (stream) { - - if (stream.match(rx_strong) && stream.match (/\W+|$/, false)) - return 'strong'; - if (stream.match(rx_emphasis) && stream.match (/\W+|$/, false)) - return 'em'; - if (stream.match(rx_literal) && stream.match (/\W+|$/, false)) - return 'string-2'; - if (stream.match(rx_number)) - return 'number'; - if (stream.match(rx_positive)) - return 'positive'; - if (stream.match(rx_negative)) - return 'negative'; - if (stream.match(rx_uri)) - return 'link'; - - while (stream.next() != null) { - if (stream.match(rx_strong, false)) break; - if (stream.match(rx_emphasis, false)) break; - if (stream.match(rx_literal, false)) break; - if (stream.match(rx_number, false)) break; - if (stream.match(rx_positive, false)) break; - if (stream.match(rx_negative, false)) break; - if (stream.match(rx_uri, false)) break; - } - - return null; - } - }; - - var mode = CodeMirror.getMode( - config, options.backdrop || 'rst-base' - ); - - return CodeMirror.overlayMode(mode, overlay, true); // combine -}, 'python', 'stex'); - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -CodeMirror.defineMode('rst-base', function (config) { - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function format(string) { - var args = Array.prototype.slice.call(arguments, 1); - return string.replace(/{(\d+)}/g, function (match, n) { - return typeof args[n] != 'undefined' ? args[n] : match; - }); - } - - function AssertException(message) { - this.message = message; - } - - AssertException.prototype.toString = function () { - return 'AssertException: ' + this.message; - }; - - function assert(expression, message) { - if (!expression) throw new AssertException(message); - return expression; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - var mode_python = CodeMirror.getMode(config, 'python'); - var mode_stex = CodeMirror.getMode(config, 'stex'); - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - var SEPA = "\\s+"; - var TAIL = "(?:\\s*|\\W|$)", - rx_TAIL = new RegExp(format('^{0}', TAIL)); - - var NAME = - "(?:[^\\W\\d_](?:[\\w!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)", - rx_NAME = new RegExp(format('^{0}', NAME)); - var NAME_WWS = - "(?:[^\\W\\d_](?:[\\w\\s!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)"; - var REF_NAME = format('(?:{0}|`{1}`)', NAME, NAME_WWS); - - var TEXT1 = "(?:[^\\s\\|](?:[^\\|]*[^\\s\\|])?)"; - var TEXT2 = "(?:[^\\`]+)", - rx_TEXT2 = new RegExp(format('^{0}', TEXT2)); - - var rx_section = new RegExp( - "^([!'#$%&\"()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~])\\1{3,}\\s*$"); - var rx_explicit = new RegExp( - format('^\\.\\.{0}', SEPA)); - var rx_link = new RegExp( - format('^_{0}:{1}|^__:{1}', REF_NAME, TAIL)); - var rx_directive = new RegExp( - format('^{0}::{1}', REF_NAME, TAIL)); - var rx_substitution = new RegExp( - format('^\\|{0}\\|{1}{2}::{3}', TEXT1, SEPA, REF_NAME, TAIL)); - var rx_footnote = new RegExp( - format('^\\[(?:\\d+|#{0}?|\\*)]{1}', REF_NAME, TAIL)); - var rx_citation = new RegExp( - format('^\\[{0}\\]{1}', REF_NAME, TAIL)); - - var rx_substitution_ref = new RegExp( - format('^\\|{0}\\|', TEXT1)); - var rx_footnote_ref = new RegExp( - format('^\\[(?:\\d+|#{0}?|\\*)]_', REF_NAME)); - var rx_citation_ref = new RegExp( - format('^\\[{0}\\]_', REF_NAME)); - var rx_link_ref1 = new RegExp( - format('^{0}__?', REF_NAME)); - var rx_link_ref2 = new RegExp( - format('^`{0}`_', TEXT2)); - - var rx_role_pre = new RegExp( - format('^:{0}:`{1}`{2}', NAME, TEXT2, TAIL)); - var rx_role_suf = new RegExp( - format('^`{1}`:{0}:{2}', NAME, TEXT2, TAIL)); - var rx_role = new RegExp( - format('^:{0}:{1}', NAME, TAIL)); - - var rx_directive_name = new RegExp(format('^{0}', REF_NAME)); - var rx_directive_tail = new RegExp(format('^::{0}', TAIL)); - var rx_substitution_text = new RegExp(format('^\\|{0}\\|', TEXT1)); - var rx_substitution_sepa = new RegExp(format('^{0}', SEPA)); - var rx_substitution_name = new RegExp(format('^{0}', REF_NAME)); - var rx_substitution_tail = new RegExp(format('^::{0}', TAIL)); - var rx_link_head = new RegExp("^_"); - var rx_link_name = new RegExp(format('^{0}|_', REF_NAME)); - var rx_link_tail = new RegExp(format('^:{0}', TAIL)); - - var rx_verbatim = new RegExp('^::\\s*$'); - var rx_examples = new RegExp('^\\s+(?:>>>|In \\[\\d+\\]:)\\s'); - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function to_normal(stream, state) { - var token = null; - - if (stream.sol() && stream.match(rx_examples, false)) { - change(state, to_mode, { - mode: mode_python, local: CodeMirror.startState(mode_python) - }); - } else if (stream.sol() && stream.match(rx_explicit)) { - change(state, to_explicit); - token = 'meta'; - } else if (stream.sol() && stream.match(rx_section)) { - change(state, to_normal); - token = 'header'; - } else if (phase(state) == rx_role_pre || - stream.match(rx_role_pre, false)) { - - switch (stage(state)) { - case 0: - change(state, to_normal, context(rx_role_pre, 1)); - assert(stream.match(/^:/)); - token = 'meta'; - break; - case 1: - change(state, to_normal, context(rx_role_pre, 2)); - assert(stream.match(rx_NAME)); - token = 'keyword'; - - if (stream.current().match(/^(?:math|latex)/)) { - state.tmp_stex = true; - } - break; - case 2: - change(state, to_normal, context(rx_role_pre, 3)); - assert(stream.match(/^:`/)); - token = 'meta'; - break; - case 3: - if (state.tmp_stex) { - state.tmp_stex = undefined; state.tmp = { - mode: mode_stex, local: CodeMirror.startState(mode_stex) - }; - } - - if (state.tmp) { - if (stream.peek() == '`') { - change(state, to_normal, context(rx_role_pre, 4)); - state.tmp = undefined; - break; - } - - token = state.tmp.mode.token(stream, state.tmp.local); - break; - } - - change(state, to_normal, context(rx_role_pre, 4)); - assert(stream.match(rx_TEXT2)); - token = 'string'; - break; - case 4: - change(state, to_normal, context(rx_role_pre, 5)); - assert(stream.match(/^`/)); - token = 'meta'; - break; - case 5: - change(state, to_normal, context(rx_role_pre, 6)); - assert(stream.match(rx_TAIL)); - break; - default: - change(state, to_normal); - assert(stream.current() == ''); - } - } else if (phase(state) == rx_role_suf || - stream.match(rx_role_suf, false)) { - - switch (stage(state)) { - case 0: - change(state, to_normal, context(rx_role_suf, 1)); - assert(stream.match(/^`/)); - token = 'meta'; - break; - case 1: - change(state, to_normal, context(rx_role_suf, 2)); - assert(stream.match(rx_TEXT2)); - token = 'string'; - break; - case 2: - change(state, to_normal, context(rx_role_suf, 3)); - assert(stream.match(/^`:/)); - token = 'meta'; - break; - case 3: - change(state, to_normal, context(rx_role_suf, 4)); - assert(stream.match(rx_NAME)); - token = 'keyword'; - break; - case 4: - change(state, to_normal, context(rx_role_suf, 5)); - assert(stream.match(/^:/)); - token = 'meta'; - break; - case 5: - change(state, to_normal, context(rx_role_suf, 6)); - assert(stream.match(rx_TAIL)); - break; - default: - change(state, to_normal); - assert(stream.current() == ''); - } - } else if (phase(state) == rx_role || stream.match(rx_role, false)) { - - switch (stage(state)) { - case 0: - change(state, to_normal, context(rx_role, 1)); - assert(stream.match(/^:/)); - token = 'meta'; - break; - case 1: - change(state, to_normal, context(rx_role, 2)); - assert(stream.match(rx_NAME)); - token = 'keyword'; - break; - case 2: - change(state, to_normal, context(rx_role, 3)); - assert(stream.match(/^:/)); - token = 'meta'; - break; - case 3: - change(state, to_normal, context(rx_role, 4)); - assert(stream.match(rx_TAIL)); - break; - default: - change(state, to_normal); - assert(stream.current() == ''); - } - } else if (phase(state) == rx_substitution_ref || - stream.match(rx_substitution_ref, false)) { - - switch (stage(state)) { - case 0: - change(state, to_normal, context(rx_substitution_ref, 1)); - assert(stream.match(rx_substitution_text)); - token = 'variable-2'; - break; - case 1: - change(state, to_normal, context(rx_substitution_ref, 2)); - if (stream.match(/^_?_?/)) token = 'link'; - break; - default: - change(state, to_normal); - assert(stream.current() == ''); - } - } else if (stream.match(rx_footnote_ref)) { - change(state, to_normal); - token = 'quote'; - } else if (stream.match(rx_citation_ref)) { - change(state, to_normal); - token = 'quote'; - } else if (stream.match(rx_link_ref1)) { - change(state, to_normal); - if (!stream.peek() || stream.peek().match(/^\W$/)) { - token = 'link'; - } - } else if (phase(state) == rx_link_ref2 || - stream.match(rx_link_ref2, false)) { - - switch (stage(state)) { - case 0: - if (!stream.peek() || stream.peek().match(/^\W$/)) { - change(state, to_normal, context(rx_link_ref2, 1)); - } else { - stream.match(rx_link_ref2); - } - break; - case 1: - change(state, to_normal, context(rx_link_ref2, 2)); - assert(stream.match(/^`/)); - token = 'link'; - break; - case 2: - change(state, to_normal, context(rx_link_ref2, 3)); - assert(stream.match(rx_TEXT2)); - break; - case 3: - change(state, to_normal, context(rx_link_ref2, 4)); - assert(stream.match(/^`_/)); - token = 'link'; - break; - default: - change(state, to_normal); - assert(stream.current() == ''); - } - } else if (stream.match(rx_verbatim)) { - change(state, to_verbatim); - } - - else { - if (stream.next()) change(state, to_normal); - } - - return token; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function to_explicit(stream, state) { - var token = null; - - if (phase(state) == rx_substitution || - stream.match(rx_substitution, false)) { - - switch (stage(state)) { - case 0: - change(state, to_explicit, context(rx_substitution, 1)); - assert(stream.match(rx_substitution_text)); - token = 'variable-2'; - break; - case 1: - change(state, to_explicit, context(rx_substitution, 2)); - assert(stream.match(rx_substitution_sepa)); - break; - case 2: - change(state, to_explicit, context(rx_substitution, 3)); - assert(stream.match(rx_substitution_name)); - token = 'keyword'; - break; - case 3: - change(state, to_explicit, context(rx_substitution, 4)); - assert(stream.match(rx_substitution_tail)); - token = 'meta'; - break; - default: - change(state, to_normal); - assert(stream.current() == ''); - } - } else if (phase(state) == rx_directive || - stream.match(rx_directive, false)) { - - switch (stage(state)) { - case 0: - change(state, to_explicit, context(rx_directive, 1)); - assert(stream.match(rx_directive_name)); - token = 'keyword'; - - if (stream.current().match(/^(?:math|latex)/)) - state.tmp_stex = true; - else if (stream.current().match(/^python/)) - state.tmp_py = true; - break; - case 1: - change(state, to_explicit, context(rx_directive, 2)); - assert(stream.match(rx_directive_tail)); - token = 'meta'; - - if (stream.match(/^latex\s*$/) || state.tmp_stex) { - state.tmp_stex = undefined; change(state, to_mode, { - mode: mode_stex, local: CodeMirror.startState(mode_stex) - }); - } - break; - case 2: - change(state, to_explicit, context(rx_directive, 3)); - if (stream.match(/^python\s*$/) || state.tmp_py) { - state.tmp_py = undefined; change(state, to_mode, { - mode: mode_python, local: CodeMirror.startState(mode_python) - }); - } - break; - default: - change(state, to_normal); - assert(stream.current() == ''); - } - } else if (phase(state) == rx_link || stream.match(rx_link, false)) { - - switch (stage(state)) { - case 0: - change(state, to_explicit, context(rx_link, 1)); - assert(stream.match(rx_link_head)); - assert(stream.match(rx_link_name)); - token = 'link'; - break; - case 1: - change(state, to_explicit, context(rx_link, 2)); - assert(stream.match(rx_link_tail)); - token = 'meta'; - break; - default: - change(state, to_normal); - assert(stream.current() == ''); - } - } else if (stream.match(rx_footnote)) { - change(state, to_normal); - token = 'quote'; - } else if (stream.match(rx_citation)) { - change(state, to_normal); - token = 'quote'; - } - - else { - stream.eatSpace(); - if (stream.eol()) { - change(state, to_normal); - } else { - stream.skipToEnd(); - change(state, to_comment); - token = 'comment'; - } - } - - return token; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function to_comment(stream, state) { - return as_block(stream, state, 'comment'); - } - - function to_verbatim(stream, state) { - return as_block(stream, state, 'meta'); - } - - function as_block(stream, state, token) { - if (stream.eol() || stream.eatSpace()) { - stream.skipToEnd(); - return token; - } else { - change(state, to_normal); - return null; - } - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function to_mode(stream, state) { - - if (state.ctx.mode && state.ctx.local) { - - if (stream.sol()) { - if (!stream.eatSpace()) change(state, to_normal); - return null; - } - - return state.ctx.mode.token(stream, state.ctx.local); - } - - change(state, to_normal); - return null; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - function context(phase, stage, mode, local) { - return {phase: phase, stage: stage, mode: mode, local: local}; - } - - function change(state, tok, ctx) { - state.tok = tok; - state.ctx = ctx || {}; - } - - function stage(state) { - return state.ctx.stage || 0; - } - - function phase(state) { - return state.ctx.phase; - } - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - return { - startState: function () { - return {tok: to_normal, ctx: context(undefined, 0)}; - }, - - copyState: function (state) { - var ctx = state.ctx, tmp = state.tmp; - if (ctx.local) - ctx = {mode: ctx.mode, local: CodeMirror.copyState(ctx.mode, ctx.local)}; - if (tmp) - tmp = {mode: tmp.mode, local: CodeMirror.copyState(tmp.mode, tmp.local)}; - return {tok: state.tok, ctx: ctx, tmp: tmp}; - }, - - innerMode: function (state) { - return state.tmp ? {state: state.tmp.local, mode: state.tmp.mode} - : state.ctx.mode ? {state: state.ctx.local, mode: state.ctx.mode} - : null; - }, - - token: function (stream, state) { - return state.tok(stream, state); - } - }; -}, 'python', 'stex'); - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -CodeMirror.defineMIME('text/x-rst', 'rst'); - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -}); diff --git a/vendor/codemirror/mode/ruby/ruby.js b/vendor/codemirror/mode/ruby/ruby.js deleted file mode 100644 index 4ef08b15..00000000 --- a/vendor/codemirror/mode/ruby/ruby.js +++ /dev/null @@ -1,261 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("ruby", function(config) { - function wordObj(words) { - var o = {}; - for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true; - return o; - } - var keywords = wordObj([ - "alias", "and", "BEGIN", "begin", "break", "case", "class", "def", "defined?", "do", "else", - "elsif", "END", "end", "ensure", "false", "for", "if", "in", "module", "next", "not", "or", - "redo", "rescue", "retry", "return", "self", "super", "then", "true", "undef", "unless", - "until", "when", "while", "yield", "nil", "raise", "throw", "catch", "fail", "loop", "callcc", - "caller", "lambda", "proc", "public", "protected", "private", "require", "load", - "require_relative", "extend", "autoload", "__END__", "__FILE__", "__LINE__", "__dir__" - ]); - var indentWords = wordObj(["def", "class", "case", "for", "while", "module", "then", - "catch", "loop", "proc", "begin"]); - var dedentWords = wordObj(["end", "until"]); - var matching = {"[": "]", "{": "}", "(": ")"}; - var curPunc; - - function chain(newtok, stream, state) { - state.tokenize.push(newtok); - return newtok(stream, state); - } - - function tokenBase(stream, state) { - curPunc = null; - if (stream.sol() && stream.match("=begin") && stream.eol()) { - state.tokenize.push(readBlockComment); - return "comment"; - } - if (stream.eatSpace()) return null; - var ch = stream.next(), m; - if (ch == "`" || ch == "'" || ch == '"') { - return chain(readQuoted(ch, "string", ch == '"' || ch == "`"), stream, state); - } else if (ch == "/" && !stream.eol() && stream.peek() != " ") { - if (stream.eat("=")) return "operator"; - return chain(readQuoted(ch, "string-2", true), stream, state); - } else if (ch == "%") { - var style = "string", embed = true; - if (stream.eat("s")) style = "atom"; - else if (stream.eat(/[WQ]/)) style = "string"; - else if (stream.eat(/[r]/)) style = "string-2"; - else if (stream.eat(/[wxq]/)) { style = "string"; embed = false; } - var delim = stream.eat(/[^\w\s]/); - if (!delim) return "operator"; - if (matching.propertyIsEnumerable(delim)) delim = matching[delim]; - return chain(readQuoted(delim, style, embed, true), stream, state); - } else if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } else if (ch == "<" && (m = stream.match(/^<-?[\`\"\']?([a-zA-Z_?]\w*)[\`\"\']?(?:;|$)/))) { - return chain(readHereDoc(m[1]), stream, state); - } else if (ch == "0") { - if (stream.eat("x")) stream.eatWhile(/[\da-fA-F]/); - else if (stream.eat("b")) stream.eatWhile(/[01]/); - else stream.eatWhile(/[0-7]/); - return "number"; - } else if (/\d/.test(ch)) { - stream.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+\-]?[\d_]+)?/); - return "number"; - } else if (ch == "?") { - while (stream.match(/^\\[CM]-/)) {} - if (stream.eat("\\")) stream.eatWhile(/\w/); - else stream.next(); - return "string"; - } else if (ch == ":") { - if (stream.eat("'")) return chain(readQuoted("'", "atom", false), stream, state); - if (stream.eat('"')) return chain(readQuoted('"', "atom", true), stream, state); - - // :> :>> :< :<< are valid symbols - if (stream.eat(/[\<\>]/)) { - stream.eat(/[\<\>]/); - return "atom"; - } - - // :+ :- :/ :* :| :& :! are valid symbols - if (stream.eat(/[\+\-\*\/\&\|\:\!]/)) { - return "atom"; - } - - // Symbols can't start by a digit - if (stream.eat(/[a-zA-Z$@_]/)) { - stream.eatWhile(/[\w]/); - // Only one ? ! = is allowed and only as the last character - stream.eat(/[\?\!\=]/); - return "atom"; - } - return "operator"; - } else if (ch == "@" && stream.match(/^@?[a-zA-Z_]/)) { - stream.eat("@"); - stream.eatWhile(/[\w]/); - return "variable-2"; - } else if (ch == "$") { - if (stream.eat(/[a-zA-Z_]/)) { - stream.eatWhile(/[\w]/); - } else if (stream.eat(/\d/)) { - stream.eat(/\d/); - } else { - stream.next(); // Must be a special global like $: or $! - } - return "variable-3"; - } else if (/[a-zA-Z_]/.test(ch)) { - stream.eatWhile(/[\w]/); - stream.eat(/[\?\!]/); - if (stream.eat(":")) return "atom"; - return "ident"; - } else if (ch == "|" && (state.varList || state.lastTok == "{" || state.lastTok == "do")) { - curPunc = "|"; - return null; - } else if (/[\(\)\[\]{}\\;]/.test(ch)) { - curPunc = ch; - return null; - } else if (ch == "-" && stream.eat(">")) { - return "arrow"; - } else if (/[=+\-\/*:\.^%<>~|]/.test(ch)) { - stream.eatWhile(/[=+\-\/*:\.^%<>~|]/); - return "operator"; - } else { - return null; - } - } - - function tokenBaseUntilBrace() { - var depth = 1; - return function(stream, state) { - if (stream.peek() == "}") { - depth--; - if (depth == 0) { - state.tokenize.pop(); - return state.tokenize[state.tokenize.length-1](stream, state); - } - } else if (stream.peek() == "{") { - depth++; - } - return tokenBase(stream, state); - }; - } - function tokenBaseOnce() { - var alreadyCalled = false; - return function(stream, state) { - if (alreadyCalled) { - state.tokenize.pop(); - return state.tokenize[state.tokenize.length-1](stream, state); - } - alreadyCalled = true; - return tokenBase(stream, state); - }; - } - function readQuoted(quote, style, embed, unescaped) { - return function(stream, state) { - var escaped = false, ch; - - if (state.context.type === 'read-quoted-paused') { - state.context = state.context.prev; - stream.eat("}"); - } - - while ((ch = stream.next()) != null) { - if (ch == quote && (unescaped || !escaped)) { - state.tokenize.pop(); - break; - } - if (embed && ch == "#" && !escaped) { - if (stream.eat("{")) { - if (quote == "}") { - state.context = {prev: state.context, type: 'read-quoted-paused'}; - } - state.tokenize.push(tokenBaseUntilBrace()); - break; - } else if (/[@\$]/.test(stream.peek())) { - state.tokenize.push(tokenBaseOnce()); - break; - } - } - escaped = !escaped && ch == "\\"; - } - return style; - }; - } - function readHereDoc(phrase) { - return function(stream, state) { - if (stream.match(phrase)) state.tokenize.pop(); - else stream.skipToEnd(); - return "string"; - }; - } - function readBlockComment(stream, state) { - if (stream.sol() && stream.match("=end") && stream.eol()) - state.tokenize.pop(); - stream.skipToEnd(); - return "comment"; - } - - return { - startState: function() { - return {tokenize: [tokenBase], - indented: 0, - context: {type: "top", indented: -config.indentUnit}, - continuedLine: false, - lastTok: null, - varList: false}; - }, - - token: function(stream, state) { - if (stream.sol()) state.indented = stream.indentation(); - var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype; - if (style == "ident") { - var word = stream.current(); - style = keywords.propertyIsEnumerable(stream.current()) ? "keyword" - : /^[A-Z]/.test(word) ? "tag" - : (state.lastTok == "def" || state.lastTok == "class" || state.varList) ? "def" - : "variable"; - if (indentWords.propertyIsEnumerable(word)) kwtype = "indent"; - else if (dedentWords.propertyIsEnumerable(word)) kwtype = "dedent"; - else if ((word == "if" || word == "unless") && stream.column() == stream.indentation()) - kwtype = "indent"; - else if (word == "do" && state.context.indented < state.indented) - kwtype = "indent"; - } - if (curPunc || (style && style != "comment")) state.lastTok = word || curPunc || style; - if (curPunc == "|") state.varList = !state.varList; - - if (kwtype == "indent" || /[\(\[\{]/.test(curPunc)) - state.context = {prev: state.context, type: curPunc || style, indented: state.indented}; - else if ((kwtype == "dedent" || /[\)\]\}]/.test(curPunc)) && state.context.prev) - state.context = state.context.prev; - - if (stream.eol()) - state.continuedLine = (curPunc == "\\" || style == "operator"); - return style; - }, - - indent: function(state, textAfter) { - if (state.tokenize[state.tokenize.length-1] != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0); - var ct = state.context; - var closing = ct.type == matching[firstChar] || - ct.type == "keyword" && /^(?:end|until|else|elsif|when|rescue)\b/.test(textAfter); - return ct.indented + (closing ? 0 : config.indentUnit) + - (state.continuedLine ? config.indentUnit : 0); - }, - - electricChars: "}de", // enD and rescuE - lineComment: "#" - }; -}); - -CodeMirror.defineMIME("text/x-ruby", "ruby"); - -}); diff --git a/vendor/codemirror/mode/ruby/test.js b/vendor/codemirror/mode/ruby/test.js deleted file mode 100644 index c97d1066..00000000 --- a/vendor/codemirror/mode/ruby/test.js +++ /dev/null @@ -1,11 +0,0 @@ -(function() { - var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("divide_equal_operator", - "[variable bar] [operator /=] [variable foo]"); - - MT("divide_equal_operator_no_spacing", - "[variable foo][operator /=][number 42]"); - -})(); diff --git a/vendor/codemirror/mode/rust/rust.js b/vendor/codemirror/mode/rust/rust.js deleted file mode 100644 index 2e6e20b2..00000000 --- a/vendor/codemirror/mode/rust/rust.js +++ /dev/null @@ -1,448 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("rust", function() { - var indentUnit = 4, altIndentUnit = 2; - var valKeywords = { - "if": "if-style", "while": "if-style", "else": "else-style", - "do": "else-style", "ret": "else-style", "fail": "else-style", - "break": "atom", "cont": "atom", "const": "let", "resource": "fn", - "let": "let", "fn": "fn", "for": "for", "alt": "alt", "iface": "iface", - "impl": "impl", "type": "type", "enum": "enum", "mod": "mod", - "as": "op", "true": "atom", "false": "atom", "assert": "op", "check": "op", - "claim": "op", "native": "ignore", "unsafe": "ignore", "import": "else-style", - "export": "else-style", "copy": "op", "log": "op", "log_err": "op", - "use": "op", "bind": "op", "self": "atom" - }; - var typeKeywords = function() { - var keywords = {"fn": "fn", "block": "fn", "obj": "obj"}; - var atoms = "bool uint int i8 i16 i32 i64 u8 u16 u32 u64 float f32 f64 str char".split(" "); - for (var i = 0, e = atoms.length; i < e; ++i) keywords[atoms[i]] = "atom"; - return keywords; - }(); - var operatorChar = /[+\-*&%=<>!?|\.@]/; - - // Tokenizer - - // Used as scratch variable to communicate multiple values without - // consing up tons of objects. - var tcat, content; - function r(tc, style) { - tcat = tc; - return style; - } - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"') { - state.tokenize = tokenString; - return state.tokenize(stream, state); - } - if (ch == "'") { - tcat = "atom"; - if (stream.eat("\\")) { - if (stream.skipTo("'")) { stream.next(); return "string"; } - else { return "error"; } - } else { - stream.next(); - return stream.eat("'") ? "string" : "error"; - } - } - if (ch == "/") { - if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } - if (stream.eat("*")) { - state.tokenize = tokenComment(1); - return state.tokenize(stream, state); - } - } - if (ch == "#") { - if (stream.eat("[")) { tcat = "open-attr"; return null; } - stream.eatWhile(/\w/); - return r("macro", "meta"); - } - if (ch == ":" && stream.match(":<")) { - return r("op", null); - } - if (ch.match(/\d/) || (ch == "." && stream.eat(/\d/))) { - var flp = false; - if (!stream.match(/^x[\da-f]+/i) && !stream.match(/^b[01]+/)) { - stream.eatWhile(/\d/); - if (stream.eat(".")) { flp = true; stream.eatWhile(/\d/); } - if (stream.match(/^e[+\-]?\d+/i)) { flp = true; } - } - if (flp) stream.match(/^f(?:32|64)/); - else stream.match(/^[ui](?:8|16|32|64)/); - return r("atom", "number"); - } - if (ch.match(/[()\[\]{}:;,]/)) return r(ch, null); - if (ch == "-" && stream.eat(">")) return r("->", null); - if (ch.match(operatorChar)) { - stream.eatWhile(operatorChar); - return r("op", null); - } - stream.eatWhile(/\w/); - content = stream.current(); - if (stream.match(/^::\w/)) { - stream.backUp(1); - return r("prefix", "variable-2"); - } - if (state.keywords.propertyIsEnumerable(content)) - return r(state.keywords[content], content.match(/true|false/) ? "atom" : "keyword"); - return r("name", "variable"); - } - - function tokenString(stream, state) { - var ch, escaped = false; - while (ch = stream.next()) { - if (ch == '"' && !escaped) { - state.tokenize = tokenBase; - return r("atom", "string"); - } - escaped = !escaped && ch == "\\"; - } - // Hack to not confuse the parser when a string is split in - // pieces. - return r("op", "string"); - } - - function tokenComment(depth) { - return function(stream, state) { - var lastCh = null, ch; - while (ch = stream.next()) { - if (ch == "/" && lastCh == "*") { - if (depth == 1) { - state.tokenize = tokenBase; - break; - } else { - state.tokenize = tokenComment(depth - 1); - return state.tokenize(stream, state); - } - } - if (ch == "*" && lastCh == "/") { - state.tokenize = tokenComment(depth + 1); - return state.tokenize(stream, state); - } - lastCh = ch; - } - return "comment"; - }; - } - - // Parser - - var cx = {state: null, stream: null, marked: null, cc: null}; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - - function pushlex(type, info) { - var result = function() { - var state = cx.state; - state.lexical = {indented: state.indented, column: cx.stream.column(), - type: type, prev: state.lexical, info: info}; - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ")") - state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - function typecx() { cx.state.keywords = typeKeywords; } - function valcx() { cx.state.keywords = valKeywords; } - poplex.lex = typecx.lex = valcx.lex = true; - - function commasep(comb, end) { - function more(type) { - if (type == ",") return cont(comb, more); - if (type == end) return cont(); - return cont(more); - } - return function(type) { - if (type == end) return cont(); - return pass(comb, more); - }; - } - - function stat_of(comb, tag) { - return cont(pushlex("stat", tag), comb, poplex, block); - } - function block(type) { - if (type == "}") return cont(); - if (type == "let") return stat_of(letdef1, "let"); - if (type == "fn") return stat_of(fndef); - if (type == "type") return cont(pushlex("stat"), tydef, endstatement, poplex, block); - if (type == "enum") return stat_of(enumdef); - if (type == "mod") return stat_of(mod); - if (type == "iface") return stat_of(iface); - if (type == "impl") return stat_of(impl); - if (type == "open-attr") return cont(pushlex("]"), commasep(expression, "]"), poplex); - if (type == "ignore" || type.match(/[\]\);,]/)) return cont(block); - return pass(pushlex("stat"), expression, poplex, endstatement, block); - } - function endstatement(type) { - if (type == ";") return cont(); - return pass(); - } - function expression(type) { - if (type == "atom" || type == "name") return cont(maybeop); - if (type == "{") return cont(pushlex("}"), exprbrace, poplex); - if (type.match(/[\[\(]/)) return matchBrackets(type, expression); - if (type.match(/[\]\)\};,]/)) return pass(); - if (type == "if-style") return cont(expression, expression); - if (type == "else-style" || type == "op") return cont(expression); - if (type == "for") return cont(pattern, maybetype, inop, expression, expression); - if (type == "alt") return cont(expression, altbody); - if (type == "fn") return cont(fndef); - if (type == "macro") return cont(macro); - return cont(); - } - function maybeop(type) { - if (content == ".") return cont(maybeprop); - if (content == "::<"){return cont(typarams, maybeop);} - if (type == "op" || content == ":") return cont(expression); - if (type == "(" || type == "[") return matchBrackets(type, expression); - return pass(); - } - function maybeprop() { - if (content.match(/^\w+$/)) {cx.marked = "variable"; return cont(maybeop);} - return pass(expression); - } - function exprbrace(type) { - if (type == "op") { - if (content == "|") return cont(blockvars, poplex, pushlex("}", "block"), block); - if (content == "||") return cont(poplex, pushlex("}", "block"), block); - } - if (content == "mutable" || (content.match(/^\w+$/) && cx.stream.peek() == ":" - && !cx.stream.match("::", false))) - return pass(record_of(expression)); - return pass(block); - } - function record_of(comb) { - function ro(type) { - if (content == "mutable" || content == "with") {cx.marked = "keyword"; return cont(ro);} - if (content.match(/^\w*$/)) {cx.marked = "variable"; return cont(ro);} - if (type == ":") return cont(comb, ro); - if (type == "}") return cont(); - return cont(ro); - } - return ro; - } - function blockvars(type) { - if (type == "name") {cx.marked = "def"; return cont(blockvars);} - if (type == "op" && content == "|") return cont(); - return cont(blockvars); - } - - function letdef1(type) { - if (type.match(/[\]\)\};]/)) return cont(); - if (content == "=") return cont(expression, letdef2); - if (type == ",") return cont(letdef1); - return pass(pattern, maybetype, letdef1); - } - function letdef2(type) { - if (type.match(/[\]\)\};,]/)) return pass(letdef1); - else return pass(expression, letdef2); - } - function maybetype(type) { - if (type == ":") return cont(typecx, rtype, valcx); - return pass(); - } - function inop(type) { - if (type == "name" && content == "in") {cx.marked = "keyword"; return cont();} - return pass(); - } - function fndef(type) { - if (content == "@" || content == "~") {cx.marked = "keyword"; return cont(fndef);} - if (type == "name") {cx.marked = "def"; return cont(fndef);} - if (content == "<") return cont(typarams, fndef); - if (type == "{") return pass(expression); - if (type == "(") return cont(pushlex(")"), commasep(argdef, ")"), poplex, fndef); - if (type == "->") return cont(typecx, rtype, valcx, fndef); - if (type == ";") return cont(); - return cont(fndef); - } - function tydef(type) { - if (type == "name") {cx.marked = "def"; return cont(tydef);} - if (content == "<") return cont(typarams, tydef); - if (content == "=") return cont(typecx, rtype, valcx); - return cont(tydef); - } - function enumdef(type) { - if (type == "name") {cx.marked = "def"; return cont(enumdef);} - if (content == "<") return cont(typarams, enumdef); - if (content == "=") return cont(typecx, rtype, valcx, endstatement); - if (type == "{") return cont(pushlex("}"), typecx, enumblock, valcx, poplex); - return cont(enumdef); - } - function enumblock(type) { - if (type == "}") return cont(); - if (type == "(") return cont(pushlex(")"), commasep(rtype, ")"), poplex, enumblock); - if (content.match(/^\w+$/)) cx.marked = "def"; - return cont(enumblock); - } - function mod(type) { - if (type == "name") {cx.marked = "def"; return cont(mod);} - if (type == "{") return cont(pushlex("}"), block, poplex); - return pass(); - } - function iface(type) { - if (type == "name") {cx.marked = "def"; return cont(iface);} - if (content == "<") return cont(typarams, iface); - if (type == "{") return cont(pushlex("}"), block, poplex); - return pass(); - } - function impl(type) { - if (content == "<") return cont(typarams, impl); - if (content == "of" || content == "for") {cx.marked = "keyword"; return cont(rtype, impl);} - if (type == "name") {cx.marked = "def"; return cont(impl);} - if (type == "{") return cont(pushlex("}"), block, poplex); - return pass(); - } - function typarams() { - if (content == ">") return cont(); - if (content == ",") return cont(typarams); - if (content == ":") return cont(rtype, typarams); - return pass(rtype, typarams); - } - function argdef(type) { - if (type == "name") {cx.marked = "def"; return cont(argdef);} - if (type == ":") return cont(typecx, rtype, valcx); - return pass(); - } - function rtype(type) { - if (type == "name") {cx.marked = "variable-3"; return cont(rtypemaybeparam); } - if (content == "mutable") {cx.marked = "keyword"; return cont(rtype);} - if (type == "atom") return cont(rtypemaybeparam); - if (type == "op" || type == "obj") return cont(rtype); - if (type == "fn") return cont(fntype); - if (type == "{") return cont(pushlex("{"), record_of(rtype), poplex); - return matchBrackets(type, rtype); - } - function rtypemaybeparam() { - if (content == "<") return cont(typarams); - return pass(); - } - function fntype(type) { - if (type == "(") return cont(pushlex("("), commasep(rtype, ")"), poplex, fntype); - if (type == "->") return cont(rtype); - return pass(); - } - function pattern(type) { - if (type == "name") {cx.marked = "def"; return cont(patternmaybeop);} - if (type == "atom") return cont(patternmaybeop); - if (type == "op") return cont(pattern); - if (type.match(/[\]\)\};,]/)) return pass(); - return matchBrackets(type, pattern); - } - function patternmaybeop(type) { - if (type == "op" && content == ".") return cont(); - if (content == "to") {cx.marked = "keyword"; return cont(pattern);} - else return pass(); - } - function altbody(type) { - if (type == "{") return cont(pushlex("}", "alt"), altblock1, poplex); - return pass(); - } - function altblock1(type) { - if (type == "}") return cont(); - if (type == "|") return cont(altblock1); - if (content == "when") {cx.marked = "keyword"; return cont(expression, altblock2);} - if (type.match(/[\]\);,]/)) return cont(altblock1); - return pass(pattern, altblock2); - } - function altblock2(type) { - if (type == "{") return cont(pushlex("}", "alt"), block, poplex, altblock1); - else return pass(altblock1); - } - - function macro(type) { - if (type.match(/[\[\(\{]/)) return matchBrackets(type, expression); - return pass(); - } - function matchBrackets(type, comb) { - if (type == "[") return cont(pushlex("]"), commasep(comb, "]"), poplex); - if (type == "(") return cont(pushlex(")"), commasep(comb, ")"), poplex); - if (type == "{") return cont(pushlex("}"), commasep(comb, "}"), poplex); - return cont(); - } - - function parse(state, stream, style) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; - - while (true) { - var combinator = cc.length ? cc.pop() : block; - if (combinator(tcat)) { - while(cc.length && cc[cc.length - 1].lex) - cc.pop()(); - return cx.marked || style; - } - } - } - - return { - startState: function() { - return { - tokenize: tokenBase, - cc: [], - lexical: {indented: -indentUnit, column: 0, type: "top", align: false}, - keywords: valKeywords, - indented: 0 - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = false; - state.indented = stream.indentation(); - } - if (stream.eatSpace()) return null; - tcat = content = null; - var style = state.tokenize(stream, state); - if (style == "comment") return style; - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = true; - if (tcat == "prefix") return style; - if (!content) content = stream.current(); - return parse(state, stream, style); - }, - - indent: function(state, textAfter) { - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, - type = lexical.type, closing = firstChar == type; - if (type == "stat") return lexical.indented + indentUnit; - if (lexical.align) return lexical.column + (closing ? 0 : 1); - return lexical.indented + (closing ? 0 : (lexical.info == "alt" ? altIndentUnit : indentUnit)); - }, - - electricChars: "{}", - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: "//", - fold: "brace" - }; -}); - -CodeMirror.defineMIME("text/x-rustsrc", "rust"); - -}); diff --git a/vendor/codemirror/mode/sass/sass.js b/vendor/codemirror/mode/sass/sass.js deleted file mode 100644 index 74ae91db..00000000 --- a/vendor/codemirror/mode/sass/sass.js +++ /dev/null @@ -1,342 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("sass", function(config) { - var tokenRegexp = function(words){ - return new RegExp("^" + words.join("|")); - }; - - var keywords = ["true", "false", "null", "auto"]; - var keywordsRegexp = new RegExp("^" + keywords.join("|")); - - var operators = ["\\(", "\\)", "=", ">", "<", "==", ">=", "<=", "\\+", "-", "\\!=", "/", "\\*", "%", "and", "or", "not"]; - var opRegexp = tokenRegexp(operators); - - var pseudoElementsRegexp = /^::?[\w\-]+/; - - var urlTokens = function(stream, state){ - var ch = stream.peek(); - - if (ch === ")"){ - stream.next(); - state.tokenizer = tokenBase; - return "operator"; - }else if (ch === "("){ - stream.next(); - stream.eatSpace(); - - return "operator"; - }else if (ch === "'" || ch === '"'){ - state.tokenizer = buildStringTokenizer(stream.next()); - return "string"; - }else{ - state.tokenizer = buildStringTokenizer(")", false); - return "string"; - } - }; - var multilineComment = function(stream, state) { - if (stream.skipTo("*/")){ - stream.next(); - stream.next(); - state.tokenizer = tokenBase; - }else { - stream.next(); - } - - return "comment"; - }; - - var buildStringTokenizer = function(quote, greedy){ - if(greedy == null){ greedy = true; } - - function stringTokenizer(stream, state){ - var nextChar = stream.next(); - var peekChar = stream.peek(); - var previousChar = stream.string.charAt(stream.pos-2); - - var endingString = ((nextChar !== "\\" && peekChar === quote) || (nextChar === quote && previousChar !== "\\")); - - /* - console.log("previousChar: " + previousChar); - console.log("nextChar: " + nextChar); - console.log("peekChar: " + peekChar); - console.log("ending: " + endingString); - */ - - if (endingString){ - if (nextChar !== quote && greedy) { stream.next(); } - state.tokenizer = tokenBase; - return "string"; - }else if (nextChar === "#" && peekChar === "{"){ - state.tokenizer = buildInterpolationTokenizer(stringTokenizer); - stream.next(); - return "operator"; - }else { - return "string"; - } - } - - return stringTokenizer; - }; - - var buildInterpolationTokenizer = function(currentTokenizer){ - return function(stream, state){ - if (stream.peek() === "}"){ - stream.next(); - state.tokenizer = currentTokenizer; - return "operator"; - }else{ - return tokenBase(stream, state); - } - }; - }; - - var indent = function(state){ - if (state.indentCount == 0){ - state.indentCount++; - var lastScopeOffset = state.scopes[0].offset; - var currentOffset = lastScopeOffset + config.indentUnit; - state.scopes.unshift({ offset:currentOffset }); - } - }; - - var dedent = function(state){ - if (state.scopes.length == 1) { return; } - - state.scopes.shift(); - }; - - var tokenBase = function(stream, state) { - var ch = stream.peek(); - - // Single line Comment - if (stream.match('//')) { - stream.skipToEnd(); - return "comment"; - } - - // Multiline Comment - if (stream.match('/*')){ - state.tokenizer = multilineComment; - return state.tokenizer(stream, state); - } - - // Interpolation - if (stream.match('#{')){ - state.tokenizer = buildInterpolationTokenizer(tokenBase); - return "operator"; - } - - if (ch === "."){ - stream.next(); - - // Match class selectors - if (stream.match(/^[\w-]+/)){ - indent(state); - return "atom"; - }else if (stream.peek() === "#"){ - indent(state); - return "atom"; - }else{ - return "operator"; - } - } - - if (ch === "#"){ - stream.next(); - - // Hex numbers - if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){ - return "number"; - } - - // ID selectors - if (stream.match(/^[\w-]+/)){ - indent(state); - return "atom"; - } - - if (stream.peek() === "#"){ - indent(state); - return "atom"; - } - } - - // Numbers - if (stream.match(/^-?[0-9\.]+/)){ - return "number"; - } - - // Units - if (stream.match(/^(px|em|in)\b/)){ - return "unit"; - } - - if (stream.match(keywordsRegexp)){ - return "keyword"; - } - - if (stream.match(/^url/) && stream.peek() === "("){ - state.tokenizer = urlTokens; - return "atom"; - } - - // Variables - if (ch === "$"){ - stream.next(); - stream.eatWhile(/[\w-]/); - - if (stream.peek() === ":"){ - stream.next(); - return "variable-2"; - }else{ - return "variable-3"; - } - } - - if (ch === "!"){ - stream.next(); - - if (stream.match(/^[\w]+/)){ - return "keyword"; - } - - return "operator"; - } - - if (ch === "="){ - stream.next(); - - // Match shortcut mixin definition - if (stream.match(/^[\w-]+/)){ - indent(state); - return "meta"; - }else { - return "operator"; - } - } - - if (ch === "+"){ - stream.next(); - - // Match shortcut mixin definition - if (stream.match(/^[\w-]+/)){ - return "variable-3"; - }else { - return "operator"; - } - } - - // Indent Directives - if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)){ - indent(state); - return "meta"; - } - - // Other Directives - if (ch === "@"){ - stream.next(); - stream.eatWhile(/[\w-]/); - return "meta"; - } - - // Strings - if (ch === '"' || ch === "'"){ - stream.next(); - state.tokenizer = buildStringTokenizer(ch); - return "string"; - } - - // Pseudo element selectors - if (ch == ':' && stream.match(pseudoElementsRegexp)){ - return "keyword"; - } - - // atoms - if (stream.eatWhile(/[\w-&]/)){ - // matches a property definition - if (stream.peek() === ":" && !stream.match(pseudoElementsRegexp, false)) - return "property"; - else - return "atom"; - } - - if (stream.match(opRegexp)){ - return "operator"; - } - - // If we haven't returned by now, we move 1 character - // and return an error - stream.next(); - return null; - }; - - var tokenLexer = function(stream, state) { - if (stream.sol()){ - state.indentCount = 0; - } - var style = state.tokenizer(stream, state); - var current = stream.current(); - - if (current === "@return"){ - dedent(state); - } - - if (style === "atom"){ - indent(state); - } - - if (style !== null){ - var startOfToken = stream.pos - current.length; - var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount); - - var newScopes = []; - - for (var i = 0; i < state.scopes.length; i++){ - var scope = state.scopes[i]; - - if (scope.offset <= withCurrentIndent){ - newScopes.push(scope); - } - } - - state.scopes = newScopes; - } - - - return style; - }; - - return { - startState: function() { - return { - tokenizer: tokenBase, - scopes: [{offset: 0, type: 'sass'}], - definedVars: [], - definedMixins: [] - }; - }, - token: function(stream, state) { - var style = tokenLexer(stream, state); - - state.lastToken = { style: style, content: stream.current() }; - - return style; - }, - - indent: function(state) { - return state.scopes[0].offset; - } - }; -}); - -CodeMirror.defineMIME("text/x-sass", "sass"); - -}); diff --git a/vendor/codemirror/mode/scheme/scheme.js b/vendor/codemirror/mode/scheme/scheme.js deleted file mode 100644 index 7124f728..00000000 --- a/vendor/codemirror/mode/scheme/scheme.js +++ /dev/null @@ -1,245 +0,0 @@ -/** - * Author: Koh Zi Han, based on implementation by Koh Zi Chun - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("scheme", function () { - var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", - ATOM = "atom", NUMBER = "number", BRACKET = "bracket"; - var INDENT_WORD_SKIP = 2; - - function makeKeywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var keywords = makeKeywords("λ case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt #f floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? #t tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"); - var indentKeys = makeKeywords("define let letrec let* lambda"); - - function stateStack(indent, type, prev) { // represents a state stack object - this.indent = indent; - this.type = type; - this.prev = prev; - } - - function pushStack(state, indent, type) { - state.indentStack = new stateStack(indent, type, state.indentStack); - } - - function popStack(state) { - state.indentStack = state.indentStack.prev; - } - - var binaryMatcher = new RegExp(/^(?:[-+]i|[-+][01]+#*(?:\/[01]+#*)?i|[-+]?[01]+#*(?:\/[01]+#*)?@[-+]?[01]+#*(?:\/[01]+#*)?|[-+]?[01]+#*(?:\/[01]+#*)?[-+](?:[01]+#*(?:\/[01]+#*)?)?i|[-+]?[01]+#*(?:\/[01]+#*)?)(?=[()\s;"]|$)/i); - var octalMatcher = new RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?)(?=[()\s;"]|$)/i); - var hexMatcher = new RegExp(/^(?:[-+]i|[-+][\da-f]+#*(?:\/[\da-f]+#*)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?@[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?[-+](?:[\da-f]+#*(?:\/[\da-f]+#*)?)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?)(?=[()\s;"]|$)/i); - var decimalMatcher = new RegExp(/^(?:[-+]i|[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)i|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)@[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)?i|(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*))(?=[()\s;"]|$)/i); - - function isBinaryNumber (stream) { - return stream.match(binaryMatcher); - } - - function isOctalNumber (stream) { - return stream.match(octalMatcher); - } - - function isDecimalNumber (stream, backup) { - if (backup === true) { - stream.backUp(1); - } - return stream.match(decimalMatcher); - } - - function isHexNumber (stream) { - return stream.match(hexMatcher); - } - - return { - startState: function () { - return { - indentStack: null, - indentation: 0, - mode: false, - sExprComment: false - }; - }, - - token: function (stream, state) { - if (state.indentStack == null && stream.sol()) { - // update indentation, but only if indentStack is empty - state.indentation = stream.indentation(); - } - - // skip spaces - if (stream.eatSpace()) { - return null; - } - var returnType = null; - - switch(state.mode){ - case "string": // multi-line string parsing mode - var next, escaped = false; - while ((next = stream.next()) != null) { - if (next == "\"" && !escaped) { - - state.mode = false; - break; - } - escaped = !escaped && next == "\\"; - } - returnType = STRING; // continue on in scheme-string mode - break; - case "comment": // comment parsing mode - var next, maybeEnd = false; - while ((next = stream.next()) != null) { - if (next == "#" && maybeEnd) { - - state.mode = false; - break; - } - maybeEnd = (next == "|"); - } - returnType = COMMENT; - break; - case "s-expr-comment": // s-expr commenting mode - state.mode = false; - if(stream.peek() == "(" || stream.peek() == "["){ - // actually start scheme s-expr commenting mode - state.sExprComment = 0; - }else{ - // if not we just comment the entire of the next token - stream.eatWhile(/[^/s]/); // eat non spaces - returnType = COMMENT; - break; - } - default: // default parsing mode - var ch = stream.next(); - - if (ch == "\"") { - state.mode = "string"; - returnType = STRING; - - } else if (ch == "'") { - returnType = ATOM; - } else if (ch == '#') { - if (stream.eat("|")) { // Multi-line comment - state.mode = "comment"; // toggle to comment mode - returnType = COMMENT; - } else if (stream.eat(/[tf]/i)) { // #t/#f (atom) - returnType = ATOM; - } else if (stream.eat(';')) { // S-Expr comment - state.mode = "s-expr-comment"; - returnType = COMMENT; - } else { - var numTest = null, hasExactness = false, hasRadix = true; - if (stream.eat(/[ei]/i)) { - hasExactness = true; - } else { - stream.backUp(1); // must be radix specifier - } - if (stream.match(/^#b/i)) { - numTest = isBinaryNumber; - } else if (stream.match(/^#o/i)) { - numTest = isOctalNumber; - } else if (stream.match(/^#x/i)) { - numTest = isHexNumber; - } else if (stream.match(/^#d/i)) { - numTest = isDecimalNumber; - } else if (stream.match(/^[-+0-9.]/, false)) { - hasRadix = false; - numTest = isDecimalNumber; - // re-consume the intial # if all matches failed - } else if (!hasExactness) { - stream.eat('#'); - } - if (numTest != null) { - if (hasRadix && !hasExactness) { - // consume optional exactness after radix - stream.match(/^#[ei]/i); - } - if (numTest(stream)) - returnType = NUMBER; - } - } - } else if (/^[-+0-9.]/.test(ch) && isDecimalNumber(stream, true)) { // match non-prefixed number, must be decimal - returnType = NUMBER; - } else if (ch == ";") { // comment - stream.skipToEnd(); // rest of the line is a comment - returnType = COMMENT; - } else if (ch == "(" || ch == "[") { - var keyWord = ''; var indentTemp = stream.column(), letter; - /** - Either - (indent-word .. - (non-indent-word .. - (;something else, bracket, etc. - */ - - while ((letter = stream.eat(/[^\s\(\[\;\)\]]/)) != null) { - keyWord += letter; - } - - if (keyWord.length > 0 && indentKeys.propertyIsEnumerable(keyWord)) { // indent-word - - pushStack(state, indentTemp + INDENT_WORD_SKIP, ch); - } else { // non-indent word - // we continue eating the spaces - stream.eatSpace(); - if (stream.eol() || stream.peek() == ";") { - // nothing significant after - // we restart indentation 1 space after - pushStack(state, indentTemp + 1, ch); - } else { - pushStack(state, indentTemp + stream.current().length, ch); // else we match - } - } - stream.backUp(stream.current().length - 1); // undo all the eating - - if(typeof state.sExprComment == "number") state.sExprComment++; - - returnType = BRACKET; - } else if (ch == ")" || ch == "]") { - returnType = BRACKET; - if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : "[")) { - popStack(state); - - if(typeof state.sExprComment == "number"){ - if(--state.sExprComment == 0){ - returnType = COMMENT; // final closing bracket - state.sExprComment = false; // turn off s-expr commenting mode - } - } - } - } else { - stream.eatWhile(/[\w\$_\-!$%&*+\.\/:<=>?@\^~]/); - - if (keywords && keywords.propertyIsEnumerable(stream.current())) { - returnType = BUILTIN; - } else returnType = "variable"; - } - } - return (typeof state.sExprComment == "number") ? COMMENT : returnType; - }, - - indent: function (state) { - if (state.indentStack == null) return state.indentation; - return state.indentStack.indent; - }, - - lineComment: ";;" - }; -}); - -CodeMirror.defineMIME("text/x-scheme", "scheme"); - -}); diff --git a/vendor/codemirror/mode/shell/shell.js b/vendor/codemirror/mode/shell/shell.js deleted file mode 100644 index 7753411c..00000000 --- a/vendor/codemirror/mode/shell/shell.js +++ /dev/null @@ -1,130 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('shell', function() { - - var words = {}; - function define(style, string) { - var split = string.split(' '); - for(var i = 0; i < split.length; i++) { - words[split[i]] = style; - } - }; - - // Atoms - define('atom', 'true false'); - - // Keywords - define('keyword', 'if then do else elif while until for in esac fi fin ' + - 'fil done exit set unset export function'); - - // Commands - define('builtin', 'ab awk bash beep cat cc cd chown chmod chroot clear cp ' + - 'curl cut diff echo find gawk gcc get git grep kill killall ln ls make ' + - 'mkdir openssl mv nc node npm ping ps restart rm rmdir sed service sh ' + - 'shopt shred source sort sleep ssh start stop su sudo tee telnet top ' + - 'touch vi vim wall wc wget who write yes zsh'); - - function tokenBase(stream, state) { - - var sol = stream.sol(); - var ch = stream.next(); - - if (ch === '\'' || ch === '"' || ch === '`') { - state.tokens.unshift(tokenString(ch)); - return tokenize(stream, state); - } - if (ch === '#') { - if (sol && stream.eat('!')) { - stream.skipToEnd(); - return 'meta'; // 'comment'? - } - stream.skipToEnd(); - return 'comment'; - } - if (ch === '$') { - state.tokens.unshift(tokenDollar); - return tokenize(stream, state); - } - if (ch === '+' || ch === '=') { - return 'operator'; - } - if (ch === '-') { - stream.eat('-'); - stream.eatWhile(/\w/); - return 'attribute'; - } - if (/\d/.test(ch)) { - stream.eatWhile(/\d/); - if(!/\w/.test(stream.peek())) { - return 'number'; - } - } - stream.eatWhile(/[\w-]/); - var cur = stream.current(); - if (stream.peek() === '=' && /\w+/.test(cur)) return 'def'; - return words.hasOwnProperty(cur) ? words[cur] : null; - } - - function tokenString(quote) { - return function(stream, state) { - var next, end = false, escaped = false; - while ((next = stream.next()) != null) { - if (next === quote && !escaped) { - end = true; - break; - } - if (next === '$' && !escaped && quote !== '\'') { - escaped = true; - stream.backUp(1); - state.tokens.unshift(tokenDollar); - break; - } - escaped = !escaped && next === '\\'; - } - if (end || !escaped) { - state.tokens.shift(); - } - return (quote === '`' || quote === ')' ? 'quote' : 'string'); - }; - }; - - var tokenDollar = function(stream, state) { - if (state.tokens.length > 1) stream.eat('$'); - var ch = stream.next(), hungry = /\w/; - if (ch === '{') hungry = /[^}]/; - if (ch === '(') { - state.tokens[0] = tokenString(')'); - return tokenize(stream, state); - } - if (!/\d/.test(ch)) { - stream.eatWhile(hungry); - stream.eat('}'); - } - state.tokens.shift(); - return 'def'; - }; - - function tokenize(stream, state) { - return (state.tokens[0] || tokenBase) (stream, state); - }; - - return { - startState: function() {return {tokens:[]};}, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return tokenize(stream, state); - } - }; -}); - -CodeMirror.defineMIME('text/x-sh', 'shell'); - -}); diff --git a/vendor/codemirror/mode/sieve/sieve.js b/vendor/codemirror/mode/sieve/sieve.js deleted file mode 100644 index 8256dda0..00000000 --- a/vendor/codemirror/mode/sieve/sieve.js +++ /dev/null @@ -1,190 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("sieve", function(config) { - function words(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var keywords = words("if elsif else stop require"); - var atoms = words("true false not"); - var indentUnit = config.indentUnit; - - function tokenBase(stream, state) { - - var ch = stream.next(); - if (ch == "/" && stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - - if (ch === '#') { - stream.skipToEnd(); - return "comment"; - } - - if (ch == "\"") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } - - if (ch == "(") { - state._indent.push("("); - // add virtual angel wings so that editor behaves... - // ...more sane incase of broken brackets - state._indent.push("{"); - return null; - } - - if (ch === "{") { - state._indent.push("{"); - return null; - } - - if (ch == ")") { - state._indent.pop(); - state._indent.pop(); - } - - if (ch === "}") { - state._indent.pop(); - return null; - } - - if (ch == ",") - return null; - - if (ch == ";") - return null; - - - if (/[{}\(\),;]/.test(ch)) - return null; - - // 1*DIGIT "K" / "M" / "G" - if (/\d/.test(ch)) { - stream.eatWhile(/[\d]/); - stream.eat(/[KkMmGg]/); - return "number"; - } - - // ":" (ALPHA / "_") *(ALPHA / DIGIT / "_") - if (ch == ":") { - stream.eatWhile(/[a-zA-Z_]/); - stream.eatWhile(/[a-zA-Z0-9_]/); - - return "operator"; - } - - stream.eatWhile(/\w/); - var cur = stream.current(); - - // "text:" *(SP / HTAB) (hash-comment / CRLF) - // *(multiline-literal / multiline-dotstart) - // "." CRLF - if ((cur == "text") && stream.eat(":")) - { - state.tokenize = tokenMultiLineString; - return "string"; - } - - if (keywords.propertyIsEnumerable(cur)) - return "keyword"; - - if (atoms.propertyIsEnumerable(cur)) - return "atom"; - - return null; - } - - function tokenMultiLineString(stream, state) - { - state._multiLineString = true; - // the first line is special it may contain a comment - if (!stream.sol()) { - stream.eatSpace(); - - if (stream.peek() == "#") { - stream.skipToEnd(); - return "comment"; - } - - stream.skipToEnd(); - return "string"; - } - - if ((stream.next() == ".") && (stream.eol())) - { - state._multiLineString = false; - state.tokenize = tokenBase; - } - - return "string"; - } - - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) - break; - escaped = !escaped && ch == "\\"; - } - if (!escaped) state.tokenize = tokenBase; - return "string"; - }; - } - - return { - startState: function(base) { - return {tokenize: tokenBase, - baseIndent: base || 0, - _indent: []}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) - return null; - - return (state.tokenize || tokenBase)(stream, state);; - }, - - indent: function(state, _textAfter) { - var length = state._indent.length; - if (_textAfter && (_textAfter[0] == "}")) - length--; - - if (length <0) - length = 0; - - return length * indentUnit; - }, - - electricChars: "}" - }; -}); - -CodeMirror.defineMIME("application/sieve", "sieve"); - -}); diff --git a/vendor/codemirror/mode/smalltalk/smalltalk.js b/vendor/codemirror/mode/smalltalk/smalltalk.js deleted file mode 100644 index deb78a4f..00000000 --- a/vendor/codemirror/mode/smalltalk/smalltalk.js +++ /dev/null @@ -1,165 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('smalltalk', function(config) { - - var specialChars = /[+\-\/\\*~<>=@%|&?!.,:;^]/; - var keywords = /true|false|nil|self|super|thisContext/; - - var Context = function(tokenizer, parent) { - this.next = tokenizer; - this.parent = parent; - }; - - var Token = function(name, context, eos) { - this.name = name; - this.context = context; - this.eos = eos; - }; - - var State = function() { - this.context = new Context(next, null); - this.expectVariable = true; - this.indentation = 0; - this.userIndentationDelta = 0; - }; - - State.prototype.userIndent = function(indentation) { - this.userIndentationDelta = indentation > 0 ? (indentation / config.indentUnit - this.indentation) : 0; - }; - - var next = function(stream, context, state) { - var token = new Token(null, context, false); - var aChar = stream.next(); - - if (aChar === '"') { - token = nextComment(stream, new Context(nextComment, context)); - - } else if (aChar === '\'') { - token = nextString(stream, new Context(nextString, context)); - - } else if (aChar === '#') { - if (stream.peek() === '\'') { - stream.next(); - token = nextSymbol(stream, new Context(nextSymbol, context)); - } else { - if (stream.eatWhile(/[^ .{}\[\]()]/)) - token.name = 'string-2'; - else - token.name = 'meta'; - } - - } else if (aChar === '$') { - if (stream.next() === '<') { - stream.eatWhile(/[^ >]/); - stream.next(); - } - token.name = 'string-2'; - - } else if (aChar === '|' && state.expectVariable) { - token.context = new Context(nextTemporaries, context); - - } else if (/[\[\]{}()]/.test(aChar)) { - token.name = 'bracket'; - token.eos = /[\[{(]/.test(aChar); - - if (aChar === '[') { - state.indentation++; - } else if (aChar === ']') { - state.indentation = Math.max(0, state.indentation - 1); - } - - } else if (specialChars.test(aChar)) { - stream.eatWhile(specialChars); - token.name = 'operator'; - token.eos = aChar !== ';'; // ; cascaded message expression - - } else if (/\d/.test(aChar)) { - stream.eatWhile(/[\w\d]/); - token.name = 'number'; - - } else if (/[\w_]/.test(aChar)) { - stream.eatWhile(/[\w\d_]/); - token.name = state.expectVariable ? (keywords.test(stream.current()) ? 'keyword' : 'variable') : null; - - } else { - token.eos = state.expectVariable; - } - - return token; - }; - - var nextComment = function(stream, context) { - stream.eatWhile(/[^"]/); - return new Token('comment', stream.eat('"') ? context.parent : context, true); - }; - - var nextString = function(stream, context) { - stream.eatWhile(/[^']/); - return new Token('string', stream.eat('\'') ? context.parent : context, false); - }; - - var nextSymbol = function(stream, context) { - stream.eatWhile(/[^']/); - return new Token('string-2', stream.eat('\'') ? context.parent : context, false); - }; - - var nextTemporaries = function(stream, context) { - var token = new Token(null, context, false); - var aChar = stream.next(); - - if (aChar === '|') { - token.context = context.parent; - token.eos = true; - - } else { - stream.eatWhile(/[^|]/); - token.name = 'variable'; - } - - return token; - }; - - return { - startState: function() { - return new State; - }, - - token: function(stream, state) { - state.userIndent(stream.indentation()); - - if (stream.eatSpace()) { - return null; - } - - var token = state.context.next(stream, state.context, state); - state.context = token.context; - state.expectVariable = token.eos; - - return token.name; - }, - - blankLine: function(state) { - state.userIndent(0); - }, - - indent: function(state, textAfter) { - var i = state.context.next === next && textAfter && textAfter.charAt(0) === ']' ? -1 : state.userIndentationDelta; - return (state.indentation + i) * config.indentUnit; - }, - - electricChars: ']' - }; - -}); - -CodeMirror.defineMIME('text/x-stsrc', {name: 'smalltalk'}); - -}); diff --git a/vendor/codemirror/mode/smarty/smarty.js b/vendor/codemirror/mode/smarty/smarty.js deleted file mode 100644 index 2a78c6d3..00000000 --- a/vendor/codemirror/mode/smarty/smarty.js +++ /dev/null @@ -1,218 +0,0 @@ -/** - * Smarty 2 and 3 mode. - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("smarty", function(config) { - "use strict"; - - // our default settings; check to see if they're overridden - var settings = { - rightDelimiter: '}', - leftDelimiter: '{', - smartyVersion: 2 // for backward compatibility - }; - if (config.hasOwnProperty("leftDelimiter")) { - settings.leftDelimiter = config.leftDelimiter; - } - if (config.hasOwnProperty("rightDelimiter")) { - settings.rightDelimiter = config.rightDelimiter; - } - if (config.hasOwnProperty("smartyVersion") && config.smartyVersion === 3) { - settings.smartyVersion = 3; - } - - var keyFunctions = ["debug", "extends", "function", "include", "literal"]; - var last; - var regs = { - operatorChars: /[+\-*&%=<>!?]/, - validIdentifier: /[a-zA-Z0-9_]/, - stringChar: /['"]/ - }; - - var helpers = { - cont: function(style, lastType) { - last = lastType; - return style; - }, - chain: function(stream, state, parser) { - state.tokenize = parser; - return parser(stream, state); - } - }; - - - // our various parsers - var parsers = { - - // the main tokenizer - tokenizer: function(stream, state) { - if (stream.match(settings.leftDelimiter, true)) { - if (stream.eat("*")) { - return helpers.chain(stream, state, parsers.inBlock("comment", "*" + settings.rightDelimiter)); - } else { - // Smarty 3 allows { and } surrounded by whitespace to NOT slip into Smarty mode - state.depth++; - var isEol = stream.eol(); - var isFollowedByWhitespace = /\s/.test(stream.peek()); - if (settings.smartyVersion === 3 && settings.leftDelimiter === "{" && (isEol || isFollowedByWhitespace)) { - state.depth--; - return null; - } else { - state.tokenize = parsers.smarty; - last = "startTag"; - return "tag"; - } - } - } else { - stream.next(); - return null; - } - }, - - // parsing Smarty content - smarty: function(stream, state) { - if (stream.match(settings.rightDelimiter, true)) { - if (settings.smartyVersion === 3) { - state.depth--; - if (state.depth <= 0) { - state.tokenize = parsers.tokenizer; - } - } else { - state.tokenize = parsers.tokenizer; - } - return helpers.cont("tag", null); - } - - if (stream.match(settings.leftDelimiter, true)) { - state.depth++; - return helpers.cont("tag", "startTag"); - } - - var ch = stream.next(); - if (ch == "$") { - stream.eatWhile(regs.validIdentifier); - return helpers.cont("variable-2", "variable"); - } else if (ch == "|") { - return helpers.cont("operator", "pipe"); - } else if (ch == ".") { - return helpers.cont("operator", "property"); - } else if (regs.stringChar.test(ch)) { - state.tokenize = parsers.inAttribute(ch); - return helpers.cont("string", "string"); - } else if (regs.operatorChars.test(ch)) { - stream.eatWhile(regs.operatorChars); - return helpers.cont("operator", "operator"); - } else if (ch == "[" || ch == "]") { - return helpers.cont("bracket", "bracket"); - } else if (ch == "(" || ch == ")") { - return helpers.cont("bracket", "operator"); - } else if (/\d/.test(ch)) { - stream.eatWhile(/\d/); - return helpers.cont("number", "number"); - } else { - - if (state.last == "variable") { - if (ch == "@") { - stream.eatWhile(regs.validIdentifier); - return helpers.cont("property", "property"); - } else if (ch == "|") { - stream.eatWhile(regs.validIdentifier); - return helpers.cont("qualifier", "modifier"); - } - } else if (state.last == "pipe") { - stream.eatWhile(regs.validIdentifier); - return helpers.cont("qualifier", "modifier"); - } else if (state.last == "whitespace") { - stream.eatWhile(regs.validIdentifier); - return helpers.cont("attribute", "modifier"); - } if (state.last == "property") { - stream.eatWhile(regs.validIdentifier); - return helpers.cont("property", null); - } else if (/\s/.test(ch)) { - last = "whitespace"; - return null; - } - - var str = ""; - if (ch != "/") { - str += ch; - } - var c = null; - while (c = stream.eat(regs.validIdentifier)) { - str += c; - } - for (var i=0, j=keyFunctions.length; i -* @version 3.0 -* @date 05.07.2013 -*/ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../smarty/smarty")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../smarty/smarty"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("smartymixed", function(config) { - var settings, regs, helpers, parsers, - htmlMixedMode = CodeMirror.getMode(config, "htmlmixed"), - smartyMode = CodeMirror.getMode(config, "smarty"), - - settings = { - rightDelimiter: '}', - leftDelimiter: '{' - }; - - if (config.hasOwnProperty("leftDelimiter")) { - settings.leftDelimiter = config.leftDelimiter; - } - if (config.hasOwnProperty("rightDelimiter")) { - settings.rightDelimiter = config.rightDelimiter; - } - - regs = { - smartyComment: new RegExp("^" + settings.leftDelimiter + "\\*"), - literalOpen: new RegExp(settings.leftDelimiter + "literal" + settings.rightDelimiter), - literalClose: new RegExp(settings.leftDelimiter + "\/literal" + settings.rightDelimiter), - hasLeftDelimeter: new RegExp(".*" + settings.leftDelimiter), - htmlHasLeftDelimeter: new RegExp("[^<>]*" + settings.leftDelimiter) - }; - - helpers = { - chain: function(stream, state, parser) { - state.tokenize = parser; - return parser(stream, state); - }, - - cleanChain: function(stream, state, parser) { - state.tokenize = null; - state.localState = null; - state.localMode = null; - return (typeof parser == "string") ? (parser ? parser : null) : parser(stream, state); - }, - - maybeBackup: function(stream, pat, style) { - var cur = stream.current(); - var close = cur.search(pat), - m; - if (close > - 1) stream.backUp(cur.length - close); - else if (m = cur.match(/<\/?$/)) { - stream.backUp(cur.length); - if (!stream.match(pat, false)) stream.match(cur[0]); - } - return style; - } - }; - - parsers = { - html: function(stream, state) { - if (!state.inLiteral && stream.match(regs.htmlHasLeftDelimeter, false) && state.htmlMixedState.htmlState.tagName === null) { - state.tokenize = parsers.smarty; - state.localMode = smartyMode; - state.localState = smartyMode.startState(htmlMixedMode.indent(state.htmlMixedState, "")); - return helpers.maybeBackup(stream, settings.leftDelimiter, smartyMode.token(stream, state.localState)); - } else if (!state.inLiteral && stream.match(settings.leftDelimiter, false)) { - state.tokenize = parsers.smarty; - state.localMode = smartyMode; - state.localState = smartyMode.startState(htmlMixedMode.indent(state.htmlMixedState, "")); - return helpers.maybeBackup(stream, settings.leftDelimiter, smartyMode.token(stream, state.localState)); - } - return htmlMixedMode.token(stream, state.htmlMixedState); - }, - - smarty: function(stream, state) { - if (stream.match(settings.leftDelimiter, false)) { - if (stream.match(regs.smartyComment, false)) { - return helpers.chain(stream, state, parsers.inBlock("comment", "*" + settings.rightDelimiter)); - } - } else if (stream.match(settings.rightDelimiter, false)) { - stream.eat(settings.rightDelimiter); - state.tokenize = parsers.html; - state.localMode = htmlMixedMode; - state.localState = state.htmlMixedState; - return "tag"; - } - - return helpers.maybeBackup(stream, settings.rightDelimiter, smartyMode.token(stream, state.localState)); - }, - - inBlock: function(style, terminator) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - helpers.cleanChain(stream, state, ""); - break; - } - stream.next(); - } - return style; - }; - } - }; - - return { - startState: function() { - var state = htmlMixedMode.startState(); - return { - token: parsers.html, - localMode: null, - localState: null, - htmlMixedState: state, - tokenize: null, - inLiteral: false - }; - }, - - copyState: function(state) { - var local = null, tok = (state.tokenize || state.token); - if (state.localState) { - local = CodeMirror.copyState((tok != parsers.html ? smartyMode : htmlMixedMode), state.localState); - } - return { - token: state.token, - tokenize: state.tokenize, - localMode: state.localMode, - localState: local, - htmlMixedState: CodeMirror.copyState(htmlMixedMode, state.htmlMixedState), - inLiteral: state.inLiteral - }; - }, - - token: function(stream, state) { - if (stream.match(settings.leftDelimiter, false)) { - if (!state.inLiteral && stream.match(regs.literalOpen, true)) { - state.inLiteral = true; - return "keyword"; - } else if (state.inLiteral && stream.match(regs.literalClose, true)) { - state.inLiteral = false; - return "keyword"; - } - } - if (state.inLiteral && state.localState != state.htmlMixedState) { - state.tokenize = parsers.html; - state.localMode = htmlMixedMode; - state.localState = state.htmlMixedState; - } - - var style = (state.tokenize || state.token)(stream, state); - return style; - }, - - indent: function(state, textAfter) { - if (state.localMode == smartyMode - || (state.inLiteral && !state.localMode) - || regs.hasLeftDelimeter.test(textAfter)) { - return CodeMirror.Pass; - } - return htmlMixedMode.indent(state.htmlMixedState, textAfter); - }, - - innerMode: function(state) { - return { - state: state.localState || state.htmlMixedState, - mode: state.localMode || htmlMixedMode - }; - } - }; -}, "htmlmixed", "smarty"); - -CodeMirror.defineMIME("text/x-smarty", "smartymixed"); -// vim: et ts=2 sts=2 sw=2 - -}); diff --git a/vendor/codemirror/mode/solr/solr.js b/vendor/codemirror/mode/solr/solr.js deleted file mode 100644 index 25d928ec..00000000 --- a/vendor/codemirror/mode/solr/solr.js +++ /dev/null @@ -1,101 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("solr", function() { - "use strict"; - - var isStringChar = /[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\^\"\\]/; - var isOperatorChar = /[\|\!\+\-\*\?\~\^\&]/; - var isOperatorString = /^(OR|AND|NOT|TO)$/i; - - function isNumber(word) { - return parseFloat(word, 10).toString() === word; - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) break; - escaped = !escaped && next == "\\"; - } - - if (!escaped) state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenOperator(operator) { - return function(stream, state) { - var style = "operator"; - if (operator == "+") - style += " positive"; - else if (operator == "-") - style += " negative"; - else if (operator == "|") - stream.eat(/\|/); - else if (operator == "&") - stream.eat(/\&/); - else if (operator == "^") - style += " boost"; - - state.tokenize = tokenBase; - return style; - }; - } - - function tokenWord(ch) { - return function(stream, state) { - var word = ch; - while ((ch = stream.peek()) && ch.match(isStringChar) != null) { - word += stream.next(); - } - - state.tokenize = tokenBase; - if (isOperatorString.test(word)) - return "operator"; - else if (isNumber(word)) - return "number"; - else if (stream.peek() == ":") - return "field"; - else - return "string"; - }; - } - - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"') - state.tokenize = tokenString(ch); - else if (isOperatorChar.test(ch)) - state.tokenize = tokenOperator(ch); - else if (isStringChar.test(ch)) - state.tokenize = tokenWord(ch); - - return (state.tokenize != tokenBase) ? state.tokenize(stream, state) : null; - } - - return { - startState: function() { - return { - tokenize: tokenBase - }; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - } - }; -}); - -CodeMirror.defineMIME("text/x-solr", "solr"); - -}); diff --git a/vendor/codemirror/mode/sparql/sparql.js b/vendor/codemirror/mode/sparql/sparql.js deleted file mode 100644 index f228b1df..00000000 --- a/vendor/codemirror/mode/sparql/sparql.js +++ /dev/null @@ -1,157 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("sparql", function(config) { - var indentUnit = config.indentUnit; - var curPunc; - - function wordRegexp(words) { - return new RegExp("^(?:" + words.join("|") + ")$", "i"); - } - var ops = wordRegexp(["str", "lang", "langmatches", "datatype", "bound", "sameterm", "isiri", "isuri", - "isblank", "isliteral", "a"]); - var keywords = wordRegexp(["base", "prefix", "select", "distinct", "reduced", "construct", "describe", - "ask", "from", "named", "where", "order", "limit", "offset", "filter", "optional", - "graph", "by", "asc", "desc", "as", "having", "undef", "values", "group", - "minus", "in", "not", "service", "silent", "using", "insert", "delete", "union", - "data", "copy", "to", "move", "add", "create", "drop", "clear", "load"]); - var operatorChars = /[*+\-<>=&|]/; - - function tokenBase(stream, state) { - var ch = stream.next(); - curPunc = null; - if (ch == "$" || ch == "?") { - stream.match(/^[\w\d]*/); - return "variable-2"; - } - else if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { - stream.match(/^[^\s\u00a0>]*>?/); - return "atom"; - } - else if (ch == "\"" || ch == "'") { - state.tokenize = tokenLiteral(ch); - return state.tokenize(stream, state); - } - else if (/[{}\(\),\.;\[\]]/.test(ch)) { - curPunc = ch; - return null; - } - else if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - else if (operatorChars.test(ch)) { - stream.eatWhile(operatorChars); - return null; - } - else if (ch == ":") { - stream.eatWhile(/[\w\d\._\-]/); - return "atom"; - } - else { - stream.eatWhile(/[_\w\d]/); - if (stream.eat(":")) { - stream.eatWhile(/[\w\d_\-]/); - return "atom"; - } - var word = stream.current(); - if (ops.test(word)) - return null; - else if (keywords.test(word)) - return "keyword"; - else - return "variable"; - } - } - - function tokenLiteral(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return "string"; - }; - } - - function pushContext(state, type, col) { - state.context = {prev: state.context, indent: state.indent, col: col, type: type}; - } - function popContext(state) { - state.indent = state.context.indent; - state.context = state.context.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, - context: null, - indent: 0, - col: 0}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.context && state.context.align == null) state.context.align = false; - state.indent = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - - if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { - state.context.align = true; - } - - if (curPunc == "(") pushContext(state, ")", stream.column()); - else if (curPunc == "[") pushContext(state, "]", stream.column()); - else if (curPunc == "{") pushContext(state, "}", stream.column()); - else if (/[\]\}\)]/.test(curPunc)) { - while (state.context && state.context.type == "pattern") popContext(state); - if (state.context && curPunc == state.context.type) popContext(state); - } - else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); - else if (/atom|string|variable/.test(style) && state.context) { - if (/[\}\]]/.test(state.context.type)) - pushContext(state, "pattern", stream.column()); - else if (state.context.type == "pattern" && !state.context.align) { - state.context.align = true; - state.context.col = stream.column(); - } - } - - return style; - }, - - indent: function(state, textAfter) { - var firstChar = textAfter && textAfter.charAt(0); - var context = state.context; - if (/[\]\}]/.test(firstChar)) - while (context && context.type == "pattern") context = context.prev; - - var closing = context && firstChar == context.type; - if (!context) - return 0; - else if (context.type == "pattern") - return context.col; - else if (context.align) - return context.col + (closing ? 0 : 1); - else - return context.indent + (closing ? 0 : indentUnit); - } - }; -}); - -CodeMirror.defineMIME("application/x-sparql-query", "sparql"); - -}); diff --git a/vendor/codemirror/mode/sql/sql.js b/vendor/codemirror/mode/sql/sql.js deleted file mode 100644 index 417db062..00000000 --- a/vendor/codemirror/mode/sql/sql.js +++ /dev/null @@ -1,389 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("sql", function(config, parserConfig) { - "use strict"; - - var client = parserConfig.client || {}, - atoms = parserConfig.atoms || {"false": true, "true": true, "null": true}, - builtin = parserConfig.builtin || {}, - keywords = parserConfig.keywords || {}, - operatorChars = parserConfig.operatorChars || /^[*+\-%<>!=&|~^]/, - support = parserConfig.support || {}, - hooks = parserConfig.hooks || {}, - dateSQL = parserConfig.dateSQL || {"date" : true, "time" : true, "timestamp" : true}; - - function tokenBase(stream, state) { - var ch = stream.next(); - - // call hooks from the mime type - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - - if (support.hexNumber == true && - ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) - || (ch == "x" || ch == "X") && stream.match(/^'[0-9a-fA-F]+'/))) { - // hex - // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html - return "number"; - } else if (support.binaryNumber == true && - (((ch == "b" || ch == "B") && stream.match(/^'[01]+'/)) - || (ch == "0" && stream.match(/^b[01]+/)))) { - // bitstring - // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html - return "number"; - } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) { - // numbers - // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html - stream.match(/^[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/); - support.decimallessFloat == true && stream.eat('.'); - return "number"; - } else if (ch == "?" && (stream.eatSpace() || stream.eol() || stream.eat(";"))) { - // placeholders - return "variable-3"; - } else if (ch == "'" || (ch == '"' && support.doubleQuote)) { - // strings - // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html - state.tokenize = tokenLiteral(ch); - return state.tokenize(stream, state); - } else if ((((support.nCharCast == true && (ch == "n" || ch == "N")) - || (support.charsetCast == true && ch == "_" && stream.match(/[a-z][a-z0-9]*/i))) - && (stream.peek() == "'" || stream.peek() == '"'))) { - // charset casting: _utf8'str', N'str', n'str' - // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html - return "keyword"; - } else if (/^[\(\),\;\[\]]/.test(ch)) { - // no highlightning - return null; - } else if (support.commentSlashSlash && ch == "/" && stream.eat("/")) { - // 1-line comment - stream.skipToEnd(); - return "comment"; - } else if ((support.commentHash && ch == "#") - || (ch == "-" && stream.eat("-") && (!support.commentSpaceRequired || stream.eat(" ")))) { - // 1-line comments - // ref: https://kb.askmonty.org/en/comment-syntax/ - stream.skipToEnd(); - return "comment"; - } else if (ch == "/" && stream.eat("*")) { - // multi-line comments - // ref: https://kb.askmonty.org/en/comment-syntax/ - state.tokenize = tokenComment; - return state.tokenize(stream, state); - } else if (ch == ".") { - // .1 for 0.1 - if (support.zerolessFloat == true && stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)) { - return "number"; - } - // .table_name (ODBC) - // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html - if (support.ODBCdotTable == true && stream.match(/^[a-zA-Z_]+/)) { - return "variable-2"; - } - } else if (operatorChars.test(ch)) { - // operators - stream.eatWhile(operatorChars); - return null; - } else if (ch == '{' && - (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/))) { - // dates (weird ODBC syntax) - // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html - return "number"; - } else { - stream.eatWhile(/^[_\w\d]/); - var word = stream.current().toLowerCase(); - // dates (standard SQL syntax) - // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html - if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/))) - return "number"; - if (atoms.hasOwnProperty(word)) return "atom"; - if (builtin.hasOwnProperty(word)) return "builtin"; - if (keywords.hasOwnProperty(word)) return "keyword"; - if (client.hasOwnProperty(word)) return "string-2"; - return null; - } - } - - // 'string', with char specified in quote escaped by '\' - function tokenLiteral(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return "string"; - }; - } - function tokenComment(stream, state) { - while (true) { - if (stream.skipTo("*")) { - stream.next(); - if (stream.eat("/")) { - state.tokenize = tokenBase; - break; - } - } else { - stream.skipToEnd(); - break; - } - } - return "comment"; - } - - function pushContext(stream, state, type) { - state.context = { - prev: state.context, - indent: stream.indentation(), - col: stream.column(), - type: type - }; - } - - function popContext(state) { - state.indent = state.context.indent; - state.context = state.context.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, context: null}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.context && state.context.align == null) - state.context.align = false; - } - if (stream.eatSpace()) return null; - - var style = state.tokenize(stream, state); - if (style == "comment") return style; - - if (state.context && state.context.align == null) - state.context.align = true; - - var tok = stream.current(); - if (tok == "(") - pushContext(stream, state, ")"); - else if (tok == "[") - pushContext(stream, state, "]"); - else if (state.context && state.context.type == tok) - popContext(state); - return style; - }, - - indent: function(state, textAfter) { - var cx = state.context; - if (!cx) return 0; - var closing = textAfter.charAt(0) == cx.type; - if (cx.align) return cx.col + (closing ? 0 : 1); - else return cx.indent + (closing ? 0 : config.indentUnit); - }, - - blockCommentStart: "/*", - blockCommentEnd: "*/", - lineComment: support.commentSlashSlash ? "//" : support.commentHash ? "#" : null - }; -}); - -(function() { - "use strict"; - - // `identifier` - function hookIdentifier(stream) { - // MySQL/MariaDB identifiers - // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html - var ch; - while ((ch = stream.next()) != null) { - if (ch == "`" && !stream.eat("`")) return "variable-2"; - } - return null; - } - - // variable token - function hookVar(stream) { - // variables - // @@prefix.varName @varName - // varName can be quoted with ` or ' or " - // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html - if (stream.eat("@")) { - stream.match(/^session\./); - stream.match(/^local\./); - stream.match(/^global\./); - } - - if (stream.eat("'")) { - stream.match(/^.*'/); - return "variable-2"; - } else if (stream.eat('"')) { - stream.match(/^.*"/); - return "variable-2"; - } else if (stream.eat("`")) { - stream.match(/^.*`/); - return "variable-2"; - } else if (stream.match(/^[0-9a-zA-Z$\.\_]+/)) { - return "variable-2"; - } - return null; - }; - - // short client keyword token - function hookClient(stream) { - // \N means NULL - // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html - if (stream.eat("N")) { - return "atom"; - } - // \g, etc - // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html - return stream.match(/^[a-zA-Z.#!?]/) ? "variable-2" : null; - } - - // these keywords are used by all SQL dialects (however, a mode can still overwrite it) - var sqlKeywords = "alter and as asc between by count create delete desc distinct drop from having in insert into is join like not on or order select set table union update values where "; - - // turn a space-separated list into an array - function set(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - // A generic SQL Mode. It's not a standard, it just try to support what is generally supported - CodeMirror.defineMIME("text/x-sql", { - name: "sql", - keywords: set(sqlKeywords + "begin"), - builtin: set("bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable doubleQuote binaryNumber hexNumber") - }); - - CodeMirror.defineMIME("text/x-mssql", { - name: "sql", - client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), - keywords: set(sqlKeywords + "begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered"), - builtin: set("bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table "), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=]/, - dateSQL: set("date datetimeoffset datetime2 smalldatetime datetime time"), - hooks: { - "@": hookVar - } - }); - - CodeMirror.defineMIME("text/x-mysql", { - name: "sql", - client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), - keywords: set(sqlKeywords + "accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group groupby_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), - builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=&|^]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), - hooks: { - "@": hookVar, - "`": hookIdentifier, - "\\": hookClient - } - }); - - CodeMirror.defineMIME("text/x-mariadb", { - name: "sql", - client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), - keywords: set(sqlKeywords + "accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), - builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=&|^]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), - hooks: { - "@": hookVar, - "`": hookIdentifier, - "\\": hookClient - } - }); - - // the query language used by Apache Cassandra is called CQL, but this mime type - // is called Cassandra to avoid confusion with Contextual Query Language - CodeMirror.defineMIME("text/x-cassandra", { - name: "sql", - client: { }, - keywords: set("use select from using consistency where limit first reversed first and in insert into values using consistency ttl update set delete truncate begin batch apply create keyspace with columnfamily primary key index on drop alter type add any one quorum all local_quorum each_quorum"), - builtin: set("ascii bigint blob boolean counter decimal double float int text timestamp uuid varchar varint"), - atoms: set("false true"), - operatorChars: /^[<>=]/, - dateSQL: { }, - support: set("commentSlashSlash decimallessFloat"), - hooks: { } - }); - - // this is based on Peter Raganitsch's 'plsql' mode - CodeMirror.defineMIME("text/x-plsql", { - name: "sql", - client: set("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"), - keywords: set("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"), - builtin: set("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least lenght lenghtb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"), - operatorChars: /^[*+\-%<>!=~]/, - dateSQL: set("date time timestamp"), - support: set("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber") - }); - - // Created to support specific hive keywords - CodeMirror.defineMIME("text/x-hive", { - name: "sql", - keywords: set("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external false fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger true unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with"), - builtin: set("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=]/, - dateSQL: set("date timestamp"), - support: set("ODBCdotTable doubleQuote binaryNumber hexNumber") - }); -}()); - -}); - -/* - How Properties of Mime Types are used by SQL Mode - ================================================= - - keywords: - A list of keywords you want to be highlighted. - functions: - A list of function names you want to be highlighted. - builtin: - A list of builtin types you want to be highlighted (if you want types to be of class "builtin" instead of "keyword"). - operatorChars: - All characters that must be handled as operators. - client: - Commands parsed and executed by the client (not the server). - support: - A list of supported syntaxes which are not common, but are supported by more than 1 DBMS. - * ODBCdotTable: .tableName - * zerolessFloat: .1 - * doubleQuote - * nCharCast: N'string' - * charsetCast: _utf8'string' - * commentHash: use # char for comments - * commentSlashSlash: use // for comments - * commentSpaceRequired: require a space after -- for comments - atoms: - Keywords that must be highlighted as atoms,. Some DBMS's support more atoms than others: - UNKNOWN, INFINITY, UNDERFLOW, NaN... - dateSQL: - Used for date/time SQL standard syntax, because not all DBMS's support same temporal types. -*/ diff --git a/vendor/codemirror/mode/stex/stex.js b/vendor/codemirror/mode/stex/stex.js deleted file mode 100644 index 59a395a0..00000000 --- a/vendor/codemirror/mode/stex/stex.js +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de) - * Licence: MIT - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("stex", function() { - "use strict"; - - function pushCommand(state, command) { - state.cmdState.push(command); - } - - function peekCommand(state) { - if (state.cmdState.length > 0) { - return state.cmdState[state.cmdState.length - 1]; - } else { - return null; - } - } - - function popCommand(state) { - var plug = state.cmdState.pop(); - if (plug) { - plug.closeBracket(); - } - } - - // returns the non-default plugin closest to the end of the list - function getMostPowerful(state) { - var context = state.cmdState; - for (var i = context.length - 1; i >= 0; i--) { - var plug = context[i]; - if (plug.name == "DEFAULT") { - continue; - } - return plug; - } - return { styleIdentifier: function() { return null; } }; - } - - function addPluginPattern(pluginName, cmdStyle, styles) { - return function () { - this.name = pluginName; - this.bracketNo = 0; - this.style = cmdStyle; - this.styles = styles; - this.argument = null; // \begin and \end have arguments that follow. These are stored in the plugin - - this.styleIdentifier = function() { - return this.styles[this.bracketNo - 1] || null; - }; - this.openBracket = function() { - this.bracketNo++; - return "bracket"; - }; - this.closeBracket = function() {}; - }; - } - - var plugins = {}; - - plugins["importmodule"] = addPluginPattern("importmodule", "tag", ["string", "builtin"]); - plugins["documentclass"] = addPluginPattern("documentclass", "tag", ["", "atom"]); - plugins["usepackage"] = addPluginPattern("usepackage", "tag", ["atom"]); - plugins["begin"] = addPluginPattern("begin", "tag", ["atom"]); - plugins["end"] = addPluginPattern("end", "tag", ["atom"]); - - plugins["DEFAULT"] = function () { - this.name = "DEFAULT"; - this.style = "tag"; - - this.styleIdentifier = this.openBracket = this.closeBracket = function() {}; - }; - - function setState(state, f) { - state.f = f; - } - - // called when in a normal (no environment) context - function normal(source, state) { - var plug; - // Do we look like '\command' ? If so, attempt to apply the plugin 'command' - if (source.match(/^\\[a-zA-Z@]+/)) { - var cmdName = source.current().slice(1); - plug = plugins[cmdName] || plugins["DEFAULT"]; - plug = new plug(); - pushCommand(state, plug); - setState(state, beginParams); - return plug.style; - } - - // escape characters - if (source.match(/^\\[$&%#{}_]/)) { - return "tag"; - } - - // white space control characters - if (source.match(/^\\[,;!\/\\]/)) { - return "tag"; - } - - // find if we're starting various math modes - if (source.match("\\[")) { - setState(state, function(source, state){ return inMathMode(source, state, "\\]"); }); - return "keyword"; - } - if (source.match("$$")) { - setState(state, function(source, state){ return inMathMode(source, state, "$$"); }); - return "keyword"; - } - if (source.match("$")) { - setState(state, function(source, state){ return inMathMode(source, state, "$"); }); - return "keyword"; - } - - var ch = source.next(); - if (ch == "%") { - // special case: % at end of its own line; stay in same state - if (!source.eol()) { - setState(state, inCComment); - } - return "comment"; - } - else if (ch == '}' || ch == ']') { - plug = peekCommand(state); - if (plug) { - plug.closeBracket(ch); - setState(state, beginParams); - } else { - return "error"; - } - return "bracket"; - } else if (ch == '{' || ch == '[') { - plug = plugins["DEFAULT"]; - plug = new plug(); - pushCommand(state, plug); - return "bracket"; - } - else if (/\d/.test(ch)) { - source.eatWhile(/[\w.%]/); - return "atom"; - } - else { - source.eatWhile(/[\w\-_]/); - plug = getMostPowerful(state); - if (plug.name == 'begin') { - plug.argument = source.current(); - } - return plug.styleIdentifier(); - } - } - - function inCComment(source, state) { - source.skipToEnd(); - setState(state, normal); - return "comment"; - } - - function inMathMode(source, state, endModeSeq) { - if (source.eatSpace()) { - return null; - } - if (source.match(endModeSeq)) { - setState(state, normal); - return "keyword"; - } - if (source.match(/^\\[a-zA-Z@]+/)) { - return "tag"; - } - if (source.match(/^[a-zA-Z]+/)) { - return "variable-2"; - } - // escape characters - if (source.match(/^\\[$&%#{}_]/)) { - return "tag"; - } - // white space control characters - if (source.match(/^\\[,;!\/]/)) { - return "tag"; - } - // special math-mode characters - if (source.match(/^[\^_&]/)) { - return "tag"; - } - // non-special characters - if (source.match(/^[+\-<>|=,\/@!*:;'"`~#?]/)) { - return null; - } - if (source.match(/^(\d+\.\d*|\d*\.\d+|\d+)/)) { - return "number"; - } - var ch = source.next(); - if (ch == "{" || ch == "}" || ch == "[" || ch == "]" || ch == "(" || ch == ")") { - return "bracket"; - } - - // eat comments here, because inCComment returns us to normal state! - if (ch == "%") { - if (!source.eol()) { - source.skipToEnd(); - } - return "comment"; - } - return "error"; - } - - function beginParams(source, state) { - var ch = source.peek(), lastPlug; - if (ch == '{' || ch == '[') { - lastPlug = peekCommand(state); - lastPlug.openBracket(ch); - source.eat(ch); - setState(state, normal); - return "bracket"; - } - if (/[ \t\r]/.test(ch)) { - source.eat(ch); - return null; - } - setState(state, normal); - popCommand(state); - - return normal(source, state); - } - - return { - startState: function() { - return { - cmdState: [], - f: normal - }; - }, - copyState: function(s) { - return { - cmdState: s.cmdState.slice(), - f: s.f - }; - }, - token: function(stream, state) { - return state.f(stream, state); - } - }; -}); - -CodeMirror.defineMIME("text/x-stex", "stex"); -CodeMirror.defineMIME("text/x-latex", "stex"); - -}); diff --git a/vendor/codemirror/mode/stex/test.js b/vendor/codemirror/mode/stex/test.js deleted file mode 100644 index ab629e81..00000000 --- a/vendor/codemirror/mode/stex/test.js +++ /dev/null @@ -1,120 +0,0 @@ -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, "stex"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("word", - "foo"); - - MT("twoWords", - "foo bar"); - - MT("beginEndDocument", - "[tag \\begin][bracket {][atom document][bracket }]", - "[tag \\end][bracket {][atom document][bracket }]"); - - MT("beginEndEquation", - "[tag \\begin][bracket {][atom equation][bracket }]", - " E=mc^2", - "[tag \\end][bracket {][atom equation][bracket }]"); - - MT("beginModule", - "[tag \\begin][bracket {][atom module][bracket }[[]]]"); - - MT("beginModuleId", - "[tag \\begin][bracket {][atom module][bracket }[[]id=bbt-size[bracket ]]]"); - - MT("importModule", - "[tag \\importmodule][bracket [[][string b-b-t][bracket ]]{][builtin b-b-t][bracket }]"); - - MT("importModulePath", - "[tag \\importmodule][bracket [[][tag \\KWARCslides][bracket {][string dmath/en/cardinality][bracket }]]{][builtin card][bracket }]"); - - MT("psForPDF", - "[tag \\PSforPDF][bracket [[][atom 1][bracket ]]{]#1[bracket }]"); - - MT("comment", - "[comment % foo]"); - - MT("tagComment", - "[tag \\item][comment % bar]"); - - MT("commentTag", - " [comment % \\item]"); - - MT("commentLineBreak", - "[comment %]", - "foo"); - - MT("tagErrorCurly", - "[tag \\begin][error }][bracket {]"); - - MT("tagErrorSquare", - "[tag \\item][error ]]][bracket {]"); - - MT("commentCurly", - "[comment % }]"); - - MT("tagHash", - "the [tag \\#] key"); - - MT("tagNumber", - "a [tag \\$][atom 5] stetson"); - - MT("tagPercent", - "[atom 100][tag \\%] beef"); - - MT("tagAmpersand", - "L [tag \\&] N"); - - MT("tagUnderscore", - "foo[tag \\_]bar"); - - MT("tagBracketOpen", - "[tag \\emph][bracket {][tag \\{][bracket }]"); - - MT("tagBracketClose", - "[tag \\emph][bracket {][tag \\}][bracket }]"); - - MT("tagLetterNumber", - "section [tag \\S][atom 1]"); - - MT("textTagNumber", - "para [tag \\P][atom 2]"); - - MT("thinspace", - "x[tag \\,]y"); - - MT("thickspace", - "x[tag \\;]y"); - - MT("negativeThinspace", - "x[tag \\!]y"); - - MT("periodNotSentence", - "J.\\ L.\\ is"); - - MT("periodSentence", - "X[tag \\@]. The"); - - MT("italicCorrection", - "[bracket {][tag \\em] If[tag \\/][bracket }] I"); - - MT("tagBracket", - "[tag \\newcommand][bracket {][tag \\pop][bracket }]"); - - MT("inlineMathTagFollowedByNumber", - "[keyword $][tag \\pi][number 2][keyword $]"); - - MT("inlineMath", - "[keyword $][number 3][variable-2 x][tag ^][number 2.45]-[tag \\sqrt][bracket {][tag \\$\\alpha][bracket }] = [number 2][keyword $] other text"); - - MT("displayMath", - "More [keyword $$]\t[variable-2 S][tag ^][variable-2 n][tag \\sum] [variable-2 i][keyword $$] other text"); - - MT("mathWithComment", - "[keyword $][variable-2 x] [comment % $]", - "[variable-2 y][keyword $] other text"); - - MT("lineBreakArgument", - "[tag \\\\][bracket [[][atom 1cm][bracket ]]]"); -})(); diff --git a/vendor/codemirror/mode/tcl/tcl.js b/vendor/codemirror/mode/tcl/tcl.js deleted file mode 100644 index 4c29ee7d..00000000 --- a/vendor/codemirror/mode/tcl/tcl.js +++ /dev/null @@ -1,144 +0,0 @@ -//tcl mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("tcl", function() { - function parseWords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - var keywords = parseWords("Tcl safe after append array auto_execok auto_import auto_load " + - "auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror " + - "binary break catch cd close concat continue dde eof encoding error " + - "eval exec exit expr fblocked fconfigure fcopy file fileevent filename " + - "filename flush for foreach format gets glob global history http if " + - "incr info interp join lappend lindex linsert list llength load lrange " + - "lreplace lsearch lset lsort memory msgcat namespace open package parray " + - "pid pkg::create pkg_mkIndex proc puts pwd re_syntax read regex regexp " + - "registry regsub rename resource return scan seek set socket source split " + - "string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord " + - "tcl_wordBreakAfter tcl_startOfPreviousWord tcl_wordBreakBefore tcltest " + - "tclvars tell time trace unknown unset update uplevel upvar variable " + - "vwait"); - var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch"); - var isOperatorChar = /[+\-*&%=<>!?^\/\|]/; - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - function tokenBase(stream, state) { - var beforeParams = state.beforeParams; - state.beforeParams = false; - var ch = stream.next(); - if ((ch == '"' || ch == "'") && state.inParams) - return chain(stream, state, tokenString(ch)); - else if (/[\[\]{}\(\),;\.]/.test(ch)) { - if (ch == "(" && beforeParams) state.inParams = true; - else if (ch == ")") state.inParams = false; - return null; - } - else if (/\d/.test(ch)) { - stream.eatWhile(/[\w\.]/); - return "number"; - } - else if (ch == "#" && stream.eat("*")) { - return chain(stream, state, tokenComment); - } - else if (ch == "#" && stream.match(/ *\[ *\[/)) { - return chain(stream, state, tokenUnparsed); - } - else if (ch == "#" && stream.eat("#")) { - stream.skipToEnd(); - return "comment"; - } - else if (ch == '"') { - stream.skipTo(/"/); - return "comment"; - } - else if (ch == "$") { - stream.eatWhile(/[$_a-z0-9A-Z\.{:]/); - stream.eatWhile(/}/); - state.beforeParams = true; - return "builtin"; - } - else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return "comment"; - } - else { - stream.eatWhile(/[\w\$_{}]/); - var word = stream.current().toLowerCase(); - if (keywords && keywords.propertyIsEnumerable(word)) - return "keyword"; - if (functions && functions.propertyIsEnumerable(word)) { - state.beforeParams = true; - return "keyword"; - } - return null; - } - } - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if (next == quote && !escaped) { - end = true; - break; - } - escaped = !escaped && next == "\\"; - } - if (end) state.tokenize = tokenBase; - return "string"; - }; - } - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "#" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - function tokenUnparsed(stream, state) { - var maybeEnd = 0, ch; - while (ch = stream.next()) { - if (ch == "#" && maybeEnd == 2) { - state.tokenize = tokenBase; - break; - } - if (ch == "]") - maybeEnd++; - else if (ch != " ") - maybeEnd = 0; - } - return "meta"; - } - return { - startState: function() { - return { - tokenize: tokenBase, - beforeParams: false, - inParams: false - }; - }, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - } - }; -}); -CodeMirror.defineMIME("text/x-tcl", "tcl"); - -}); diff --git a/vendor/codemirror/mode/tiddlywiki/tiddlywiki.css b/vendor/codemirror/mode/tiddlywiki/tiddlywiki.css deleted file mode 100644 index 9a69b639..00000000 --- a/vendor/codemirror/mode/tiddlywiki/tiddlywiki.css +++ /dev/null @@ -1,14 +0,0 @@ -span.cm-underlined { - text-decoration: underline; -} -span.cm-strikethrough { - text-decoration: line-through; -} -span.cm-brace { - color: #170; - font-weight: bold; -} -span.cm-table { - color: blue; - font-weight: bold; -} diff --git a/vendor/codemirror/mode/tiddlywiki/tiddlywiki.js b/vendor/codemirror/mode/tiddlywiki/tiddlywiki.js deleted file mode 100644 index ecd1d173..00000000 --- a/vendor/codemirror/mode/tiddlywiki/tiddlywiki.js +++ /dev/null @@ -1,366 +0,0 @@ -/*** - |''Name''|tiddlywiki.js| - |''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror| - |''Author''|PMario| - |''Version''|0.1.7| - |''Status''|''stable''| - |''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]| - |''Documentation''|http://codemirror.tiddlyspace.com/| - |''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]| - |''CoreVersion''|2.5.0| - |''Requires''|codemirror.js| - |''Keywords''|syntax highlighting color code mirror codemirror| - ! Info - CoreVersion parameter is needed for TiddlyWiki only! -***/ -//{{{ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("tiddlywiki", function () { - // Tokenizer - var textwords = {}; - - var keywords = function () { - function kw(type) { - return { type: type, style: "macro"}; - } - return { - "allTags": kw('allTags'), "closeAll": kw('closeAll'), "list": kw('list'), - "newJournal": kw('newJournal'), "newTiddler": kw('newTiddler'), - "permaview": kw('permaview'), "saveChanges": kw('saveChanges'), - "search": kw('search'), "slider": kw('slider'), "tabs": kw('tabs'), - "tag": kw('tag'), "tagging": kw('tagging'), "tags": kw('tags'), - "tiddler": kw('tiddler'), "timeline": kw('timeline'), - "today": kw('today'), "version": kw('version'), "option": kw('option'), - - "with": kw('with'), - "filter": kw('filter') - }; - }(); - - var isSpaceName = /[\w_\-]/i, - reHR = /^\-\-\-\-+$/, //
- reWikiCommentStart = /^\/\*\*\*$/, // /*** - reWikiCommentStop = /^\*\*\*\/$/, // ***/ - reBlockQuote = /^<<<$/, - - reJsCodeStart = /^\/\/\{\{\{$/, // //{{{ js block start - reJsCodeStop = /^\/\/\}\}\}$/, // //}}} js stop - reXmlCodeStart = /^$/, // xml block start - reXmlCodeStop = /^$/, // xml stop - - reCodeBlockStart = /^\{\{\{$/, // {{{ TW text div block start - reCodeBlockStop = /^\}\}\}$/, // }}} TW text stop - - reUntilCodeStop = /.*?\}\}\}/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - - function ret(tp, style, cont) { - type = tp; - content = cont; - return style; - } - - function jsTokenBase(stream, state) { - var sol = stream.sol(), ch; - - state.block = false; // indicates the start of a code block. - - ch = stream.peek(); // don't eat, to make matching simpler - - // check start of blocks - if (sol && /[<\/\*{}\-]/.test(ch)) { - if (stream.match(reCodeBlockStart)) { - state.block = true; - return chain(stream, state, twTokenCode); - } - if (stream.match(reBlockQuote)) { - return ret('quote', 'quote'); - } - if (stream.match(reWikiCommentStart) || stream.match(reWikiCommentStop)) { - return ret('code', 'comment'); - } - if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) || stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop)) { - return ret('code', 'comment'); - } - if (stream.match(reHR)) { - return ret('hr', 'hr'); - } - } // sol - ch = stream.next(); - - if (sol && /[\/\*!#;:>|]/.test(ch)) { - if (ch == "!") { // tw header - stream.skipToEnd(); - return ret("header", "header"); - } - if (ch == "*") { // tw list - stream.eatWhile('*'); - return ret("list", "comment"); - } - if (ch == "#") { // tw numbered list - stream.eatWhile('#'); - return ret("list", "comment"); - } - if (ch == ";") { // definition list, term - stream.eatWhile(';'); - return ret("list", "comment"); - } - if (ch == ":") { // definition list, description - stream.eatWhile(':'); - return ret("list", "comment"); - } - if (ch == ">") { // single line quote - stream.eatWhile(">"); - return ret("quote", "quote"); - } - if (ch == '|') { - return ret('table', 'header'); - } - } - - if (ch == '{' && stream.match(/\{\{/)) { - return chain(stream, state, twTokenCode); - } - - // rudimentary html:// file:// link matching. TW knows much more ... - if (/[hf]/i.test(ch)) { - if (/[ti]/i.test(stream.peek()) && stream.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i)) { - return ret("link", "link"); - } - } - // just a little string indicator, don't want to have the whole string covered - if (ch == '"') { - return ret('string', 'string'); - } - if (ch == '~') { // _no_ CamelCase indicator should be bold - return ret('text', 'brace'); - } - if (/[\[\]]/.test(ch)) { // check for [[..]] - if (stream.peek() == ch) { - stream.next(); - return ret('brace', 'brace'); - } - } - if (ch == "@") { // check for space link. TODO fix @@...@@ highlighting - stream.eatWhile(isSpaceName); - return ret("link", "link"); - } - if (/\d/.test(ch)) { // numbers - stream.eatWhile(/\d/); - return ret("number", "number"); - } - if (ch == "/") { // tw invisible comment - if (stream.eat("%")) { - return chain(stream, state, twTokenComment); - } - else if (stream.eat("/")) { // - return chain(stream, state, twTokenEm); - } - } - if (ch == "_") { // tw underline - if (stream.eat("_")) { - return chain(stream, state, twTokenUnderline); - } - } - // strikethrough and mdash handling - if (ch == "-") { - if (stream.eat("-")) { - // if strikethrough looks ugly, change CSS. - if (stream.peek() != ' ') - return chain(stream, state, twTokenStrike); - // mdash - if (stream.peek() == ' ') - return ret('text', 'brace'); - } - } - if (ch == "'") { // tw bold - if (stream.eat("'")) { - return chain(stream, state, twTokenStrong); - } - } - if (ch == "<") { // tw macro - if (stream.eat("<")) { - return chain(stream, state, twTokenMacro); - } - } - else { - return ret(ch); - } - - // core macro handling - stream.eatWhile(/[\w\$_]/); - var word = stream.current(), - known = textwords.propertyIsEnumerable(word) && textwords[word]; - - return known ? ret(known.type, known.style, word) : ret("text", null, word); - - } // jsTokenBase() - - // tw invisible comment - function twTokenComment(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "%"); - } - return ret("comment", "comment"); - } - - // tw strong / bold - function twTokenStrong(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "'" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "'"); - } - return ret("text", "strong"); - } - - // tw code - function twTokenCode(stream, state) { - var ch, sb = state.block; - - if (sb && stream.current()) { - return ret("code", "comment"); - } - - if (!sb && stream.match(reUntilCodeStop)) { - state.tokenize = jsTokenBase; - return ret("code", "comment"); - } - - if (sb && stream.sol() && stream.match(reCodeBlockStop)) { - state.tokenize = jsTokenBase; - return ret("code", "comment"); - } - - ch = stream.next(); - return (sb) ? ret("code", "comment") : ret("code", "comment"); - } - - // tw em / italic - function twTokenEm(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "/"); - } - return ret("text", "em"); - } - - // tw underlined text - function twTokenUnderline(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "_" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "_"); - } - return ret("text", "underlined"); - } - - // tw strike through text looks ugly - // change CSS if needed - function twTokenStrike(stream, state) { - var maybeEnd = false, ch; - - while (ch = stream.next()) { - if (ch == "-" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "-"); - } - return ret("text", "strikethrough"); - } - - // macro - function twTokenMacro(stream, state) { - var ch, word, known; - - if (stream.current() == '<<') { - return ret('brace', 'macro'); - } - - ch = stream.next(); - if (!ch) { - state.tokenize = jsTokenBase; - return ret(ch); - } - if (ch == ">") { - if (stream.peek() == '>') { - stream.next(); - state.tokenize = jsTokenBase; - return ret("brace", "macro"); - } - } - - stream.eatWhile(/[\w\$_]/); - word = stream.current(); - known = keywords.propertyIsEnumerable(word) && keywords[word]; - - if (known) { - return ret(known.type, known.style, word); - } - else { - return ret("macro", null, word); - } - } - - // Interface - return { - startState: function () { - return { - tokenize: jsTokenBase, - indented: 0, - level: 0 - }; - }, - - token: function (stream, state) { - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - return style; - }, - - electricChars: "" - }; -}); - -CodeMirror.defineMIME("text/x-tiddlywiki", "tiddlywiki"); -}); - -//}}} diff --git a/vendor/codemirror/mode/tiki/tiki.css b/vendor/codemirror/mode/tiki/tiki.css deleted file mode 100644 index 0dbc3ea0..00000000 --- a/vendor/codemirror/mode/tiki/tiki.css +++ /dev/null @@ -1,26 +0,0 @@ -.cm-tw-syntaxerror { - color: #FFF; - background-color: #900; -} - -.cm-tw-deleted { - text-decoration: line-through; -} - -.cm-tw-header5 { - font-weight: bold; -} -.cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ - padding-left: 10px; -} - -.cm-tw-box { - border-top-width: 0px ! important; - border-style: solid; - border-width: 1px; - border-color: inherit; -} - -.cm-tw-underline { - text-decoration: underline; -} \ No newline at end of file diff --git a/vendor/codemirror/mode/tiki/tiki.js b/vendor/codemirror/mode/tiki/tiki.js deleted file mode 100644 index eb9a893f..00000000 --- a/vendor/codemirror/mode/tiki/tiki.js +++ /dev/null @@ -1,320 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('tiki', function(config) { - function inBlock(style, terminator, returnTokenizer) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = inText; - break; - } - stream.next(); - } - - if (returnTokenizer) state.tokenize = returnTokenizer; - - return style; - }; - } - - function inLine(style) { - return function(stream, state) { - while(!stream.eol()) { - stream.next(); - } - state.tokenize = inText; - return style; - }; - } - - function inText(stream, state) { - function chain(parser) { - state.tokenize = parser; - return parser(stream, state); - } - - var sol = stream.sol(); - var ch = stream.next(); - - //non start of line - switch (ch) { //switch is generally much faster than if, so it is used here - case "{": //plugin - stream.eat("/"); - stream.eatSpace(); - var tagName = ""; - var c; - while ((c = stream.eat(/[^\s\u00a0=\"\'\/?(}]/))) tagName += c; - state.tokenize = inPlugin; - return "tag"; - break; - case "_": //bold - if (stream.eat("_")) { - return chain(inBlock("strong", "__", inText)); - } - break; - case "'": //italics - if (stream.eat("'")) { - // Italic text - return chain(inBlock("em", "''", inText)); - } - break; - case "(":// Wiki Link - if (stream.eat("(")) { - return chain(inBlock("variable-2", "))", inText)); - } - break; - case "[":// Weblink - return chain(inBlock("variable-3", "]", inText)); - break; - case "|": //table - if (stream.eat("|")) { - return chain(inBlock("comment", "||")); - } - break; - case "-": - if (stream.eat("=")) {//titleBar - return chain(inBlock("header string", "=-", inText)); - } else if (stream.eat("-")) {//deleted - return chain(inBlock("error tw-deleted", "--", inText)); - } - break; - case "=": //underline - if (stream.match("==")) { - return chain(inBlock("tw-underline", "===", inText)); - } - break; - case ":": - if (stream.eat(":")) { - return chain(inBlock("comment", "::")); - } - break; - case "^": //box - return chain(inBlock("tw-box", "^")); - break; - case "~": //np - if (stream.match("np~")) { - return chain(inBlock("meta", "~/np~")); - } - break; - } - - //start of line types - if (sol) { - switch (ch) { - case "!": //header at start of line - if (stream.match('!!!!!')) { - return chain(inLine("header string")); - } else if (stream.match('!!!!')) { - return chain(inLine("header string")); - } else if (stream.match('!!!')) { - return chain(inLine("header string")); - } else if (stream.match('!!')) { - return chain(inLine("header string")); - } else { - return chain(inLine("header string")); - } - break; - case "*": //unordered list line item, or
  • at start of line - case "#": //ordered list line item, or
  • at start of line - case "+": //ordered list line item, or
  • at start of line - return chain(inLine("tw-listitem bracket")); - break; - } - } - - //stream.eatWhile(/[&{]/); was eating up plugins, turned off to act less like html and more like tiki - return null; - } - - var indentUnit = config.indentUnit; - - // Return variables for tokenizers - var pluginName, type; - function inPlugin(stream, state) { - var ch = stream.next(); - var peek = stream.peek(); - - if (ch == "}") { - state.tokenize = inText; - //type = ch == ")" ? "endPlugin" : "selfclosePlugin"; inPlugin - return "tag"; - } else if (ch == "(" || ch == ")") { - return "bracket"; - } else if (ch == "=") { - type = "equals"; - - if (peek == ">") { - ch = stream.next(); - peek = stream.peek(); - } - - //here we detect values directly after equal character with no quotes - if (!/[\'\"]/.test(peek)) { - state.tokenize = inAttributeNoQuote(); - } - //end detect values - - return "operator"; - } else if (/[\'\"]/.test(ch)) { - state.tokenize = inAttribute(ch); - return state.tokenize(stream, state); - } else { - stream.eatWhile(/[^\s\u00a0=\"\'\/?]/); - return "keyword"; - } - } - - function inAttribute(quote) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.next() == quote) { - state.tokenize = inPlugin; - break; - } - } - return "string"; - }; - } - - function inAttributeNoQuote() { - return function(stream, state) { - while (!stream.eol()) { - var ch = stream.next(); - var peek = stream.peek(); - if (ch == " " || ch == "," || /[ )}]/.test(peek)) { - state.tokenize = inPlugin; - break; - } - } - return "string"; -}; - } - -var curState, setStyle; -function pass() { - for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]); -} - -function cont() { - pass.apply(null, arguments); - return true; -} - -function pushContext(pluginName, startOfLine) { - var noIndent = curState.context && curState.context.noIndent; - curState.context = { - prev: curState.context, - pluginName: pluginName, - indent: curState.indented, - startOfLine: startOfLine, - noIndent: noIndent - }; -} - -function popContext() { - if (curState.context) curState.context = curState.context.prev; -} - -function element(type) { - if (type == "openPlugin") {curState.pluginName = pluginName; return cont(attributes, endplugin(curState.startOfLine));} - else if (type == "closePlugin") { - var err = false; - if (curState.context) { - err = curState.context.pluginName != pluginName; - popContext(); - } else { - err = true; - } - if (err) setStyle = "error"; - return cont(endcloseplugin(err)); - } - else if (type == "string") { - if (!curState.context || curState.context.name != "!cdata") pushContext("!cdata"); - if (curState.tokenize == inText) popContext(); - return cont(); - } - else return cont(); -} - -function endplugin(startOfLine) { - return function(type) { - if ( - type == "selfclosePlugin" || - type == "endPlugin" - ) - return cont(); - if (type == "endPlugin") {pushContext(curState.pluginName, startOfLine); return cont();} - return cont(); - }; -} - -function endcloseplugin(err) { - return function(type) { - if (err) setStyle = "error"; - if (type == "endPlugin") return cont(); - return pass(); - }; -} - -function attributes(type) { - if (type == "keyword") {setStyle = "attribute"; return cont(attributes);} - if (type == "equals") return cont(attvalue, attributes); - return pass(); -} -function attvalue(type) { - if (type == "keyword") {setStyle = "string"; return cont();} - if (type == "string") return cont(attvaluemaybe); - return pass(); -} -function attvaluemaybe(type) { - if (type == "string") return cont(attvaluemaybe); - else return pass(); -} -return { - startState: function() { - return {tokenize: inText, cc: [], indented: 0, startOfLine: true, pluginName: null, context: null}; - }, - token: function(stream, state) { - if (stream.sol()) { - state.startOfLine = true; - state.indented = stream.indentation(); - } - if (stream.eatSpace()) return null; - - setStyle = type = pluginName = null; - var style = state.tokenize(stream, state); - if ((style || type) && style != "comment") { - curState = state; - while (true) { - var comb = state.cc.pop() || element; - if (comb(type || style)) break; - } - } - state.startOfLine = false; - return setStyle || style; - }, - indent: function(state, textAfter) { - var context = state.context; - if (context && context.noIndent) return 0; - if (context && /^{\//.test(textAfter)) - context = context.prev; - while (context && !context.startOfLine) - context = context.prev; - if (context) return context.indent + indentUnit; - else return 0; - }, - electricChars: "/" - }; -}); - -CodeMirror.defineMIME("text/tiki", "tiki"); - -}); diff --git a/vendor/codemirror/mode/toml/toml.js b/vendor/codemirror/mode/toml/toml.js deleted file mode 100644 index 2c722b37..00000000 --- a/vendor/codemirror/mode/toml/toml.js +++ /dev/null @@ -1,85 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("toml", function () { - return { - startState: function () { - return { - inString: false, - stringType: "", - lhs: true, - inArray: 0 - }; - }, - token: function (stream, state) { - //check for state changes - if (!state.inString && ((stream.peek() == '"') || (stream.peek() == "'"))) { - state.stringType = stream.peek(); - stream.next(); // Skip quote - state.inString = true; // Update state - } - if (stream.sol() && state.inArray === 0) { - state.lhs = true; - } - //return state - if (state.inString) { - while (state.inString && !stream.eol()) { - if (stream.peek() === state.stringType) { - stream.next(); // Skip quote - state.inString = false; // Clear flag - } else if (stream.peek() === '\\') { - stream.next(); - stream.next(); - } else { - stream.match(/^.[^\\\"\']*/); - } - } - return state.lhs ? "property string" : "string"; // Token style - } else if (state.inArray && stream.peek() === ']') { - stream.next(); - state.inArray--; - return 'bracket'; - } else if (state.lhs && stream.peek() === '[' && stream.skipTo(']')) { - stream.next();//skip closing ] - // array of objects has an extra open & close [] - if (stream.peek() === ']') stream.next(); - return "atom"; - } else if (stream.peek() === "#") { - stream.skipToEnd(); - return "comment"; - } else if (stream.eatSpace()) { - return null; - } else if (state.lhs && stream.eatWhile(function (c) { return c != '=' && c != ' '; })) { - return "property"; - } else if (state.lhs && stream.peek() === "=") { - stream.next(); - state.lhs = false; - return null; - } else if (!state.lhs && stream.match(/^\d\d\d\d[\d\-\:\.T]*Z/)) { - return 'atom'; //date - } else if (!state.lhs && (stream.match('true') || stream.match('false'))) { - return 'atom'; - } else if (!state.lhs && stream.peek() === '[') { - state.inArray++; - stream.next(); - return 'bracket'; - } else if (!state.lhs && stream.match(/^\-?\d+(?:\.\d+)?/)) { - return 'number'; - } else if (!stream.eatSpace()) { - stream.next(); - } - return null; - } - }; -}); - -CodeMirror.defineMIME('text/x-toml', 'toml'); - -}); diff --git a/vendor/codemirror/mode/turtle/turtle.js b/vendor/codemirror/mode/turtle/turtle.js deleted file mode 100644 index de9fc2b6..00000000 --- a/vendor/codemirror/mode/turtle/turtle.js +++ /dev/null @@ -1,157 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("turtle", function(config) { - var indentUnit = config.indentUnit; - var curPunc; - - function wordRegexp(words) { - return new RegExp("^(?:" + words.join("|") + ")$", "i"); - } - var ops = wordRegexp([]); - var keywords = wordRegexp(["@prefix", "@base", "a"]); - var operatorChars = /[*+\-<>=&|]/; - - function tokenBase(stream, state) { - var ch = stream.next(); - curPunc = null; - if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { - stream.match(/^[^\s\u00a0>]*>?/); - return "atom"; - } - else if (ch == "\"" || ch == "'") { - state.tokenize = tokenLiteral(ch); - return state.tokenize(stream, state); - } - else if (/[{}\(\),\.;\[\]]/.test(ch)) { - curPunc = ch; - return null; - } - else if (ch == "#") { - stream.skipToEnd(); - return "comment"; - } - else if (operatorChars.test(ch)) { - stream.eatWhile(operatorChars); - return null; - } - else if (ch == ":") { - return "operator"; - } else { - stream.eatWhile(/[_\w\d]/); - if(stream.peek() == ":") { - return "variable-3"; - } else { - var word = stream.current(); - - if(keywords.test(word)) { - return "meta"; - } - - if(ch >= "A" && ch <= "Z") { - return "comment"; - } else { - return "keyword"; - } - } - var word = stream.current(); - if (ops.test(word)) - return null; - else if (keywords.test(word)) - return "meta"; - else - return "variable"; - } - } - - function tokenLiteral(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return "string"; - }; - } - - function pushContext(state, type, col) { - state.context = {prev: state.context, indent: state.indent, col: col, type: type}; - } - function popContext(state) { - state.indent = state.context.indent; - state.context = state.context.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, - context: null, - indent: 0, - col: 0}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.context && state.context.align == null) state.context.align = false; - state.indent = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - - if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { - state.context.align = true; - } - - if (curPunc == "(") pushContext(state, ")", stream.column()); - else if (curPunc == "[") pushContext(state, "]", stream.column()); - else if (curPunc == "{") pushContext(state, "}", stream.column()); - else if (/[\]\}\)]/.test(curPunc)) { - while (state.context && state.context.type == "pattern") popContext(state); - if (state.context && curPunc == state.context.type) popContext(state); - } - else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); - else if (/atom|string|variable/.test(style) && state.context) { - if (/[\}\]]/.test(state.context.type)) - pushContext(state, "pattern", stream.column()); - else if (state.context.type == "pattern" && !state.context.align) { - state.context.align = true; - state.context.col = stream.column(); - } - } - - return style; - }, - - indent: function(state, textAfter) { - var firstChar = textAfter && textAfter.charAt(0); - var context = state.context; - if (/[\]\}]/.test(firstChar)) - while (context && context.type == "pattern") context = context.prev; - - var closing = context && firstChar == context.type; - if (!context) - return 0; - else if (context.type == "pattern") - return context.col; - else if (context.align) - return context.col + (closing ? 0 : 1); - else - return context.indent + (closing ? 0 : indentUnit); - } - }; -}); - -CodeMirror.defineMIME("text/turtle", "turtle"); - -}); diff --git a/vendor/codemirror/mode/vb/vb.js b/vendor/codemirror/mode/vb/vb.js deleted file mode 100644 index 4fd80210..00000000 --- a/vendor/codemirror/mode/vb/vb.js +++ /dev/null @@ -1,271 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("vb", function(conf, parserConf) { - var ERRORCLASS = 'error'; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); - } - - var singleOperators = new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]"); - var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]'); - var doubleOperators = new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"); - var doubleDelimiters = new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"); - var tripleDelimiters = new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"); - var identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); - - var openingKeywords = ['class','module', 'sub','enum','select','while','if','function', 'get','set','property', 'try']; - var middleKeywords = ['else','elseif','case', 'catch']; - var endKeywords = ['next','loop']; - - var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'in']); - var commonkeywords = ['as', 'dim', 'break', 'continue','optional', 'then', 'until', - 'goto', 'byval','byref','new','handles','property', 'return', - 'const','private', 'protected', 'friend', 'public', 'shared', 'static', 'true','false']; - var commontypes = ['integer','string','double','decimal','boolean','short','char', 'float','single']; - - var keywords = wordRegexp(commonkeywords); - var types = wordRegexp(commontypes); - var stringPrefixes = '"'; - - var opening = wordRegexp(openingKeywords); - var middle = wordRegexp(middleKeywords); - var closing = wordRegexp(endKeywords); - var doubleClosing = wordRegexp(['end']); - var doOpening = wordRegexp(['do']); - - var indentInfo = null; - - - - - function indent(_stream, state) { - state.currentIndent++; - } - - function dedent(_stream, state) { - state.currentIndent--; - } - // tokenizers - function tokenBase(stream, state) { - if (stream.eatSpace()) { - return null; - } - - var ch = stream.peek(); - - // Handle Comments - if (ch === "'") { - stream.skipToEnd(); - return 'comment'; - } - - - // Handle Number Literals - if (stream.match(/^((&H)|(&O))?[0-9\.a-f]/i, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^\d*\.\d+F?/i)) { floatLiteral = true; } - else if (stream.match(/^\d+\.\d*F?/)) { floatLiteral = true; } - else if (stream.match(/^\.\d+F?/)) { floatLiteral = true; } - - if (floatLiteral) { - // Float literals may be "imaginary" - stream.eat(/J/i); - return 'number'; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; } - // Octal - else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; } - // Decimal - else if (stream.match(/^[1-9]\d*F?/)) { - // Decimal literals may be "imaginary" - stream.eat(/J/i); - // TODO - Can you have imaginary longs? - intLiteral = true; - } - // Zero by itself with no other piece of number. - else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } - if (intLiteral) { - // Integer literals may be "long" - stream.eat(/L/i); - return 'number'; - } - } - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - // Handle operators and Delimiters - if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) { - return null; - } - if (stream.match(doubleOperators) - || stream.match(singleOperators) - || stream.match(wordOperators)) { - return 'operator'; - } - if (stream.match(singleDelimiters)) { - return null; - } - if (stream.match(doOpening)) { - indent(stream,state); - state.doInCurrentLine = true; - return 'keyword'; - } - if (stream.match(opening)) { - if (! state.doInCurrentLine) - indent(stream,state); - else - state.doInCurrentLine = false; - return 'keyword'; - } - if (stream.match(middle)) { - return 'keyword'; - } - - if (stream.match(doubleClosing)) { - dedent(stream,state); - dedent(stream,state); - return 'keyword'; - } - if (stream.match(closing)) { - dedent(stream,state); - return 'keyword'; - } - - if (stream.match(types)) { - return 'keyword'; - } - - if (stream.match(keywords)) { - return 'keyword'; - } - - if (stream.match(identifiers)) { - return 'variable'; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; - - return function(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"]/); - if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return OUTCLASS; - } else { - stream.eat(/['"]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) { - return ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return OUTCLASS; - }; - } - - - function tokenLexer(stream, state) { - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle '.' connected identifiers - if (current === '.') { - style = state.tokenize(stream, state); - current = stream.current(); - if (style === 'variable') { - return 'variable'; - } else { - return ERRORCLASS; - } - } - - - var delimiter_index = '[({'.indexOf(current); - if (delimiter_index !== -1) { - indent(stream, state ); - } - if (indentInfo === 'dedent') { - if (dedent(stream, state)) { - return ERRORCLASS; - } - } - delimiter_index = '])}'.indexOf(current); - if (delimiter_index !== -1) { - if (dedent(stream, state)) { - return ERRORCLASS; - } - } - - return style; - } - - var external = { - electricChars:"dDpPtTfFeE ", - startState: function() { - return { - tokenize: tokenBase, - lastToken: null, - currentIndent: 0, - nextLineIndent: 0, - doInCurrentLine: false - - - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - state.currentIndent += state.nextLineIndent; - state.nextLineIndent = 0; - state.doInCurrentLine = 0; - } - var style = tokenLexer(stream, state); - - state.lastToken = {style:style, content: stream.current()}; - - - - return style; - }, - - indent: function(state, textAfter) { - var trueText = textAfter.replace(/^\s+|\s+$/g, '') ; - if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1); - if(state.currentIndent < 0) return 0; - return state.currentIndent * conf.indentUnit; - } - - }; - return external; -}); - -CodeMirror.defineMIME("text/x-vb", "vb"); - -}); diff --git a/vendor/codemirror/mode/vbscript/vbscript.js b/vendor/codemirror/mode/vbscript/vbscript.js deleted file mode 100644 index 4be7c7f2..00000000 --- a/vendor/codemirror/mode/vbscript/vbscript.js +++ /dev/null @@ -1,347 +0,0 @@ -/* -For extra ASP classic objects, initialize CodeMirror instance with this option: - isASP: true - -E.G.: - var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - isASP: true - }); -*/ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("vbscript", function(conf, parserConf) { - var ERRORCLASS = 'error'; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); - } - - var singleOperators = new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]"); - var doubleOperators = new RegExp("^((<>)|(<=)|(>=))"); - var singleDelimiters = new RegExp('^[\\.,]'); - var brakets = new RegExp('^[\\(\\)]'); - var identifiers = new RegExp("^[A-Za-z][_A-Za-z0-9]*"); - - var openingKeywords = ['class','sub','select','while','if','function', 'property', 'with', 'for']; - var middleKeywords = ['else','elseif','case']; - var endKeywords = ['next','loop','wend']; - - var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'is', 'mod', 'eqv', 'imp']); - var commonkeywords = ['dim', 'redim', 'then', 'until', 'randomize', - 'byval','byref','new','property', 'exit', 'in', - 'const','private', 'public', - 'get','set','let', 'stop', 'on error resume next', 'on error goto 0', 'option explicit', 'call', 'me']; - - //This list was from: http://msdn.microsoft.com/en-us/library/f8tbc79x(v=vs.84).aspx - var atomWords = ['true', 'false', 'nothing', 'empty', 'null']; - //This list was from: http://msdn.microsoft.com/en-us/library/3ca8tfek(v=vs.84).aspx - var builtinFuncsWords = ['abs', 'array', 'asc', 'atn', 'cbool', 'cbyte', 'ccur', 'cdate', 'cdbl', 'chr', 'cint', 'clng', 'cos', 'csng', 'cstr', 'date', 'dateadd', 'datediff', 'datepart', - 'dateserial', 'datevalue', 'day', 'escape', 'eval', 'execute', 'exp', 'filter', 'formatcurrency', 'formatdatetime', 'formatnumber', 'formatpercent', 'getlocale', 'getobject', - 'getref', 'hex', 'hour', 'inputbox', 'instr', 'instrrev', 'int', 'fix', 'isarray', 'isdate', 'isempty', 'isnull', 'isnumeric', 'isobject', 'join', 'lbound', 'lcase', 'left', - 'len', 'loadpicture', 'log', 'ltrim', 'rtrim', 'trim', 'maths', 'mid', 'minute', 'month', 'monthname', 'msgbox', 'now', 'oct', 'replace', 'rgb', 'right', 'rnd', 'round', - 'scriptengine', 'scriptenginebuildversion', 'scriptenginemajorversion', 'scriptengineminorversion', 'second', 'setlocale', 'sgn', 'sin', 'space', 'split', 'sqr', 'strcomp', - 'string', 'strreverse', 'tan', 'time', 'timer', 'timeserial', 'timevalue', 'typename', 'ubound', 'ucase', 'unescape', 'vartype', 'weekday', 'weekdayname', 'year']; - - //This list was from: http://msdn.microsoft.com/en-us/library/ydz4cfk3(v=vs.84).aspx - var builtinConsts = ['vbBlack', 'vbRed', 'vbGreen', 'vbYellow', 'vbBlue', 'vbMagenta', 'vbCyan', 'vbWhite', 'vbBinaryCompare', 'vbTextCompare', - 'vbSunday', 'vbMonday', 'vbTuesday', 'vbWednesday', 'vbThursday', 'vbFriday', 'vbSaturday', 'vbUseSystemDayOfWeek', 'vbFirstJan1', 'vbFirstFourDays', 'vbFirstFullWeek', - 'vbGeneralDate', 'vbLongDate', 'vbShortDate', 'vbLongTime', 'vbShortTime', 'vbObjectError', - 'vbOKOnly', 'vbOKCancel', 'vbAbortRetryIgnore', 'vbYesNoCancel', 'vbYesNo', 'vbRetryCancel', 'vbCritical', 'vbQuestion', 'vbExclamation', 'vbInformation', 'vbDefaultButton1', 'vbDefaultButton2', - 'vbDefaultButton3', 'vbDefaultButton4', 'vbApplicationModal', 'vbSystemModal', 'vbOK', 'vbCancel', 'vbAbort', 'vbRetry', 'vbIgnore', 'vbYes', 'vbNo', - 'vbCr', 'VbCrLf', 'vbFormFeed', 'vbLf', 'vbNewLine', 'vbNullChar', 'vbNullString', 'vbTab', 'vbVerticalTab', 'vbUseDefault', 'vbTrue', 'vbFalse', - 'vbEmpty', 'vbNull', 'vbInteger', 'vbLong', 'vbSingle', 'vbDouble', 'vbCurrency', 'vbDate', 'vbString', 'vbObject', 'vbError', 'vbBoolean', 'vbVariant', 'vbDataObject', 'vbDecimal', 'vbByte', 'vbArray']; - //This list was from: http://msdn.microsoft.com/en-us/library/hkc375ea(v=vs.84).aspx - var builtinObjsWords = ['WScript', 'err', 'debug', 'RegExp']; - var knownProperties = ['description', 'firstindex', 'global', 'helpcontext', 'helpfile', 'ignorecase', 'length', 'number', 'pattern', 'source', 'value', 'count']; - var knownMethods = ['clear', 'execute', 'raise', 'replace', 'test', 'write', 'writeline', 'close', 'open', 'state', 'eof', 'update', 'addnew', 'end', 'createobject', 'quit']; - - var aspBuiltinObjsWords = ['server', 'response', 'request', 'session', 'application']; - var aspKnownProperties = ['buffer', 'cachecontrol', 'charset', 'contenttype', 'expires', 'expiresabsolute', 'isclientconnected', 'pics', 'status', //response - 'clientcertificate', 'cookies', 'form', 'querystring', 'servervariables', 'totalbytes', //request - 'contents', 'staticobjects', //application - 'codepage', 'lcid', 'sessionid', 'timeout', //session - 'scripttimeout']; //server - var aspKnownMethods = ['addheader', 'appendtolog', 'binarywrite', 'end', 'flush', 'redirect', //response - 'binaryread', //request - 'remove', 'removeall', 'lock', 'unlock', //application - 'abandon', //session - 'getlasterror', 'htmlencode', 'mappath', 'transfer', 'urlencode']; //server - - var knownWords = knownMethods.concat(knownProperties); - - builtinObjsWords = builtinObjsWords.concat(builtinConsts); - - if (conf.isASP){ - builtinObjsWords = builtinObjsWords.concat(aspBuiltinObjsWords); - knownWords = knownWords.concat(aspKnownMethods, aspKnownProperties); - }; - - var keywords = wordRegexp(commonkeywords); - var atoms = wordRegexp(atomWords); - var builtinFuncs = wordRegexp(builtinFuncsWords); - var builtinObjs = wordRegexp(builtinObjsWords); - var known = wordRegexp(knownWords); - var stringPrefixes = '"'; - - var opening = wordRegexp(openingKeywords); - var middle = wordRegexp(middleKeywords); - var closing = wordRegexp(endKeywords); - var doubleClosing = wordRegexp(['end']); - var doOpening = wordRegexp(['do']); - var noIndentWords = wordRegexp(['on error resume next', 'exit']); - var comment = wordRegexp(['rem']); - - - function indent(_stream, state) { - state.currentIndent++; - } - - function dedent(_stream, state) { - state.currentIndent--; - } - // tokenizers - function tokenBase(stream, state) { - if (stream.eatSpace()) { - return 'space'; - //return null; - } - - var ch = stream.peek(); - - // Handle Comments - if (ch === "'") { - stream.skipToEnd(); - return 'comment'; - } - if (stream.match(comment)){ - stream.skipToEnd(); - return 'comment'; - } - - - // Handle Number Literals - if (stream.match(/^((&H)|(&O))?[0-9\.]/i, false) && !stream.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^\d*\.\d+/i)) { floatLiteral = true; } - else if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } - else if (stream.match(/^\.\d+/)) { floatLiteral = true; } - - if (floatLiteral) { - // Float literals may be "imaginary" - stream.eat(/J/i); - return 'number'; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; } - // Octal - else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; } - // Decimal - else if (stream.match(/^[1-9]\d*F?/)) { - // Decimal literals may be "imaginary" - stream.eat(/J/i); - // TODO - Can you have imaginary longs? - intLiteral = true; - } - // Zero by itself with no other piece of number. - else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } - if (intLiteral) { - // Integer literals may be "long" - stream.eat(/L/i); - return 'number'; - } - } - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - // Handle operators and Delimiters - if (stream.match(doubleOperators) - || stream.match(singleOperators) - || stream.match(wordOperators)) { - return 'operator'; - } - if (stream.match(singleDelimiters)) { - return null; - } - - if (stream.match(brakets)) { - return "bracket"; - } - - if (stream.match(noIndentWords)) { - state.doInCurrentLine = true; - - return 'keyword'; - } - - if (stream.match(doOpening)) { - indent(stream,state); - state.doInCurrentLine = true; - - return 'keyword'; - } - if (stream.match(opening)) { - if (! state.doInCurrentLine) - indent(stream,state); - else - state.doInCurrentLine = false; - - return 'keyword'; - } - if (stream.match(middle)) { - return 'keyword'; - } - - - if (stream.match(doubleClosing)) { - dedent(stream,state); - dedent(stream,state); - - return 'keyword'; - } - if (stream.match(closing)) { - if (! state.doInCurrentLine) - dedent(stream,state); - else - state.doInCurrentLine = false; - - return 'keyword'; - } - - if (stream.match(keywords)) { - return 'keyword'; - } - - if (stream.match(atoms)) { - return 'atom'; - } - - if (stream.match(known)) { - return 'variable-2'; - } - - if (stream.match(builtinFuncs)) { - return 'builtin'; - } - - if (stream.match(builtinObjs)){ - return 'variable-2'; - } - - if (stream.match(identifiers)) { - return 'variable'; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; - - return function(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"]/); - if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return OUTCLASS; - } else { - stream.eat(/['"]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) { - return ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return OUTCLASS; - }; - } - - - function tokenLexer(stream, state) { - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle '.' connected identifiers - if (current === '.') { - style = state.tokenize(stream, state); - - current = stream.current(); - if (style.substr(0, 8) === 'variable' || style==='builtin' || style==='keyword'){//|| knownWords.indexOf(current.substring(1)) > -1) { - if (style === 'builtin' || style === 'keyword') style='variable'; - if (knownWords.indexOf(current.substr(1)) > -1) style='variable-2'; - - return style; - } else { - return ERRORCLASS; - } - } - - return style; - } - - var external = { - electricChars:"dDpPtTfFeE ", - startState: function() { - return { - tokenize: tokenBase, - lastToken: null, - currentIndent: 0, - nextLineIndent: 0, - doInCurrentLine: false, - ignoreKeyword: false - - - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - state.currentIndent += state.nextLineIndent; - state.nextLineIndent = 0; - state.doInCurrentLine = 0; - } - var style = tokenLexer(stream, state); - - state.lastToken = {style:style, content: stream.current()}; - - if (style==='space') style=null; - - return style; - }, - - indent: function(state, textAfter) { - var trueText = textAfter.replace(/^\s+|\s+$/g, '') ; - if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1); - if(state.currentIndent < 0) return 0; - return state.currentIndent * conf.indentUnit; - } - - }; - return external; -}); - -CodeMirror.defineMIME("text/vbscript", "vbscript"); - -}); diff --git a/vendor/codemirror/mode/velocity/velocity.js b/vendor/codemirror/mode/velocity/velocity.js deleted file mode 100644 index b64636bb..00000000 --- a/vendor/codemirror/mode/velocity/velocity.js +++ /dev/null @@ -1,198 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("velocity", function() { - function parseWords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - var keywords = parseWords("#end #else #break #stop #[[ #]] " + - "#{end} #{else} #{break} #{stop}"); - var functions = parseWords("#if #elseif #foreach #set #include #parse #macro #define #evaluate " + - "#{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}"); - var specials = parseWords("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent"); - var isOperatorChar = /[+\-*&%=<>!?:\/|]/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - function tokenBase(stream, state) { - var beforeParams = state.beforeParams; - state.beforeParams = false; - var ch = stream.next(); - // start of unparsed string? - if ((ch == "'") && state.inParams) { - state.lastTokenWasBuiltin = false; - return chain(stream, state, tokenString(ch)); - } - // start of parsed string? - else if ((ch == '"')) { - state.lastTokenWasBuiltin = false; - if (state.inString) { - state.inString = false; - return "string"; - } - else if (state.inParams) - return chain(stream, state, tokenString(ch)); - } - // is it one of the special signs []{}().,;? Seperator? - else if (/[\[\]{}\(\),;\.]/.test(ch)) { - if (ch == "(" && beforeParams) - state.inParams = true; - else if (ch == ")") { - state.inParams = false; - state.lastTokenWasBuiltin = true; - } - return null; - } - // start of a number value? - else if (/\d/.test(ch)) { - state.lastTokenWasBuiltin = false; - stream.eatWhile(/[\w\.]/); - return "number"; - } - // multi line comment? - else if (ch == "#" && stream.eat("*")) { - state.lastTokenWasBuiltin = false; - return chain(stream, state, tokenComment); - } - // unparsed content? - else if (ch == "#" && stream.match(/ *\[ *\[/)) { - state.lastTokenWasBuiltin = false; - return chain(stream, state, tokenUnparsed); - } - // single line comment? - else if (ch == "#" && stream.eat("#")) { - state.lastTokenWasBuiltin = false; - stream.skipToEnd(); - return "comment"; - } - // variable? - else if (ch == "$") { - stream.eatWhile(/[\w\d\$_\.{}]/); - // is it one of the specials? - if (specials && specials.propertyIsEnumerable(stream.current())) { - return "keyword"; - } - else { - state.lastTokenWasBuiltin = true; - state.beforeParams = true; - return "builtin"; - } - } - // is it a operator? - else if (isOperatorChar.test(ch)) { - state.lastTokenWasBuiltin = false; - stream.eatWhile(isOperatorChar); - return "operator"; - } - else { - // get the whole word - stream.eatWhile(/[\w\$_{}@]/); - var word = stream.current(); - // is it one of the listed keywords? - if (keywords && keywords.propertyIsEnumerable(word)) - return "keyword"; - // is it one of the listed functions? - if (functions && functions.propertyIsEnumerable(word) || - (stream.current().match(/^#@?[a-z0-9_]+ *$/i) && stream.peek()=="(") && - !(functions && functions.propertyIsEnumerable(word.toLowerCase()))) { - state.beforeParams = true; - state.lastTokenWasBuiltin = false; - return "keyword"; - } - if (state.inString) { - state.lastTokenWasBuiltin = false; - return "string"; - } - if (stream.pos > word.length && stream.string.charAt(stream.pos-word.length-1)=="." && state.lastTokenWasBuiltin) - return "builtin"; - // default: just a "word" - state.lastTokenWasBuiltin = false; - return null; - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next, end = false; - while ((next = stream.next()) != null) { - if ((next == quote) && !escaped) { - end = true; - break; - } - if (quote=='"' && stream.peek() == '$' && !escaped) { - state.inString = true; - end = true; - break; - } - escaped = !escaped && next == "\\"; - } - if (end) state.tokenize = tokenBase; - return "string"; - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "#" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return "comment"; - } - - function tokenUnparsed(stream, state) { - var maybeEnd = 0, ch; - while (ch = stream.next()) { - if (ch == "#" && maybeEnd == 2) { - state.tokenize = tokenBase; - break; - } - if (ch == "]") - maybeEnd++; - else if (ch != " ") - maybeEnd = 0; - } - return "meta"; - } - // Interface - - return { - startState: function() { - return { - tokenize: tokenBase, - beforeParams: false, - inParams: false, - inString: false, - lastTokenWasBuiltin: false - }; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - return state.tokenize(stream, state); - }, - blockCommentStart: "#*", - blockCommentEnd: "*#", - lineComment: "##", - fold: "velocity" - }; -}); - -CodeMirror.defineMIME("text/velocity", "velocity"); - -}); diff --git a/vendor/codemirror/mode/verilog/verilog.js b/vendor/codemirror/mode/verilog/verilog.js deleted file mode 100644 index bc4fd4fe..00000000 --- a/vendor/codemirror/mode/verilog/verilog.js +++ /dev/null @@ -1,192 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("verilog", function(config, parserConfig) { - var indentUnit = config.indentUnit, - keywords = parserConfig.keywords || {}, - blockKeywords = parserConfig.blockKeywords || {}, - atoms = parserConfig.atoms || {}, - hooks = parserConfig.hooks || {}, - multiLineStrings = parserConfig.multiLineStrings; - var isOperatorChar = /[&|~>")); - else return null; - } else if (stream.match("--")) { - return chain(inBlock("comment", "-->")); - } else if (stream.match("DOCTYPE", true, true)) { - stream.eatWhile(/[\w\._\-]/); - return chain(doctype(1)); - } else { - return null; - } - } else if (stream.eat("?")) { - stream.eatWhile(/[\w\._\-]/); - state.tokenize = inBlock("meta", "?>"); - return "meta"; - } else { - var isClose = stream.eat("/"); - tagName = ""; - var c; - while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c; - if (Kludges.caseFold) tagName = tagName.toLowerCase(); - if (!tagName) return "tag error"; - type = isClose ? "closeTag" : "openTag"; - state.tokenize = inTag; - return "tag"; - } - } else if (ch == "&") { - var ok; - if (stream.eat("#")) { - if (stream.eat("x")) { - ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";"); - } else { - ok = stream.eatWhile(/[\d]/) && stream.eat(";"); - } - } else { - ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";"); - } - return ok ? "atom" : "error"; - } else { - stream.eatWhile(/[^&<]/); - return null; - } - } - - function inTag(stream, state) { - var ch = stream.next(); - if (ch == ">" || (ch == "/" && stream.eat(">"))) { - state.tokenize = inText; - type = ch == ">" ? "endTag" : "selfcloseTag"; - return "tag"; - } else if (ch == "=") { - type = "equals"; - return null; - } else if (ch == "<") { - state.tokenize = inText; - state.state = baseState; - state.tagName = state.tagStart = null; - var next = state.tokenize(stream, state); - return next ? next + " error" : "error"; - } else if (/[\'\"]/.test(ch)) { - state.tokenize = inAttribute(ch); - state.stringStartCol = stream.column(); - return state.tokenize(stream, state); - } else { - stream.eatWhile(/[^\s\u00a0=<>\"\']/); - return "word"; - } - } - - function inAttribute(quote) { - var closure = function(stream, state) { - while (!stream.eol()) { - if (stream.next() == quote) { - state.tokenize = inTag; - break; - } - } - return "string"; - }; - closure.isInAttribute = true; - return closure; - } - - function inBlock(style, terminator) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = inText; - break; - } - stream.next(); - } - return style; - }; - } - function doctype(depth) { - return function(stream, state) { - var ch; - while ((ch = stream.next()) != null) { - if (ch == "<") { - state.tokenize = doctype(depth + 1); - return state.tokenize(stream, state); - } else if (ch == ">") { - if (depth == 1) { - state.tokenize = inText; - break; - } else { - state.tokenize = doctype(depth - 1); - return state.tokenize(stream, state); - } - } - } - return "meta"; - }; - } - - function Context(state, tagName, startOfLine) { - this.prev = state.context; - this.tagName = tagName; - this.indent = state.indented; - this.startOfLine = startOfLine; - if (Kludges.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent)) - this.noIndent = true; - } - function popContext(state) { - if (state.context) state.context = state.context.prev; - } - function maybePopContext(state, nextTagName) { - var parentTagName; - while (true) { - if (!state.context) { - return; - } - parentTagName = state.context.tagName; - if (!Kludges.contextGrabbers.hasOwnProperty(parentTagName) || - !Kludges.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) { - return; - } - popContext(state); - } - } - - function baseState(type, stream, state) { - if (type == "openTag") { - state.tagName = tagName; - state.tagStart = stream.column(); - return attrState; - } else if (type == "closeTag") { - var err = false; - if (state.context) { - if (state.context.tagName != tagName) { - if (Kludges.implicitlyClosed.hasOwnProperty(state.context.tagName)) - popContext(state); - err = !state.context || state.context.tagName != tagName; - } - } else { - err = true; - } - if (err) setStyle = "error"; - return err ? closeStateErr : closeState; - } else { - return baseState; - } - } - - function closeState(type, _stream, state) { - if (type != "endTag") { - setStyle = "error"; - return closeState; - } - popContext(state); - return baseState; - } - function closeStateErr(type, stream, state) { - setStyle = "error"; - return closeState(type, stream, state); - } - - function attrState(type, _stream, state) { - if (type == "word") { - setStyle = "attribute"; - return attrEqState; - } else if (type == "endTag" || type == "selfcloseTag") { - var tagName = state.tagName, tagStart = state.tagStart; - state.tagName = state.tagStart = null; - if (type == "selfcloseTag" || - Kludges.autoSelfClosers.hasOwnProperty(tagName)) { - maybePopContext(state, tagName); - } else { - maybePopContext(state, tagName); - state.context = new Context(state, tagName, tagStart == state.indented); - } - return baseState; - } - setStyle = "error"; - return attrState; - } - function attrEqState(type, stream, state) { - if (type == "equals") return attrValueState; - if (!Kludges.allowMissing) setStyle = "error"; - return attrState(type, stream, state); - } - function attrValueState(type, stream, state) { - if (type == "string") return attrContinuedState; - if (type == "word" && Kludges.allowUnquoted) {setStyle = "string"; return attrState;} - setStyle = "error"; - return attrState(type, stream, state); - } - function attrContinuedState(type, stream, state) { - if (type == "string") return attrContinuedState; - return attrState(type, stream, state); - } - - return { - startState: function() { - return {tokenize: inText, - state: baseState, - indented: 0, - tagName: null, tagStart: null, - context: null}; - }, - - token: function(stream, state) { - if (!state.tagName && stream.sol()) - state.indented = stream.indentation(); - - if (stream.eatSpace()) return null; - tagName = type = null; - var style = state.tokenize(stream, state); - if ((style || type) && style != "comment") { - setStyle = null; - state.state = state.state(type || style, stream, state); - if (setStyle) - style = setStyle == "error" ? style + " error" : setStyle; - } - return style; - }, - - indent: function(state, textAfter, fullLine) { - var context = state.context; - // Indent multi-line strings (e.g. css). - if (state.tokenize.isInAttribute) { - return state.stringStartCol + 1; - } - if (context && context.noIndent) return CodeMirror.Pass; - if (state.tokenize != inTag && state.tokenize != inText) - return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0; - // Indent the starts of attribute names. - if (state.tagName) { - if (multilineTagIndentPastTag) - return state.tagStart + state.tagName.length + 2; - else - return state.tagStart + indentUnit * multilineTagIndentFactor; - } - if (alignCDATA && /", - - configuration: parserConfig.htmlMode ? "html" : "xml", - helperType: parserConfig.htmlMode ? "html" : "xml" - }; -}); - -CodeMirror.defineMIME("text/xml", "xml"); -CodeMirror.defineMIME("application/xml", "xml"); -if (!CodeMirror.mimeModes.hasOwnProperty("text/html")) - CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true}); - -}); diff --git a/vendor/codemirror/mode/xquery/test.js b/vendor/codemirror/mode/xquery/test.js deleted file mode 100644 index 41719dd1..00000000 --- a/vendor/codemirror/mode/xquery/test.js +++ /dev/null @@ -1,64 +0,0 @@ -// Don't take these too seriously -- the expected results appear to be -// based on the results of actual runs without any serious manual -// verification. If a change you made causes them to fail, the test is -// as likely to wrong as the code. - -(function() { - var mode = CodeMirror.getMode({tabSize: 4}, "xquery"); - function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } - - MT("eviltest", - "[keyword xquery] [keyword version] [variable "1][keyword .][atom 0][keyword -][variable ml"][def&variable ;] [comment (: this is : a \"comment\" :)]", - " [keyword let] [variable $let] [keyword :=] [variable <x] [variable attr][keyword =][variable "value">"test"<func>][def&variable ;function]() [variable $var] {[keyword function]()} {[variable $var]}[variable <][keyword /][variable func><][keyword /][variable x>]", - " [keyword let] [variable $joe][keyword :=][atom 1]", - " [keyword return] [keyword element] [variable element] {", - " [keyword attribute] [variable attribute] { [atom 1] },", - " [keyword element] [variable test] { [variable 'a'] }, [keyword attribute] [variable foo] { [variable "bar"] },", - " [def&variable fn:doc]()[[ [variable foo][keyword /][variable @bar] [keyword eq] [variable $let] ]],", - " [keyword //][variable x] } [comment (: a more 'evil' test :)]", - " [comment (: Modified Blakeley example (: with nested comment :) ... :)]", - " [keyword declare] [keyword private] [keyword function] [def&variable local:declare]() {()}[variable ;]", - " [keyword declare] [keyword private] [keyword function] [def&variable local:private]() {()}[variable ;]", - " [keyword declare] [keyword private] [keyword function] [def&variable local:function]() {()}[variable ;]", - " [keyword declare] [keyword private] [keyword function] [def&variable local:local]() {()}[variable ;]", - " [keyword let] [variable $let] [keyword :=] [variable <let>let] [variable $let] [keyword :=] [variable "let"<][keyword /let][variable >]", - " [keyword return] [keyword element] [variable element] {", - " [keyword attribute] [variable attribute] { [keyword try] { [def&variable xdmp:version]() } [keyword catch]([variable $e]) { [def&variable xdmp:log]([variable $e]) } },", - " [keyword attribute] [variable fn:doc] { [variable "bar"] [variable castable] [keyword as] [atom xs:string] },", - " [keyword element] [variable text] { [keyword text] { [variable "text"] } },", - " [def&variable fn:doc]()[[ [qualifier child::][variable eq][keyword /]([variable @bar] [keyword |] [qualifier attribute::][variable attribute]) [keyword eq] [variable $let] ]],", - " [keyword //][variable fn:doc]", - " }"); - - MT("testEmptySequenceKeyword", - "[string \"foo\"] [keyword instance] [keyword of] [keyword empty-sequence]()"); - - MT("testMultiAttr", - "[tag

    ][variable hello] [variable world][tag

    ]"); - - MT("test namespaced variable", - "[keyword declare] [keyword namespace] [variable e] [keyword =] [string \"http://example.com/ANamespace/"][variable ;declare] [keyword variable] [variable $e:exampleComThisVarIsNotRecognized] [keyword as] [keyword element]([keyword *]) [variable external;]"); - - MT("test EQName variable", - "[keyword declare] [keyword variable] [variable $\"http://www.example.com/ns/my/":var] [keyword :=] [atom 12][variable ;]", - "[tag ]{[variable $\"http://www.example.com/ns/my/":var]}[tag ]"); - - MT("test EQName function", - "[keyword declare] [keyword function] [def&variable \"http://www.example.com/ns/my/":fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {", - " [variable $a] [keyword +] [atom 2]", - "}[variable ;]", - "[tag ]{[def&variable \"http://www.example.com/ns/my/":fn]([atom 12])}[tag ]"); - - MT("test EQName function with single quotes", - "[keyword declare] [keyword function] [def&variable 'http://www.example.com/ns/my':fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {", - " [variable $a] [keyword +] [atom 2]", - "}[variable ;]", - "[tag ]{[def&variable 'http://www.example.com/ns/my':fn]([atom 12])}[tag ]"); - - MT("testProcessingInstructions", - "[def&variable data]([comment&meta ]) [keyword instance] [keyword of] [atom xs:string]"); - - MT("testQuoteEscapeDouble", - "[keyword let] [variable $rootfolder] [keyword :=] [string \"c:\\builds\\winnt\\HEAD\\qa\\scripts\\\"]", - "[keyword let] [variable $keysfolder] [keyword :=] [def&variable concat]([variable $rootfolder], [string \"keys\\\"])"); -})(); diff --git a/vendor/codemirror/mode/xquery/xquery.js b/vendor/codemirror/mode/xquery/xquery.js deleted file mode 100644 index 2c7faf42..00000000 --- a/vendor/codemirror/mode/xquery/xquery.js +++ /dev/null @@ -1,444 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("xquery", function() { - - // The keywords object is set to the result of this self executing - // function. Each keyword is a property of the keywords object whose - // value is {type: atype, style: astyle} - var keywords = function(){ - // conveinence functions used to build keywords object - function kw(type) {return {type: type, style: "keyword"};} - var A = kw("keyword a") - , B = kw("keyword b") - , C = kw("keyword c") - , operator = kw("operator") - , atom = {type: "atom", style: "atom"} - , punctuation = {type: "punctuation", style: null} - , qualifier = {type: "axis_specifier", style: "qualifier"}; - - // kwObj is what is return from this function at the end - var kwObj = { - 'if': A, 'switch': A, 'while': A, 'for': A, - 'else': B, 'then': B, 'try': B, 'finally': B, 'catch': B, - 'element': C, 'attribute': C, 'let': C, 'implements': C, 'import': C, 'module': C, 'namespace': C, - 'return': C, 'super': C, 'this': C, 'throws': C, 'where': C, 'private': C, - ',': punctuation, - 'null': atom, 'fn:false()': atom, 'fn:true()': atom - }; - - // a list of 'basic' keywords. For each add a property to kwObj with the value of - // {type: basic[i], style: "keyword"} e.g. 'after' --> {type: "after", style: "keyword"} - var basic = ['after','ancestor','ancestor-or-self','and','as','ascending','assert','attribute','before', - 'by','case','cast','child','comment','declare','default','define','descendant','descendant-or-self', - 'descending','document','document-node','element','else','eq','every','except','external','following', - 'following-sibling','follows','for','function','if','import','in','instance','intersect','item', - 'let','module','namespace','node','node','of','only','or','order','parent','precedes','preceding', - 'preceding-sibling','processing-instruction','ref','return','returns','satisfies','schema','schema-element', - 'self','some','sortby','stable','text','then','to','treat','typeswitch','union','variable','version','where', - 'xquery', 'empty-sequence']; - for(var i=0, l=basic.length; i < l; i++) { kwObj[basic[i]] = kw(basic[i]);}; - - // a list of types. For each add a property to kwObj with the value of - // {type: "atom", style: "atom"} - var types = ['xs:string', 'xs:float', 'xs:decimal', 'xs:double', 'xs:integer', 'xs:boolean', 'xs:date', 'xs:dateTime', - 'xs:time', 'xs:duration', 'xs:dayTimeDuration', 'xs:time', 'xs:yearMonthDuration', 'numeric', 'xs:hexBinary', - 'xs:base64Binary', 'xs:anyURI', 'xs:QName', 'xs:byte','xs:boolean','xs:anyURI','xf:yearMonthDuration']; - for(var i=0, l=types.length; i < l; i++) { kwObj[types[i]] = atom;}; - - // each operator will add a property to kwObj with value of {type: "operator", style: "keyword"} - var operators = ['eq', 'ne', 'lt', 'le', 'gt', 'ge', ':=', '=', '>', '>=', '<', '<=', '.', '|', '?', 'and', 'or', 'div', 'idiv', 'mod', '*', '/', '+', '-']; - for(var i=0, l=operators.length; i < l; i++) { kwObj[operators[i]] = operator;}; - - // each axis_specifiers will add a property to kwObj with value of {type: "axis_specifier", style: "qualifier"} - var axis_specifiers = ["self::", "attribute::", "child::", "descendant::", "descendant-or-self::", "parent::", - "ancestor::", "ancestor-or-self::", "following::", "preceding::", "following-sibling::", "preceding-sibling::"]; - for(var i=0, l=axis_specifiers.length; i < l; i++) { kwObj[axis_specifiers[i]] = qualifier; }; - - return kwObj; - }(); - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - - function ret(tp, style, cont) { - type = tp; content = cont; - return style; - } - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - // the primary mode tokenizer - function tokenBase(stream, state) { - var ch = stream.next(), - mightBeFunction = false, - isEQName = isEQNameAhead(stream); - - // an XML tag (if not in some sub, chained tokenizer) - if (ch == "<") { - if(stream.match("!--", true)) - return chain(stream, state, tokenXMLComment); - - if(stream.match("![CDATA", false)) { - state.tokenize = tokenCDATA; - return ret("tag", "tag"); - } - - if(stream.match("?", false)) { - return chain(stream, state, tokenPreProcessing); - } - - var isclose = stream.eat("/"); - stream.eatSpace(); - var tagName = "", c; - while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c; - - return chain(stream, state, tokenTag(tagName, isclose)); - } - // start code block - else if(ch == "{") { - pushStateStack(state,{ type: "codeblock"}); - return ret("", null); - } - // end code block - else if(ch == "}") { - popStateStack(state); - return ret("", null); - } - // if we're in an XML block - else if(isInXmlBlock(state)) { - if(ch == ">") - return ret("tag", "tag"); - else if(ch == "/" && stream.eat(">")) { - popStateStack(state); - return ret("tag", "tag"); - } - else - return ret("word", "variable"); - } - // if a number - else if (/\d/.test(ch)) { - stream.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/); - return ret("number", "atom"); - } - // comment start - else if (ch === "(" && stream.eat(":")) { - pushStateStack(state, { type: "comment"}); - return chain(stream, state, tokenComment); - } - // quoted string - else if ( !isEQName && (ch === '"' || ch === "'")) - return chain(stream, state, tokenString(ch)); - // variable - else if(ch === "$") { - return chain(stream, state, tokenVariable); - } - // assignment - else if(ch ===":" && stream.eat("=")) { - return ret("operator", "keyword"); - } - // open paren - else if(ch === "(") { - pushStateStack(state, { type: "paren"}); - return ret("", null); - } - // close paren - else if(ch === ")") { - popStateStack(state); - return ret("", null); - } - // open paren - else if(ch === "[") { - pushStateStack(state, { type: "bracket"}); - return ret("", null); - } - // close paren - else if(ch === "]") { - popStateStack(state); - return ret("", null); - } - else { - var known = keywords.propertyIsEnumerable(ch) && keywords[ch]; - - // if there's a EQName ahead, consume the rest of the string portion, it's likely a function - if(isEQName && ch === '\"') while(stream.next() !== '"'){} - if(isEQName && ch === '\'') while(stream.next() !== '\''){} - - // gobble up a word if the character is not known - if(!known) stream.eatWhile(/[\w\$_-]/); - - // gobble a colon in the case that is a lib func type call fn:doc - var foundColon = stream.eat(":"); - - // if there's not a second colon, gobble another word. Otherwise, it's probably an axis specifier - // which should get matched as a keyword - if(!stream.eat(":") && foundColon) { - stream.eatWhile(/[\w\$_-]/); - } - // if the next non whitespace character is an open paren, this is probably a function (if not a keyword of other sort) - if(stream.match(/^[ \t]*\(/, false)) { - mightBeFunction = true; - } - // is the word a keyword? - var word = stream.current(); - known = keywords.propertyIsEnumerable(word) && keywords[word]; - - // if we think it's a function call but not yet known, - // set style to variable for now for lack of something better - if(mightBeFunction && !known) known = {type: "function_call", style: "variable def"}; - - // if the previous word was element, attribute, axis specifier, this word should be the name of that - if(isInXmlConstructor(state)) { - popStateStack(state); - return ret("word", "variable", word); - } - // as previously checked, if the word is element,attribute, axis specifier, call it an "xmlconstructor" and - // push the stack so we know to look for it on the next word - if(word == "element" || word == "attribute" || known.type == "axis_specifier") pushStateStack(state, {type: "xmlconstructor"}); - - // if the word is known, return the details of that else just call this a generic 'word' - return known ? ret(known.type, known.style, word) : - ret("word", "variable", word); - } - } - - // handle comments, including nested - function tokenComment(stream, state) { - var maybeEnd = false, maybeNested = false, nestedCount = 0, ch; - while (ch = stream.next()) { - if (ch == ")" && maybeEnd) { - if(nestedCount > 0) - nestedCount--; - else { - popStateStack(state); - break; - } - } - else if(ch == ":" && maybeNested) { - nestedCount++; - } - maybeEnd = (ch == ":"); - maybeNested = (ch == "("); - } - - return ret("comment", "comment"); - } - - // tokenizer for string literals - // optionally pass a tokenizer function to set state.tokenize back to when finished - function tokenString(quote, f) { - return function(stream, state) { - var ch; - - if(isInString(state) && stream.current() == quote) { - popStateStack(state); - if(f) state.tokenize = f; - return ret("string", "string"); - } - - pushStateStack(state, { type: "string", name: quote, tokenize: tokenString(quote, f) }); - - // if we're in a string and in an XML block, allow an embedded code block - if(stream.match("{", false) && isInXmlAttributeBlock(state)) { - state.tokenize = tokenBase; - return ret("string", "string"); - } - - - while (ch = stream.next()) { - if (ch == quote) { - popStateStack(state); - if(f) state.tokenize = f; - break; - } - else { - // if we're in a string and in an XML block, allow an embedded code block in an attribute - if(stream.match("{", false) && isInXmlAttributeBlock(state)) { - state.tokenize = tokenBase; - return ret("string", "string"); - } - - } - } - - return ret("string", "string"); - }; - } - - // tokenizer for variables - function tokenVariable(stream, state) { - var isVariableChar = /[\w\$_-]/; - - // a variable may start with a quoted EQName so if the next character is quote, consume to the next quote - if(stream.eat("\"")) { - while(stream.next() !== '\"'){}; - stream.eat(":"); - } else { - stream.eatWhile(isVariableChar); - if(!stream.match(":=", false)) stream.eat(":"); - } - stream.eatWhile(isVariableChar); - state.tokenize = tokenBase; - return ret("variable", "variable"); - } - - // tokenizer for XML tags - function tokenTag(name, isclose) { - return function(stream, state) { - stream.eatSpace(); - if(isclose && stream.eat(">")) { - popStateStack(state); - state.tokenize = tokenBase; - return ret("tag", "tag"); - } - // self closing tag without attributes? - if(!stream.eat("/")) - pushStateStack(state, { type: "tag", name: name, tokenize: tokenBase}); - if(!stream.eat(">")) { - state.tokenize = tokenAttribute; - return ret("tag", "tag"); - } - else { - state.tokenize = tokenBase; - } - return ret("tag", "tag"); - }; - } - - // tokenizer for XML attributes - function tokenAttribute(stream, state) { - var ch = stream.next(); - - if(ch == "/" && stream.eat(">")) { - if(isInXmlAttributeBlock(state)) popStateStack(state); - if(isInXmlBlock(state)) popStateStack(state); - return ret("tag", "tag"); - } - if(ch == ">") { - if(isInXmlAttributeBlock(state)) popStateStack(state); - return ret("tag", "tag"); - } - if(ch == "=") - return ret("", null); - // quoted string - if (ch == '"' || ch == "'") - return chain(stream, state, tokenString(ch, tokenAttribute)); - - if(!isInXmlAttributeBlock(state)) - pushStateStack(state, { type: "attribute", tokenize: tokenAttribute}); - - stream.eat(/[a-zA-Z_:]/); - stream.eatWhile(/[-a-zA-Z0-9_:.]/); - stream.eatSpace(); - - // the case where the attribute has not value and the tag was closed - if(stream.match(">", false) || stream.match("/", false)) { - popStateStack(state); - state.tokenize = tokenBase; - } - - return ret("attribute", "attribute"); - } - - // handle comments, including nested - function tokenXMLComment(stream, state) { - var ch; - while (ch = stream.next()) { - if (ch == "-" && stream.match("->", true)) { - state.tokenize = tokenBase; - return ret("comment", "comment"); - } - } - } - - - // handle CDATA - function tokenCDATA(stream, state) { - var ch; - while (ch = stream.next()) { - if (ch == "]" && stream.match("]", true)) { - state.tokenize = tokenBase; - return ret("comment", "comment"); - } - } - } - - // handle preprocessing instructions - function tokenPreProcessing(stream, state) { - var ch; - while (ch = stream.next()) { - if (ch == "?" && stream.match(">", true)) { - state.tokenize = tokenBase; - return ret("comment", "comment meta"); - } - } - } - - - // functions to test the current context of the state - function isInXmlBlock(state) { return isIn(state, "tag"); } - function isInXmlAttributeBlock(state) { return isIn(state, "attribute"); } - function isInXmlConstructor(state) { return isIn(state, "xmlconstructor"); } - function isInString(state) { return isIn(state, "string"); } - - function isEQNameAhead(stream) { - // assume we've already eaten a quote (") - if(stream.current() === '"') - return stream.match(/^[^\"]+\"\:/, false); - else if(stream.current() === '\'') - return stream.match(/^[^\"]+\'\:/, false); - else - return false; - } - - function isIn(state, type) { - return (state.stack.length && state.stack[state.stack.length - 1].type == type); - } - - function pushStateStack(state, newState) { - state.stack.push(newState); - } - - function popStateStack(state) { - state.stack.pop(); - var reinstateTokenize = state.stack.length && state.stack[state.stack.length-1].tokenize; - state.tokenize = reinstateTokenize || tokenBase; - } - - // the interface for the mode API - return { - startState: function() { - return { - tokenize: tokenBase, - cc: [], - stack: [] - }; - }, - - token: function(stream, state) { - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - return style; - }, - - blockCommentStart: "(:", - blockCommentEnd: ":)" - - }; - -}); - -CodeMirror.defineMIME("application/xquery", "xquery"); - -}); diff --git a/vendor/codemirror/mode/yaml/yaml.js b/vendor/codemirror/mode/yaml/yaml.js deleted file mode 100644 index f7b3a90c..00000000 --- a/vendor/codemirror/mode/yaml/yaml.js +++ /dev/null @@ -1,109 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("yaml", function() { - - var cons = ['true', 'false', 'on', 'off', 'yes', 'no']; - var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i'); - - return { - token: function(stream, state) { - var ch = stream.peek(); - var esc = state.escaped; - state.escaped = false; - /* comments */ - if (ch == "#" && (stream.pos == 0 || /\s/.test(stream.string.charAt(stream.pos - 1)))) { - stream.skipToEnd(); return "comment"; - } - if (state.literal && stream.indentation() > state.keyCol) { - stream.skipToEnd(); return "string"; - } else if (state.literal) { state.literal = false; } - if (stream.sol()) { - state.keyCol = 0; - state.pair = false; - state.pairStart = false; - /* document start */ - if(stream.match(/---/)) { return "def"; } - /* document end */ - if (stream.match(/\.\.\./)) { return "def"; } - /* array list item */ - if (stream.match(/\s*-\s+/)) { return 'meta'; } - } - /* inline pairs/lists */ - if (stream.match(/^(\{|\}|\[|\])/)) { - if (ch == '{') - state.inlinePairs++; - else if (ch == '}') - state.inlinePairs--; - else if (ch == '[') - state.inlineList++; - else - state.inlineList--; - return 'meta'; - } - - /* list seperator */ - if (state.inlineList > 0 && !esc && ch == ',') { - stream.next(); - return 'meta'; - } - /* pairs seperator */ - if (state.inlinePairs > 0 && !esc && ch == ',') { - state.keyCol = 0; - state.pair = false; - state.pairStart = false; - stream.next(); - return 'meta'; - } - - /* start of value of a pair */ - if (state.pairStart) { - /* block literals */ - if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; }; - /* references */ - if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; } - /* numbers */ - if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; } - if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; } - /* keywords */ - if (stream.match(keywordRegex)) { return 'keyword'; } - } - - /* pairs (associative arrays) -> key */ - if (!state.pair && stream.match(/^\s*\S+(?=\s*:($|\s))/i)) { - state.pair = true; - state.keyCol = stream.indentation(); - return "atom"; - } - if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; } - - /* nothing found, continue */ - state.pairStart = false; - state.escaped = (ch == '\\'); - stream.next(); - return null; - }, - startState: function() { - return { - pair: false, - pairStart: false, - keyCol: 0, - inlinePairs: 0, - inlineList: 0, - literal: false, - escaped: false - }; - } - }; -}); - -CodeMirror.defineMIME("text/x-yaml", "yaml"); - -}); diff --git a/vendor/codemirror/mode/z80/z80.js b/vendor/codemirror/mode/z80/z80.js deleted file mode 100644 index c7788030..00000000 --- a/vendor/codemirror/mode/z80/z80.js +++ /dev/null @@ -1,97 +0,0 @@ -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode('z80', function() { - var keywords1 = /^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i; - var keywords2 = /^(call|j[pr]|ret[in]?)\b/i; - var keywords3 = /^b_?(call|jump)\b/i; - var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i; - var variables2 = /^(n?[zc]|p[oe]?|m)\b/i; - var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\b/i; - var numbers = /^([\da-f]+h|[0-7]+o|[01]+b|\d+)\b/i; - - return { - startState: function() { - return {context: 0}; - }, - token: function(stream, state) { - if (!stream.column()) - state.context = 0; - - if (stream.eatSpace()) - return null; - - var w; - - if (stream.eatWhile(/\w/)) { - w = stream.current(); - - if (stream.indentation()) { - if (state.context == 1 && variables1.test(w)) - return 'variable-2'; - - if (state.context == 2 && variables2.test(w)) - return 'variable-3'; - - if (keywords1.test(w)) { - state.context = 1; - return 'keyword'; - } else if (keywords2.test(w)) { - state.context = 2; - return 'keyword'; - } else if (keywords3.test(w)) { - state.context = 3; - return 'keyword'; - } - - if (errors.test(w)) - return 'error'; - } else if (numbers.test(w)) { - return 'number'; - } else { - return null; - } - } else if (stream.eat(';')) { - stream.skipToEnd(); - return 'comment'; - } else if (stream.eat('"')) { - while (w = stream.next()) { - if (w == '"') - break; - - if (w == '\\') - stream.next(); - } - return 'string'; - } else if (stream.eat('\'')) { - if (stream.match(/\\?.'/)) - return 'number'; - } else if (stream.eat('.') || stream.sol() && stream.eat('#')) { - state.context = 4; - - if (stream.eatWhile(/\w/)) - return 'def'; - } else if (stream.eat('$')) { - if (stream.eatWhile(/[\da-f]/i)) - return 'number'; - } else if (stream.eat('%')) { - if (stream.eatWhile(/[01]/)) - return 'number'; - } else { - stream.next(); - } - return null; - } - }; -}); - -CodeMirror.defineMIME("text/x-z80", "z80"); - -}); diff --git a/vendor/codemirror/theme/3024-day.css b/vendor/codemirror/theme/3024-day.css deleted file mode 100644 index cbb9a4fa..00000000 --- a/vendor/codemirror/theme/3024-day.css +++ /dev/null @@ -1,34 +0,0 @@ -/* - - Name: 3024 day - Author: Jan T. Sott (http://github.com/idleberg) - - CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) - Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) - -*/ - -.cm-s-3024-day.CodeMirror {background: #f7f7f7; color: #3a3432;} -.cm-s-3024-day div.CodeMirror-selected {background: #d6d5d4 !important;} -.cm-s-3024-day .CodeMirror-gutters {background: #f7f7f7; border-right: 0px;} -.cm-s-3024-day .CodeMirror-linenumber {color: #807d7c;} -.cm-s-3024-day .CodeMirror-cursor {border-left: 1px solid #5c5855 !important;} - -.cm-s-3024-day span.cm-comment {color: #cdab53;} -.cm-s-3024-day span.cm-atom {color: #a16a94;} -.cm-s-3024-day span.cm-number {color: #a16a94;} - -.cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute {color: #01a252;} -.cm-s-3024-day span.cm-keyword {color: #db2d20;} -.cm-s-3024-day span.cm-string {color: #fded02;} - -.cm-s-3024-day span.cm-variable {color: #01a252;} -.cm-s-3024-day span.cm-variable-2 {color: #01a0e4;} -.cm-s-3024-day span.cm-def {color: #e8bbd0;} -.cm-s-3024-day span.cm-bracket {color: #3a3432;} -.cm-s-3024-day span.cm-tag {color: #db2d20;} -.cm-s-3024-day span.cm-link {color: #a16a94;} -.cm-s-3024-day span.cm-error {background: #db2d20; color: #5c5855;} - -.cm-s-3024-day .CodeMirror-activeline-background {background: #e8f2ff !important;} -.cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} diff --git a/vendor/codemirror/theme/3024-night.css b/vendor/codemirror/theme/3024-night.css deleted file mode 100644 index 2c62e221..00000000 --- a/vendor/codemirror/theme/3024-night.css +++ /dev/null @@ -1,34 +0,0 @@ -/* - - Name: 3024 night - Author: Jan T. Sott (http://github.com/idleberg) - - CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) - Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) - -*/ - -.cm-s-3024-night.CodeMirror {background: #090300; color: #d6d5d4;} -.cm-s-3024-night div.CodeMirror-selected {background: #3a3432 !important;} -.cm-s-3024-night .CodeMirror-gutters {background: #090300; border-right: 0px;} -.cm-s-3024-night .CodeMirror-linenumber {color: #5c5855;} -.cm-s-3024-night .CodeMirror-cursor {border-left: 1px solid #807d7c !important;} - -.cm-s-3024-night span.cm-comment {color: #cdab53;} -.cm-s-3024-night span.cm-atom {color: #a16a94;} -.cm-s-3024-night span.cm-number {color: #a16a94;} - -.cm-s-3024-night span.cm-property, .cm-s-3024-night span.cm-attribute {color: #01a252;} -.cm-s-3024-night span.cm-keyword {color: #db2d20;} -.cm-s-3024-night span.cm-string {color: #fded02;} - -.cm-s-3024-night span.cm-variable {color: #01a252;} -.cm-s-3024-night span.cm-variable-2 {color: #01a0e4;} -.cm-s-3024-night span.cm-def {color: #e8bbd0;} -.cm-s-3024-night span.cm-bracket {color: #d6d5d4;} -.cm-s-3024-night span.cm-tag {color: #db2d20;} -.cm-s-3024-night span.cm-link {color: #a16a94;} -.cm-s-3024-night span.cm-error {background: #db2d20; color: #807d7c;} - -.cm-s-3024-night .CodeMirror-activeline-background {background: #2F2F2F !important;} -.cm-s-3024-night .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} diff --git a/vendor/codemirror/theme/ambiance-mobile.css b/vendor/codemirror/theme/ambiance-mobile.css deleted file mode 100644 index 88d332e1..00000000 --- a/vendor/codemirror/theme/ambiance-mobile.css +++ /dev/null @@ -1,5 +0,0 @@ -.cm-s-ambiance.CodeMirror { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} diff --git a/vendor/codemirror/theme/ambiance.css b/vendor/codemirror/theme/ambiance.css deleted file mode 100644 index 3a54b2a0..00000000 --- a/vendor/codemirror/theme/ambiance.css +++ /dev/null @@ -1,75 +0,0 @@ -/* ambiance theme for codemirror */ - -/* Color scheme */ - -.cm-s-ambiance .cm-keyword { color: #cda869; } -.cm-s-ambiance .cm-atom { color: #CF7EA9; } -.cm-s-ambiance .cm-number { color: #78CF8A; } -.cm-s-ambiance .cm-def { color: #aac6e3; } -.cm-s-ambiance .cm-variable { color: #ffb795; } -.cm-s-ambiance .cm-variable-2 { color: #eed1b3; } -.cm-s-ambiance .cm-variable-3 { color: #faded3; } -.cm-s-ambiance .cm-property { color: #eed1b3; } -.cm-s-ambiance .cm-operator {color: #fa8d6a;} -.cm-s-ambiance .cm-comment { color: #555; font-style:italic; } -.cm-s-ambiance .cm-string { color: #8f9d6a; } -.cm-s-ambiance .cm-string-2 { color: #9d937c; } -.cm-s-ambiance .cm-meta { color: #D2A8A1; } -.cm-s-ambiance .cm-qualifier { color: yellow; } -.cm-s-ambiance .cm-builtin { color: #9999cc; } -.cm-s-ambiance .cm-bracket { color: #24C2C7; } -.cm-s-ambiance .cm-tag { color: #fee4ff } -.cm-s-ambiance .cm-attribute { color: #9B859D; } -.cm-s-ambiance .cm-header {color: blue;} -.cm-s-ambiance .cm-quote { color: #24C2C7; } -.cm-s-ambiance .cm-hr { color: pink; } -.cm-s-ambiance .cm-link { color: #F4C20B; } -.cm-s-ambiance .cm-special { color: #FF9D00; } -.cm-s-ambiance .cm-error { color: #AF2018; } - -.cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; } -.cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; } - -.cm-s-ambiance .CodeMirror-selected { - background: rgba(255, 255, 255, 0.15); -} -.cm-s-ambiance.CodeMirror-focused .CodeMirror-selected { - background: rgba(255, 255, 255, 0.10); -} - -/* Editor styling */ - -.cm-s-ambiance.CodeMirror { - line-height: 1.40em; - font-family: Monaco, Menlo,"Andale Mono","lucida console","Courier New",monospace !important; - color: #E6E1DC; - background-color: #202020; - -webkit-box-shadow: inset 0 0 10px black; - -moz-box-shadow: inset 0 0 10px black; - box-shadow: inset 0 0 10px black; -} - -.cm-s-ambiance .CodeMirror-gutters { - background: #3D3D3D; - border-right: 1px solid #4D4D4D; - box-shadow: 0 10px 20px black; -} - -.cm-s-ambiance .CodeMirror-linenumber { - text-shadow: 0px 1px 1px #4d4d4d; - color: #222; - padding: 0 5px; -} - -.cm-s-ambiance .CodeMirror-lines .CodeMirror-cursor { - border-left: 1px solid #7991E8; -} - -.cm-s-ambiance .CodeMirror-activeline-background { - background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031); -} - -.cm-s-ambiance.CodeMirror, -.cm-s-ambiance .CodeMirror-gutters { - background-image: url("data:image/png;base64,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"); -} diff --git a/vendor/codemirror/theme/base16-dark.css b/vendor/codemirror/theme/base16-dark.css deleted file mode 100644 index 3b7b21c7..00000000 --- a/vendor/codemirror/theme/base16-dark.css +++ /dev/null @@ -1,34 +0,0 @@ -/* - - Name: Base16 Default Dark - Author: Chris Kempson (http://chriskempson.com) - - CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-chrome-devtools) - Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) - -*/ - -.cm-s-base16-dark.CodeMirror {background: #151515; color: #e0e0e0;} -.cm-s-base16-dark div.CodeMirror-selected {background: #202020 !important;} -.cm-s-base16-dark .CodeMirror-gutters {background: #151515; border-right: 0px;} -.cm-s-base16-dark .CodeMirror-linenumber {color: #505050;} -.cm-s-base16-dark .CodeMirror-cursor {border-left: 1px solid #b0b0b0 !important;} - -.cm-s-base16-dark span.cm-comment {color: #8f5536;} -.cm-s-base16-dark span.cm-atom {color: #aa759f;} -.cm-s-base16-dark span.cm-number {color: #aa759f;} - -.cm-s-base16-dark span.cm-property, .cm-s-base16-dark span.cm-attribute {color: #90a959;} -.cm-s-base16-dark span.cm-keyword {color: #ac4142;} -.cm-s-base16-dark span.cm-string {color: #f4bf75;} - -.cm-s-base16-dark span.cm-variable {color: #90a959;} -.cm-s-base16-dark span.cm-variable-2 {color: #6a9fb5;} -.cm-s-base16-dark span.cm-def {color: #d28445;} -.cm-s-base16-dark span.cm-bracket {color: #e0e0e0;} -.cm-s-base16-dark span.cm-tag {color: #ac4142;} -.cm-s-base16-dark span.cm-link {color: #aa759f;} -.cm-s-base16-dark span.cm-error {background: #ac4142; color: #b0b0b0;} - -.cm-s-base16-dark .CodeMirror-activeline-background {background: #2F2F2F !important;} -.cm-s-base16-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} diff --git a/vendor/codemirror/theme/base16-light.css b/vendor/codemirror/theme/base16-light.css deleted file mode 100644 index 5aa4b538..00000000 --- a/vendor/codemirror/theme/base16-light.css +++ /dev/null @@ -1,34 +0,0 @@ -/* - - Name: Base16 Default Light - Author: Chris Kempson (http://chriskempson.com) - - CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-chrome-devtools) - Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) - -*/ - -.cm-s-base16-light.CodeMirror {background: #f5f5f5; color: #202020;} -.cm-s-base16-light div.CodeMirror-selected {background: #e0e0e0 !important;} -.cm-s-base16-light .CodeMirror-gutters {background: #f5f5f5; border-right: 0px;} -.cm-s-base16-light .CodeMirror-linenumber {color: #b0b0b0;} -.cm-s-base16-light .CodeMirror-cursor {border-left: 1px solid #505050 !important;} - -.cm-s-base16-light span.cm-comment {color: #8f5536;} -.cm-s-base16-light span.cm-atom {color: #aa759f;} -.cm-s-base16-light span.cm-number {color: #aa759f;} - -.cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute {color: #90a959;} -.cm-s-base16-light span.cm-keyword {color: #ac4142;} -.cm-s-base16-light span.cm-string {color: #f4bf75;} - -.cm-s-base16-light span.cm-variable {color: #90a959;} -.cm-s-base16-light span.cm-variable-2 {color: #6a9fb5;} -.cm-s-base16-light span.cm-def {color: #d28445;} -.cm-s-base16-light span.cm-bracket {color: #202020;} -.cm-s-base16-light span.cm-tag {color: #ac4142;} -.cm-s-base16-light span.cm-link {color: #aa759f;} -.cm-s-base16-light span.cm-error {background: #ac4142; color: #505050;} - -.cm-s-base16-light .CodeMirror-activeline-background {background: #DDDCDC !important;} -.cm-s-base16-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} diff --git a/vendor/codemirror/theme/blackboard.css b/vendor/codemirror/theme/blackboard.css deleted file mode 100644 index 8b760847..00000000 --- a/vendor/codemirror/theme/blackboard.css +++ /dev/null @@ -1,28 +0,0 @@ -/* Port of TextMate's Blackboard theme */ - -.cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; } -.cm-s-blackboard .CodeMirror-selected { background: #253B76 !important; } -.cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; } -.cm-s-blackboard .CodeMirror-linenumber { color: #888; } -.cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7 !important; } - -.cm-s-blackboard .cm-keyword { color: #FBDE2D; } -.cm-s-blackboard .cm-atom { color: #D8FA3C; } -.cm-s-blackboard .cm-number { color: #D8FA3C; } -.cm-s-blackboard .cm-def { color: #8DA6CE; } -.cm-s-blackboard .cm-variable { color: #FF6400; } -.cm-s-blackboard .cm-operator { color: #FBDE2D;} -.cm-s-blackboard .cm-comment { color: #AEAEAE; } -.cm-s-blackboard .cm-string { color: #61CE3C; } -.cm-s-blackboard .cm-string-2 { color: #61CE3C; } -.cm-s-blackboard .cm-meta { color: #D8FA3C; } -.cm-s-blackboard .cm-builtin { color: #8DA6CE; } -.cm-s-blackboard .cm-tag { color: #8DA6CE; } -.cm-s-blackboard .cm-attribute { color: #8DA6CE; } -.cm-s-blackboard .cm-header { color: #FF6400; } -.cm-s-blackboard .cm-hr { color: #AEAEAE; } -.cm-s-blackboard .cm-link { color: #8DA6CE; } -.cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; } - -.cm-s-blackboard .CodeMirror-activeline-background {background: #3C3636 !important;} -.cm-s-blackboard .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important} \ No newline at end of file diff --git a/vendor/codemirror/theme/cobalt.css b/vendor/codemirror/theme/cobalt.css deleted file mode 100644 index b4a91773..00000000 --- a/vendor/codemirror/theme/cobalt.css +++ /dev/null @@ -1,21 +0,0 @@ -.cm-s-cobalt.CodeMirror { background: #002240; color: white; } -.cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; } -.cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } -.cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; } -.cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white !important; } - -.cm-s-cobalt span.cm-comment { color: #08f; } -.cm-s-cobalt span.cm-atom { color: #845dc4; } -.cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } -.cm-s-cobalt span.cm-keyword { color: #ffee80; } -.cm-s-cobalt span.cm-string { color: #3ad900; } -.cm-s-cobalt span.cm-meta { color: #ff9d00; } -.cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } -.cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; } -.cm-s-cobalt span.cm-bracket { color: #d8d8d8; } -.cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } -.cm-s-cobalt span.cm-link { color: #845dc4; } -.cm-s-cobalt span.cm-error { color: #9d1e15; } - -.cm-s-cobalt .CodeMirror-activeline-background {background: #002D57 !important;} -.cm-s-cobalt .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important} diff --git a/vendor/codemirror/theme/eclipse.css b/vendor/codemirror/theme/eclipse.css deleted file mode 100644 index 317218e3..00000000 --- a/vendor/codemirror/theme/eclipse.css +++ /dev/null @@ -1,23 +0,0 @@ -.cm-s-eclipse span.cm-meta {color: #FF1717;} -.cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } -.cm-s-eclipse span.cm-atom {color: #219;} -.cm-s-eclipse span.cm-number {color: #164;} -.cm-s-eclipse span.cm-def {color: #00f;} -.cm-s-eclipse span.cm-variable {color: black;} -.cm-s-eclipse span.cm-variable-2 {color: #0000C0;} -.cm-s-eclipse span.cm-variable-3 {color: #0000C0;} -.cm-s-eclipse span.cm-property {color: black;} -.cm-s-eclipse span.cm-operator {color: black;} -.cm-s-eclipse span.cm-comment {color: #3F7F5F;} -.cm-s-eclipse span.cm-string {color: #2A00FF;} -.cm-s-eclipse span.cm-string-2 {color: #f50;} -.cm-s-eclipse span.cm-qualifier {color: #555;} -.cm-s-eclipse span.cm-builtin {color: #30a;} -.cm-s-eclipse span.cm-bracket {color: #cc7;} -.cm-s-eclipse span.cm-tag {color: #170;} -.cm-s-eclipse span.cm-attribute {color: #00c;} -.cm-s-eclipse span.cm-link {color: #219;} -.cm-s-eclipse span.cm-error {color: #f00;} - -.cm-s-eclipse .CodeMirror-activeline-background {background: #e8f2ff !important;} -.cm-s-eclipse .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} diff --git a/vendor/codemirror/theme/elegant.css b/vendor/codemirror/theme/elegant.css deleted file mode 100644 index dd7df7b7..00000000 --- a/vendor/codemirror/theme/elegant.css +++ /dev/null @@ -1,13 +0,0 @@ -.cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom {color: #762;} -.cm-s-elegant span.cm-comment {color: #262; font-style: italic; line-height: 1em;} -.cm-s-elegant span.cm-meta {color: #555; font-style: italic; line-height: 1em;} -.cm-s-elegant span.cm-variable {color: black;} -.cm-s-elegant span.cm-variable-2 {color: #b11;} -.cm-s-elegant span.cm-qualifier {color: #555;} -.cm-s-elegant span.cm-keyword {color: #730;} -.cm-s-elegant span.cm-builtin {color: #30a;} -.cm-s-elegant span.cm-link {color: #762;} -.cm-s-elegant span.cm-error {background-color: #fdd;} - -.cm-s-elegant .CodeMirror-activeline-background {background: #e8f2ff !important;} -.cm-s-elegant .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} diff --git a/vendor/codemirror/theme/erlang-dark.css b/vendor/codemirror/theme/erlang-dark.css deleted file mode 100644 index db56b108..00000000 --- a/vendor/codemirror/theme/erlang-dark.css +++ /dev/null @@ -1,30 +0,0 @@ -.cm-s-erlang-dark.CodeMirror { background: #002240; color: white; } -.cm-s-erlang-dark div.CodeMirror-selected { background: #b36539 !important; } -.cm-s-erlang-dark .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } -.cm-s-erlang-dark .CodeMirror-linenumber { color: #d0d0d0; } -.cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white !important; } - -.cm-s-erlang-dark span.cm-atom { color: #f133f1; } -.cm-s-erlang-dark span.cm-attribute { color: #ff80e1; } -.cm-s-erlang-dark span.cm-bracket { color: #ff9d00; } -.cm-s-erlang-dark span.cm-builtin { color: #eaa; } -.cm-s-erlang-dark span.cm-comment { color: #77f; } -.cm-s-erlang-dark span.cm-def { color: #e7a; } -.cm-s-erlang-dark span.cm-keyword { color: #ffee80; } -.cm-s-erlang-dark span.cm-meta { color: #50fefe; } -.cm-s-erlang-dark span.cm-number { color: #ffd0d0; } -.cm-s-erlang-dark span.cm-operator { color: #d55; } -.cm-s-erlang-dark span.cm-property { color: #ccc; } -.cm-s-erlang-dark span.cm-qualifier { color: #ccc; } -.cm-s-erlang-dark span.cm-quote { color: #ccc; } -.cm-s-erlang-dark span.cm-special { color: #ffbbbb; } -.cm-s-erlang-dark span.cm-string { color: #3ad900; } -.cm-s-erlang-dark span.cm-string-2 { color: #ccc; } -.cm-s-erlang-dark span.cm-tag { color: #9effff; } -.cm-s-erlang-dark span.cm-variable { color: #50fe50; } -.cm-s-erlang-dark span.cm-variable-2 { color: #e0e; } -.cm-s-erlang-dark span.cm-variable-3 { color: #ccc; } -.cm-s-erlang-dark span.cm-error { color: #9d1e15; } - -.cm-s-erlang-dark .CodeMirror-activeline-background {background: #013461 !important;} -.cm-s-erlang-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} diff --git a/vendor/codemirror/theme/lesser-dark.css b/vendor/codemirror/theme/lesser-dark.css deleted file mode 100644 index c3255966..00000000 --- a/vendor/codemirror/theme/lesser-dark.css +++ /dev/null @@ -1,47 +0,0 @@ -/* -http://lesscss.org/ dark theme -Ported to CodeMirror by Peter Kroon -*/ -.cm-s-lesser-dark { - line-height: 1.3em; -} -.cm-s-lesser-dark { - font-family: 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', 'Monaco', Courier, monospace !important; -} - -.cm-s-lesser-dark.CodeMirror { background: #262626; color: #EBEFE7; text-shadow: 0 -1px 1px #262626; } -.cm-s-lesser-dark div.CodeMirror-selected {background: #45443B !important;} /* 33322B*/ -.cm-s-lesser-dark .CodeMirror-cursor { border-left: 1px solid white !important; } -.cm-s-lesser-dark pre { padding: 0 8px; }/*editable code holder*/ - -.cm-s-lesser-dark.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/ - -.cm-s-lesser-dark .CodeMirror-gutters { background: #262626; border-right:1px solid #aaa; } -.cm-s-lesser-dark .CodeMirror-linenumber { color: #777; } - -.cm-s-lesser-dark span.cm-keyword { color: #599eff; } -.cm-s-lesser-dark span.cm-atom { color: #C2B470; } -.cm-s-lesser-dark span.cm-number { color: #B35E4D; } -.cm-s-lesser-dark span.cm-def {color: white;} -.cm-s-lesser-dark span.cm-variable { color:#D9BF8C; } -.cm-s-lesser-dark span.cm-variable-2 { color: #669199; } -.cm-s-lesser-dark span.cm-variable-3 { color: white; } -.cm-s-lesser-dark span.cm-property {color: #92A75C;} -.cm-s-lesser-dark span.cm-operator {color: #92A75C;} -.cm-s-lesser-dark span.cm-comment { color: #666; } -.cm-s-lesser-dark span.cm-string { color: #BCD279; } -.cm-s-lesser-dark span.cm-string-2 {color: #f50;} -.cm-s-lesser-dark span.cm-meta { color: #738C73; } -.cm-s-lesser-dark span.cm-qualifier {color: #555;} -.cm-s-lesser-dark span.cm-builtin { color: #ff9e59; } -.cm-s-lesser-dark span.cm-bracket { color: #EBEFE7; } -.cm-s-lesser-dark span.cm-tag { color: #669199; } -.cm-s-lesser-dark span.cm-attribute {color: #00c;} -.cm-s-lesser-dark span.cm-header {color: #a0a;} -.cm-s-lesser-dark span.cm-quote {color: #090;} -.cm-s-lesser-dark span.cm-hr {color: #999;} -.cm-s-lesser-dark span.cm-link {color: #00c;} -.cm-s-lesser-dark span.cm-error { color: #9d1e15; } - -.cm-s-lesser-dark .CodeMirror-activeline-background {background: #3C3A3A !important;} -.cm-s-lesser-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} diff --git a/vendor/codemirror/theme/mbo.css b/vendor/codemirror/theme/mbo.css deleted file mode 100644 index bb52e6d1..00000000 --- a/vendor/codemirror/theme/mbo.css +++ /dev/null @@ -1,37 +0,0 @@ -/* Based on mbonaci's Brackets mbo theme */ - -.cm-s-mbo.CodeMirror {background: #2c2c2c; color: #ffffe9;} -.cm-s-mbo div.CodeMirror-selected {background: #716C62 !important;} -.cm-s-mbo .CodeMirror-gutters {background: #4e4e4e; border-right: 0px;} -.cm-s-mbo .CodeMirror-linenumber {color: #dadada;} -.cm-s-mbo .CodeMirror-cursor {border-left: 1px solid #ffffec !important;} - -.cm-s-mbo span.cm-comment {color: #95958a;} -.cm-s-mbo span.cm-atom {color: #00a8c6;} -.cm-s-mbo span.cm-number {color: #00a8c6;} - -.cm-s-mbo span.cm-property, .cm-s-mbo span.cm-attribute {color: #9ddfe9;} -.cm-s-mbo span.cm-keyword {color: #ffb928;} -.cm-s-mbo span.cm-string {color: #ffcf6c;} - -.cm-s-mbo span.cm-variable {color: #ffffec;} -.cm-s-mbo span.cm-variable-2 {color: #00a8c6;} -.cm-s-mbo span.cm-def {color: #ffffec;} -.cm-s-mbo span.cm-bracket {color: #fffffc; font-weight: bold;} -.cm-s-mbo span.cm-tag {color: #9ddfe9;} -.cm-s-mbo span.cm-link {color: #f54b07;} -.cm-s-mbo span.cm-error {background: #636363; color: #ffffec;} - -.cm-s-mbo .CodeMirror-activeline-background {background: #494b41 !important;} -.cm-s-mbo .CodeMirror-matchingbracket { - text-decoration: underline; - color: #f5e107 !important; - } - -.cm-s-mbo .CodeMirror-matchingtag {background: #4e4e4e;} - -.cm-s-mbo span.cm-searching { - background-color: none; - background: none; - box-shadow: 0 0 0 1px #ffffec; -} diff --git a/vendor/codemirror/theme/mdn-like.css b/vendor/codemirror/theme/mdn-like.css deleted file mode 100644 index c12cb1f9..00000000 --- a/vendor/codemirror/theme/mdn-like.css +++ /dev/null @@ -1,44 +0,0 @@ -/* - MDN-LIKE Theme - Mozilla - Ported to CodeMirror by Peter Kroon - Report bugs/issues here: https://github.com/marijnh/CodeMirror/issues - GitHub: @peterkroon - - The mdn-like theme is inspired on the displayed code examples at: https://developer.mozilla.org/en-US/docs/Web/CSS/animation - -*/ -.cm-s-mdn-like.CodeMirror { color: #999; font-family: monospace; background-color: #fff; } -.cm-s-mdn-like .CodeMirror-selected { background: #cfc !important; } - -.cm-s-mdn-like .CodeMirror-gutters { background: #f8f8f8; border-left: 6px solid rgba(0,83,159,0.65); color: #333; } -.cm-s-mdn-like .CodeMirror-linenumber { color: #aaa; margin-left: 3px; } -div.cm-s-mdn-like .CodeMirror-cursor { border-left: 2px solid #222; } - -.cm-s-mdn-like .cm-keyword { color: #6262FF; } -.cm-s-mdn-like .cm-atom { color: #F90; } -.cm-s-mdn-like .cm-number { color: #ca7841; } -.cm-s-mdn-like .cm-def { color: #8DA6CE; } -.cm-s-mdn-like span.cm-variable-2, .cm-s-mdn-like span.cm-tag { color: #690; } -.cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def { color: #07a; } - -.cm-s-mdn-like .cm-variable { color: #07a; } -.cm-s-mdn-like .cm-property { color: #905; } -.cm-s-mdn-like .cm-qualifier { color: #690; } - -.cm-s-mdn-like .cm-operator { color: #cda869; } -.cm-s-mdn-like .cm-comment { color:#777; font-weight:normal; } -.cm-s-mdn-like .cm-string { color:#07a; font-style:italic; } -.cm-s-mdn-like .cm-string-2 { color:#bd6b18; } /*?*/ -.cm-s-mdn-like .cm-meta { color: #000; } /*?*/ -.cm-s-mdn-like .cm-builtin { color: #9B7536; } /*?*/ -.cm-s-mdn-like .cm-tag { color: #997643; } -.cm-s-mdn-like .cm-attribute { color: #d6bb6d; } /*?*/ -.cm-s-mdn-like .cm-header { color: #FF6400; } -.cm-s-mdn-like .cm-hr { color: #AEAEAE; } -.cm-s-mdn-like .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } -.cm-s-mdn-like .cm-error { border-bottom: 1px solid red; } - -div.cm-s-mdn-like .CodeMirror-activeline-background {background: #efefff;} -div.cm-s-mdn-like span.CodeMirror-matchingbracket {outline:1px solid grey; color: inherit;} - -.cm-s-mdn-like.CodeMirror { background-image: url(data:image/png;base64,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); } diff --git a/vendor/codemirror/theme/midnight.css b/vendor/codemirror/theme/midnight.css deleted file mode 100644 index 468d87da..00000000 --- a/vendor/codemirror/theme/midnight.css +++ /dev/null @@ -1,43 +0,0 @@ -/* Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */ - -/**/ -.cm-s-midnight span.CodeMirror-matchhighlight { background: #494949; } -.cm-s-midnight.CodeMirror-focused span.CodeMirror-matchhighlight { background: #314D67 !important; } - -/**/ -.cm-s-midnight .CodeMirror-activeline-background {background: #253540 !important;} - -.cm-s-midnight.CodeMirror { - background: #0F192A; - color: #D1EDFF; -} - -.cm-s-midnight.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;} - -.cm-s-midnight div.CodeMirror-selected {background: #314D67 !important;} -.cm-s-midnight .CodeMirror-gutters {background: #0F192A; border-right: 1px solid;} -.cm-s-midnight .CodeMirror-linenumber {color: #D0D0D0;} -.cm-s-midnight .CodeMirror-cursor { - border-left: 1px solid #F8F8F0 !important; -} - -.cm-s-midnight span.cm-comment {color: #428BDD;} -.cm-s-midnight span.cm-atom {color: #AE81FF;} -.cm-s-midnight span.cm-number {color: #D1EDFF;} - -.cm-s-midnight span.cm-property, .cm-s-midnight span.cm-attribute {color: #A6E22E;} -.cm-s-midnight span.cm-keyword {color: #E83737;} -.cm-s-midnight span.cm-string {color: #1DC116;} - -.cm-s-midnight span.cm-variable {color: #FFAA3E;} -.cm-s-midnight span.cm-variable-2 {color: #FFAA3E;} -.cm-s-midnight span.cm-def {color: #4DD;} -.cm-s-midnight span.cm-bracket {color: #D1EDFF;} -.cm-s-midnight span.cm-tag {color: #449;} -.cm-s-midnight span.cm-link {color: #AE81FF;} -.cm-s-midnight span.cm-error {background: #F92672; color: #F8F8F0;} - -.cm-s-midnight .CodeMirror-matchingbracket { - text-decoration: underline; - color: white !important; -} diff --git a/vendor/codemirror/theme/monokai.css b/vendor/codemirror/theme/monokai.css deleted file mode 100644 index 7ac601a1..00000000 --- a/vendor/codemirror/theme/monokai.css +++ /dev/null @@ -1,29 +0,0 @@ -/* Based on Sublime Text's Monokai theme */ - -.cm-s-monokai.CodeMirror {background: #272822; color: #f8f8f2;} -.cm-s-monokai div.CodeMirror-selected {background: #49483E !important;} -.cm-s-monokai .CodeMirror-gutters {background: #272822; border-right: 0px;} -.cm-s-monokai .CodeMirror-linenumber {color: #d0d0d0;} -.cm-s-monokai .CodeMirror-cursor {border-left: 1px solid #f8f8f0 !important;} - -.cm-s-monokai span.cm-comment {color: #75715e;} -.cm-s-monokai span.cm-atom {color: #ae81ff;} -.cm-s-monokai span.cm-number {color: #ae81ff;} - -.cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute {color: #a6e22e;} -.cm-s-monokai span.cm-keyword {color: #f92672;} -.cm-s-monokai span.cm-string {color: #e6db74;} - -.cm-s-monokai span.cm-variable {color: #a6e22e;} -.cm-s-monokai span.cm-variable-2 {color: #9effff;} -.cm-s-monokai span.cm-def {color: #fd971f;} -.cm-s-monokai span.cm-bracket {color: #f8f8f2;} -.cm-s-monokai span.cm-tag {color: #f92672;} -.cm-s-monokai span.cm-link {color: #ae81ff;} -.cm-s-monokai span.cm-error {background: #f92672; color: #f8f8f0;} - -.cm-s-monokai .CodeMirror-activeline-background {background: #373831 !important;} -.cm-s-monokai .CodeMirror-matchingbracket { - text-decoration: underline; - color: white !important; -} diff --git a/vendor/codemirror/theme/neat.css b/vendor/codemirror/theme/neat.css deleted file mode 100644 index 115083b8..00000000 --- a/vendor/codemirror/theme/neat.css +++ /dev/null @@ -1,12 +0,0 @@ -.cm-s-neat span.cm-comment { color: #a86; } -.cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } -.cm-s-neat span.cm-string { color: #a22; } -.cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } -.cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } -.cm-s-neat span.cm-variable { color: black; } -.cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } -.cm-s-neat span.cm-meta {color: #555;} -.cm-s-neat span.cm-link { color: #3a3; } - -.cm-s-neat .CodeMirror-activeline-background {background: #e8f2ff !important;} -.cm-s-neat .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} diff --git a/vendor/codemirror/theme/night.css b/vendor/codemirror/theme/night.css deleted file mode 100644 index 016e55ee..00000000 --- a/vendor/codemirror/theme/night.css +++ /dev/null @@ -1,24 +0,0 @@ -/* Loosely based on the Midnight Textmate theme */ - -.cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; } -.cm-s-night div.CodeMirror-selected { background: #447 !important; } -.cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } -.cm-s-night .CodeMirror-linenumber { color: #f8f8f8; } -.cm-s-night .CodeMirror-cursor { border-left: 1px solid white !important; } - -.cm-s-night span.cm-comment { color: #6900a1; } -.cm-s-night span.cm-atom { color: #845dc4; } -.cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; } -.cm-s-night span.cm-keyword { color: #599eff; } -.cm-s-night span.cm-string { color: #37f14a; } -.cm-s-night span.cm-meta { color: #7678e2; } -.cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; } -.cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; } -.cm-s-night span.cm-bracket { color: #8da6ce; } -.cm-s-night span.cm-comment { color: #6900a1; } -.cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; } -.cm-s-night span.cm-link { color: #845dc4; } -.cm-s-night span.cm-error { color: #9d1e15; } - -.cm-s-night .CodeMirror-activeline-background {background: #1C005A !important;} -.cm-s-night .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} diff --git a/vendor/codemirror/theme/paraiso-dark.css b/vendor/codemirror/theme/paraiso-dark.css deleted file mode 100644 index ddefc55d..00000000 --- a/vendor/codemirror/theme/paraiso-dark.css +++ /dev/null @@ -1,34 +0,0 @@ -/* - - Name: Paraíso (Dark) - Author: Jan T. Sott - - Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror) - Inspired by the art of Rubens LP (http://www.rubenslp.com.br) - -*/ - -.cm-s-paraiso-dark.CodeMirror {background: #2f1e2e; color: #b9b6b0;} -.cm-s-paraiso-dark div.CodeMirror-selected {background: #41323f !important;} -.cm-s-paraiso-dark .CodeMirror-gutters {background: #2f1e2e; border-right: 0px;} -.cm-s-paraiso-dark .CodeMirror-linenumber {color: #776e71;} -.cm-s-paraiso-dark .CodeMirror-cursor {border-left: 1px solid #8d8687 !important;} - -.cm-s-paraiso-dark span.cm-comment {color: #e96ba8;} -.cm-s-paraiso-dark span.cm-atom {color: #815ba4;} -.cm-s-paraiso-dark span.cm-number {color: #815ba4;} - -.cm-s-paraiso-dark span.cm-property, .cm-s-paraiso-dark span.cm-attribute {color: #48b685;} -.cm-s-paraiso-dark span.cm-keyword {color: #ef6155;} -.cm-s-paraiso-dark span.cm-string {color: #fec418;} - -.cm-s-paraiso-dark span.cm-variable {color: #48b685;} -.cm-s-paraiso-dark span.cm-variable-2 {color: #06b6ef;} -.cm-s-paraiso-dark span.cm-def {color: #f99b15;} -.cm-s-paraiso-dark span.cm-bracket {color: #b9b6b0;} -.cm-s-paraiso-dark span.cm-tag {color: #ef6155;} -.cm-s-paraiso-dark span.cm-link {color: #815ba4;} -.cm-s-paraiso-dark span.cm-error {background: #ef6155; color: #8d8687;} - -.cm-s-paraiso-dark .CodeMirror-activeline-background {background: #4D344A !important;} -.cm-s-paraiso-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} diff --git a/vendor/codemirror/theme/paraiso-light.css b/vendor/codemirror/theme/paraiso-light.css deleted file mode 100644 index 8afb14be..00000000 --- a/vendor/codemirror/theme/paraiso-light.css +++ /dev/null @@ -1,34 +0,0 @@ -/* - - Name: Paraíso (Light) - Author: Jan T. Sott - - Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror) - Inspired by the art of Rubens LP (http://www.rubenslp.com.br) - -*/ - -.cm-s-paraiso-light.CodeMirror {background: #e7e9db; color: #41323f;} -.cm-s-paraiso-light div.CodeMirror-selected {background: #b9b6b0 !important;} -.cm-s-paraiso-light .CodeMirror-gutters {background: #e7e9db; border-right: 0px;} -.cm-s-paraiso-light .CodeMirror-linenumber {color: #8d8687;} -.cm-s-paraiso-light .CodeMirror-cursor {border-left: 1px solid #776e71 !important;} - -.cm-s-paraiso-light span.cm-comment {color: #e96ba8;} -.cm-s-paraiso-light span.cm-atom {color: #815ba4;} -.cm-s-paraiso-light span.cm-number {color: #815ba4;} - -.cm-s-paraiso-light span.cm-property, .cm-s-paraiso-light span.cm-attribute {color: #48b685;} -.cm-s-paraiso-light span.cm-keyword {color: #ef6155;} -.cm-s-paraiso-light span.cm-string {color: #fec418;} - -.cm-s-paraiso-light span.cm-variable {color: #48b685;} -.cm-s-paraiso-light span.cm-variable-2 {color: #06b6ef;} -.cm-s-paraiso-light span.cm-def {color: #f99b15;} -.cm-s-paraiso-light span.cm-bracket {color: #41323f;} -.cm-s-paraiso-light span.cm-tag {color: #ef6155;} -.cm-s-paraiso-light span.cm-link {color: #815ba4;} -.cm-s-paraiso-light span.cm-error {background: #ef6155; color: #776e71;} - -.cm-s-paraiso-light .CodeMirror-activeline-background {background: #CFD1C4 !important;} -.cm-s-paraiso-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} diff --git a/vendor/codemirror/theme/pastel-on-dark.css b/vendor/codemirror/theme/pastel-on-dark.css deleted file mode 100644 index df95699a..00000000 --- a/vendor/codemirror/theme/pastel-on-dark.css +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Pastel On Dark theme ported from ACE editor - * @license MIT - * @copyright AtomicPages LLC 2014 - * @author Dennis Thompson, AtomicPages LLC - * @version 1.1 - * @source https://github.com/atomicpages/codemirror-pastel-on-dark-theme - */ - -.cm-s-pastel-on-dark.CodeMirror { - background: #2c2827; - color: #8F938F; - line-height: 1.5; - font-family: consolas, Courier, monospace; - font-size: 14px; -} -.cm-s-pastel-on-dark div.CodeMirror-selected { background: rgba(221,240,255,0.2) !important; } -.cm-s-pastel-on-dark .CodeMirror-gutters { - background: #34302f; - border-right: 0px; - padding: 0 3px; -} -.cm-s-pastel-on-dark .CodeMirror-linenumber { color: #8F938F; } -.cm-s-pastel-on-dark .CodeMirror-cursor { border-left: 1px solid #A7A7A7 !important; } -.cm-s-pastel-on-dark span.cm-comment { color: #A6C6FF; } -.cm-s-pastel-on-dark span.cm-atom { color: #DE8E30; } -.cm-s-pastel-on-dark span.cm-number { color: #CCCCCC; } -.cm-s-pastel-on-dark span.cm-property { color: #8F938F; } -.cm-s-pastel-on-dark span.cm-attribute { color: #a6e22e; } -.cm-s-pastel-on-dark span.cm-keyword { color: #AEB2F8; } -.cm-s-pastel-on-dark span.cm-string { color: #66A968; } -.cm-s-pastel-on-dark span.cm-variable { color: #AEB2F8; } -.cm-s-pastel-on-dark span.cm-variable-2 { color: #BEBF55; } -.cm-s-pastel-on-dark span.cm-variable-3 { color: #DE8E30; } -.cm-s-pastel-on-dark span.cm-def { color: #757aD8; } -.cm-s-pastel-on-dark span.cm-bracket { color: #f8f8f2; } -.cm-s-pastel-on-dark span.cm-tag { color: #C1C144; } -.cm-s-pastel-on-dark span.cm-link { color: #ae81ff; } -.cm-s-pastel-on-dark span.cm-qualifier,.cm-s-pastel-on-dark span.cm-builtin { color: #C1C144; } -.cm-s-pastel-on-dark span.cm-error { - background: #757aD8; - color: #f8f8f0; -} -.cm-s-pastel-on-dark .CodeMirror-activeline-background { background: rgba(255, 255, 255, 0.031) !important; } -.cm-s-pastel-on-dark .CodeMirror-matchingbracket { - border: 1px solid rgba(255,255,255,0.25); - color: #8F938F !important; - margin: -1px -1px 0 -1px; -} diff --git a/vendor/codemirror/theme/rubyblue.css b/vendor/codemirror/theme/rubyblue.css deleted file mode 100644 index b556139d..00000000 --- a/vendor/codemirror/theme/rubyblue.css +++ /dev/null @@ -1,23 +0,0 @@ -.cm-s-rubyblue { font-family: Trebuchet, Verdana, sans-serif; } /* - customized editor font - */ - -.cm-s-rubyblue.CodeMirror { background: #112435; color: white; } -.cm-s-rubyblue div.CodeMirror-selected { background: #38566F !important; } -.cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; } -.cm-s-rubyblue .CodeMirror-linenumber { color: white; } -.cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white !important; } - -.cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; } -.cm-s-rubyblue span.cm-atom { color: #F4C20B; } -.cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; } -.cm-s-rubyblue span.cm-keyword { color: #F0F; } -.cm-s-rubyblue span.cm-string { color: #F08047; } -.cm-s-rubyblue span.cm-meta { color: #F0F; } -.cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; } -.cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def { color: white; } -.cm-s-rubyblue span.cm-bracket { color: #F0F; } -.cm-s-rubyblue span.cm-link { color: #F4C20B; } -.cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; } -.cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; } -.cm-s-rubyblue span.cm-error { color: #AF2018; } - -.cm-s-rubyblue .CodeMirror-activeline-background {background: #173047 !important;} diff --git a/vendor/codemirror/theme/solarized.css b/vendor/codemirror/theme/solarized.css deleted file mode 100644 index 9c2e9148..00000000 --- a/vendor/codemirror/theme/solarized.css +++ /dev/null @@ -1,181 +0,0 @@ -/* -Solarized theme for code-mirror -http://ethanschoonover.com/solarized -*/ - -/* -Solarized color pallet -http://ethanschoonover.com/solarized/img/solarized-palette.png -*/ - -.solarized.base03 { color: #002b36; } -.solarized.base02 { color: #073642; } -.solarized.base01 { color: #586e75; } -.solarized.base00 { color: #657b83; } -.solarized.base0 { color: #839496; } -.solarized.base1 { color: #93a1a1; } -.solarized.base2 { color: #eee8d5; } -.solarized.base3 { color: #fdf6e3; } -.solarized.solar-yellow { color: #b58900; } -.solarized.solar-orange { color: #cb4b16; } -.solarized.solar-red { color: #dc322f; } -.solarized.solar-magenta { color: #d33682; } -.solarized.solar-violet { color: #6c71c4; } -.solarized.solar-blue { color: #268bd2; } -.solarized.solar-cyan { color: #2aa198; } -.solarized.solar-green { color: #859900; } - -/* Color scheme for code-mirror */ - -.cm-s-solarized { - line-height: 1.45em; - font-family: Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace !important; - color-profile: sRGB; - rendering-intent: auto; -} -.cm-s-solarized.cm-s-dark { - color: #839496; - background-color: #002b36; - text-shadow: #002b36 0 1px; -} -.cm-s-solarized.cm-s-light { - background-color: #fdf6e3; - color: #657b83; - text-shadow: #eee8d5 0 1px; -} - -.cm-s-solarized .CodeMirror-widget { - text-shadow: none; -} - - -.cm-s-solarized .cm-keyword { color: #cb4b16 } -.cm-s-solarized .cm-atom { color: #d33682; } -.cm-s-solarized .cm-number { color: #d33682; } -.cm-s-solarized .cm-def { color: #2aa198; } - -.cm-s-solarized .cm-variable { color: #268bd2; } -.cm-s-solarized .cm-variable-2 { color: #b58900; } -.cm-s-solarized .cm-variable-3 { color: #6c71c4; } - -.cm-s-solarized .cm-property { color: #2aa198; } -.cm-s-solarized .cm-operator {color: #6c71c4;} - -.cm-s-solarized .cm-comment { color: #586e75; font-style:italic; } - -.cm-s-solarized .cm-string { color: #859900; } -.cm-s-solarized .cm-string-2 { color: #b58900; } - -.cm-s-solarized .cm-meta { color: #859900; } -.cm-s-solarized .cm-qualifier { color: #b58900; } -.cm-s-solarized .cm-builtin { color: #d33682; } -.cm-s-solarized .cm-bracket { color: #cb4b16; } -.cm-s-solarized .CodeMirror-matchingbracket { color: #859900; } -.cm-s-solarized .CodeMirror-nonmatchingbracket { color: #dc322f; } -.cm-s-solarized .cm-tag { color: #93a1a1 } -.cm-s-solarized .cm-attribute { color: #2aa198; } -.cm-s-solarized .cm-header { color: #586e75; } -.cm-s-solarized .cm-quote { color: #93a1a1; } -.cm-s-solarized .cm-hr { - color: transparent; - border-top: 1px solid #586e75; - display: block; -} -.cm-s-solarized .cm-link { color: #93a1a1; cursor: pointer; } -.cm-s-solarized .cm-special { color: #6c71c4; } -.cm-s-solarized .cm-em { - color: #999; - text-decoration: underline; - text-decoration-style: dotted; -} -.cm-s-solarized .cm-strong { color: #eee; } -.cm-s-solarized .cm-tab:before { - content: "➤"; /*visualize tab character*/ - color: #586e75; - position:absolute; -} -.cm-s-solarized .cm-error, -.cm-s-solarized .cm-invalidchar { - color: #586e75; - border-bottom: 1px dotted #dc322f; -} - -.cm-s-solarized.cm-s-dark .CodeMirror-selected { - background: #073642; -} - -.cm-s-solarized.cm-s-light .CodeMirror-selected { - background: #eee8d5; -} - -/* Editor styling */ - - - -/* Little shadow on the view-port of the buffer view */ -.cm-s-solarized.CodeMirror { - -moz-box-shadow: inset 7px 0 12px -6px #000; - -webkit-box-shadow: inset 7px 0 12px -6px #000; - box-shadow: inset 7px 0 12px -6px #000; -} - -/* Gutter border and some shadow from it */ -.cm-s-solarized .CodeMirror-gutters { - padding: 0 15px 0 10px; - box-shadow: 0 10px 20px black; - border-right: 1px solid; -} - -/* Gutter colors and line number styling based of color scheme (dark / light) */ - -/* Dark */ -.cm-s-solarized.cm-s-dark .CodeMirror-gutters { - background-color: #073642; - border-color: #00232c; -} - -.cm-s-solarized.cm-s-dark .CodeMirror-linenumber { - text-shadow: #021014 0 -1px; -} - -/* Light */ -.cm-s-solarized.cm-s-light .CodeMirror-gutters { - background-color: #eee8d5; - border-color: #eee8d5; -} - -/* Common */ -.cm-s-solarized .CodeMirror-linenumber { - color: #586e75; -} - -.cm-s-solarized .CodeMirror-gutter .CodeMirror-gutter-text { - color: #586e75; -} - -.cm-s-solarized .CodeMirror-lines { - padding-left: 5px; -} - -.cm-s-solarized .CodeMirror-lines .CodeMirror-cursor { - border-left: 1px solid #819090; -} - -/* -Active line. Negative margin compensates left padding of the text in the -view-port -*/ -.cm-s-solarized.cm-s-dark .CodeMirror-activeline-background { - background: rgba(255, 255, 255, 0.10); -} -.cm-s-solarized.cm-s-light .CodeMirror-activeline-background { - background: rgba(0, 0, 0, 0.10); -} - -/* -View-port and gutter both get little noise background to give it a real feel. -*/ -.cm-s-solarized.CodeMirror, -.cm-s-solarized .CodeMirror-gutters { - background-image: url("data:image/png;base64,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"); -} diff --git a/vendor/codemirror/theme/the-matrix.css b/vendor/codemirror/theme/the-matrix.css deleted file mode 100644 index 0c3704a6..00000000 --- a/vendor/codemirror/theme/the-matrix.css +++ /dev/null @@ -1,26 +0,0 @@ -.cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; } -.cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D !important; } -.cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; } -.cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; } -.cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00 !important; } - -.cm-s-the-matrix span.cm-keyword {color: #008803; font-weight: bold;} -.cm-s-the-matrix span.cm-atom {color: #3FF;} -.cm-s-the-matrix span.cm-number {color: #FFB94F;} -.cm-s-the-matrix span.cm-def {color: #99C;} -.cm-s-the-matrix span.cm-variable {color: #F6C;} -.cm-s-the-matrix span.cm-variable-2 {color: #C6F;} -.cm-s-the-matrix span.cm-variable-3 {color: #96F;} -.cm-s-the-matrix span.cm-property {color: #62FFA0;} -.cm-s-the-matrix span.cm-operator {color: #999} -.cm-s-the-matrix span.cm-comment {color: #CCCCCC;} -.cm-s-the-matrix span.cm-string {color: #39C;} -.cm-s-the-matrix span.cm-meta {color: #C9F;} -.cm-s-the-matrix span.cm-qualifier {color: #FFF700;} -.cm-s-the-matrix span.cm-builtin {color: #30a;} -.cm-s-the-matrix span.cm-bracket {color: #cc7;} -.cm-s-the-matrix span.cm-tag {color: #FFBD40;} -.cm-s-the-matrix span.cm-attribute {color: #FFF700;} -.cm-s-the-matrix span.cm-error {color: #FF0000;} - -.cm-s-the-matrix .CodeMirror-activeline-background {background: #040;} diff --git a/vendor/codemirror/theme/tomorrow-night-eighties.css b/vendor/codemirror/theme/tomorrow-night-eighties.css deleted file mode 100644 index 85c2a4a7..00000000 --- a/vendor/codemirror/theme/tomorrow-night-eighties.css +++ /dev/null @@ -1,34 +0,0 @@ -/* - - Name: Tomorrow Night - Eighties - Author: Chris Kempson - - CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) - Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) - -*/ - -.cm-s-tomorrow-night-eighties.CodeMirror {background: #000000; color: #CCCCCC;} -.cm-s-tomorrow-night-eighties div.CodeMirror-selected {background: #2D2D2D !important;} -.cm-s-tomorrow-night-eighties .CodeMirror-gutters {background: #000000; border-right: 0px;} -.cm-s-tomorrow-night-eighties .CodeMirror-linenumber {color: #515151;} -.cm-s-tomorrow-night-eighties .CodeMirror-cursor {border-left: 1px solid #6A6A6A !important;} - -.cm-s-tomorrow-night-eighties span.cm-comment {color: #d27b53;} -.cm-s-tomorrow-night-eighties span.cm-atom {color: #a16a94;} -.cm-s-tomorrow-night-eighties span.cm-number {color: #a16a94;} - -.cm-s-tomorrow-night-eighties span.cm-property, .cm-s-tomorrow-night-eighties span.cm-attribute {color: #99cc99;} -.cm-s-tomorrow-night-eighties span.cm-keyword {color: #f2777a;} -.cm-s-tomorrow-night-eighties span.cm-string {color: #ffcc66;} - -.cm-s-tomorrow-night-eighties span.cm-variable {color: #99cc99;} -.cm-s-tomorrow-night-eighties span.cm-variable-2 {color: #6699cc;} -.cm-s-tomorrow-night-eighties span.cm-def {color: #f99157;} -.cm-s-tomorrow-night-eighties span.cm-bracket {color: #CCCCCC;} -.cm-s-tomorrow-night-eighties span.cm-tag {color: #f2777a;} -.cm-s-tomorrow-night-eighties span.cm-link {color: #a16a94;} -.cm-s-tomorrow-night-eighties span.cm-error {background: #f2777a; color: #6A6A6A;} - -.cm-s-tomorrow-night-eighties .CodeMirror-activeline-background {background: #343600 !important;} -.cm-s-tomorrow-night-eighties .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} diff --git a/vendor/codemirror/theme/twilight.css b/vendor/codemirror/theme/twilight.css deleted file mode 100644 index 19d6abad..00000000 --- a/vendor/codemirror/theme/twilight.css +++ /dev/null @@ -1,28 +0,0 @@ -.cm-s-twilight.CodeMirror { background: #141414; color: #f7f7f7; } /**/ -.cm-s-twilight .CodeMirror-selected { background: #323232 !important; } /**/ - -.cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px solid #aaa; } -.cm-s-twilight .CodeMirror-linenumber { color: #aaa; } -.cm-s-twilight .CodeMirror-cursor { border-left: 1px solid white !important; } - -.cm-s-twilight .cm-keyword { color: #f9ee98; } /**/ -.cm-s-twilight .cm-atom { color: #FC0; } -.cm-s-twilight .cm-number { color: #ca7841; } /**/ -.cm-s-twilight .cm-def { color: #8DA6CE; } -.cm-s-twilight span.cm-variable-2, .cm-s-twilight span.cm-tag { color: #607392; } /**/ -.cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def { color: #607392; } /**/ -.cm-s-twilight .cm-operator { color: #cda869; } /**/ -.cm-s-twilight .cm-comment { color:#777; font-style:italic; font-weight:normal; } /**/ -.cm-s-twilight .cm-string { color:#8f9d6a; font-style:italic; } /**/ -.cm-s-twilight .cm-string-2 { color:#bd6b18 } /*?*/ -.cm-s-twilight .cm-meta { background-color:#141414; color:#f7f7f7; } /*?*/ -.cm-s-twilight .cm-builtin { color: #cda869; } /*?*/ -.cm-s-twilight .cm-tag { color: #997643; } /**/ -.cm-s-twilight .cm-attribute { color: #d6bb6d; } /*?*/ -.cm-s-twilight .cm-header { color: #FF6400; } -.cm-s-twilight .cm-hr { color: #AEAEAE; } -.cm-s-twilight .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } /**/ -.cm-s-twilight .cm-error { border-bottom: 1px solid red; } - -.cm-s-twilight .CodeMirror-activeline-background {background: #27282E !important;} -.cm-s-twilight .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} diff --git a/vendor/codemirror/theme/vibrant-ink.css b/vendor/codemirror/theme/vibrant-ink.css deleted file mode 100644 index 0206225b..00000000 --- a/vendor/codemirror/theme/vibrant-ink.css +++ /dev/null @@ -1,30 +0,0 @@ -/* Taken from the popular Visual Studio Vibrant Ink Schema */ - -.cm-s-vibrant-ink.CodeMirror { background: black; color: white; } -.cm-s-vibrant-ink .CodeMirror-selected { background: #35493c !important; } - -.cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } -.cm-s-vibrant-ink .CodeMirror-linenumber { color: #d0d0d0; } -.cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white !important; } - -.cm-s-vibrant-ink .cm-keyword { color: #CC7832; } -.cm-s-vibrant-ink .cm-atom { color: #FC0; } -.cm-s-vibrant-ink .cm-number { color: #FFEE98; } -.cm-s-vibrant-ink .cm-def { color: #8DA6CE; } -.cm-s-vibrant-ink span.cm-variable-2, .cm-s-vibrant span.cm-tag { color: #FFC66D } -.cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def { color: #FFC66D } -.cm-s-vibrant-ink .cm-operator { color: #888; } -.cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; } -.cm-s-vibrant-ink .cm-string { color: #A5C25C } -.cm-s-vibrant-ink .cm-string-2 { color: red } -.cm-s-vibrant-ink .cm-meta { color: #D8FA3C; } -.cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; } -.cm-s-vibrant-ink .cm-tag { color: #8DA6CE; } -.cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; } -.cm-s-vibrant-ink .cm-header { color: #FF6400; } -.cm-s-vibrant-ink .cm-hr { color: #AEAEAE; } -.cm-s-vibrant-ink .cm-link { color: blue; } -.cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; } - -.cm-s-vibrant-ink .CodeMirror-activeline-background {background: #27282E !important;} -.cm-s-vibrant-ink .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} diff --git a/vendor/codemirror/theme/xq-dark.css b/vendor/codemirror/theme/xq-dark.css deleted file mode 100644 index 4a0b2138..00000000 --- a/vendor/codemirror/theme/xq-dark.css +++ /dev/null @@ -1,49 +0,0 @@ -/* -Copyright (C) 2011 by MarkLogic Corporation -Author: Mike Brevoort - -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. -*/ -.cm-s-xq-dark.CodeMirror { background: #0a001f; color: #f8f8f8; } -.cm-s-xq-dark .CodeMirror-selected { background: #27007A !important; } -.cm-s-xq-dark .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } -.cm-s-xq-dark .CodeMirror-linenumber { color: #f8f8f8; } -.cm-s-xq-dark .CodeMirror-cursor { border-left: 1px solid white !important; } - -.cm-s-xq-dark span.cm-keyword {color: #FFBD40;} -.cm-s-xq-dark span.cm-atom {color: #6C8CD5;} -.cm-s-xq-dark span.cm-number {color: #164;} -.cm-s-xq-dark span.cm-def {color: #FFF; text-decoration:underline;} -.cm-s-xq-dark span.cm-variable {color: #FFF;} -.cm-s-xq-dark span.cm-variable-2 {color: #EEE;} -.cm-s-xq-dark span.cm-variable-3 {color: #DDD;} -.cm-s-xq-dark span.cm-property {} -.cm-s-xq-dark span.cm-operator {} -.cm-s-xq-dark span.cm-comment {color: gray;} -.cm-s-xq-dark span.cm-string {color: #9FEE00;} -.cm-s-xq-dark span.cm-meta {color: yellow;} -.cm-s-xq-dark span.cm-qualifier {color: #FFF700;} -.cm-s-xq-dark span.cm-builtin {color: #30a;} -.cm-s-xq-dark span.cm-bracket {color: #cc7;} -.cm-s-xq-dark span.cm-tag {color: #FFBD40;} -.cm-s-xq-dark span.cm-attribute {color: #FFF700;} -.cm-s-xq-dark span.cm-error {color: #f00;} - -.cm-s-xq-dark .CodeMirror-activeline-background {background: #27282E !important;} -.cm-s-xq-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} \ No newline at end of file diff --git a/vendor/codemirror/theme/xq-light.css b/vendor/codemirror/theme/xq-light.css deleted file mode 100644 index 20b5c796..00000000 --- a/vendor/codemirror/theme/xq-light.css +++ /dev/null @@ -1,43 +0,0 @@ -/* -Copyright (C) 2011 by MarkLogic Corporation -Author: Mike Brevoort - -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. -*/ -.cm-s-xq-light span.cm-keyword {line-height: 1em; font-weight: bold; color: #5A5CAD; } -.cm-s-xq-light span.cm-atom {color: #6C8CD5;} -.cm-s-xq-light span.cm-number {color: #164;} -.cm-s-xq-light span.cm-def {text-decoration:underline;} -.cm-s-xq-light span.cm-variable {color: black; } -.cm-s-xq-light span.cm-variable-2 {color:black;} -.cm-s-xq-light span.cm-variable-3 {color: black; } -.cm-s-xq-light span.cm-property {} -.cm-s-xq-light span.cm-operator {} -.cm-s-xq-light span.cm-comment {color: #0080FF; font-style: italic;} -.cm-s-xq-light span.cm-string {color: red;} -.cm-s-xq-light span.cm-meta {color: yellow;} -.cm-s-xq-light span.cm-qualifier {color: grey} -.cm-s-xq-light span.cm-builtin {color: #7EA656;} -.cm-s-xq-light span.cm-bracket {color: #cc7;} -.cm-s-xq-light span.cm-tag {color: #3F7F7F;} -.cm-s-xq-light span.cm-attribute {color: #7F007F;} -.cm-s-xq-light span.cm-error {color: #f00;} - -.cm-s-xq-light .CodeMirror-activeline-background {background: #e8f2ff !important;} -.cm-s-xq-light .CodeMirror-matchingbracket {outline:1px solid grey;color:black !important;background:yellow;} \ No newline at end of file diff --git a/vendor/json-sans-eval-min/.bower.json b/vendor/json-sans-eval-min/.bower.json deleted file mode 100644 index 15185603..00000000 --- a/vendor/json-sans-eval-min/.bower.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "json-sans-eval-min", - "_cacheHeaders": { - "Last-Modified": "Tue, 02 Jun 2015 00:26:45 GMT", - "Content-Length": "1719", - "Content-Type": "application/javascript; charset=utf-8" - }, - "main": "index.js", - "_source": "http://kjur.github.io/jsjws/ext/json-sans-eval-min.js", - "_target": "*", - "_originalSource": "http://kjur.github.io/jsjws/ext/json-sans-eval-min.js" -} \ No newline at end of file diff --git a/vendor/json-sans-eval-min/index.js b/vendor/json-sans-eval-min/index.js deleted file mode 100644 index 23f7a9c3..00000000 --- a/vendor/json-sans-eval-min/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval - */ -var jsonParse=(function(){var e="(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)";var j='(?:[^\\0-\\x08\\x0a-\\x1f"\\\\]|\\\\(?:["/\\\\bfnrt]|u[0-9A-Fa-f]{4}))';var i='(?:"'+j+'*")';var d=new RegExp("(?:false|true|null|[\\{\\}\\[\\]]|"+e+"|"+i+")","g");var k=new RegExp("\\\\(?:([^u])|u(.{4}))","g");var g={'"':'"',"/":"/","\\":"\\",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"};function h(l,m,n){return m?g[m]:String.fromCharCode(parseInt(n,16))}var c=new String("");var a="\\";var f={"{":Object,"[":Array};var b=Object.hasOwnProperty;return function(u,q){var p=u.match(d);var x;var v=p[0];var l=false;if("{"===v){x={}}else{if("["===v){x=[]}else{x=[];l=true}}var t;var r=[x];for(var o=1-l,m=p.length;o=0;){delete D[n[A]]}}}return q.call(C,B,D)};x=s({"":x},"")}return x}})(); \ No newline at end of file diff --git a/vendor/jsonlint/.bower.json b/vendor/jsonlint/.bower.json deleted file mode 100644 index ae2a08dc..00000000 --- a/vendor/jsonlint/.bower.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "jsonlint", - "homepage": "https://github.com/zaach/jsonlint", - "version": "1.6.0", - "_release": "1.6.0", - "_resolution": { - "type": "version", - "tag": "v1.6.0", - "commit": "5f3ad28c8fd92ba2b2f70cd55fd5c51c2a7aced1" - }, - "_source": "git://github.com/zaach/jsonlint.git", - "_target": "1.6.0", - "_originalSource": "jsonlint" -} \ No newline at end of file diff --git a/vendor/jsonlint/.gitignore b/vendor/jsonlint/.gitignore deleted file mode 100644 index 3c3629e6..00000000 --- a/vendor/jsonlint/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/vendor/jsonlint/Makefile b/vendor/jsonlint/Makefile deleted file mode 100644 index d3669fc8..00000000 --- a/vendor/jsonlint/Makefile +++ /dev/null @@ -1,17 +0,0 @@ - -all: build test site - -build: - jison src/jsonlint.y src/jsonlint.l - mv jsonlint.js lib/jsonlint.js - node scripts/bundle.js | uglifyjs > web/jsonlint.js - -site: - cp web/jsonlint.js ../jsonlint-pages/jsonlint.js - -deploy: site - cd ../jsonlint-pages && git commit -a -m 'deploy site updates' && git push origin gh-pages - -test: lib/jsonlint.js test/all-tests.js - node test/all-tests.js - diff --git a/vendor/jsonlint/README.md b/vendor/jsonlint/README.md deleted file mode 100644 index 4fef433f..00000000 --- a/vendor/jsonlint/README.md +++ /dev/null @@ -1,63 +0,0 @@ -JSON Lint -========= - -A pure [JavaScript version](http://zaach.github.com/jsonlint/) of the service provided at [jsonlint.com](http://jsonlint.com). - -## Command line interface -Install jsonlint with npm to use the command line interface: - - npm install jsonlint -g - -Validate a file like so: - - jsonlint myfile.json - -or pipe input into stdin: - - cat myfile.json | jsonlint - -jsonlint will either report a syntax error with details or pretty print the source if it is valid. - -### Options - - $ jsonlint -h - - usage: jsonlint [options] - - file file to parse; otherwise uses stdin - - options: - -v, --version print version and exit - -s, --sort-keys sort object keys - -i, --in-place overwrite the file - -t CHAR, --indent CHAR character(s) to use for indentation - -c, --compact compact error display - -V, --validate a JSON schema to use for validation - -e, --environment which specification of JSON Schema the validation file uses - -q, --quiet do not print the parsed json to STDOUT - - -## Module interface - -I'm not sure why you wouldn't use the built in `JSON.parse` but you can use jsonlint from a CommonJS module: - - var jsonlint = require("jsonlint"); - - jsonlint.parse('{"creative?": false}'); - -It returns the parsed object or throws an `Error`. - -## Vim Plugins - -* [Syntastic](http://www.vim.org/scripts/script.php?script_id=2736) -* [sourcebeautify](http://www.vim.org/scripts/script.php?script_id=4079) - -## MIT License - -Copyright (C) 2012 Zachary Carter - -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. \ No newline at end of file diff --git a/vendor/jsonlint/lib/cli.js b/vendor/jsonlint/lib/cli.js deleted file mode 100755 index eb5dbf4b..00000000 --- a/vendor/jsonlint/lib/cli.js +++ /dev/null @@ -1,178 +0,0 @@ -#!/usr/bin/env node - -var fs = require("fs"); -var path = require("path"); -var parser = require("./jsonlint").parser; -var JSV = require("JSV").JSV; -var formatter = require("./formatter.js").formatter; - -var options = require("nomnom") - .script("jsonlint") - .options({ - file: { - position: 0, - help: "file to parse; otherwise uses stdin" - }, - version: { - flag : true, - string: '-v, --version', - help: 'print version and exit', - callback: function() { - return require("../package").version; - } - }, - sort : { - flag : true, - string: '-s, --sort-keys', - help: 'sort object keys' - }, - inplace : { - flag : true, - string: '-i, --in-place', - help: 'overwrite the file' - }, - indent : { - string: '-t CHAR, --indent CHAR', - "default": " ", - help: 'character(s) to use for indentation' - }, - compact : { - flag : true, - string: '-c, --compact', - help : 'compact error display' - }, - validate : { - string: '-V, --validate', - help : 'a JSON schema to use for validation' - }, - env : { - string: '-e, --environment', - "default": "json-schema-draft-03", - help: 'which specification of JSON Schema the validation file uses' - }, - quiet: { - flag: true, - key: "value", - string: '-q, --quiet', - "default": false, - help: 'do not print the parsed json to STDOUT' - }, - forcePrettyPrint: { - flag: true, - string: '-p, --pretty-print', - help: 'force pretty printing even if invalid' - } - }).parse(); - -if (options.compact) { - var fileName = options.file? options.file + ': ' : ''; - parser.parseError = parser.lexer.parseError = function(str, hash) { - console.error(fileName + 'line '+ hash.loc.first_line +', col '+ hash.loc.last_column +', found: \''+ hash.token +'\' - expected: '+ hash.expected.join(', ') +'.'); - throw new Error(str); - }; -} - -function parse (source) { - var parsed, - formatted; - - try { - parsed = options.sort ? - sortObject(parser.parse(source)) : - parser.parse(source); - - if (options.validate) { - var env = JSV.createEnvironment(options.env); - var schema = JSON.parse(fs.readFileSync(path.normalize(options.validate), "utf8")); - var report = env.validate(parsed, schema); - if (report.errors.length) { - throw report.errors.reduce(schemaError, 'Validation Errors:'); - } - } - - return JSON.stringify(parsed,null,options.indent); - } catch (e) { - if ( options.forcePrettyPrint ) { - /* From https://github.com/umbrae/jsonlintdotcom: - * If we failed to validate, run our manual formatter and then re-validate so that we - * can get a better line number. On a successful validate, we don't want to run our - * manual formatter because the automatic one is faster and probably more reliable. - */ - - try { - formatted = formatter.formatJson(source, options.indent); - // Re-parse so exception output gets better line numbers - parsed = parser.parse(formatted); - } catch (e) { - if (! options.compact) { - console.error(e); - } - return formatted; - process.exit(1); - } - } else { - if (! options.compact) { - console.error(e); - } - - process.exit(1); - } - } -} - -function schemaError (str, err) { - return str + - "\n\n"+err.message + - "\nuri: " + err.uri + - "\nschemaUri: " + err.schemaUri + - "\nattribute: " + err.attribute + - "\ndetails: " + JSON.stringify(err.details); -} - -function main (args) { - var source = ''; - if (options.file) { - var json = path.normalize(options.file); - source = parse(fs.readFileSync(json, "utf8")); - if (options.inplace) { - fs.writeSync(fs.openSync(json,'w+'), source, 0, "utf8"); - } else { - if (! options.quiet) { console.log(source)}; - } - } else { - var stdin = process.openStdin(); - stdin.setEncoding('utf8'); - - stdin.on('data', function (chunk) { - source += chunk.toString('utf8'); - }); - stdin.on('end', function () { - if (! options.quiet) {console.log(parse(source))}; - }); - } -} - -// from http://stackoverflow.com/questions/1359761/sorting-a-json-object-in-javascript -function sortObject(o) { - if (Object.prototype.toString.call(o) !== '[object Object]') { - return o; - } - - var sorted = {}, - key, a = []; - - for (key in o) { - if (o.hasOwnProperty(key)) { - a.push(key); - } - } - - a.sort(); - - for (key = 0; key < a.length; key++) { - sorted[a[key]] = sortObject(o[a[key]]); - } - return sorted; -} - -main(process.argv.slice(1)); diff --git a/vendor/jsonlint/lib/formatter.js b/vendor/jsonlint/lib/formatter.js deleted file mode 100644 index e6e27265..00000000 --- a/vendor/jsonlint/lib/formatter.js +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env node - -/** - * Manual formatter taken straight from https://github.com/umbrae/jsonlintdotcom -**/ - -/*jslint white: true, devel: true, onevar: true, browser: true, undef: true, nomen: true, regexp: true, plusplus: false, bitwise: true, newcap: true, maxerr: 50, indent: 4 */ - -/** - * jsl.format - Provide json reformatting in a character-by-character approach, so that even invalid JSON may be reformatted (to the best of its ability). - * -**/ -var formatter = (function () { - - function repeat(s, count) { - return new Array(count + 1).join(s); - } - - function formatJson(json, indentChars) { - var i = 0, - il = 0, - tab = (typeof indentChars !== "undefined") ? indentChars : " ", - newJson = "", - indentLevel = 0, - inString = false, - currentChar = null; - - for (i = 0, il = json.length; i < il; i += 1) { - currentChar = json.charAt(i); - - switch (currentChar) { - case '{': - case '[': - if (!inString) { - newJson += currentChar + "\n" + repeat(tab, indentLevel + 1); - indentLevel += 1; - } else { - newJson += currentChar; - } - break; - case '}': - case ']': - if (!inString) { - indentLevel -= 1; - newJson += "\n" + repeat(tab, indentLevel) + currentChar; - } else { - newJson += currentChar; - } - break; - case ',': - if (!inString) { - newJson += ",\n" + repeat(tab, indentLevel); - } else { - newJson += currentChar; - } - break; - case ':': - if (!inString) { - newJson += ": "; - } else { - newJson += currentChar; - } - break; - case ' ': - case "\n": - case "\t": - if (inString) { - newJson += currentChar; - } - break; - case '"': - if (i > 0 && json.charAt(i - 1) !== '\\') { - inString = !inString; - } - newJson += currentChar; - break; - default: - newJson += currentChar; - break; - } - } - - return newJson; - } - - return { "formatJson": formatJson }; - -}()); - -if (typeof require !== 'undefined' && typeof exports !== 'undefined') { - exports.formatter = formatter; -} \ No newline at end of file diff --git a/vendor/jsonlint/lib/jsonlint.js b/vendor/jsonlint/lib/jsonlint.js deleted file mode 100644 index 598c18c2..00000000 --- a/vendor/jsonlint/lib/jsonlint.js +++ /dev/null @@ -1,432 +0,0 @@ -/* Jison generated parser */ -var jsonlint = (function(){ -var parser = {trace: function trace() { }, -yy: {}, -symbols_: {"error":2,"JSONString":3,"STRING":4,"JSONNumber":5,"NUMBER":6,"JSONNullLiteral":7,"NULL":8,"JSONBooleanLiteral":9,"TRUE":10,"FALSE":11,"JSONText":12,"JSONValue":13,"EOF":14,"JSONObject":15,"JSONArray":16,"{":17,"}":18,"JSONMemberList":19,"JSONMember":20,":":21,",":22,"[":23,"]":24,"JSONElementList":25,"$accept":0,"$end":1}, -terminals_: {2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"}, -productions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]], -performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) { - -var $0 = $$.length - 1; -switch (yystate) { -case 1: // replace escaped characters with actual character - this.$ = yytext.replace(/\\(\\|")/g, "$"+"1") - .replace(/\\n/g,'\n') - .replace(/\\r/g,'\r') - .replace(/\\t/g,'\t') - .replace(/\\v/g,'\v') - .replace(/\\f/g,'\f') - .replace(/\\b/g,'\b'); - -break; -case 2:this.$ = Number(yytext); -break; -case 3:this.$ = null; -break; -case 4:this.$ = true; -break; -case 5:this.$ = false; -break; -case 6:return this.$ = $$[$0-1]; -break; -case 13:this.$ = {}; -break; -case 14:this.$ = $$[$0-1]; -break; -case 15:this.$ = [$$[$0-2], $$[$0]]; -break; -case 16:this.$ = {}; this.$[$$[$0][0]] = $$[$0][1]; -break; -case 17:this.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1]; -break; -case 18:this.$ = []; -break; -case 19:this.$ = $$[$0-1]; -break; -case 20:this.$ = [$$[$0]]; -break; -case 21:this.$ = $$[$0-2]; $$[$0-2].push($$[$0]); -break; -} -}, -table: [{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}], -defaultActions: {16:[2,6]}, -parseError: function parseError(str, hash) { - throw new Error(str); -}, -parse: function parse(input) { - var self = this, - stack = [0], - vstack = [null], // semantic value stack - lstack = [], // location stack - table = this.table, - yytext = '', - yylineno = 0, - yyleng = 0, - recovering = 0, - TERROR = 2, - EOF = 1; - - //this.reductionCount = this.shiftCount = 0; - - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - if (typeof this.lexer.yylloc == 'undefined') - this.lexer.yylloc = {}; - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - - if (typeof this.yy.parseError === 'function') - this.parseError = this.yy.parseError; - - function popStack (n) { - stack.length = stack.length - 2*n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - - function lex() { - var token; - token = self.lexer.lex() || 1; // $end = 1 - // if token isn't its numeric value, convert - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - } - - var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected; - while (true) { - // retreive state number from top of stack - state = stack[stack.length-1]; - - // use default actions if available - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol == null) - symbol = lex(); - // read action for current state and first input - action = table[state] && table[state][symbol]; - } - - // handle parse error - _handle_error: - if (typeof action === 'undefined' || !action.length || !action[0]) { - - if (!recovering) { - // Report error - expected = []; - for (p in table[state]) if (this.terminals_[p] && p > 2) { - expected.push("'"+this.terminals_[p]+"'"); - } - var errStr = ''; - if (this.lexer.showPosition) { - errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; - } else { - errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + - (symbol == 1 /*EOF*/ ? "end of input" : - ("'"+(this.terminals_[symbol] || symbol)+"'")); - } - this.parseError(errStr, - {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); - } - - // just recovered from another error - if (recovering == 3) { - if (symbol == EOF) { - throw new Error(errStr || 'Parsing halted.'); - } - - // discard current lookahead and grab another - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - symbol = lex(); - } - - // try to recover from error - while (1) { - // check for error recovery rule in this state - if ((TERROR.toString()) in table[state]) { - break; - } - if (state == 0) { - throw new Error(errStr || 'Parsing halted.'); - } - popStack(1); - state = stack[stack.length-1]; - } - - preErrorSymbol = symbol; // save the lookahead token - symbol = TERROR; // insert generic error symbol as new lookahead - state = stack[stack.length-1]; - action = table[state] && table[state][TERROR]; - recovering = 3; // allow 3 real symbols to be shifted before reporting a new error - } - - // this shouldn't happen, unless resolve defaults are off - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol); - } - - switch (action[0]) { - - case 1: // shift - //this.shiftCount++; - - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); // push state - symbol = null; - if (!preErrorSymbol) { // normal execution/no error - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) - recovering--; - } else { // error just occurred, resume old lookahead f/ before error - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - - case 2: // reduce - //this.reductionCount++; - - len = this.productions_[action[1]][1]; - - // perform semantic action - yyval.$ = vstack[vstack.length-len]; // default to $$ = $1 - // default location, uses first token for firsts, last for lasts - yyval._$ = { - first_line: lstack[lstack.length-(len||1)].first_line, - last_line: lstack[lstack.length-1].last_line, - first_column: lstack[lstack.length-(len||1)].first_column, - last_column: lstack[lstack.length-1].last_column - }; - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); - - if (typeof r !== 'undefined') { - return r; - } - - // pop off stack - if (len) { - stack = stack.slice(0,-1*len*2); - vstack = vstack.slice(0, -1*len); - lstack = lstack.slice(0, -1*len); - } - - stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce) - vstack.push(yyval.$); - lstack.push(yyval._$); - // goto new state = table[STATE][NONTERMINAL] - newState = table[stack[stack.length-2]][stack[stack.length-1]]; - stack.push(newState); - break; - - case 3: // accept - return true; - } - - } - - return true; -}}; -/* Jison generated lexer */ -var lexer = (function(){ -var lexer = ({EOF:1, -parseError:function parseError(str, hash) { - if (this.yy.parseError) { - this.yy.parseError(str, hash); - } else { - throw new Error(str); - } - }, -setInput:function (input) { - this._input = input; - this._more = this._less = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ''; - this.conditionStack = ['INITIAL']; - this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0}; - return this; - }, -input:function () { - var ch = this._input[0]; - this.yytext+=ch; - this.yyleng++; - this.match+=ch; - this.matched+=ch; - var lines = ch.match(/\n/); - if (lines) this.yylineno++; - this._input = this._input.slice(1); - return ch; - }, -unput:function (ch) { - this._input = ch + this._input; - return this; - }, -more:function () { - this._more = true; - return this; - }, -less:function (n) { - this._input = this.match.slice(n) + this._input; - }, -pastInput:function () { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); - }, -upcomingInput:function () { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20-next.length); - } - return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, ""); - }, -showPosition:function () { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c+"^"; - }, -next:function () { - if (this.done) { - return this.EOF; - } - if (!this._input) this.done = true; - - var token, - match, - tempMatch, - index, - col, - lines; - if (!this._more) { - this.yytext = ''; - this.match = ''; - } - var rules = this._currentRules(); - for (var i=0;i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (!this.options.flex) break; - } - } - if (match) { - lines = match[0].match(/\n.*/g); - if (lines) this.yylineno += lines.length; - this.yylloc = {first_line: this.yylloc.last_line, - last_line: this.yylineno+1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length} - this.yytext += match[0]; - this.match += match[0]; - this.yyleng = this.yytext.length; - this._more = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]); - if (this.done && this._input) this.done = false; - if (token) return token; - else return; - } - if (this._input === "") { - return this.EOF; - } else { - this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(), - {text: "", token: null, line: this.yylineno}); - } - }, -lex:function lex() { - var r = this.next(); - if (typeof r !== 'undefined') { - return r; - } else { - return this.lex(); - } - }, -begin:function begin(condition) { - this.conditionStack.push(condition); - }, -popState:function popState() { - return this.conditionStack.pop(); - }, -_currentRules:function _currentRules() { - return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules; - }, -topState:function () { - return this.conditionStack[this.conditionStack.length-2]; - }, -pushState:function begin(condition) { - this.begin(condition); - }}); -lexer.options = {}; -lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { - -var YYSTATE=YY_START -switch($avoiding_name_collisions) { -case 0:/* skip whitespace */ -break; -case 1:return 6 -break; -case 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4 -break; -case 3:return 17 -break; -case 4:return 18 -break; -case 5:return 23 -break; -case 6:return 24 -break; -case 7:return 22 -break; -case 8:return 21 -break; -case 9:return 10 -break; -case 10:return 11 -break; -case 11:return 8 -break; -case 12:return 14 -break; -case 13:return 'INVALID' -break; -} -}; -lexer.rules = [/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/]; -lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}}; - - -; -return lexer;})() -parser.lexer = lexer; -return parser; -})(); -if (typeof require !== 'undefined' && typeof exports !== 'undefined') { -exports.parser = jsonlint; -exports.parse = function () { return jsonlint.parse.apply(jsonlint, arguments); } -exports.main = function commonjsMain(args) { - if (!args[1]) - throw new Error('Usage: '+args[0]+' FILE'); - if (typeof process !== 'undefined') { - var source = require('fs').readFileSync(require('path').join(process.cwd(), args[1]), "utf8"); - } else { - var cwd = require("file").path(require("file").cwd()); - var source = cwd.join(args[1]).read({charset: "utf-8"}); - } - return exports.parser.parse(source); -} -if (typeof module !== 'undefined' && require.main === module) { - exports.main(typeof process !== 'undefined' ? process.argv.slice(1) : require("system").args); -} -} \ No newline at end of file diff --git a/vendor/jsonlint/package.json b/vendor/jsonlint/package.json deleted file mode 100644 index ace05df7..00000000 --- a/vendor/jsonlint/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "author": "Zach Carter (http://zaa.ch)", - "name": "jsonlint", - "description": "Validate JSON", - "keywords": [ - "json", - "validation", - "lint", - "jsonlint" - ], - "version": "1.6.0", - "preferGlobal": true, - "repository": { - "type": "git", - "url": "git://github.com/zaach/jsonlint.git" - }, - "bugs": { - "url": "http://github.com/zaach/jsonlint/issues" - }, - "main": "lib/jsonlint.js", - "bin": { - "jsonlint": "lib/cli.js" - }, - "engines": { - "node": ">= 0.6" - }, - "dependencies": { - "nomnom": ">= 1.5.x", - "JSV": ">= 4.0.x" - }, - "devDependencies": { - "test": "*", - "jison": "*", - "uglify-js": "*" - }, - "scripts": { - "test": "node test/all-tests.js" - }, - "homepage": "http://zaach.github.com/jsonlint/", - "optionalDependencies": {} -} diff --git a/vendor/jsonlint/scripts/bundle.js b/vendor/jsonlint/scripts/bundle.js deleted file mode 100644 index c8e542d7..00000000 --- a/vendor/jsonlint/scripts/bundle.js +++ /dev/null @@ -1,8 +0,0 @@ -var fs = require('fs'); - -var source = "var jsonlint = (function(){var require=true,module=false;var exports={};" + - fs.readFileSync(__dirname+'/../lib/jsonlint.js', 'utf8') + - "return exports;})()"; - -console.log(source); - diff --git a/vendor/jsonlint/src/jsonlint.l b/vendor/jsonlint/src/jsonlint.l deleted file mode 100644 index 35491e11..00000000 --- a/vendor/jsonlint/src/jsonlint.l +++ /dev/null @@ -1,24 +0,0 @@ -int "-"?([0-9]|[1-9][0-9]+) -exp [eE][-+]?[0-9]+ -frac "."[0-9]+ - -%% -\s+ /* skip whitespace */ - -{int}{frac}?{exp}?\b return 'NUMBER' -\"(?:'\\'[\\"bfnrt/]|'\\u'[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*\" yytext = yytext.substr(1,yyleng-2); return 'STRING' - -"{" return '{' -"}" return '}' -"[" return '[' -"]" return ']' -"," return ',' -":" return ':' -"true" return 'TRUE' -"false" return 'FALSE' -"null" return 'NULL' -<> return 'EOF' -. return 'INVALID' - -%% - diff --git a/vendor/jsonlint/src/jsonlint.y b/vendor/jsonlint/src/jsonlint.y deleted file mode 100644 index a4d6d299..00000000 --- a/vendor/jsonlint/src/jsonlint.y +++ /dev/null @@ -1,86 +0,0 @@ -%start JSONText - -/* - ECMA-262 5th Edition, 15.12.1 The JSON Grammar. -*/ - - -%% - -JSONString - : STRING - { // replace escaped characters with actual character - $$ = yytext.replace(/\\(\\|")/g, "$"+"1") - .replace(/\\n/g,'\n') - .replace(/\\r/g,'\r') - .replace(/\\t/g,'\t') - .replace(/\\v/g,'\v') - .replace(/\\f/g,'\f') - .replace(/\\b/g,'\b'); - } - ; - -JSONNumber - : NUMBER - {$$ = Number(yytext);} - ; - -JSONNullLiteral - : NULL - {$$ = null;} - ; - -JSONBooleanLiteral - : TRUE - {$$ = true;} - | FALSE - {$$ = false;} - ; - -JSONText - : JSONValue EOF - {return $$ = $1;} - ; - -JSONValue - : JSONNullLiteral - | JSONBooleanLiteral - | JSONString - | JSONNumber - | JSONObject - | JSONArray - ; - -JSONObject - : '{' '}' - {{$$ = {};}} - | '{' JSONMemberList '}' - {$$ = $2;} - ; - -JSONMember - : JSONString ':' JSONValue - {$$ = [$1, $3];} - ; - -JSONMemberList - : JSONMember - {{$$ = {}; $$[$1[0]] = $1[1];}} - | JSONMemberList ',' JSONMember - {$$ = $1; $1[$3[0]] = $3[1];} - ; - -JSONArray - : '[' ']' - {$$ = [];} - | '[' JSONElementList ']' - {$$ = $2;} - ; - -JSONElementList - : JSONValue - {$$ = [$1];} - | JSONElementList ',' JSONValue - {$$ = $1; $1.push($3);} - ; - diff --git a/vendor/jsonlint/test/all-tests.js b/vendor/jsonlint/test/all-tests.js deleted file mode 100644 index 8a2fede3..00000000 --- a/vendor/jsonlint/test/all-tests.js +++ /dev/null @@ -1,232 +0,0 @@ -var fs = require("fs"), - assert = require("assert"), - parser = require("../lib/jsonlint").parser; - -exports["test object"] = function () { - var json = '{"foo": "bar"}'; - assert.deepEqual(parser.parse(json), {"foo": "bar"}); -}; - -exports["test escaped backslash"] = function () { - var json = '{"foo": "\\\\"}'; - assert.deepEqual(parser.parse(json), {"foo": "\\"}); -}; - -exports["test escaped chars"] = function () { - var json = '{"foo": "\\\\\\\""}'; - assert.deepEqual(parser.parse(json), {"foo": '\\\"'}); -}; - -exports["test escaped \\n"] = function () { - var json = '{"foo": "\\\\\\n"}'; - assert.deepEqual(parser.parse(json), {"foo": '\\\n'}); -}; - -exports["test string with escaped line break"] = function () { - var json = '{"foo": "bar\\nbar"}'; - assert.deepEqual(parser.parse(json), {"foo": "bar\nbar"}); - assert.equal(JSON.stringify(parser.parse(json)).length, 18); -}; - -exports["test string with line break"] = function () { - var json = '{"foo": "bar\nbar"}'; - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test string literal"] = function () { - var json = '"foo"'; - assert.equal(parser.parse(json), "foo"); -}; - -exports["test number literal"] = function () { - var json = '1234'; - assert.equal(parser.parse(json), 1234); -}; - -exports["test null literal"] = function () { - var json = '1234'; - assert.equal(parser.parse(json), 1234); -}; - -exports["test boolean literal"] = function () { - var json = 'true'; - assert.equal(parser.parse(json), true); -}; - -exports["test unclosed array"] = function () { - var json = fs.readFileSync(__dirname + "/fails/2.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test unquotedkey keys must be quoted"] = function () { - var json = fs.readFileSync(__dirname + "/fails/3.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test extra comma"] = function () { - var json = fs.readFileSync(__dirname + "/fails/4.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test double extra comma"] = function () { - var json = fs.readFileSync(__dirname + "/fails/5.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test missing value"] = function () { - var json = fs.readFileSync(__dirname + "/fails/6.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test comma after the close"] = function () { - var json = fs.readFileSync(__dirname + "/fails/7.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test extra close"] = function () { - var json = fs.readFileSync(__dirname + "/fails/8.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test extra comma after value"] = function () { - var json = fs.readFileSync(__dirname + "/fails/9.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test extra value after close with misplaced quotes"] = function () { - var json = fs.readFileSync(__dirname + "/fails/10.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test illegal expression addition"] = function () { - var json = fs.readFileSync(__dirname + "/fails/11.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test illegal invocation of alert"] = function () { - var json = fs.readFileSync(__dirname + "/fails/12.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test numbers cannot have leading zeroes"] = function () { - var json = fs.readFileSync(__dirname + "/fails/13.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test numbers cannot be hex"] = function () { - var json = fs.readFileSync(__dirname + "/fails/14.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test illegal backslash escape \\0"] = function () { - var json = fs.readFileSync(__dirname + "/fails/15.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test unquoted text"] = function () { - var json = fs.readFileSync(__dirname + "/fails/16.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test illegal backslash escape \\x"] = function () { - var json = fs.readFileSync(__dirname + "/fails/17.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test missing colon"] = function () { - var json = fs.readFileSync(__dirname + "/fails/19.json") - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test double colon"] = function () { - var json = fs.readFileSync(__dirname + "/fails/20.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test comma instead of colon"] = function () { - var json = fs.readFileSync(__dirname + "/fails/21.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test colon instead of comma"] = function () { - var json = fs.readFileSync(__dirname + "/fails/22.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test bad raw value"] = function () { - var json = fs.readFileSync(__dirname + "/fails/23.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test single quotes"] = function () { - var json = fs.readFileSync(__dirname + "/fails/24.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test tab character in string"] = function () { - var json = fs.readFileSync(__dirname + "/fails/25.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test tab character in string 2"] = function () { - var json = fs.readFileSync(__dirname + "/fails/26.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test line break in string"] = function () { - var json = fs.readFileSync(__dirname + "/fails/27.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test line break in string in array"] = function () { - var json = fs.readFileSync(__dirname + "/fails/28.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test 0e"] = function () { - var json = fs.readFileSync(__dirname + "/fails/29.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test 0e+"] = function () { - var json = fs.readFileSync(__dirname + "/fails/30.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test 0e+ 1"] = function () { - var json = fs.readFileSync(__dirname + "/fails/31.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test comma instead of closing brace"] = function () { - var json = fs.readFileSync(__dirname + "/fails/32.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -}; - -exports["test bracket mismatch"] = function () { - var json = fs.readFileSync(__dirname + "/fails/33.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -} - -exports["test extra brace"] = function () { - var json = fs.readFileSync(__dirname + "/fails/34.json").toString(); - assert["throws"](function () {parser.parse(json)}, "should throw error"); -} - -exports["test pass-1"] = function () { - var json = fs.readFileSync(__dirname + "/passes/1.json").toString(); - assert.doesNotThrow(function () {parser.parse(json)}, "should pass"); -} - -exports["test pass-2"] = function () { - var json = fs.readFileSync(__dirname + "/passes/2.json").toString(); - assert.doesNotThrow(function () {parser.parse(json)}, "should pass"); -} - -exports["test pass-3"] = function () { - var json = fs.readFileSync(__dirname + "/passes/3.json").toString(); - assert.doesNotThrow(function () {parser.parse(json)}, "should pass"); -} - -if (require.main === module) - require("test").run(exports); diff --git a/vendor/jsonlint/test/fails/10.json b/vendor/jsonlint/test/fails/10.json deleted file mode 100644 index 5d8c0047..00000000 --- a/vendor/jsonlint/test/fails/10.json +++ /dev/null @@ -1 +0,0 @@ -{"Extra value after close": true} "misplaced quoted value" \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/11.json b/vendor/jsonlint/test/fails/11.json deleted file mode 100644 index 76eb95b4..00000000 --- a/vendor/jsonlint/test/fails/11.json +++ /dev/null @@ -1 +0,0 @@ -{"Illegal expression": 1 + 2} \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/12.json b/vendor/jsonlint/test/fails/12.json deleted file mode 100644 index 77580a45..00000000 --- a/vendor/jsonlint/test/fails/12.json +++ /dev/null @@ -1 +0,0 @@ -{"Illegal invocation": alert()} \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/13.json b/vendor/jsonlint/test/fails/13.json deleted file mode 100644 index 379406b5..00000000 --- a/vendor/jsonlint/test/fails/13.json +++ /dev/null @@ -1 +0,0 @@ -{"Numbers cannot have leading zeroes": 013} \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/14.json b/vendor/jsonlint/test/fails/14.json deleted file mode 100644 index 0ed366b3..00000000 --- a/vendor/jsonlint/test/fails/14.json +++ /dev/null @@ -1 +0,0 @@ -{"Numbers cannot be hex": 0x14} \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/15.json b/vendor/jsonlint/test/fails/15.json deleted file mode 100644 index fc8376b6..00000000 --- a/vendor/jsonlint/test/fails/15.json +++ /dev/null @@ -1 +0,0 @@ -["Illegal backslash escape: \x15"] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/16.json b/vendor/jsonlint/test/fails/16.json deleted file mode 100644 index 3fe21d4b..00000000 --- a/vendor/jsonlint/test/fails/16.json +++ /dev/null @@ -1 +0,0 @@ -[\naked] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/17.json b/vendor/jsonlint/test/fails/17.json deleted file mode 100644 index 62b9214a..00000000 --- a/vendor/jsonlint/test/fails/17.json +++ /dev/null @@ -1 +0,0 @@ -["Illegal backslash escape: \017"] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/19.json b/vendor/jsonlint/test/fails/19.json deleted file mode 100644 index 3b9c46fa..00000000 --- a/vendor/jsonlint/test/fails/19.json +++ /dev/null @@ -1 +0,0 @@ -{"Missing colon" null} \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/2.json b/vendor/jsonlint/test/fails/2.json deleted file mode 100644 index 6b7c11e5..00000000 --- a/vendor/jsonlint/test/fails/2.json +++ /dev/null @@ -1 +0,0 @@ -["Unclosed array" \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/20.json b/vendor/jsonlint/test/fails/20.json deleted file mode 100644 index 27c1af3e..00000000 --- a/vendor/jsonlint/test/fails/20.json +++ /dev/null @@ -1 +0,0 @@ -{"Double colon":: null} \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/21.json b/vendor/jsonlint/test/fails/21.json deleted file mode 100644 index 62474573..00000000 --- a/vendor/jsonlint/test/fails/21.json +++ /dev/null @@ -1 +0,0 @@ -{"Comma instead of colon", null} \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/22.json b/vendor/jsonlint/test/fails/22.json deleted file mode 100644 index a7752581..00000000 --- a/vendor/jsonlint/test/fails/22.json +++ /dev/null @@ -1 +0,0 @@ -["Colon instead of comma": false] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/23.json b/vendor/jsonlint/test/fails/23.json deleted file mode 100644 index 494add1c..00000000 --- a/vendor/jsonlint/test/fails/23.json +++ /dev/null @@ -1 +0,0 @@ -["Bad value", truth] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/24.json b/vendor/jsonlint/test/fails/24.json deleted file mode 100644 index caff239b..00000000 --- a/vendor/jsonlint/test/fails/24.json +++ /dev/null @@ -1 +0,0 @@ -['single quote'] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/25.json b/vendor/jsonlint/test/fails/25.json deleted file mode 100644 index 8b7ad23e..00000000 --- a/vendor/jsonlint/test/fails/25.json +++ /dev/null @@ -1 +0,0 @@ -[" tab character in string "] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/26.json b/vendor/jsonlint/test/fails/26.json deleted file mode 100644 index 845d26a6..00000000 --- a/vendor/jsonlint/test/fails/26.json +++ /dev/null @@ -1 +0,0 @@ -["tab\ character\ in\ string\ "] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/27.json b/vendor/jsonlint/test/fails/27.json deleted file mode 100644 index 6b01a2ca..00000000 --- a/vendor/jsonlint/test/fails/27.json +++ /dev/null @@ -1,2 +0,0 @@ -["line -break"] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/28.json b/vendor/jsonlint/test/fails/28.json deleted file mode 100644 index 621a0101..00000000 --- a/vendor/jsonlint/test/fails/28.json +++ /dev/null @@ -1,2 +0,0 @@ -["line\ -break"] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/29.json b/vendor/jsonlint/test/fails/29.json deleted file mode 100644 index 47ec421b..00000000 --- a/vendor/jsonlint/test/fails/29.json +++ /dev/null @@ -1 +0,0 @@ -[0e] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/3.json b/vendor/jsonlint/test/fails/3.json deleted file mode 100644 index 168c81eb..00000000 --- a/vendor/jsonlint/test/fails/3.json +++ /dev/null @@ -1 +0,0 @@ -{unquoted_key: "keys must be quoted"} \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/30.json b/vendor/jsonlint/test/fails/30.json deleted file mode 100644 index 8ab0bc4b..00000000 --- a/vendor/jsonlint/test/fails/30.json +++ /dev/null @@ -1 +0,0 @@ -[0e+] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/31.json b/vendor/jsonlint/test/fails/31.json deleted file mode 100644 index 1cce602b..00000000 --- a/vendor/jsonlint/test/fails/31.json +++ /dev/null @@ -1 +0,0 @@ -[0e+-1] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/32.json b/vendor/jsonlint/test/fails/32.json deleted file mode 100644 index 45cba739..00000000 --- a/vendor/jsonlint/test/fails/32.json +++ /dev/null @@ -1 +0,0 @@ -{"Comma instead if closing brace": true, \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/33.json b/vendor/jsonlint/test/fails/33.json deleted file mode 100644 index ca5eb19d..00000000 --- a/vendor/jsonlint/test/fails/33.json +++ /dev/null @@ -1 +0,0 @@ -["mismatch"} \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/34.json b/vendor/jsonlint/test/fails/34.json deleted file mode 100644 index 11ef16af..00000000 --- a/vendor/jsonlint/test/fails/34.json +++ /dev/null @@ -1 +0,0 @@ -{"extra brace": 1}} diff --git a/vendor/jsonlint/test/fails/4.json b/vendor/jsonlint/test/fails/4.json deleted file mode 100644 index 9de168bf..00000000 --- a/vendor/jsonlint/test/fails/4.json +++ /dev/null @@ -1 +0,0 @@ -["extra comma",] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/5.json b/vendor/jsonlint/test/fails/5.json deleted file mode 100644 index ddf3ce3d..00000000 --- a/vendor/jsonlint/test/fails/5.json +++ /dev/null @@ -1 +0,0 @@ -["double extra comma",,] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/6.json b/vendor/jsonlint/test/fails/6.json deleted file mode 100644 index ed91580e..00000000 --- a/vendor/jsonlint/test/fails/6.json +++ /dev/null @@ -1 +0,0 @@ -[ , "<-- missing value"] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/7.json b/vendor/jsonlint/test/fails/7.json deleted file mode 100644 index 8a96af3e..00000000 --- a/vendor/jsonlint/test/fails/7.json +++ /dev/null @@ -1 +0,0 @@ -["Comma after the close"], \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/8.json b/vendor/jsonlint/test/fails/8.json deleted file mode 100644 index b28479c6..00000000 --- a/vendor/jsonlint/test/fails/8.json +++ /dev/null @@ -1 +0,0 @@ -["Extra close"]] \ No newline at end of file diff --git a/vendor/jsonlint/test/fails/9.json b/vendor/jsonlint/test/fails/9.json deleted file mode 100644 index 5815574f..00000000 --- a/vendor/jsonlint/test/fails/9.json +++ /dev/null @@ -1 +0,0 @@ -{"Extra comma": true,} \ No newline at end of file diff --git a/vendor/jsonlint/test/passes/1.json b/vendor/jsonlint/test/passes/1.json deleted file mode 100644 index 70e26854..00000000 --- a/vendor/jsonlint/test/passes/1.json +++ /dev/null @@ -1,58 +0,0 @@ -[ - "JSON Test Pattern pass1", - {"object with 1 member":["array with 1 element"]}, - {}, - [], - -42, - true, - false, - null, - { - "integer": 1234567890, - "real": -9876.543210, - "e": 0.123456789e-12, - "E": 1.234567890E+34, - "": 23456789012E66, - "zero": 0, - "one": 1, - "space": " ", - "quote": "\"", - "backslash": "\\", - "controls": "\b\f\n\r\t", - "slash": "/ & \/", - "alpha": "abcdefghijklmnopqrstuvwyz", - "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ", - "digit": "0123456789", - "0123456789": "digit", - "special": "`1~!@#$%^&*()_+-={':[,]}|;.?", - "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A", - "true": true, - "false": false, - "null": null, - "array":[ ], - "object":{ }, - "address": "50 St. James Street", - "url": "http://www.json.org/", - "comment": "// /* */": " ", - " s p a c e d " :[1,2 , 3 - -, - -4 , 5 , 6 ,7 ],"compact":[1,2,3,4,5,6,7], - "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}", - "quotes": "" \u0022 %22 0x22 034 "", - "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?" -: "A key can be any string" - }, - 0.5 ,98.6 -, -99.44 -, - -1066, -1e1, -0.1e1, -1e-1, -1e00,2e+00,2e-00 -,"rosebud"] \ No newline at end of file diff --git a/vendor/jsonlint/test/passes/2.json b/vendor/jsonlint/test/passes/2.json deleted file mode 100644 index d3c63c7a..00000000 --- a/vendor/jsonlint/test/passes/2.json +++ /dev/null @@ -1 +0,0 @@ -[[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/vendor/jsonlint/test/passes/3.json b/vendor/jsonlint/test/passes/3.json deleted file mode 100644 index 4528d51f..00000000 --- a/vendor/jsonlint/test/passes/3.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "JSON Test Pattern pass3": { - "The outermost value": "must be an object or array.", - "In this test": "It is an object." - } -} diff --git a/vendor/jsonlint/web/json2.js b/vendor/jsonlint/web/json2.js deleted file mode 100644 index 7044c6de..00000000 --- a/vendor/jsonlint/web/json2.js +++ /dev/null @@ -1,334 +0,0 @@ - -/*jslint evil: true, strict: false */ - -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, - call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, - getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, - lastIndex, length, parse, prototype, push, replace, slice, stringify, - test, toJSON, toString, valueOf -*/ - - -// Create a JSON object only if one does not already exist. We create the -// methods in a closure to avoid creating global variables. - -if (!this.JSON) { - this.JSON = {}; -} - -(function () { - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - if (typeof Date.prototype.toJSON !== 'function') { - - Date.prototype.toJSON = function (key) { - - return isFinite(this.valueOf()) ? - this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z' : null; - }; - - String.prototype.toJSON = - Number.prototype.toJSON = - Boolean.prototype.toJSON = function (key) { - return this.valueOf(); - }; - } - - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - - function quote(string) { - -// If the string contains no control characters, no quote characters, and no -// backslash characters, then we can safely slap some quotes around it. -// Otherwise we must also replace the offending characters with safe escape -// sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? - '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : - '"' + string + '"'; - } - - - function str(key, holder) { - -// Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - -// If the value has a toJSON method, call it to obtain a replacement value. - - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - -// If we were called with a replacer function, then call the replacer to -// obtain a replacement value. - - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - -// What happens next depends on the value's type. - - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - -// JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - -// If the value is a boolean or null, convert it to a string. Note: -// typeof null does not produce 'null'. The case is included here in -// the remote chance that this gets fixed someday. - - return String(value); - -// If the type is 'object', we might be dealing with an object or an array or -// null. - - case 'object': - -// Due to a specification blunder in ECMAScript, typeof null is 'object', -// so watch out for that case. - - if (!value) { - return 'null'; - } - -// Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - -// Is the value an array? - - if (Object.prototype.toString.apply(value) === '[object Array]') { - -// The value is an array. Stringify every element. Use null as a placeholder -// for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - -// Join all of the elements together, separated with commas, and wrap them in -// brackets. - - v = partial.length === 0 ? '[]' : - gap ? '[\n' + gap + - partial.join(',\n' + gap) + '\n' + - mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - -// If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - -// Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - -// Join all of the member texts together, separated with commas, -// and wrap them in braces. - - v = partial.length === 0 ? '{}' : - gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + - mind + '}' : '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - -// If the JSON object does not yet have a stringify method, give it one. - - if (typeof JSON.stringify !== 'function') { - JSON.stringify = function (value, replacer, space) { - -// The stringify method takes a value and an optional replacer, and an optional -// space parameter, and returns a JSON text. The replacer can be a function -// that can replace values, or an array of strings that will select the keys. -// A default replacer method can be provided. Use of the space parameter can -// produce text that is more easily readable. - - var i; - gap = ''; - indent = ''; - -// If the space parameter is a number, make an indent string containing that -// many spaces. - - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - -// If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === 'string') { - indent = space; - } - -// If there is a replacer, it must be a function or an array. -// Otherwise, throw an error. - - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - -// Make a fake root object containing our value under the key of ''. -// Return the result of stringifying the value. - - return str('', {'': value}); - }; - } - - -// If the JSON object does not yet have a parse method, give it one. - - if (typeof JSON.parse !== 'function') { - JSON.parse = function (text, reviver) { - -// The parse method takes a text and an optional reviver function, and returns -// a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - -// The walk method is used to recursively walk the resulting structure so -// that modifications can be made. - - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - -// Parsing happens in four stages. In the first stage, we replace certain -// Unicode characters with escape sequences. JavaScript handles many characters -// incorrectly, either silently deleting them, or treating them as line endings. - - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function (a) { - return '\\u' + - ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - -// In the second stage, we run the text against regular expressions that look -// for non-JSON patterns. We are especially concerned with '()' and 'new' -// because they can cause invocation, and '=' because it can cause mutation. -// But just to be safe, we want to reject all unexpected forms. - -// We split the second stage into 4 regexp operations in order to work around -// crippling inefficiencies in IE's and Safari's regexp engines. First we -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we -// replace all simple value tokens with ']' characters. Third, we delete all -// open brackets that follow a colon or comma or that begin the text. Finally, -// we look to see that the remaining characters are only whitespace or ']' or -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if (/^[\],:{}\s]*$/. -test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'). -replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). -replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { - -// In the third stage we use the eval function to compile the text into a -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity -// in JavaScript: it can begin a block or an object literal. We wrap the text -// in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - -// In the optional fourth stage, we recursively walk the new structure, passing -// each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' ? - walk({'': j}, '') : j; - } - -// If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError('JSON.parse'); - }; - } -}()); diff --git a/vendor/jsonlint/web/jsonlint.html b/vendor/jsonlint/web/jsonlint.html deleted file mode 100644 index b0880660..00000000 --- a/vendor/jsonlint/web/jsonlint.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - JSON Lint - - - - - - -

    JSON Lint

    -

    A pure JavaScript version of the service provided at jsonlint.com.

    - -

    - - -

    -

    Results

    -
    
    -  

    project on github

    - - diff --git a/vendor/jsonlint/web/jsonlint.js b/vendor/jsonlint/web/jsonlint.js deleted file mode 100644 index f34759e8..00000000 --- a/vendor/jsonlint/web/jsonlint.js +++ /dev/null @@ -1 +0,0 @@ -var jsonlint=function(){var a=!0,b=!1,c={},d=function(){var a={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(b,c,d,e,f,g,h){var i=g.length-1;switch(f){case 1:this.$=b.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\v/g," ").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(b);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=g[i-1];case 13:this.$={};break;case 14:this.$=g[i-1];break;case 15:this.$=[g[i-2],g[i]];break;case 16:this.$={},this.$[g[i][0]]=g[i][1];break;case 17:this.$=g[i-2],g[i-2][g[i][0]]=g[i][1];break;case 18:this.$=[];break;case 19:this.$=g[i-1];break;case 20:this.$=[g[i]];break;case 21:this.$=g[i-2],g[i-2].push(g[i])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(b,c){throw new Error(b)},parse:function(b){function o(a){d.length=d.length-2*a,e.length=e.length-a,f.length=f.length-a}function p(){var a;return a=c.lexer.lex()||1,typeof a!="number"&&(a=c.symbols_[a]||a),a}var c=this,d=[0],e=[null],f=[],g=this.table,h="",i=0,j=0,k=0,l=2,m=1;this.lexer.setInput(b),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,typeof this.lexer.yylloc=="undefined"&&(this.lexer.yylloc={});var n=this.lexer.yylloc;f.push(n),typeof this.yy.parseError=="function"&&(this.parseError=this.yy.parseError);var q,r,s,t,u,v,w={},x,y,z,A;for(;;){s=d[d.length-1],this.defaultActions[s]?t=this.defaultActions[s]:(q==null&&(q=p()),t=g[s]&&g[s][q]);if(typeof t=="undefined"||!t.length||!t[0]){if(!k){A=[];for(x in g[s])this.terminals_[x]&&x>2&&A.push("'"+this.terminals_[x]+"'");var B="";this.lexer.showPosition?B="Parse error on line "+(i+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+A.join(", ")+", got '"+this.terminals_[q]+"'":B="Parse error on line "+(i+1)+": Unexpected "+(q==1?"end of input":"'"+(this.terminals_[q]||q)+"'"),this.parseError(B,{text:this.lexer.match,token:this.terminals_[q]||q,line:this.lexer.yylineno,loc:n,expected:A})}if(k==3){if(q==m)throw new Error(B||"Parsing halted.");j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,n=this.lexer.yylloc,q=p()}for(;;){if(l.toString()in g[s])break;if(s==0)throw new Error(B||"Parsing halted.");o(1),s=d[d.length-1]}r=q,q=l,s=d[d.length-1],t=g[s]&&g[s][l],k=3}if(t[0]instanceof Array&&t.length>1)throw new Error("Parse Error: multiple actions possible at state: "+s+", token: "+q);switch(t[0]){case 1:d.push(q),e.push(this.lexer.yytext),f.push(this.lexer.yylloc),d.push(t[1]),q=null,r?(q=r,r=null):(j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,n=this.lexer.yylloc,k>0&&k--);break;case 2:y=this.productions_[t[1]][1],w.$=e[e.length-y],w._$={first_line:f[f.length-(y||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(y||1)].first_column,last_column:f[f.length-1].last_column},v=this.performAction.call(w,h,j,i,this.yy,t[1],e,f);if(typeof v!="undefined")return v;y&&(d=d.slice(0,-1*y*2),e=e.slice(0,-1*y),f=f.slice(0,-1*y)),d.push(this.productions_[t[1]][0]),e.push(w.$),f.push(w._$),z=g[d[d.length-2]][d[d.length-1]],d.push(z);break;case 3:return!0}}return!0}},b=function(){var a={EOF:1,parseError:function(b,c){if(!this.yy.parseError)throw new Error(b);this.yy.parseError(b,c)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.match+=a,this.matched+=a;var b=a.match(/\n/);return b&&this.yylineno++,this._input=this._input.slice(1),a},unput:function(a){return this._input=a+this._input,this},more:function(){return this._more=!0,this},less:function(a){this._input=this.match.slice(a)+this._input},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=(new Array(a.length+1)).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d,e,f;this._more||(this.yytext="",this.match="");var g=this._currentRules();for(var h=0;hb[0].length)){b=c,d=h;if(!this.options.flex)break}}if(b){f=b[0].match(/\n.*/g),f&&(this.yylineno+=f.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:f?f[f.length-1].length-1:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,g[d],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1);if(a)return a;return}if(this._input==="")return this.EOF;this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var b=this.next();return typeof b!="undefined"?b:this.lex()},begin:function(b){this.conditionStack.push(b)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(b){this.begin(b)}};return a.options={},a.performAction=function(b,c,d,e){var f=e;switch(d){case 0:break;case 1:return 6;case 2:return c.yytext=c.yytext.substr(1,c.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},a.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],a.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},a}();return a.lexer=b,a}();return typeof a!="undefined"&&typeof c!="undefined"&&(c.parser=d,c.parse=function(){return d.parse.apply(d,arguments)},c.main=function(d){if(!d[1])throw new Error("Usage: "+d[0]+" FILE");if(typeof process!="undefined")var e=a("fs").readFileSync(a("path").join(process.cwd(),d[1]),"utf8");else var f=a("file").path(a("file").cwd()),e=f.join(d[1]).read({charset:"utf-8"});return c.parser.parse(e)},typeof b!="undefined"&&a.main===b&&c.main(typeof process!="undefined"?process.argv.slice(1):a("system").args)),c}(); \ No newline at end of file diff --git a/vendor/jsrsasign/.bower.json b/vendor/jsrsasign/.bower.json deleted file mode 100644 index 708d068f..00000000 --- a/vendor/jsrsasign/.bower.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "jsrsasign", - "_cacheHeaders": { - "Last-Modified": "Sun, 21 Jun 2015 13:43:22 GMT", - "Content-Length": "189589", - "Content-Type": "application/javascript; charset=utf-8" - }, - "main": "index.js", - "_source": "http://kjur.github.io/jsrsasign/jsrsasign-4.1.4-all-min.js", - "_target": "*", - "_originalSource": "http://kjur.github.io/jsrsasign/jsrsasign-4.1.4-all-min.js" -} \ No newline at end of file diff --git a/vendor/jsrsasign/index.js b/vendor/jsrsasign/index.js deleted file mode 100644 index 7b47288a..00000000 --- a/vendor/jsrsasign/index.js +++ /dev/null @@ -1,246 +0,0 @@ -/* - * jsrsasign 4.1.5 (c) 2010-2013 Kenji Urushima | kjur.github.com/jsrsasign/license - */ -/* -yahoo-min.js -Copyright (c) 2011, Yahoo! Inc. All rights reserved. -Code licensed under the BSD License: -http://developer.yahoo.com/yui/license.html -version: 2.9.0 -*/ -if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var b=arguments,g=null,e,c,f;for(e=0;e":">",'"':""","'":"'","/":"/","`":"`"},d=["toString","valueOf"],e={isArray:function(j){return a.toString.apply(j)===c;},isBoolean:function(j){return typeof j==="boolean";},isFunction:function(j){return(typeof j==="function")||a.toString.apply(j)===h;},isNull:function(j){return j===null;},isNumber:function(j){return typeof j==="number"&&isFinite(j);},isObject:function(j){return(j&&(typeof j==="object"||f.isFunction(j)))||false;},isString:function(j){return typeof j==="string";},isUndefined:function(j){return typeof j==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(l,k){var j,n,m;for(j=0;j"'\/`]/g,function(k){return g[k];});},extend:function(m,n,l){if(!n||!m){throw new Error("extend failed, please check that "+"all dependencies are included.");}var k=function(){},j;k.prototype=n.prototype;m.prototype=new k();m.prototype.constructor=m;m.superclass=n.prototype;if(n.prototype.constructor==a.constructor){n.prototype.constructor=n;}if(l){for(j in l){if(f.hasOwnProperty(l,j)){m.prototype[j]=l[j];}}f._IEEnumFix(m.prototype,l);}},augmentObject:function(n,m){if(!m||!n){throw new Error("Absorb failed, verify dependencies.");}var j=arguments,l,o,k=j[2];if(k&&k!==true){for(l=2;l0)?f.dump(j[l],p-1):t);}else{r.push(j[l]);}r.push(q);}if(r.length>1){r.pop();}r.push("]");}else{r.push("{");for(l in j){if(f.hasOwnProperty(j,l)){r.push(l+m);if(f.isObject(j[l])){r.push((p>0)?f.dump(j[l],p-1):t);}else{r.push(j[l]);}r.push(q);}}if(r.length>1){r.pop();}r.push("}");}return r.join("");},substitute:function(x,y,E,l){var D,C,B,G,t,u,F=[],p,z=x.length,A="dump",r=" ",q="{",m="}",n,w;for(;;){D=x.lastIndexOf(q,z);if(D<0){break;}C=x.indexOf(m,D);if(D+1>C){break;}p=x.substring(D+1,C);G=p;u=null;B=G.indexOf(r);if(B>-1){u=G.substring(B+1);G=G.substring(0,B);}t=y[G];if(E){t=E(G,t,u);}if(f.isObject(t)){if(f.isArray(t)){t=f.dump(t,parseInt(u,10));}else{u=u||"";n=u.indexOf(A);if(n>-1){u=u.substring(4);}w=t.toString();if(w===i||n>-1){t=f.dump(t,parseInt(u,10));}else{t=w;}}}else{if(!f.isString(t)&&!f.isNumber(t)){t="~-"+F.length+"-~";F[F.length]=p;}}x=x.substring(0,D)+t+x.substring(C+1);if(l===false){z=D-1;}}for(D=F.length-1;D>=0;D=D-1){x=x.replace(new RegExp("~-"+D+"-~"),"{"+F[D]+"}","g");}return x;},trim:function(j){try{return j.replace(/^\s+|\s+$/g,"");}catch(k){return j; -}},merge:function(){var n={},k=arguments,j=k.length,m;for(m=0;m>>2]>>>(24-(r%4)*8))&255;q[(n+r)>>>2]|=o<<(24-((n+r)%4)*8)}}else{for(var r=0;r>>2]=p[r>>>2]}}this.sigBytes+=s;return this},clamp:function(){var o=this.words;var n=this.sigBytes;o[n>>>2]&=4294967295<<(32-(n%4)*8);o.length=e.ceil(n/4)},clone:function(){var n=j.clone.call(this);n.words=this.words.slice(0);return n},random:function(p){var o=[];for(var n=0;n>>2]>>>(24-(n%4)*8))&255;q.push((s>>>4).toString(16));q.push((s&15).toString(16))}return q.join("")},parse:function(p){var n=p.length;var q=[];for(var o=0;o>>3]|=parseInt(p.substr(o,2),16)<<(24-(o%8)*4)}return new l.init(q,n/2)}};var d=m.Latin1={stringify:function(q){var r=q.words;var p=q.sigBytes;var n=[];for(var o=0;o>>2]>>>(24-(o%4)*8))&255;n.push(String.fromCharCode(s))}return n.join("")},parse:function(p){var n=p.length;var q=[];for(var o=0;o>>2]|=(p.charCodeAt(o)&255)<<(24-(o%4)*8)}return new l.init(q,n)}};var c=m.Utf8={stringify:function(n){try{return decodeURIComponent(escape(d.stringify(n)))}catch(o){throw new Error("Malformed UTF-8 data")}},parse:function(n){return d.parse(unescape(encodeURIComponent(n)))}};var i=b.BufferedBlockAlgorithm=j.extend({reset:function(){this._data=new l.init();this._nDataBytes=0},_append:function(n){if(typeof n=="string"){n=c.parse(n)}this._data.concat(n);this._nDataBytes+=n.sigBytes},_process:function(w){var q=this._data;var x=q.words;var n=q.sigBytes;var t=this.blockSize;var v=t*4;var u=n/v;if(w){u=e.ceil(u)}else{u=e.max((u|0)-this._minBufferSize,0)}var s=u*t;var r=e.min(s*4,n);if(s){for(var p=0;pe&&(b=a.finalize(b));b.clamp();for(var f=this._oKey=b.clone(),g=this._iKey=b.clone(),h=f.words,j=g.words,d=0;db;){var d;a:{d=l;for(var w=k.sqrt(d),r=2;r<=w;r++)if(!(d%r)){d=!1;break a}d=!0}d&&(8>b&&(s[b]=u(k.pow(l,0.5))),t[b]=u(k.pow(l,1/3)),b++);l++}var n=[],h=h.SHA256=j.extend({_doReset:function(){this._hash=new v.init(s.slice(0))},_doProcessBlock:function(q,h){for(var a=this._hash.words,c=a[0],d=a[1],b=a[2],k=a[3],f=a[4],g=a[5],j=a[6],l=a[7],e=0;64>e;e++){if(16>e)n[e]= -q[h+e]|0;else{var m=n[e-15],p=n[e-2];n[e]=((m<<25|m>>>7)^(m<<14|m>>>18)^m>>>3)+n[e-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+n[e-16]}m=l+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&g^~f&j)+t[e]+n[e];p=((c<<30|c>>>2)^(c<<19|c>>>13)^(c<<10|c>>>22))+(c&d^c&b^d&b);l=j;j=g;g=f;f=k+m|0;k=b;b=d;d=c;c=m+p|0}a[0]=a[0]+c|0;a[1]=a[1]+d|0;a[2]=a[2]+b|0;a[3]=a[3]+k|0;a[4]=a[4]+f|0;a[5]=a[5]+g|0;a[6]=a[6]+j|0;a[7]=a[7]+l|0},_doFinalize:function(){var d=this._data,b=d.words,a=8*this._nDataBytes,c=8*d.sigBytes; -b[c>>>5]|=128<<24-c%32;b[(c+64>>>9<<4)+14]=k.floor(a/4294967296);b[(c+64>>>9<<4)+15]=a;d.sigBytes=4*b.length;this._process();return this._hash},clone:function(){var b=j.clone.call(this);b._hash=this._hash.clone();return b}});g.SHA256=j._createHelper(h);g.HmacSHA256=j._createHmacHelper(h)})(Math); -/* -CryptoJS v3.1.2 sha224-min.js -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function(){var b=CryptoJS,d=b.lib.WordArray,a=b.algo,c=a.SHA256,a=a.SHA224=c.extend({_doReset:function(){this._hash=new d.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var a=c._doFinalize.call(this);a.sigBytes-=4;return a}});b.SHA224=c._createHelper(a);b.HmacSHA224=c._createHmacHelper(a)})(); -/* -CryptoJS v3.1.2 sha512-min.js -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function(){function a(){return d.create.apply(d,arguments)}for(var n=CryptoJS,r=n.lib.Hasher,e=n.x64,d=e.Word,T=e.WordArray,e=n.algo,ea=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317), -a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291, -2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899), -a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470, -3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],v=[],w=0;80>w;w++)v[w]=a();e=e.SHA512=r.extend({_doReset:function(){this._hash=new T.init([new d.init(1779033703,4089235720),new d.init(3144134277,2227873595),new d.init(1013904242,4271175723),new d.init(2773480762,1595750129),new d.init(1359893119,2917565137),new d.init(2600822924,725511199),new d.init(528734635,4215389547),new d.init(1541459225,327033209)])},_doProcessBlock:function(a,d){for(var f=this._hash.words, -F=f[0],e=f[1],n=f[2],r=f[3],G=f[4],H=f[5],I=f[6],f=f[7],w=F.high,J=F.low,X=e.high,K=e.low,Y=n.high,L=n.low,Z=r.high,M=r.low,$=G.high,N=G.low,aa=H.high,O=H.low,ba=I.high,P=I.low,ca=f.high,Q=f.low,k=w,g=J,z=X,x=K,A=Y,y=L,U=Z,B=M,l=$,h=N,R=aa,C=O,S=ba,D=P,V=ca,E=Q,m=0;80>m;m++){var s=v[m];if(16>m)var j=s.high=a[d+2*m]|0,b=s.low=a[d+2*m+1]|0;else{var j=v[m-15],b=j.high,p=j.low,j=(b>>>1|p<<31)^(b>>>8|p<<24)^b>>>7,p=(p>>>1|b<<31)^(p>>>8|b<<24)^(p>>>7|b<<25),u=v[m-2],b=u.high,c=u.low,u=(b>>>19|c<<13)^(b<< -3|c>>>29)^b>>>6,c=(c>>>19|b<<13)^(c<<3|b>>>29)^(c>>>6|b<<26),b=v[m-7],W=b.high,t=v[m-16],q=t.high,t=t.low,b=p+b.low,j=j+W+(b>>>0

    >>0?1:0),b=b+c,j=j+u+(b>>>0>>0?1:0),b=b+t,j=j+q+(b>>>0>>0?1:0);s.high=j;s.low=b}var W=l&R^~l&S,t=h&C^~h&D,s=k&z^k&A^z&A,T=g&x^g&y^x&y,p=(k>>>28|g<<4)^(k<<30|g>>>2)^(k<<25|g>>>7),u=(g>>>28|k<<4)^(g<<30|k>>>2)^(g<<25|k>>>7),c=ea[m],fa=c.high,da=c.low,c=E+((h>>>14|l<<18)^(h>>>18|l<<14)^(h<<23|l>>>9)),q=V+((l>>>14|h<<18)^(l>>>18|h<<14)^(l<<23|h>>>9))+(c>>>0>>0?1: -0),c=c+t,q=q+W+(c>>>0>>0?1:0),c=c+da,q=q+fa+(c>>>0>>0?1:0),c=c+b,q=q+j+(c>>>0>>0?1:0),b=u+T,s=p+s+(b>>>0>>0?1:0),V=S,E=D,S=R,D=C,R=l,C=h,h=B+c|0,l=U+q+(h>>>0>>0?1:0)|0,U=A,B=y,A=z,y=x,z=k,x=g,g=c+b|0,k=q+s+(g>>>0>>0?1:0)|0}J=F.low=J+g;F.high=w+k+(J>>>0>>0?1:0);K=e.low=K+x;e.high=X+z+(K>>>0>>0?1:0);L=n.low=L+y;n.high=Y+A+(L>>>0>>0?1:0);M=r.low=M+B;r.high=Z+U+(M>>>0>>0?1:0);N=G.low=N+h;G.high=$+l+(N>>>0>>0?1:0);O=H.low=O+C;H.high=aa+R+(O>>>0>>0?1:0);P=I.low=P+D; -I.high=ba+S+(P>>>0>>0?1:0);Q=f.low=Q+E;f.high=ca+V+(Q>>>0>>0?1:0)},_doFinalize:function(){var a=this._data,d=a.words,f=8*this._nDataBytes,e=8*a.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+128>>>10<<5)+30]=Math.floor(f/4294967296);d[(e+128>>>10<<5)+31]=f;a.sigBytes=4*d.length;this._process();return this._hash.toX32()},clone:function(){var a=r.clone.call(this);a._hash=this._hash.clone();return a},blockSize:32});n.SHA512=r._createHelper(e);n.HmacSHA512=r._createHmacHelper(e)})(); -/* -CryptoJS v3.1.2 sha384-min.js -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function(){var c=CryptoJS,a=c.x64,b=a.Word,e=a.WordArray,a=c.algo,d=a.SHA512,a=a.SHA384=d.extend({_doReset:function(){this._hash=new e.init([new b.init(3418070365,3238371032),new b.init(1654270250,914150663),new b.init(2438529370,812702999),new b.init(355462360,4144912697),new b.init(1731405415,4290775857),new b.init(2394180231,1750603025),new b.init(3675008525,1694076839),new b.init(1203062813,3204075428)])},_doFinalize:function(){var a=d._doFinalize.call(this);a.sigBytes-=16;return a}});c.SHA384= -d._createHelper(a);c.HmacSHA384=d._createHmacHelper(a)})(); -/* -CryptoJS v3.1.2 md5-min.js -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function(E){function h(a,f,g,j,p,h,k){a=a+(f&g|~f&j)+p+k;return(a<>>32-h)+f}function k(a,f,g,j,p,h,k){a=a+(f&j|g&~j)+p+k;return(a<>>32-h)+f}function l(a,f,g,j,h,k,l){a=a+(f^g^j)+h+l;return(a<>>32-k)+f}function n(a,f,g,j,h,k,l){a=a+(g^(f|~j))+h+l;return(a<>>32-k)+f}for(var r=CryptoJS,q=r.lib,F=q.WordArray,s=q.Hasher,q=r.algo,a=[],t=0;64>t;t++)a[t]=4294967296*E.abs(E.sin(t+1))|0;q=q.MD5=s.extend({_doReset:function(){this._hash=new F.init([1732584193,4023233417,2562383102,271733878])}, -_doProcessBlock:function(m,f){for(var g=0;16>g;g++){var j=f+g,p=m[j];m[j]=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360}var g=this._hash.words,j=m[f+0],p=m[f+1],q=m[f+2],r=m[f+3],s=m[f+4],t=m[f+5],u=m[f+6],v=m[f+7],w=m[f+8],x=m[f+9],y=m[f+10],z=m[f+11],A=m[f+12],B=m[f+13],C=m[f+14],D=m[f+15],b=g[0],c=g[1],d=g[2],e=g[3],b=h(b,c,d,e,j,7,a[0]),e=h(e,b,c,d,p,12,a[1]),d=h(d,e,b,c,q,17,a[2]),c=h(c,d,e,b,r,22,a[3]),b=h(b,c,d,e,s,7,a[4]),e=h(e,b,c,d,t,12,a[5]),d=h(d,e,b,c,u,17,a[6]),c=h(c,d,e,b,v,22,a[7]), -b=h(b,c,d,e,w,7,a[8]),e=h(e,b,c,d,x,12,a[9]),d=h(d,e,b,c,y,17,a[10]),c=h(c,d,e,b,z,22,a[11]),b=h(b,c,d,e,A,7,a[12]),e=h(e,b,c,d,B,12,a[13]),d=h(d,e,b,c,C,17,a[14]),c=h(c,d,e,b,D,22,a[15]),b=k(b,c,d,e,p,5,a[16]),e=k(e,b,c,d,u,9,a[17]),d=k(d,e,b,c,z,14,a[18]),c=k(c,d,e,b,j,20,a[19]),b=k(b,c,d,e,t,5,a[20]),e=k(e,b,c,d,y,9,a[21]),d=k(d,e,b,c,D,14,a[22]),c=k(c,d,e,b,s,20,a[23]),b=k(b,c,d,e,x,5,a[24]),e=k(e,b,c,d,C,9,a[25]),d=k(d,e,b,c,r,14,a[26]),c=k(c,d,e,b,w,20,a[27]),b=k(b,c,d,e,B,5,a[28]),e=k(e,b, -c,d,q,9,a[29]),d=k(d,e,b,c,v,14,a[30]),c=k(c,d,e,b,A,20,a[31]),b=l(b,c,d,e,t,4,a[32]),e=l(e,b,c,d,w,11,a[33]),d=l(d,e,b,c,z,16,a[34]),c=l(c,d,e,b,C,23,a[35]),b=l(b,c,d,e,p,4,a[36]),e=l(e,b,c,d,s,11,a[37]),d=l(d,e,b,c,v,16,a[38]),c=l(c,d,e,b,y,23,a[39]),b=l(b,c,d,e,B,4,a[40]),e=l(e,b,c,d,j,11,a[41]),d=l(d,e,b,c,r,16,a[42]),c=l(c,d,e,b,u,23,a[43]),b=l(b,c,d,e,x,4,a[44]),e=l(e,b,c,d,A,11,a[45]),d=l(d,e,b,c,D,16,a[46]),c=l(c,d,e,b,q,23,a[47]),b=n(b,c,d,e,j,6,a[48]),e=n(e,b,c,d,v,10,a[49]),d=n(d,e,b,c, -C,15,a[50]),c=n(c,d,e,b,t,21,a[51]),b=n(b,c,d,e,A,6,a[52]),e=n(e,b,c,d,r,10,a[53]),d=n(d,e,b,c,y,15,a[54]),c=n(c,d,e,b,p,21,a[55]),b=n(b,c,d,e,w,6,a[56]),e=n(e,b,c,d,D,10,a[57]),d=n(d,e,b,c,u,15,a[58]),c=n(c,d,e,b,B,21,a[59]),b=n(b,c,d,e,s,6,a[60]),e=n(e,b,c,d,z,10,a[61]),d=n(d,e,b,c,q,15,a[62]),c=n(c,d,e,b,x,21,a[63]);g[0]=g[0]+b|0;g[1]=g[1]+c|0;g[2]=g[2]+d|0;g[3]=g[3]+e|0},_doFinalize:function(){var a=this._data,f=a.words,g=8*this._nDataBytes,j=8*a.sigBytes;f[j>>>5]|=128<<24-j%32;var h=E.floor(g/ -4294967296);f[(j+64>>>9<<4)+15]=(h<<8|h>>>24)&16711935|(h<<24|h>>>8)&4278255360;f[(j+64>>>9<<4)+14]=(g<<8|g>>>24)&16711935|(g<<24|g>>>8)&4278255360;a.sigBytes=4*(f.length+1);this._process();a=this._hash;f=a.words;for(g=0;4>g;g++)j=f[g],f[g]=(j<<8|j>>>24)&16711935|(j<<24|j>>>8)&4278255360;return a},clone:function(){var a=s.clone.call(this);a._hash=this._hash.clone();return a}});r.MD5=s._createHelper(q);r.HmacMD5=s._createHmacHelper(q)})(Math); -/* -CryptoJS v3.1.2 enc-base64-min.js -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function(){var h=CryptoJS,j=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();b=[];for(var a=0;a>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d< -e;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); -/* -CryptoJS v3.1.2 cipher-core-min.js -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -CryptoJS.lib.Cipher||function(u){var g=CryptoJS,f=g.lib,k=f.Base,l=f.WordArray,q=f.BufferedBlockAlgorithm,r=g.enc.Base64,v=g.algo.EvpKDF,n=f.Cipher=q.extend({cfg:k.extend(),createEncryptor:function(a,b){return this.create(this._ENC_XFORM_MODE,a,b)},createDecryptor:function(a,b){return this.create(this._DEC_XFORM_MODE,a,b)},init:function(a,b,c){this.cfg=this.cfg.extend(c);this._xformMode=a;this._key=b;this.reset()},reset:function(){q.reset.call(this);this._doReset()},process:function(a){this._append(a); -return this._process()},finalize:function(a){a&&this._append(a);return this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(a){return{encrypt:function(b,c,d){return("string"==typeof c?s:j).encrypt(a,b,c,d)},decrypt:function(b,c,d){return("string"==typeof c?s:j).decrypt(a,b,c,d)}}}});f.StreamCipher=n.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var m=g.mode={},t=function(a,b,c){var d=this._iv;d?this._iv=u:d=this._prevBlock;for(var e= -0;e>>2]&255}};f.BlockCipher=n.extend({cfg:n.cfg.extend({mode:m,padding:h}),reset:function(){n.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1; -this._mode=c.call(a,this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var p=f.CipherParams=k.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),m=(g.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt; -return(a?l.create([1398893684,1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=l.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return p.create({ciphertext:a,salt:c})}},j=f.SerializableCipher=k.extend({cfg:k.extend({format:m}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var e=a.createEncryptor(c,d);b=e.finalize(b);e=e.cfg;return p.create({ciphertext:b,key:c,iv:e.iv,algorithm:a,mode:e.mode,padding:e.padding, -blockSize:a.blockSize,formatter:d.format})},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a,this):a}}),g=(g.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=l.random(8));a=v.create({keySize:b+c}).compute(a,d);c=l.create(a.words.slice(b),4*c);a.sigBytes=4*b;return p.create({key:a,iv:c,salt:d})}},s=f.PasswordBasedCipher=j.extend({cfg:j.cfg.extend({kdf:g}),encrypt:function(a, -b,c,d){d=this.cfg.extend(d);c=d.kdf.execute(c,a.keySize,a.ivSize);d.iv=c.iv;a=j.encrypt.call(this,a,b,c.key,d);a.mixIn(c);return a},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);c=d.kdf.execute(c,a.keySize,a.ivSize,b.salt);d.iv=c.iv;return j.decrypt.call(this,a,b,c.key,d)}})}(); -/* -CryptoJS v3.1.2 aes-min.js -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function(){for(var q=CryptoJS,x=q.lib.BlockCipher,r=q.algo,j=[],y=[],z=[],A=[],B=[],C=[],s=[],u=[],v=[],w=[],g=[],k=0;256>k;k++)g[k]=128>k?k<<1:k<<1^283;for(var n=0,l=0,k=0;256>k;k++){var f=l^l<<1^l<<2^l<<3^l<<4,f=f>>>8^f&255^99;j[n]=f;y[f]=n;var t=g[n],D=g[t],E=g[D],b=257*g[f]^16843008*f;z[n]=b<<24|b>>>8;A[n]=b<<16|b>>>16;B[n]=b<<8|b>>>24;C[n]=b;b=16843009*E^65537*D^257*t^16843008*n;s[f]=b<<24|b>>>8;u[f]=b<<16|b>>>16;v[f]=b<<8|b>>>24;w[f]=b;n?(n=t^g[g[g[E^t]]],l^=g[g[l]]):n=l=1}var F=[0,1,2,4,8, -16,32,64,128,27,54],r=r.AES=x.extend({_doReset:function(){for(var c=this._key,e=c.words,a=c.sigBytes/4,c=4*((this._nRounds=a+6)+1),b=this._keySchedule=[],h=0;h>>24]<<24|j[d>>>16&255]<<16|j[d>>>8&255]<<8|j[d&255]):(d=d<<8|d>>>24,d=j[d>>>24]<<24|j[d>>>16&255]<<16|j[d>>>8&255]<<8|j[d&255],d^=F[h/a|0]<<24);b[h]=b[h-a]^d}e=this._invKeySchedule=[];for(a=0;aa||4>=h?d:s[j[d>>>24]]^u[j[d>>>16&255]]^v[j[d>>> -8&255]]^w[j[d&255]]},encryptBlock:function(c,e){this._doCryptBlock(c,e,this._keySchedule,z,A,B,C,j)},decryptBlock:function(c,e){var a=c[e+1];c[e+1]=c[e+3];c[e+3]=a;this._doCryptBlock(c,e,this._invKeySchedule,s,u,v,w,y);a=c[e+1];c[e+1]=c[e+3];c[e+3]=a},_doCryptBlock:function(c,e,a,b,h,d,j,m){for(var n=this._nRounds,f=c[e]^a[0],g=c[e+1]^a[1],k=c[e+2]^a[2],p=c[e+3]^a[3],l=4,t=1;t>>24]^h[g>>>16&255]^d[k>>>8&255]^j[p&255]^a[l++],r=b[g>>>24]^h[k>>>16&255]^d[p>>>8&255]^j[f&255]^a[l++],s= -b[k>>>24]^h[p>>>16&255]^d[f>>>8&255]^j[g&255]^a[l++],p=b[p>>>24]^h[f>>>16&255]^d[g>>>8&255]^j[k&255]^a[l++],f=q,g=r,k=s;q=(m[f>>>24]<<24|m[g>>>16&255]<<16|m[k>>>8&255]<<8|m[p&255])^a[l++];r=(m[g>>>24]<<24|m[k>>>16&255]<<16|m[p>>>8&255]<<8|m[f&255])^a[l++];s=(m[k>>>24]<<24|m[p>>>16&255]<<16|m[f>>>8&255]<<8|m[g&255])^a[l++];p=(m[p>>>24]<<24|m[f>>>16&255]<<16|m[g>>>8&255]<<8|m[k&255])^a[l++];c[e]=q;c[e+1]=r;c[e+2]=s;c[e+3]=p},keySize:8});q.AES=x._createHelper(r)})(); -/* -CryptoJS v3.1.2 tripledes-min.js -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function(){function j(b,c){var a=(this._lBlock>>>b^this._rBlock)&c;this._rBlock^=a;this._lBlock^=a<>>b^this._lBlock)&c;this._lBlock^=a;this._rBlock^=a<a;a++){var f=q[a]-1;c[a]=b[f>>>5]>>>31-f%32&1}b=this._subKeys=[];for(f=0;16>f;f++){for(var d=b[f]=[],e=r[f],a=0;24>a;a++)d[a/6|0]|=c[(p[a]-1+e)%28]<<31-a%6,d[4+(a/6|0)]|=c[28+(p[a+24]-1+e)%28]<<31-a%6;d[0]=d[0]<<1|d[0]>>>31;for(a=1;7>a;a++)d[a]>>>= -4*(a-1)+3;d[7]=d[7]<<5|d[7]>>>27}c=this._invSubKeys=[];for(a=0;16>a;a++)c[a]=b[15-a]},encryptBlock:function(b,c){this._doCryptBlock(b,c,this._subKeys)},decryptBlock:function(b,c){this._doCryptBlock(b,c,this._invSubKeys)},_doCryptBlock:function(b,c,a){this._lBlock=b[c];this._rBlock=b[c+1];j.call(this,4,252645135);j.call(this,16,65535);l.call(this,2,858993459);l.call(this,8,16711935);j.call(this,1,1431655765);for(var f=0;16>f;f++){for(var d=a[f],e=this._lBlock,h=this._rBlock,g=0,k=0;8>k;k++)g|=s[k][((h^ -d[k])&t[k])>>>0];this._lBlock=h;this._rBlock=e^g}a=this._lBlock;this._lBlock=this._rBlock;this._rBlock=a;j.call(this,1,1431655765);l.call(this,8,16711935);l.call(this,2,858993459);j.call(this,16,65535);j.call(this,4,252645135);b[c]=this._lBlock;b[c+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});h.DES=e._createHelper(m);g=g.TripleDES=e.extend({_doReset:function(){var b=this._key.words;this._des1=m.createEncryptor(n.create(b.slice(0,2)));this._des2=m.createEncryptor(n.create(b.slice(2,4)));this._des3= -m.createEncryptor(n.create(b.slice(4,6)))},encryptBlock:function(b,c){this._des1.encryptBlock(b,c);this._des2.decryptBlock(b,c);this._des3.encryptBlock(b,c)},decryptBlock:function(b,c){this._des3.decryptBlock(b,c);this._des2.encryptBlock(b,c);this._des1.decryptBlock(b,c)},keySize:6,ivSize:2,blockSize:2});h.TripleDES=e._createHelper(g)})(); -/* -CryptoJS v3.1.2 sha1-min.js -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function(){var k=CryptoJS,b=k.lib,m=b.WordArray,l=b.Hasher,d=[],b=k.algo.SHA1=l.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(n,p){for(var a=this._hash.words,e=a[0],f=a[1],h=a[2],j=a[3],b=a[4],c=0;80>c;c++){if(16>c)d[c]=n[p+c]|0;else{var g=d[c-3]^d[c-8]^d[c-14]^d[c-16];d[c]=g<<1|g>>>31}g=(e<<5|e>>>27)+b+d[c];g=20>c?g+((f&h|~f&j)+1518500249):40>c?g+((f^h^j)+1859775393):60>c?g+((f&h|f&j|h&j)-1894007588):g+((f^h^ -j)-899497514);b=j;j=h;h=f<<30|f>>>2;f=e;e=g}a[0]=a[0]+e|0;a[1]=a[1]+f|0;a[2]=a[2]+h|0;a[3]=a[3]+j|0;a[4]=a[4]+b|0},_doFinalize:function(){var b=this._data,d=b.words,a=8*this._nDataBytes,e=8*b.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+64>>>9<<4)+14]=Math.floor(a/4294967296);d[(e+64>>>9<<4)+15]=a;b.sigBytes=4*d.length;this._process();return this._hash},clone:function(){var b=l.clone.call(this);b._hash=this._hash.clone();return b}});k.SHA1=l._createHelper(b);k.HmacSHA1=l._createHmacHelper(b)})(); -/* -CryptoJS v3.1.2 ripemd160-min.js -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -/* - -(c) 2012 by Cedric Mesnil. 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. - -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 THE COPYRIGHT HOLDER OR CONTRIBUTORS 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. -*/ -(function(){var q=CryptoJS,d=q.lib,n=d.WordArray,p=d.Hasher,d=q.algo,x=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),y=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),z=n.create([11,14,15,12, -5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),A=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),B=n.create([0,1518500249,1859775393,2400959708,2840853838]),C=n.create([1352829926,1548603684,1836072691, -2053994217,0]),d=d.RIPEMD160=p.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,v){for(var b=0;16>b;b++){var c=v+b,f=e[c];e[c]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360}var c=this._hash.words,f=B.words,d=C.words,n=x.words,q=y.words,p=z.words,w=A.words,t,g,h,j,r,u,k,l,m,s;u=t=c[0];k=g=c[1];l=h=c[2];m=j=c[3];s=r=c[4];for(var a,b=0;80>b;b+=1)a=t+e[v+n[b]]|0,a=16>b?a+((g^h^j)+f[0]):32>b?a+((g&h|~g&j)+f[1]):48>b? -a+(((g|~h)^j)+f[2]):64>b?a+((g&j|h&~j)+f[3]):a+((g^(h|~j))+f[4]),a|=0,a=a<>>32-p[b],a=a+r|0,t=r,r=j,j=h<<10|h>>>22,h=g,g=a,a=u+e[v+q[b]]|0,a=16>b?a+((k^(l|~m))+d[0]):32>b?a+((k&m|l&~m)+d[1]):48>b?a+(((k|~l)^m)+d[2]):64>b?a+((k&l|~k&m)+d[3]):a+((k^l^m)+d[4]),a|=0,a=a<>>32-w[b],a=a+s|0,u=s,s=m,m=l<<10|l>>>22,l=k,k=a;a=c[1]+h+m|0;c[1]=c[2]+j+s|0;c[2]=c[3]+r+u|0;c[3]=c[4]+t+k|0;c[4]=c[0]+g+l|0;c[0]=a},_doFinalize:function(){var e=this._data,d=e.words,b=8*this._nDataBytes,c=8*e.sigBytes; -d[c>>>5]|=128<<24-c%32;d[(c+64>>>9<<4)+14]=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360;e.sigBytes=4*(d.length+1);this._process();e=this._hash;d=e.words;for(b=0;5>b;b++)c=d[b],d[b]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;return e},clone:function(){var d=p.clone.call(this);d._hash=this._hash.clone();return d}});q.RIPEMD160=p._createHelper(d);q.HmacRIPEMD160=p._createHmacHelper(d)})(Math); -/* -CryptoJS v3.1.2 pbkdf2-min.js -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function(){var b=CryptoJS,a=b.lib,d=a.Base,m=a.WordArray,a=b.algo,q=a.HMAC,l=a.PBKDF2=d.extend({cfg:d.extend({keySize:4,hasher:a.SHA1,iterations:1}),init:function(a){this.cfg=this.cfg.extend(a)},compute:function(a,b){for(var c=this.cfg,f=q.create(c.hasher,a),g=m.create(),d=m.create([1]),l=g.words,r=d.words,n=c.keySize,c=c.iterations;l.length>6)+b64map.charAt(e&63)}if(b+1==d.length){e=parseInt(d.substring(b,b+1),16);a+=b64map.charAt(e<<2)}else{if(b+2==d.length){e=parseInt(d.substring(b,b+2),16);a+=b64map.charAt(e>>2)+b64map.charAt((e&3)<<4)}}if(b64pad){while((a.length&3)>0){a+=b64pad}}return a}function b64tohex(f){var d="";var e;var b=0;var c;var a;for(e=0;e>2);c=a&3;b=1}else{if(b==1){d+=int2char((c<<2)|(a>>4));c=a&15;b=2}else{if(b==2){d+=int2char(c);d+=int2char(a>>2);c=a&3;b=3}else{d+=int2char((c<<2)|(a>>4));d+=int2char(a&15);b=0}}}}if(b==1){d+=int2char(c<<2)}return d}function b64toBA(e){var d=b64tohex(e);var c;var b=new Array();for(c=0;2*c=0){var d=a*this[f++]+b[e]+h;h=Math.floor(d/67108864);b[e++]=d&67108863}return h}function am2(f,q,r,e,o,a){var k=q&32767,p=q>>15;while(--a>=0){var d=this[f]&32767;var g=this[f++]>>15;var b=p*d+g*k;d=k*d+((b&32767)<<15)+r[e]+(o&1073741823);o=(d>>>30)+(b>>>15)+p*g+(o>>>30);r[e++]=d&1073741823}return o}function am3(f,q,r,e,o,a){var k=q&16383,p=q>>14;while(--a>=0){var d=this[f]&16383;var g=this[f++]>>14;var b=p*d+g*k;d=k*d+((b&16383)<<14)+r[e]+o;o=(d>>28)+(b>>14)+p*g;r[e++]=d&268435455}return o}if(j_lm&&(navigator.appName=="Microsoft Internet Explorer")){BigInteger.prototype.am=am2;dbits=30}else{if(j_lm&&(navigator.appName!="Netscape")){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=((1<=0;--a){b[a]=this[a]}b.t=this.t;b.s=this.s}function bnpFromInt(a){this.t=1;this.s=(a<0)?-1:0;if(a>0){this[0]=a}else{if(a<-1){this[0]=a+this.DV}else{this.t=0}}}function nbv(a){var b=nbi();b.fromInt(a);return b}function bnpFromString(h,c){var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==256){e=8}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{this.fromRadix(h,c);return}}}}}}this.t=0;this.s=0;var g=h.length,d=false,f=0;while(--g>=0){var a=(e==8)?h[g]&255:intAt(h,g);if(a<0){if(h.charAt(g)=="-"){d=true}continue}d=false;if(f==0){this[this.t++]=a}else{if(f+e>this.DB){this[this.t-1]|=(a&((1<<(this.DB-f))-1))<>(this.DB-f))}else{this[this.t-1]|=a<=this.DB){f-=this.DB}}if(e==8&&(h[0]&128)!=0){this.s=-1;if(f>0){this[this.t-1]|=((1<<(this.DB-f))-1)<0&&this[this.t-1]==a){--this.t}}function bnToString(c){if(this.s<0){return"-"+this.negate().toString(c)}var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{return this.toRadix(c)}}}}}var g=(1<0){if(j>j)>0){a=true;h=int2char(l)}while(f>=0){if(j>(j+=this.DB-e)}else{l=(this[f]>>(j-=e))&g;if(j<=0){j+=this.DB;--f}}if(l>0){a=true}if(a){h+=int2char(l)}}}return a?h:"0"}function bnNegate(){var a=nbi();BigInteger.ZERO.subTo(this,a);return a}function bnAbs(){return(this.s<0)?this.negate():this}function bnCompareTo(b){var d=this.s-b.s;if(d!=0){return d}var c=this.t;d=c-b.t;if(d!=0){return(this.s<0)?-d:d}while(--c>=0){if((d=this[c]-b[c])!=0){return d}}return 0}function nbits(a){var c=1,b;if((b=a>>>16)!=0){a=b;c+=16}if((b=a>>8)!=0){a=b;c+=8}if((b=a>>4)!=0){a=b;c+=4}if((b=a>>2)!=0){a=b;c+=2}if((b=a>>1)!=0){a=b;c+=1}return c}function bnBitLength(){if(this.t<=0){return 0}return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM))}function bnpDLShiftTo(c,b){var a;for(a=this.t-1;a>=0;--a){b[a+c]=this[a]}for(a=c-1;a>=0;--a){b[a]=0}b.t=this.t+c;b.s=this.s}function bnpDRShiftTo(c,b){for(var a=c;a=0;--d){e[d+f+1]=(this[d]>>a)|h;h=(this[d]&g)<=0;--d){e[d]=0}e[f]=h;e.t=this.t+f+1;e.s=this.s;e.clamp()}function bnpRShiftTo(g,d){d.s=this.s;var e=Math.floor(g/this.DB);if(e>=this.t){d.t=0;return}var b=g%this.DB;var a=this.DB-b;var f=(1<>b;for(var c=e+1;c>b}if(b>0){d[this.t-e-1]|=(this.s&f)<>=this.DB}if(d.t>=this.DB}g+=this.s}else{g+=this.s;while(e>=this.DB}g-=d.s}f.s=(g<0)?-1:0;if(g<-1){f[e++]=this.DV+g}else{if(g>0){f[e++]=g}}f.t=e;f.clamp()}function bnpMultiplyTo(c,e){var b=this.abs(),f=c.abs();var d=b.t;e.t=d+f.t;while(--d>=0){e[d]=0}for(d=0;d=0){d[b]=0}for(b=0;b=a.DV){d[b+a.t]-=a.DV;d[b+a.t+1]=1}}if(d.t>0){d[d.t-1]+=a.am(b,a[b],d,2*b,0,1)}d.s=0;d.clamp()}function bnpDivRemTo(n,h,g){var w=n.abs();if(w.t<=0){return}var k=this.abs();if(k.t0){w.lShiftTo(v,d);k.lShiftTo(v,g)}else{w.copyTo(d);k.copyTo(g)}var p=d.t;var b=d[p-1];if(b==0){return}var o=b*(1<1)?d[p-2]>>this.F2:0);var A=this.FV/o,z=(1<=0){g[g.t++]=1;g.subTo(f,g)}BigInteger.ONE.dlShiftTo(p,f);f.subTo(d,d);while(d.t=0){var c=(g[--u]==b)?this.DM:Math.floor(g[u]*A+(g[u-1]+x)*z);if((g[u]+=d.am(0,c,g,s,0,p))0){g.rShiftTo(v,g)}if(a<0){BigInteger.ZERO.subTo(g,g)}}function bnMod(b){var c=nbi();this.abs().divRemTo(b,null,c);if(this.s<0&&c.compareTo(BigInteger.ZERO)>0){b.subTo(c,c)}return c}function Classic(a){this.m=a}function cConvert(a){if(a.s<0||a.compareTo(this.m)>=0){return a.mod(this.m)}else{return a}}function cRevert(a){return a}function cReduce(a){a.divRemTo(this.m,null,a)}function cMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}function cSqrTo(a,b){a.squareTo(b);this.reduce(b)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1){return 0}var a=this[0];if((a&1)==0){return 0}var b=a&3;b=(b*(2-(a&15)*b))&15;b=(b*(2-(a&255)*b))&255;b=(b*(2-(((a&65535)*b)&65535)))&65535;b=(b*(2-a*b%this.DV))%this.DV;return(b>0)?this.DV-b:-b}function Montgomery(a){this.m=a;this.mp=a.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<(a.DB-15))-1;this.mt2=2*a.t}function montConvert(a){var b=nbi();a.abs().dlShiftTo(this.m.t,b);b.divRemTo(this.m,null,b);if(a.s<0&&b.compareTo(BigInteger.ZERO)>0){this.m.subTo(b,b)}return b}function montRevert(a){var b=nbi();a.copyTo(b);this.reduce(b);return b}function montReduce(a){while(a.t<=this.mt2){a[a.t++]=0}for(var c=0;c>15)*this.mpl)&this.um)<<15))&a.DM;b=c+this.m.t;a[b]+=this.m.am(0,d,a,c,0,this.m.t);while(a[b]>=a.DV){a[b]-=a.DV;a[++b]++}}a.clamp();a.drShiftTo(this.m.t,a);if(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function montSqrTo(a,b){a.squareTo(b);this.reduce(b)}function montMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return((this.t>0)?(this[0]&1):this.s)==0}function bnpExp(h,j){if(h>4294967295||h<1){return BigInteger.ONE}var f=nbi(),a=nbi(),d=j.convert(this),c=nbits(h)-1;d.copyTo(f);while(--c>=0){j.sqrTo(f,a);if((h&(1<0){j.mulTo(a,d,f)}else{var b=f;f=a;a=b}}return j.revert(f)}function bnModPowInt(b,a){var c;if(b<256||a.isEven()){c=new Classic(a)}else{c=new Montgomery(a)}return this.exp(b,c)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1); -/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ - */ -function bnClone(){var a=nbi();this.copyTo(a);return a}function bnIntValue(){if(this.s<0){if(this.t==1){return this[0]-this.DV}else{if(this.t==0){return -1}}}else{if(this.t==1){return this[0]}else{if(this.t==0){return 0}}}return((this[1]&((1<<(32-this.DB))-1))<>24}function bnShortValue(){return(this.t==0)?this.s:(this[0]<<16)>>16}function bnpChunkSize(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function bnSigNum(){if(this.s<0){return -1}else{if(this.t<=0||(this.t==1&&this[0]<=0)){return 0}else{return 1}}}function bnpToRadix(c){if(c==null){c=10}if(this.signum()==0||c<2||c>36){return"0"}var f=this.chunkSize(c);var e=Math.pow(c,f);var i=nbv(e),j=nbi(),h=nbi(),g="";this.divRemTo(i,j,h);while(j.signum()>0){g=(e+h.intValue()).toString(c).substr(1)+g;j.divRemTo(i,j,h)}return h.intValue().toString(c)+g}function bnpFromRadix(m,h){this.fromInt(0);if(h==null){h=10}var f=this.chunkSize(h);var g=Math.pow(h,f),e=false,a=0,l=0;for(var c=0;c=f){this.dMultiply(g);this.dAddOffset(l,0);a=0;l=0}}if(a>0){this.dMultiply(Math.pow(h,a));this.dAddOffset(l,0)}if(e){BigInteger.ZERO.subTo(this,this)}}function bnpFromNumber(f,e,h){if("number"==typeof e){if(f<2){this.fromInt(1)}else{this.fromNumber(f,h);if(!this.testBit(f-1)){this.bitwiseTo(BigInteger.ONE.shiftLeft(f-1),op_or,this)}if(this.isEven()){this.dAddOffset(1,0)}while(!this.isProbablePrime(e)){this.dAddOffset(2,0);if(this.bitLength()>f){this.subTo(BigInteger.ONE.shiftLeft(f-1),this)}}}}else{var d=new Array(),g=f&7;d.length=(f>>3)+1;e.nextBytes(d);if(g>0){d[0]&=((1<0){if(e>e)!=(this.s&this.DM)>>e){c[a++]=f|(this.s<<(this.DB-e))}while(b>=0){if(e<8){f=(this[b]&((1<>(e+=this.DB-8)}else{f=(this[b]>>(e-=8))&255;if(e<=0){e+=this.DB;--b}}if((f&128)!=0){f|=-256}if(a==0&&(this.s&128)!=(f&128)){++a}if(a>0||f!=this.s){c[a++]=f}}}return c}function bnEquals(b){return(this.compareTo(b)==0)}function bnMin(b){return(this.compareTo(b)<0)?this:b}function bnMax(b){return(this.compareTo(b)>0)?this:b}function bnpBitwiseTo(c,h,e){var d,g,b=Math.min(c.t,this.t);for(d=0;d>=16;b+=16}if((a&255)==0){a>>=8;b+=8}if((a&15)==0){a>>=4;b+=4}if((a&3)==0){a>>=2;b+=2}if((a&1)==0){++b}return b}function bnGetLowestSetBit(){for(var a=0;a=this.t){return(this.s!=0)}return((this[a]&(1<<(b%this.DB)))!=0)}function bnpChangeBit(c,b){var a=BigInteger.ONE.shiftLeft(c);this.bitwiseTo(a,b,a);return a}function bnSetBit(a){return this.changeBit(a,op_or)}function bnClearBit(a){return this.changeBit(a,op_andnot)}function bnFlipBit(a){return this.changeBit(a,op_xor)}function bnpAddTo(d,f){var e=0,g=0,b=Math.min(d.t,this.t);while(e>=this.DB}if(d.t>=this.DB}g+=this.s}else{g+=this.s;while(e>=this.DB}g+=d.s}f.s=(g<0)?-1:0;if(g>0){f[e++]=g}else{if(g<-1){f[e++]=this.DV+g}}f.t=e;f.clamp()}function bnAdd(b){var c=nbi();this.addTo(b,c);return c}function bnSubtract(b){var c=nbi();this.subTo(b,c);return c}function bnMultiply(b){var c=nbi();this.multiplyTo(b,c);return c}function bnSquare(){var a=nbi();this.squareTo(a);return a}function bnDivide(b){var c=nbi();this.divRemTo(b,c,null);return c}function bnRemainder(b){var c=nbi();this.divRemTo(b,null,c);return c}function bnDivideAndRemainder(b){var d=nbi(),c=nbi();this.divRemTo(b,d,c);return new Array(d,c)}function bnpDMultiply(a){this[this.t]=this.am(0,a-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(b,a){if(b==0){return}while(this.t<=a){this[this.t++]=0}this[a]+=b;while(this[a]>=this.DV){this[a]-=this.DV;if(++a>=this.t){this[this.t++]=0}++this[a]}}function NullExp(){}function nNop(a){return a}function nMulTo(a,c,b){a.multiplyTo(c,b)}function nSqrTo(a,b){a.squareTo(b)}NullExp.prototype.convert=nNop;NullExp.prototype.revert=nNop;NullExp.prototype.mulTo=nMulTo;NullExp.prototype.sqrTo=nSqrTo;function bnPow(a){return this.exp(a,new NullExp())}function bnpMultiplyLowerTo(b,f,e){var d=Math.min(this.t+b.t,f);e.s=0;e.t=d;while(d>0){e[--d]=0}var c;for(c=e.t-this.t;d=0){d[c]=0}for(c=Math.max(e-this.t,0);c2*this.m.t){return a.mod(this.m)}else{if(a.compareTo(this.m)<0){return a}else{var b=nbi();a.copyTo(b);this.reduce(b);return b}}}function barrettRevert(a){return a}function barrettReduce(a){a.drShiftTo(this.m.t-1,this.r2);if(a.t>this.m.t+1){a.t=this.m.t+1;a.clamp()}this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);while(a.compareTo(this.r2)<0){a.dAddOffset(1,this.m.t+1)}a.subTo(this.r2,a);while(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function barrettSqrTo(a,b){a.squareTo(b);this.reduce(b)}function barrettMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Barrett.prototype.convert=barrettConvert;Barrett.prototype.revert=barrettRevert;Barrett.prototype.reduce=barrettReduce;Barrett.prototype.mulTo=barrettMulTo;Barrett.prototype.sqrTo=barrettSqrTo;function bnModPow(q,f){var o=q.bitLength(),h,b=nbv(1),v;if(o<=0){return b}else{if(o<18){h=1}else{if(o<48){h=3}else{if(o<144){h=4}else{if(o<768){h=5}else{h=6}}}}}if(o<8){v=new Classic(f)}else{if(f.isEven()){v=new Barrett(f)}else{v=new Montgomery(f)}}var p=new Array(),d=3,s=h-1,a=(1<1){var A=nbi();v.sqrTo(p[1],A);while(d<=a){p[d]=nbi();v.mulTo(A,p[d-2],p[d]);d+=2}}var l=q.t-1,x,u=true,c=nbi(),y;o=nbits(q[l])-1;while(l>=0){if(o>=s){x=(q[l]>>(o-s))&a}else{x=(q[l]&((1<<(o+1))-1))<<(s-o);if(l>0){x|=q[l-1]>>(this.DB+o-s)}}d=h;while((x&1)==0){x>>=1;--d}if((o-=d)<0){o+=this.DB;--l}if(u){p[x].copyTo(b);u=false}else{while(d>1){v.sqrTo(b,c);v.sqrTo(c,b);d-=2}if(d>0){v.sqrTo(b,c)}else{y=b;b=c;c=y}v.mulTo(c,p[x],b)}while(l>=0&&(q[l]&(1<0){b.rShiftTo(f,b);h.rShiftTo(f,h)}while(b.signum()>0){if((d=b.getLowestSetBit())>0){b.rShiftTo(d,b)}if((d=h.getLowestSetBit())>0){h.rShiftTo(d,h)}if(b.compareTo(h)>=0){b.subTo(h,b);b.rShiftTo(1,b)}else{h.subTo(b,h);h.rShiftTo(1,h)}}if(f>0){h.lShiftTo(f,h)}return h}function bnpModInt(e){if(e<=0){return 0}var c=this.DV%e,b=(this.s<0)?e-1:0;if(this.t>0){if(c==0){b=this[0]%e}else{for(var a=this.t-1;a>=0;--a){b=(c*b+this[a])%e}}}return b}function bnModInverse(f){var j=f.isEven();if((this.isEven()&&j)||f.signum()==0){return BigInteger.ZERO}var i=f.clone(),h=this.clone();var g=nbv(1),e=nbv(0),l=nbv(0),k=nbv(1);while(i.signum()!=0){while(i.isEven()){i.rShiftTo(1,i);if(j){if(!g.isEven()||!e.isEven()){g.addTo(this,g);e.subTo(f,e)}g.rShiftTo(1,g)}else{if(!e.isEven()){e.subTo(f,e)}}e.rShiftTo(1,e)}while(h.isEven()){h.rShiftTo(1,h);if(j){if(!l.isEven()||!k.isEven()){l.addTo(this,l);k.subTo(f,k)}l.rShiftTo(1,l)}else{if(!k.isEven()){k.subTo(f,k)}}k.rShiftTo(1,k)}if(i.compareTo(h)>=0){i.subTo(h,i);if(j){g.subTo(l,g)}e.subTo(k,e)}else{h.subTo(i,h);if(j){l.subTo(g,l)}k.subTo(e,k)}}if(h.compareTo(BigInteger.ONE)!=0){return BigInteger.ZERO}if(k.compareTo(f)>=0){return k.subtract(f)}if(k.signum()<0){k.addTo(f,k)}else{return k}if(k.signum()<0){return k.add(f)}else{return k}}var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];var lplim=(1<<26)/lowprimes[lowprimes.length-1];function bnIsProbablePrime(e){var d,b=this.abs();if(b.t==1&&b[0]<=lowprimes[lowprimes.length-1]){for(d=0;d>1;if(f>lowprimes.length){f=lowprimes.length}var b=nbi();for(var e=0;e>8)&255;rng_pool[rng_pptr++]^=(a>>16)&255;rng_pool[rng_pptr++]^=(a>>24)&255;if(rng_pptr>=rng_psize){rng_pptr-=rng_psize}}function rng_seed_time(){rng_seed_int(new Date().getTime())}if(rng_pool==null){rng_pool=new Array();rng_pptr=0;var t;if(navigator.appName=="Netscape"&&navigator.appVersion<"5"&&window.crypto){var z=window.crypto.random(32);for(t=0;t>>8;rng_pool[rng_pptr++]=t&255}rng_pptr=0;rng_seed_time()}function rng_get_byte(){if(rng_state==null){rng_seed_time();rng_state=prng_newstate();rng_state.init(rng_pool);for(rng_pptr=0;rng_pptr=0&&h>0){var f=e.charCodeAt(d--);if(f<128){g[--h]=f}else{if((f>127)&&(f<2048)){g[--h]=(f&63)|128;g[--h]=(f>>6)|192}else{g[--h]=(f&63)|128;g[--h]=((f>>6)&63)|128;g[--h]=(f>>12)|224}}}g[--h]=0;var b=new SecureRandom();var a=new Array();while(h>2){a[0]=0;while(a[0]==0){b.nextBytes(a)}g[--h]=a[0]}g[--h]=2;g[--h]=0;return new BigInteger(g)}function oaep_mgf1_arr(c,a,e){var b="",d=0;while(b.length>24,(d&16711680)>>16,(d&65280)>>8,d&255])));d+=1}return b}var SHA1_SIZE=20;function oaep_pad(l,a,c){if(l.length+2*SHA1_SIZE+2>a){throw"Message too long for RSA"}var h="",d;for(d=0;d0&&a.length>0){this.n=parseBigInt(b,16);this.e=parseInt(a,16)}else{alert("Invalid RSA public key")}}}function RSADoPublic(a){return a.modPowInt(this.e,this.n)}function RSAEncrypt(d){var a=pkcs1pad2(d,(this.n.bitLength()+7)>>3);if(a==null){return null}var e=this.doPublic(a);if(e==null){return null}var b=e.toString(16);if((b.length&1)==0){return b}else{return"0"+b}}function RSAEncryptOAEP(e,d){var a=oaep_pad(e,(this.n.bitLength()+7)>>3,d);if(a==null){return null}var f=this.doPublic(a);if(f==null){return null}var b=f.toString(16);if((b.length&1)==0){return b}else{return"0"+b}}RSAKey.prototype.doPublic=RSADoPublic;RSAKey.prototype.setPublic=RSASetPublic;RSAKey.prototype.encrypt=RSAEncrypt;RSAKey.prototype.encryptOAEP=RSAEncryptOAEP;RSAKey.prototype.type="RSA"; -/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ - */ -function pkcs1unpad2(g,j){var a=g.toByteArray();var f=0;while(f=a.length){return null}}var e="";while(++f191)&&(h<224)){e+=String.fromCharCode(((h&31)<<6)|(a[f+1]&63));++f}else{e+=String.fromCharCode(((h&15)<<12)|((a[f+1]&63)<<6)|(a[f+2]&63));f+=2}}}return e}function oaep_mgf1_str(c,a,e){var b="",d=0;while(b.length>24,(d&16711680)>>16,(d&65280)>>8,d&255]));d+=1}return b}var SHA1_SIZE=20;function oaep_unpad(l,b,e){l=l.toByteArray();var f;for(f=0;f0&&a.length>0){this.n=parseBigInt(c,16);this.e=parseInt(a,16);this.d=parseBigInt(b,16)}else{alert("Invalid RSA private key")}}}function RSASetPrivateEx(g,d,e,c,b,a,h,f){if(g==null){throw"RSASetPrivateEx N == null"}if(d==null){throw"RSASetPrivateEx E == null"}if(g.length==0){throw"RSASetPrivateEx N.length == 0"}if(d.length==0){throw"RSASetPrivateEx E.length == 0"}if(g!=null&&d!=null&&g.length>0&&d.length>0){this.n=parseBigInt(g,16);this.e=parseInt(d,16);this.d=parseBigInt(e,16);this.p=parseBigInt(c,16);this.q=parseBigInt(b,16);this.dmp1=parseBigInt(a,16);this.dmq1=parseBigInt(h,16);this.coeff=parseBigInt(f,16)}else{alert("Invalid RSA private key in RSASetPrivateEx")}}function RSAGenerate(b,i){var a=new SecureRandom();var f=b>>1;this.e=parseInt(i,16);var c=new BigInteger(i,16);for(;;){for(;;){this.p=new BigInteger(b-f,1,a);if(this.p.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE)==0&&this.p.isProbablePrime(10)){break}}for(;;){this.q=new BigInteger(f,1,a);if(this.q.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE)==0&&this.q.isProbablePrime(10)){break}}if(this.p.compareTo(this.q)<=0){var h=this.p;this.p=this.q;this.q=h}var g=this.p.subtract(BigInteger.ONE);var d=this.q.subtract(BigInteger.ONE);var e=g.multiply(d);if(e.gcd(c).compareTo(BigInteger.ONE)==0){this.n=this.p.multiply(this.q);this.d=c.modInverse(e);this.dmp1=this.d.mod(g);this.dmq1=this.d.mod(d);this.coeff=this.q.modInverse(this.p);break}}}function RSADoPrivate(a){if(this.p==null||this.q==null){return a.modPow(this.d,this.n)}var c=a.mod(this.p).modPow(this.dmp1,this.p);var b=a.mod(this.q).modPow(this.dmq1,this.q);while(c.compareTo(b)<0){c=c.add(this.p)}return c.subtract(b).multiply(this.coeff).mod(this.p).multiply(this.q).add(b)}function RSADecrypt(b){var d=parseBigInt(b,16);var a=this.doPrivate(d);if(a==null){return null}return pkcs1unpad2(a,(this.n.bitLength()+7)>>3)}function RSADecryptOAEP(d,b){var e=parseBigInt(d,16);var a=this.doPrivate(e);if(a==null){return null}return oaep_unpad(a,(this.n.bitLength()+7)>>3,b)}RSAKey.prototype.doPrivate=RSADoPrivate;RSAKey.prototype.setPrivate=RSASetPrivate;RSAKey.prototype.setPrivateEx=RSASetPrivateEx;RSAKey.prototype.generate=RSAGenerate;RSAKey.prototype.decrypt=RSADecrypt;RSAKey.prototype.decryptOAEP=RSADecryptOAEP; -/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ - */ -function ECFieldElementFp(b,a){this.x=a;this.q=b}function feFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.x.equals(a.x))}function feFpToBigInteger(){return this.x}function feFpNegate(){return new ECFieldElementFp(this.q,this.x.negate().mod(this.q))}function feFpAdd(a){return new ECFieldElementFp(this.q,this.x.add(a.toBigInteger()).mod(this.q))}function feFpSubtract(a){return new ECFieldElementFp(this.q,this.x.subtract(a.toBigInteger()).mod(this.q))}function feFpMultiply(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger()).mod(this.q))}function feFpSquare(){return new ECFieldElementFp(this.q,this.x.square().mod(this.q))}function feFpDivide(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger().modInverse(this.q)).mod(this.q))}ECFieldElementFp.prototype.equals=feFpEquals;ECFieldElementFp.prototype.toBigInteger=feFpToBigInteger;ECFieldElementFp.prototype.negate=feFpNegate;ECFieldElementFp.prototype.add=feFpAdd;ECFieldElementFp.prototype.subtract=feFpSubtract;ECFieldElementFp.prototype.multiply=feFpMultiply;ECFieldElementFp.prototype.square=feFpSquare;ECFieldElementFp.prototype.divide=feFpDivide;function ECPointFp(c,a,d,b){this.curve=c;this.x=a;this.y=d;if(b==null){this.z=BigInteger.ONE}else{this.z=b}this.zinv=null}function pointFpGetX(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpGetY(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpEquals(a){if(a==this){return true}if(this.isInfinity()){return a.isInfinity()}if(a.isInfinity()){return this.isInfinity()}var c,b;c=a.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(a.z)).mod(this.curve.q);if(!c.equals(BigInteger.ZERO)){return false}b=a.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(a.z)).mod(this.curve.q);return b.equals(BigInteger.ZERO)}function pointFpIsInfinity(){if((this.x==null)&&(this.y==null)){return true}return this.z.equals(BigInteger.ZERO)&&!this.y.toBigInteger().equals(BigInteger.ZERO)}function pointFpNegate(){return new ECPointFp(this.curve,this.x,this.y.negate(),this.z)}function pointFpAdd(l){if(this.isInfinity()){return l}if(l.isInfinity()){return this}var p=l.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(l.z)).mod(this.curve.q);var o=l.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(l.z)).mod(this.curve.q);if(BigInteger.ZERO.equals(o)){if(BigInteger.ZERO.equals(p)){return this.twice()}return this.curve.getInfinity()}var j=new BigInteger("3");var e=this.x.toBigInteger();var n=this.y.toBigInteger();var c=l.x.toBigInteger();var k=l.y.toBigInteger();var m=o.square();var i=m.multiply(o);var d=e.multiply(m);var g=p.square().multiply(this.z);var a=g.subtract(d.shiftLeft(1)).multiply(l.z).subtract(i).multiply(o).mod(this.curve.q);var h=d.multiply(j).multiply(p).subtract(n.multiply(i)).subtract(g.multiply(p)).multiply(l.z).add(p.multiply(i)).mod(this.curve.q);var f=i.multiply(this.z).multiply(l.z).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(h),f)}function pointFpTwice(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var g=new BigInteger("3");var c=this.x.toBigInteger();var h=this.y.toBigInteger();var e=h.multiply(this.z);var j=e.multiply(h).mod(this.curve.q);var i=this.curve.a.toBigInteger();var k=c.square().multiply(g);if(!BigInteger.ZERO.equals(i)){k=k.add(this.z.square().multiply(i))}k=k.mod(this.curve.q);var b=k.square().subtract(c.shiftLeft(3).multiply(j)).shiftLeft(1).multiply(e).mod(this.curve.q);var f=k.multiply(g).multiply(c).subtract(j.shiftLeft(1)).shiftLeft(2).multiply(j).subtract(k.square().multiply(k)).mod(this.curve.q);var d=e.square().multiply(e).shiftLeft(3).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(b),this.curve.fromBigInteger(f),d)}function pointFpMultiply(b){if(this.isInfinity()){return this}if(b.signum()==0){return this.curve.getInfinity()}var g=b;var f=g.multiply(new BigInteger("3"));var l=this.negate();var d=this;var c;for(c=f.bitLength()-2;c>0;--c){d=d.twice();var a=f.testBit(c);var j=g.testBit(c);if(a!=j){d=d.add(a?this:l)}}return d}function pointFpMultiplyTwo(c,a,b){var d;if(c.bitLength()>b.bitLength()){d=c.bitLength()-1}else{d=b.bitLength()-1}var f=this.curve.getInfinity();var e=this.add(a);while(d>=0){f=f.twice();if(c.testBit(d)){if(b.testBit(d)){f=f.add(e)}else{f=f.add(this)}}else{if(b.testBit(d)){f=f.add(a)}}--d}return f}ECPointFp.prototype.getX=pointFpGetX;ECPointFp.prototype.getY=pointFpGetY;ECPointFp.prototype.equals=pointFpEquals;ECPointFp.prototype.isInfinity=pointFpIsInfinity;ECPointFp.prototype.negate=pointFpNegate;ECPointFp.prototype.add=pointFpAdd;ECPointFp.prototype.twice=pointFpTwice;ECPointFp.prototype.multiply=pointFpMultiply;ECPointFp.prototype.multiplyTwo=pointFpMultiplyTwo;function ECCurveFp(e,d,c){this.q=e;this.a=this.fromBigInteger(d);this.b=this.fromBigInteger(c);this.infinity=new ECPointFp(this,null,null)}function curveFpGetQ(){return this.q}function curveFpGetA(){return this.a}function curveFpGetB(){return this.b}function curveFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.a.equals(a.a)&&this.b.equals(a.b))}function curveFpGetInfinity(){return this.infinity}function curveFpFromBigInteger(a){return new ECFieldElementFp(this.q,a)}function curveFpDecodePointHex(d){switch(parseInt(d.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var a=(d.length-2)/2;var c=d.substr(2,a);var b=d.substr(a+2,a);return new ECPointFp(this,this.fromBigInteger(new BigInteger(c,16)),this.fromBigInteger(new BigInteger(b,16)));default:return null}}ECCurveFp.prototype.getQ=curveFpGetQ;ECCurveFp.prototype.getA=curveFpGetA;ECCurveFp.prototype.getB=curveFpGetB;ECCurveFp.prototype.equals=curveFpEquals;ECCurveFp.prototype.getInfinity=curveFpGetInfinity;ECCurveFp.prototype.fromBigInteger=curveFpFromBigInteger;ECCurveFp.prototype.decodePointHex=curveFpDecodePointHex; -/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib - */ -ECFieldElementFp.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)};ECPointFp.prototype.getEncoded=function(c){var d=function(h,f){var g=h.toByteArrayUnsigned();if(fg.length){g.unshift(0)}}return g};var a=this.getX().toBigInteger();var e=this.getY().toBigInteger();var b=d(a,32);if(c){if(e.isEven()){b.unshift(2)}else{b.unshift(3)}}else{b.unshift(4);b=b.concat(d(e,32))}return b};ECPointFp.decodeFrom=function(g,c){var f=c[0];var e=c.length-1;var d=c.slice(1,1+e/2);var b=c.slice(1+e/2,1+e);d.unshift(0);b.unshift(0);var a=new BigInteger(d);var h=new BigInteger(b);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.decodeFromHex=function(g,c){var f=c.substr(0,2);var e=c.length-2;var d=c.substr(2,e/2);var b=c.substr(2+e/2,e/2);var a=new BigInteger(d,16);var h=new BigInteger(b,16);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.prototype.add2D=function(c){if(this.isInfinity()){return c}if(c.isInfinity()){return this}if(this.x.equals(c.x)){if(this.y.equals(c.y)){return this.twice()}return this.curve.getInfinity()}var g=c.x.subtract(this.x);var e=c.y.subtract(this.y);var a=e.divide(g);var d=a.square().subtract(this.x).subtract(c.x);var f=a.multiply(this.x.subtract(d)).subtract(this.y);return new ECPointFp(this.curve,d,f)};ECPointFp.prototype.twice2D=function(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var b=this.curve.fromBigInteger(BigInteger.valueOf(2));var e=this.curve.fromBigInteger(BigInteger.valueOf(3));var a=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(b));var c=a.square().subtract(this.x.multiply(b));var d=a.multiply(this.x.subtract(c)).subtract(this.y);return new ECPointFp(this.curve,c,d)};ECPointFp.prototype.multiply2D=function(b){if(this.isInfinity()){return this}if(b.signum()==0){return this.curve.getInfinity()}var g=b;var f=g.multiply(new BigInteger("3"));var l=this.negate();var d=this;var c;for(c=f.bitLength()-2;c>0;--c){d=d.twice();var a=f.testBit(c);var j=g.testBit(c);if(a!=j){d=d.add2D(a?this:l)}}return d};ECPointFp.prototype.isOnCurve=function(){var d=this.getX().toBigInteger();var i=this.getY().toBigInteger();var f=this.curve.getA().toBigInteger();var c=this.curve.getB().toBigInteger();var h=this.curve.getQ();var e=i.multiply(i).mod(h);var g=d.multiply(d).multiply(d).add(f.multiply(d)).add(c).mod(h);return e.equals(g)};ECPointFp.prototype.toString=function(){return"("+this.getX().toBigInteger().toString()+","+this.getY().toBigInteger().toString()+")"};ECPointFp.prototype.validate=function(){var c=this.curve.getQ();if(this.isInfinity()){throw new Error("Point is at infinity.")}var a=this.getX().toBigInteger();var b=this.getY().toBigInteger();if(a.compareTo(BigInteger.ONE)<0||a.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error("x coordinate out of bounds")}if(b.compareTo(BigInteger.ONE)<0||b.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error("y coordinate out of bounds")}if(!this.isOnCurve()){throw new Error("Point is not on the curve.")}if(this.multiply(c).isInfinity()){throw new Error("Point is not a scalar multiple of G.")}return true}; -/*! asn1-1.0.3.js (c) 2013 Kenji Urushima | kjur.github.com/jsrsasign/license - */ -if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.asn1=="undefined"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b="0"+b}return b};this.bigIntToMinTwosComplementsHex=function(j){var f=j.toString(16);if(f.substr(0,1)!="-"){if(f.length%2==1){f="0"+f}else{if(!f.match(/^[0-7]/)){f="00"+f}}}else{var a=f.substr(1);var e=a.length;if(e%2==1){e+=1}else{if(!f.match(/^[0-7]/)){e+=2}}var g="";for(var d=0;d15){throw"ASN.1 length too long to represent by 8x: n = "+i.toString(16)}var f=128+g;return f.toString(16)+h}};this.getEncodedHex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getValueHex=function(){this.getEncodedHex();return this.hV};this.getFreshValueHex=function(){return""}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=stohex(this.s)};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!="undefined"){if(typeof c=="string"){this.setString(c)}else{if(typeof c.str!="undefined"){this.setString(c.str)}else{if(typeof c.hex!="undefined"){this.setStringHex(c.hex)}}}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(f){utc=f.getTime()+(f.getTimezoneOffset()*60000);var e=new Date(utc);return e};this.formatDate=function(j,l){var e=this.zeroPadding;var k=this.localDateToUTC(j);var m=String(k.getFullYear());if(l=="utc"){m=m.substr(2,2)}var i=e(String(k.getMonth()+1),2);var n=e(String(k.getDate()),2);var f=e(String(k.getHours()),2);var g=e(String(k.getMinutes()),2);var h=e(String(k.getSeconds()),2);return m+i+n+f+g+h+"Z"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join("0")+e};this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=stohex(d)};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};YAHOO.lang.extend(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!="undefined"){if(typeof b.array!="undefined"){this.asn1Array=b.array}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT="01";this.hTLV="0101ff"};YAHOO.lang.extend(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(a){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT="02";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!="undefined"){if(typeof a.bigint!="undefined"){this.setByBigInteger(a.bigint)}else{if(typeof a["int"]!="undefined"){this.setByInteger(a["int"])}else{if(typeof a=="number"){this.setByInteger(a)}else{if(typeof a.hex!="undefined"){this.setValueHex(a.hex)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(a){KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT="03";this.setHexValueIncludingUnusedBits=function(b){this.hTLV=null;this.isModified=true;this.hV=b};this.setUnusedBitsAndHexValue=function(b,d){if(b<0||7=(b*2))){break}if(d>=200){break}c.push(e);g=e;d++}return c};this.getNthChildIndex_AtObj=function(d,b,e){var c=this.getPosArrayOfChildren_AtObj(d,b);return c[e]};this.getDecendantIndexByNthList=function(e,d,c){if(c.length==0){return d}var f=c.shift();var b=this.getPosArrayOfChildren_AtObj(e,d);return this.getDecendantIndexByNthList(e,b[f],c)};this.getDecendantHexTLVByNthList=function(d,c,b){var a=this.getDecendantIndexByNthList(d,c,b);return this.getHexOfTLV_AtObj(d,a)};this.getDecendantHexVByNthList=function(d,c,b){var a=this.getDecendantIndexByNthList(d,c,b);return this.getHexOfV_AtObj(d,a)}}; -/*! asn1x509-1.0.4.js (c) 2013 Kenji Urushima | kjur.github.com/jsrsasign/license - */ -if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.asn1=="undefined"||!KJUR.asn1){KJUR.asn1={}}if(typeof KJUR.asn1.x509=="undefined"||!KJUR.asn1.x509){KJUR.asn1.x509={}}KJUR.asn1.x509.Certificate=function(f){KJUR.asn1.x509.Certificate.superclass.constructor.call(this);var a=null;var c=null;var e=null;var b=null;var d=null;this.setRsaPrvKeyByPEMandPass=function(h,j){var g=PKCS5PKEY.getDecryptedKeyHex(h,j);var i=new RSAKey();i.readPrivateKeyFromASN1HexString(g);this.rsaPrvKey=i};this.sign=function(){this.asn1SignatureAlg=this.asn1TBSCert.asn1SignatureAlg;sig=new KJUR.crypto.Signature({alg:"SHA1withRSA",prov:"cryptojs/jsrsa"});sig.initSign(this.rsaPrvKey);sig.updateHex(this.asn1TBSCert.getEncodedHex());this.hexSig=sig.sign();this.asn1Sig=new KJUR.asn1.DERBitString({hex:"00"+this.hexSig});var g=new KJUR.asn1.DERSequence({array:[this.asn1TBSCert,this.asn1SignatureAlg,this.asn1Sig]});this.hTLV=g.getEncodedHex();this.isModified=false};this.getEncodedHex=function(){if(this.isModified==false&&this.hTLV!=null){return this.hTLV}throw"not signed yet"};this.getPEMString=function(){var i=this.getEncodedHex();var g=CryptoJS.enc.Hex.parse(i);var h=CryptoJS.enc.Base64.stringify(g);var j=h.replace(/(.{64})/g,"$1\r\n");return"-----BEGIN CERTIFICATE-----\r\n"+j+"\r\n-----END CERTIFICATE-----\r\n"};if(typeof f!="undefined"){if(typeof f.tbscertobj!="undefined"){this.asn1TBSCert=f.tbscertobj}if(typeof f.rsaprvkey!="undefined"){this.rsaPrvKey=f.rsaprvkey}if((typeof f.rsaprvpem!="undefined")&&(typeof f.rsaprvpas!="undefined")){this.setRsaPrvKeyByPEMandPass(f.rsaprvpem,f.rsaprvpas)}}};YAHOO.lang.extend(KJUR.asn1.x509.Certificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.TBSCertificate=function(a){KJUR.asn1.x509.TBSCertificate.superclass.constructor.call(this);this._initialize=function(){this.asn1Array=new Array();this.asn1Version=new KJUR.asn1.DERTaggedObject({obj:new KJUR.asn1.DERInteger({"int":2})});this.asn1SerialNumber=null;this.asn1SignatureAlg=null;this.asn1Issuer=null;this.asn1NotBefore=null;this.asn1NotAfter=null;this.asn1Subject=null;this.asn1SubjPKey=null;this.extensionsArray=new Array()};this.setSerialNumberByParam=function(b){this.asn1SerialNumber=new KJUR.asn1.DERInteger(b)};this.setSignatureAlgByParam=function(b){this.asn1SignatureAlg=new KJUR.asn1.x509.AlgorithmIdentifier(b)};this.setIssuerByParam=function(b){this.asn1Issuer=new KJUR.asn1.x509.X500Name(b)};this.setNotBeforeByParam=function(b){this.asn1NotBefore=new KJUR.asn1.x509.Time(b)};this.setNotAfterByParam=function(b){this.asn1NotAfter=new KJUR.asn1.x509.Time(b)};this.setSubjectByParam=function(b){this.asn1Subject=new KJUR.asn1.x509.X500Name(b)};this.setSubjectPublicKeyByParam=function(b){this.asn1SubjPKey=new KJUR.asn1.x509.SubjectPublicKeyInfo(b)};this.appendExtension=function(b){this.extensionsArray.push(b)};this.getEncodedHex=function(){if(this.asn1NotBefore==null||this.asn1NotAfter==null){throw"notBefore and/or notAfter not set"}var c=new KJUR.asn1.DERSequence({array:[this.asn1NotBefore,this.asn1NotAfter]});this.asn1Array=new Array();this.asn1Array.push(this.asn1Version);this.asn1Array.push(this.asn1SerialNumber);this.asn1Array.push(this.asn1SignatureAlg);this.asn1Array.push(this.asn1Issuer);this.asn1Array.push(c);this.asn1Array.push(this.asn1Subject);this.asn1Array.push(this.asn1SubjPKey);if(this.extensionsArray.length>0){var d=new KJUR.asn1.DERSequence({array:this.extensionsArray});var b=new KJUR.asn1.DERTaggedObject({explicit:true,tag:"a3",obj:d});this.asn1Array.push(b)}var e=new KJUR.asn1.DERSequence({array:this.asn1Array});this.hTLV=e.getEncodedHex();this.isModified=false;return this.hTLV};this._initialize()};YAHOO.lang.extend(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Extension=function(b){KJUR.asn1.x509.Extension.superclass.constructor.call(this);var a=null;this.getEncodedHex=function(){var f=new KJUR.asn1.DERObjectIdentifier({oid:this.oid});var e=new KJUR.asn1.DEROctetString({hex:this.getExtnValueHex()});var d=new Array();d.push(f);if(this.critical){d.push(new KJUR.asn1.DERBoolean())}d.push(e);var c=new KJUR.asn1.DERSequence({array:d});return c.getEncodedHex()};this.critical=false;if(typeof b!="undefined"){if(typeof b.critical!="undefined"){this.critical=b.critical}}};YAHOO.lang.extend(KJUR.asn1.x509.Extension,KJUR.asn1.ASN1Object);KJUR.asn1.x509.KeyUsage=function(a){KJUR.asn1.x509.KeyUsage.superclass.constructor.call(this,a);this.getExtnValueHex=function(){return this.asn1ExtnValue.getEncodedHex()};this.oid="2.5.29.15";if(typeof a!="undefined"){if(typeof a.bin!="undefined"){this.asn1ExtnValue=new KJUR.asn1.DERBitString(a)}}};YAHOO.lang.extend(KJUR.asn1.x509.KeyUsage,KJUR.asn1.x509.Extension);KJUR.asn1.x509.BasicConstraints=function(c){KJUR.asn1.x509.BasicConstraints.superclass.constructor.call(this,c);var a=false;var b=-1;this.getExtnValueHex=function(){var e=new Array();if(this.cA){e.push(new KJUR.asn1.DERBoolean())}if(this.pathLen>-1){e.push(new KJUR.asn1.DERInteger({"int":this.pathLen}))}var d=new KJUR.asn1.DERSequence({array:e});this.asn1ExtnValue=d;return this.asn1ExtnValue.getEncodedHex()};this.oid="2.5.29.19";this.cA=false;this.pathLen=-1;if(typeof c!="undefined"){if(typeof c.cA!="undefined"){this.cA=c.cA}if(typeof c.pathLen!="undefined"){this.pathLen=c.pathLen}}};YAHOO.lang.extend(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRLDistributionPoints=function(a){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,a);this.getExtnValueHex=function(){return this.asn1ExtnValue.getEncodedHex()};this.setByDPArray=function(b){this.asn1ExtnValue=new KJUR.asn1.DERSequence({array:b})};this.setByOneURI=function(e){var b=new KJUR.asn1.x509.GeneralNames([{uri:e}]);var d=new KJUR.asn1.x509.DistributionPointName(b);var c=new KJUR.asn1.x509.DistributionPoint({dpobj:d});this.setByDPArray([c])};this.oid="2.5.29.31";if(typeof a!="undefined"){if(typeof a.array!="undefined"){this.setByDPArray(a.array)}else{if(typeof a.uri!="undefined"){this.setByOneURI(a.uri)}}}};YAHOO.lang.extend(KJUR.asn1.x509.CRLDistributionPoints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.ExtKeyUsage=function(a){KJUR.asn1.x509.ExtKeyUsage.superclass.constructor.call(this,a);this.setPurposeArray=function(b){this.asn1ExtnValue=new KJUR.asn1.DERSequence();for(var c=0;c0){var c=new KJUR.asn1.DERSequence({array:this.aRevokedCert});this.asn1Array.push(c)}var d=new KJUR.asn1.DERSequence({array:this.asn1Array});this.hTLV=d.getEncodedHex();this.isModified=false;return this.hTLV};this._initialize=function(){this.asn1Version=null;this.asn1SignatureAlg=null;this.asn1Issuer=null;this.asn1ThisUpdate=null;this.asn1NextUpdate=null;this.aRevokedCert=new Array()};this._initialize()};YAHOO.lang.extend(KJUR.asn1.x509.TBSCertList,KJUR.asn1.ASN1Object);KJUR.asn1.x509.CRLEntry=function(c){KJUR.asn1.x509.CRLEntry.superclass.constructor.call(this);var b=null;var a=null;this.setCertSerial=function(d){this.sn=new KJUR.asn1.DERInteger(d)};this.setRevocationDate=function(d){this.time=new KJUR.asn1.x509.Time(d)};this.getEncodedHex=function(){var d=new KJUR.asn1.DERSequence({array:[this.sn,this.time]});this.TLV=d.getEncodedHex();return this.TLV};if(typeof c!="undefined"){if(typeof c.time!="undefined"){this.setRevocationDate(c.time)}if(typeof c.sn!="undefined"){this.setCertSerial(c.sn)}}};YAHOO.lang.extend(KJUR.asn1.x509.CRLEntry,KJUR.asn1.ASN1Object);KJUR.asn1.x509.X500Name=function(a){KJUR.asn1.x509.X500Name.superclass.constructor.call(this);this.asn1Array=new Array();this.setByString=function(b){var c=b.split("/");c.shift();for(var d=0;dd){throw"key is too short for SigAlg: keylen="+j+","+a}var b="0001";var k="00"+c;var g="";var l=d-b.length-k.length;for(var f=0;f=0;--p){q=q.twice2D();q.z=BigInteger.ONE;if(o.testBit(p)){if(n.testBit(p)){q=q.add2D(t)}else{q=q.add2D(s)}}else{if(n.testBit(p)){q=q.add2D(r)}}}return q}this.getBigRandom=function(i){return new BigInteger(i.bitLength(),a).mod(i.subtract(BigInteger.ONE)).add(BigInteger.ONE)};this.setNamedCurve=function(i){this.ecparams=KJUR.crypto.ECParameterDB.getByName(i);this.prvKeyHex=null;this.pubKeyHex=null;this.curveName=i};this.setPrivateKeyHex=function(i){this.prvKeyHex=i};this.setPublicKeyHex=function(i){this.pubKeyHex=i};this.generateKeyPairHex=function(){var k=this.ecparams.n;var n=this.getBigRandom(k);var l=this.ecparams.G.multiply(n);var q=l.getX().toBigInteger();var o=l.getY().toBigInteger();var i=this.ecparams.keylen/4;var m=("0000000000"+n.toString(16)).slice(-i);var r=("0000000000"+q.toString(16)).slice(-i);var p=("0000000000"+o.toString(16)).slice(-i);var j="04"+r+p;this.prvKeyHex=m;this.pubKeyHex=j;return{ecprvhex:m,ecpubhex:j}};this.signWithMessageHash=function(i){return this.signHex(i,this.prvKeyHex)};this.signHex=function(o,j){var t=new BigInteger(j,16);var l=this.ecparams.n;var q=new BigInteger(o,16);do{var m=this.getBigRandom(l);var u=this.ecparams.G;var p=u.multiply(m);var i=p.getX().toBigInteger().mod(l)}while(i.compareTo(BigInteger.ZERO)<=0);var v=m.modInverse(l).multiply(q.add(t.multiply(i))).mod(l);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(i,v)};this.sign=function(m,u){var q=u;var j=this.ecparams.n;var p=BigInteger.fromByteArrayUnsigned(m);do{var l=this.getBigRandom(j);var t=this.ecparams.G;var o=t.multiply(l);var i=o.getX().toBigInteger().mod(j)}while(i.compareTo(BigInteger.ZERO)<=0);var v=l.modInverse(j).multiply(p.add(q.multiply(i))).mod(j);return this.serializeSig(i,v)};this.verifyWithMessageHash=function(j,i){return this.verifyHex(j,i,this.pubKeyHex)};this.verifyHex=function(m,i,p){var l,j;var o=KJUR.crypto.ECDSA.parseSigHex(i);l=o.r;j=o.s;var k;k=ECPointFp.decodeFromHex(this.ecparams.curve,p);var n=new BigInteger(m,16);return this.verifyRaw(n,l,j,k)};this.verify=function(o,p,j){var l,i;if(Bitcoin.Util.isArray(p)){var n=this.parseSig(p);l=n.r;i=n.s}else{if("object"===typeof p&&p.r&&p.s){l=p.r;i=p.s}else{throw"Invalid value for signature"}}var k;if(j instanceof ECPointFp){k=j}else{if(Bitcoin.Util.isArray(j)){k=ECPointFp.decodeFrom(this.ecparams.curve,j)}else{throw"Invalid format for pubkey value, must be byte array or ECPointFp"}}var m=BigInteger.fromByteArrayUnsigned(o);return this.verifyRaw(m,l,i,k)};this.verifyRaw=function(o,i,w,m){var l=this.ecparams.n;var u=this.ecparams.G;if(i.compareTo(BigInteger.ONE)<0||i.compareTo(l)>=0){return false}if(w.compareTo(BigInteger.ONE)<0||w.compareTo(l)>=0){return false}var p=w.modInverse(l);var k=o.multiply(p).mod(l);var j=i.multiply(p).mod(l);var q=u.multiply(k).add(m.multiply(j));var t=q.getX().toBigInteger().mod(l);return t.equals(i)};this.serializeSig=function(k,j){var l=k.toByteArraySigned();var i=j.toByteArraySigned();var m=[];m.push(2);m.push(l.length);m=m.concat(l);m.push(2);m.push(i.length);m=m.concat(i);m.unshift(m.length);m.unshift(48);return m};this.parseSig=function(n){var m;if(n[0]!=48){throw new Error("Signature not a valid DERSequence")}m=2;if(n[m]!=2){throw new Error("First element in signature must be a DERInteger")}var l=n.slice(m+2,m+2+n[m+1]);m+=2+n[m+1];if(n[m]!=2){throw new Error("Second element in signature must be a DERInteger")}var i=n.slice(m+2,m+2+n[m+1]);m+=2+n[m+1];var k=BigInteger.fromByteArrayUnsigned(l);var j=BigInteger.fromByteArrayUnsigned(i);return{r:k,s:j}};this.parseSigCompact=function(m){if(m.length!==65){throw"Signature has the wrong length"}var j=m[0]-27;if(j<0||j>7){throw"Invalid signature type"}var o=this.ecparams.n;var l=BigInteger.fromByteArrayUnsigned(m.slice(1,33)).mod(o);var k=BigInteger.fromByteArrayUnsigned(m.slice(33,65)).mod(o);return{r:l,s:k,i:j}};if(h!==undefined){if(h.curve!==undefined){this.curveName=h.curve}}if(this.curveName===undefined){this.curveName=e}this.setNamedCurve(this.curveName);if(h!==undefined){if(h.prv!==undefined){this.prvKeyHex=h.prv}if(h.pub!==undefined){this.pubKeyHex=h.pub}}};KJUR.crypto.ECDSA.parseSigHex=function(a){var b=KJUR.crypto.ECDSA.parseSigHexInHexRS(a);var d=new BigInteger(b.r,16);var c=new BigInteger(b.s,16);return{r:d,s:c}};KJUR.crypto.ECDSA.parseSigHexInHexRS=function(c){if(c.substr(0,2)!="30"){throw"signature is not a ASN.1 sequence"}var b=ASN1HEX.getPosArrayOfChildren_AtObj(c,0);if(b.length!=2){throw"number of signature ASN.1 sequence elements seem wrong"}var g=b[0];var f=b[1];if(c.substr(g,2)!="02"){throw"1st item of sequene of signature is not ASN.1 integer"}if(c.substr(f,2)!="02"){throw"2nd item of sequene of signature is not ASN.1 integer"}var e=ASN1HEX.getHexOfV_AtObj(c,g);var d=ASN1HEX.getHexOfV_AtObj(c,f);return{r:e,s:d}};KJUR.crypto.ECDSA.asn1SigToConcatSig=function(c){var d=KJUR.crypto.ECDSA.parseSigHexInHexRS(c);var b=d.r;var a=d.s;if(b.substr(0,2)=="00"&&(((b.length/2)*8)%(16*8))==8){b=b.substr(2)}if(a.substr(0,2)=="00"&&(((a.length/2)*8)%(16*8))==8){a=a.substr(2)}if((((b.length/2)*8)%(16*8))!=0){throw"unknown ECDSA sig r length error"}if((((a.length/2)*8)%(16*8))!=0){throw"unknown ECDSA sig s length error"}return b+a};KJUR.crypto.ECDSA.concatSigToASN1Sig=function(a){if((((a.length/2)*8)%(16*8))!=0){throw"unknown ECDSA concatinated r-s sig length error"}var c=a.substr(0,a.length/2);var b=a.substr(a.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(c,b)};KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(b,a){var d=new BigInteger(b,16);var c=new BigInteger(a,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(d,c)};KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(e,c){var b=new KJUR.asn1.DERInteger({bigint:e});var a=new KJUR.asn1.DERInteger({bigint:c});var d=new KJUR.asn1.DERSequence({array:[b,a]});return d.getEncodedHex()}; -/*! ecparam-1.0.0.js (c) 2013 Kenji Urushima | kjur.github.com/jsrsasign/license - */ -if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECParameterDB=new function(){var b={};var c={};function a(d){return new BigInteger(d,16)}this.getByName=function(e){var d=e;if(typeof c[d]!="undefined"){d=c[e]}if(typeof b[d]!="undefined"){return b[d]}throw"unregistered EC curve name: "+d};this.regist=function(A,l,o,g,m,e,j,f,k,u,d,x){b[A]={};var s=a(o);var z=a(g);var y=a(m);var t=a(e);var w=a(j);var r=new ECCurveFp(s,z,y);var q=r.decodePointHex("04"+f+k);b[A]["name"]=A;b[A]["keylen"]=l;b[A]["curve"]=r;b[A]["G"]=q;b[A]["n"]=t;b[A]["h"]=w;b[A]["oid"]=d;b[A]["info"]=x;for(var v=0;v=s*2){break}}var x={};x.keyhex=v.substr(0,g[o]["keylen"]*2);x.ivhex=v.substr(g[o]["keylen"]*2,g[o]["ivlen"]*2);return x};var a=function(n,t,p,u){var q=CryptoJS.enc.Base64.parse(n);var o=CryptoJS.enc.Hex.stringify(q);var s=g[t]["proc"];var r=s(o,p,u);return r};var f=function(n,q,o,s){var p=g[q]["eproc"];var r=p(n,o,s);return r};return{version:"1.0.5",getHexFromPEM:function(o,r){var p=o;if(p.indexOf("BEGIN "+r)==-1){throw"can't find PEM header: "+r}p=p.replace("-----BEGIN "+r+"-----","");p=p.replace("-----END "+r+"-----","");var q=p.replace(/\s+/g,"");var n=b64tohex(q);return n},getDecryptedKeyHexByKeyIV:function(o,r,q,p){var n=b(r);return n(o,q,p)},parsePKCS5PEM:function(n){return l(n)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(o,n,p){return h(o,n,p)},decryptKeyB64:function(n,p,o,q){return a(n,p,o,q)},getDecryptedKeyHex:function(w,v){var o=l(w);var r=o.type;var p=o.cipher;var n=o.ivsalt;var q=o.data;var u=h(p,v,n);var t=u.keyhex;var s=a(q,p,t,n);return s},getRSAKeyFromEncryptedPKCS5PEM:function(p,o){var q=this.getDecryptedKeyHex(p,o);var n=new RSAKey();n.readPrivateKeyFromASN1HexString(q);return n},getEryptedPKCS5PEMFromPrvKeyHex:function(q,x,r,p){var n="";if(typeof r=="undefined"||r==null){r="AES-256-CBC"}if(typeof g[r]=="undefined"){throw"PKCS5PKEY unsupported algorithm: "+r}if(typeof p=="undefined"||p==null){var t=g[r]["ivlen"];var s=k(t);p=s.toUpperCase()}var w=h(r,x,p);var v=w.keyhex;var u=f(q,r,v,p);var o=u.replace(/(.{64})/g,"$1\r\n");var n="-----BEGIN RSA PRIVATE KEY-----\r\n";n+="Proc-Type: 4,ENCRYPTED\r\n";n+="DEK-Info: "+r+","+p+"\r\n";n+="\r\n";n+=o;n+="\r\n-----END RSA PRIVATE KEY-----\r\n";return n},getEryptedPKCS5PEMFromRSAKey:function(C,D,o,s){var A=new KJUR.asn1.DERInteger({"int":0});var v=new KJUR.asn1.DERInteger({bigint:C.n});var z=new KJUR.asn1.DERInteger({"int":C.e});var B=new KJUR.asn1.DERInteger({bigint:C.d});var t=new KJUR.asn1.DERInteger({bigint:C.p});var r=new KJUR.asn1.DERInteger({bigint:C.q});var y=new KJUR.asn1.DERInteger({bigint:C.dmp1});var u=new KJUR.asn1.DERInteger({bigint:C.dmq1});var x=new KJUR.asn1.DERInteger({bigint:C.coeff});var E=new KJUR.asn1.DERSequence({array:[A,v,z,B,t,r,y,u,x]});var w=E.getEncodedHex();return this.getEryptedPKCS5PEMFromPrvKeyHex(w,D,o,s)},newEncryptedPKCS5PEM:function(n,o,r,s){if(typeof o=="undefined"||o==null){o=1024}if(typeof r=="undefined"||r==null){r="10001"}var p=new RSAKey();p.generate(o,r);var q=null;if(typeof s=="undefined"||s==null){q=this.getEncryptedPKCS5PEMFromRSAKey(pkey,n)}else{q=this.getEncryptedPKCS5PEMFromRSAKey(pkey,n,s)}return q},getRSAKeyFromPlainPKCS8PEM:function(p){if(p.match(/ENCRYPTED/)){throw"pem shall be not ENCRYPTED"}var o=this.getHexFromPEM(p,"PRIVATE KEY");var n=this.getRSAKeyFromPlainPKCS8Hex(o);return n},getRSAKeyFromPlainPKCS8Hex:function(q){var p=ASN1HEX.getPosArrayOfChildren_AtObj(q,0);if(p.length!=3){throw"outer DERSequence shall have 3 elements: "+p.length}var o=ASN1HEX.getHexOfTLV_AtObj(q,p[1]);if(o!="300d06092a864886f70d0101010500"){throw"PKCS8 AlgorithmIdentifier is not rsaEnc: "+o}var o=ASN1HEX.getHexOfTLV_AtObj(q,p[1]);var r=ASN1HEX.getHexOfTLV_AtObj(q,p[2]);var s=ASN1HEX.getHexOfV_AtObj(r,0);var n=new RSAKey();n.readPrivateKeyFromASN1HexString(s);return n},parseHexOfEncryptedPKCS8:function(u){var q={};var p=ASN1HEX.getPosArrayOfChildren_AtObj(u,0);if(p.length!=2){throw"malformed format: SEQUENCE(0).items != 2: "+p.length}q.ciphertext=ASN1HEX.getHexOfV_AtObj(u,p[1]);var w=ASN1HEX.getPosArrayOfChildren_AtObj(u,p[0]);if(w.length!=2){throw"malformed format: SEQUENCE(0.0).items != 2: "+w.length}if(ASN1HEX.getHexOfV_AtObj(u,w[0])!="2a864886f70d01050d"){throw"this only supports pkcs5PBES2"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(u,w[1]);if(w.length!=2){throw"malformed format: SEQUENCE(0.0.1).items != 2: "+n.length}var o=ASN1HEX.getPosArrayOfChildren_AtObj(u,n[1]);if(o.length!=2){throw"malformed format: SEQUENCE(0.0.1.1).items != 2: "+o.length}if(ASN1HEX.getHexOfV_AtObj(u,o[0])!="2a864886f70d0307"){throw"this only supports TripleDES"}q.encryptionSchemeAlg="TripleDES";q.encryptionSchemeIV=ASN1HEX.getHexOfV_AtObj(u,o[1]);var r=ASN1HEX.getPosArrayOfChildren_AtObj(u,n[0]);if(r.length!=2){throw"malformed format: SEQUENCE(0.0.1.0).items != 2: "+r.length}if(ASN1HEX.getHexOfV_AtObj(u,r[0])!="2a864886f70d01050c"){throw"this only supports pkcs5PBKDF2"}var v=ASN1HEX.getPosArrayOfChildren_AtObj(u,r[1]);if(v.length<2){throw"malformed format: SEQUENCE(0.0.1.0.1).items < 2: "+v.length}q.pbkdf2Salt=ASN1HEX.getHexOfV_AtObj(u,v[0]);var s=ASN1HEX.getHexOfV_AtObj(u,v[1]);try{q.pbkdf2Iter=parseInt(s,16)}catch(t){throw"malformed format pbkdf2Iter: "+s}return q},getPBKDF2KeyHexFromParam:function(s,n){var r=CryptoJS.enc.Hex.parse(s.pbkdf2Salt);var o=s.pbkdf2Iter;var q=CryptoJS.PBKDF2(n,r,{keySize:192/32,iterations:o});var p=CryptoJS.enc.Hex.stringify(q);return p},getPlainPKCS8HexFromEncryptedPKCS8PEM:function(v,w){var p=this.getHexFromPEM(v,"ENCRYPTED PRIVATE KEY");var n=this.parseHexOfEncryptedPKCS8(p);var s=PKCS5PKEY.getPBKDF2KeyHexFromParam(n,w);var t={};t.ciphertext=CryptoJS.enc.Hex.parse(n.ciphertext);var r=CryptoJS.enc.Hex.parse(s);var q=CryptoJS.enc.Hex.parse(n.encryptionSchemeIV);var u=CryptoJS.TripleDES.decrypt(t,r,{iv:q});var o=CryptoJS.enc.Hex.stringify(u);return o},getRSAKeyFromEncryptedPKCS8PEM:function(q,p){var o=this.getPlainPKCS8HexFromEncryptedPKCS8PEM(q,p);var n=this.getRSAKeyFromPlainPKCS8Hex(o);return n},getKeyFromEncryptedPKCS8PEM:function(q,o){var n=this.getPlainPKCS8HexFromEncryptedPKCS8PEM(q,o);var p=this.getKeyFromPlainPrivatePKCS8Hex(n);return p},parsePlainPrivatePKCS8Hex:function(q){var o={};o.algparam=null;if(q.substr(0,2)!="30"){throw"malformed plain PKCS8 private key(code:001)"}var p=ASN1HEX.getPosArrayOfChildren_AtObj(q,0);if(p.length!=3){throw"malformed plain PKCS8 private key(code:002)"}if(q.substr(p[1],2)!="30"){throw"malformed PKCS8 private key(code:003)"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(q,p[1]);if(n.length!=2){throw"malformed PKCS8 private key(code:004)"}if(q.substr(n[0],2)!="06"){throw"malformed PKCS8 private key(code:005)"}o.algoid=ASN1HEX.getHexOfV_AtObj(q,n[0]);if(q.substr(n[1],2)=="06"){o.algparam=ASN1HEX.getHexOfV_AtObj(q,n[1])}if(q.substr(p[2],2)!="04"){throw"malformed PKCS8 private key(code:006)"}o.keyidx=ASN1HEX.getStartPosOfV_AtObj(q,p[2]);return o},getKeyFromPlainPrivatePKCS8PEM:function(o){var n=this.getHexFromPEM(o,"PRIVATE KEY");var p=this.getKeyFromPlainPrivatePKCS8Hex(n);return p},getKeyFromPlainPrivatePKCS8Hex:function(n){var p=this.parsePlainPrivatePKCS8Hex(n);if(p.algoid=="2a864886f70d010101"){this.parsePrivateRawRSAKeyHexAtObj(n,p);var o=p.key;var q=new RSAKey();q.setPrivateEx(o.n,o.e,o.d,o.p,o.q,o.dp,o.dq,o.co);return q}else{if(p.algoid=="2a8648ce3d0201"){this.parsePrivateRawECKeyHexAtObj(n,p);if(KJUR.crypto.OID.oidhex2name[p.algparam]===undefined){throw"KJUR.crypto.OID.oidhex2name undefined: "+p.algparam}var r=KJUR.crypto.OID.oidhex2name[p.algparam];var q=new KJUR.crypto.ECDSA({curve:r,prv:p.key});return q}else{throw"unsupported private key algorithm"}}},getRSAKeyFromPublicPKCS8PEM:function(o){var p=this.getHexFromPEM(o,"PUBLIC KEY");var n=this.getRSAKeyFromPublicPKCS8Hex(p);return n},getKeyFromPublicPKCS8PEM:function(o){var p=this.getHexFromPEM(o,"PUBLIC KEY");var n=this.getKeyFromPublicPKCS8Hex(p);return n},getKeyFromPublicPKCS8Hex:function(o){var n=this.parsePublicPKCS8Hex(o);if(n.algoid=="2a864886f70d010101"){var r=this.parsePublicRawRSAKeyHex(n.key);var p=new RSAKey();p.setPublic(r.n,r.e);return p}else{if(n.algoid=="2a8648ce3d0201"){if(KJUR.crypto.OID.oidhex2name[n.algparam]===undefined){throw"KJUR.crypto.OID.oidhex2name undefined: "+n.algparam}var q=KJUR.crypto.OID.oidhex2name[n.algparam];var p=new KJUR.crypto.ECDSA({curve:q,pub:n.key});return p}else{throw"unsupported public key algorithm"}}},parsePublicRawRSAKeyHex:function(p){var n={};if(p.substr(0,2)!="30"){throw"malformed RSA key(code:001)"}var o=ASN1HEX.getPosArrayOfChildren_AtObj(p,0);if(o.length!=2){throw"malformed RSA key(code:002)"}if(p.substr(o[0],2)!="02"){throw"malformed RSA key(code:003)"}n.n=ASN1HEX.getHexOfV_AtObj(p,o[0]);if(p.substr(o[1],2)!="02"){throw"malformed RSA key(code:004)"}n.e=ASN1HEX.getHexOfV_AtObj(p,o[1]);return n},parsePrivateRawRSAKeyHexAtObj:function(o,q){var p=q.keyidx;if(o.substr(p,2)!="30"){throw"malformed RSA private key(code:001)"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(o,p);if(n.length!=9){throw"malformed RSA private key(code:002)"}q.key={};q.key.n=ASN1HEX.getHexOfV_AtObj(o,n[1]);q.key.e=ASN1HEX.getHexOfV_AtObj(o,n[2]);q.key.d=ASN1HEX.getHexOfV_AtObj(o,n[3]);q.key.p=ASN1HEX.getHexOfV_AtObj(o,n[4]);q.key.q=ASN1HEX.getHexOfV_AtObj(o,n[5]);q.key.dp=ASN1HEX.getHexOfV_AtObj(o,n[6]);q.key.dq=ASN1HEX.getHexOfV_AtObj(o,n[7]);q.key.co=ASN1HEX.getHexOfV_AtObj(o,n[8])},parsePrivateRawECKeyHexAtObj:function(o,q){var p=q.keyidx;if(o.substr(p,2)!="30"){throw"malformed ECC private key(code:001)"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(o,p);if(n.length!=3){throw"malformed ECC private key(code:002)"}if(o.substr(n[1],2)!="04"){throw"malformed ECC private key(code:003)"}q.key=ASN1HEX.getHexOfV_AtObj(o,n[1])},parsePublicPKCS8Hex:function(q){var o={};o.algparam=null;var p=ASN1HEX.getPosArrayOfChildren_AtObj(q,0);if(p.length!=2){throw"outer DERSequence shall have 2 elements: "+p.length}var r=p[0];if(q.substr(r,2)!="30"){throw"malformed PKCS8 public key(code:001)"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(q,r);if(n.length!=2){throw"malformed PKCS8 public key(code:002)"}if(q.substr(n[0],2)!="06"){throw"malformed PKCS8 public key(code:003)"}o.algoid=ASN1HEX.getHexOfV_AtObj(q,n[0]);if(q.substr(n[1],2)=="06"){o.algparam=ASN1HEX.getHexOfV_AtObj(q,n[1])}if(q.substr(p[1],2)!="03"){throw"malformed PKCS8 public key(code:004)"}o.key=ASN1HEX.getHexOfV_AtObj(q,p[1]).substr(2);return o},getRSAKeyFromPublicPKCS8Hex:function(r){var q=ASN1HEX.getPosArrayOfChildren_AtObj(r,0);if(q.length!=2){throw"outer DERSequence shall have 2 elements: "+q.length}var p=ASN1HEX.getHexOfTLV_AtObj(r,q[0]);if(p!="300d06092a864886f70d0101010500"){throw"PKCS8 AlgorithmId is not rsaEncryption"}if(r.substr(q[1],2)!="03"){throw"PKCS8 Public Key is not BITSTRING encapslated."}var t=ASN1HEX.getStartPosOfV_AtObj(r,q[1])+2;if(r.substr(t,2)!="30"){throw"PKCS8 Public Key is not SEQUENCE."}var n=ASN1HEX.getPosArrayOfChildren_AtObj(r,t);if(n.length!=2){throw"inner DERSequence shall have 2 elements: "+n.length}if(r.substr(n[0],2)!="02"){throw"N is not ASN.1 INTEGER"}if(r.substr(n[1],2)!="02"){throw"E is not ASN.1 INTEGER"}var u=ASN1HEX.getHexOfV_AtObj(r,n[0]);var s=ASN1HEX.getHexOfV_AtObj(r,n[1]);var o=new RSAKey();o.setPublic(u,s);return o},}}(); -/*! keyutil-1.0.1.js (c) 2013 Kenji Urushima | kjur.github.com/jsrsasign/license - */ -var KEYUTIL=function(){var c=function(n,p,o){return i(CryptoJS.AES,n,p,o)};var d=function(n,p,o){return i(CryptoJS.TripleDES,n,p,o)};var i=function(q,v,s,o){var p=CryptoJS.enc.Hex.parse(v);var u=CryptoJS.enc.Hex.parse(s);var n=CryptoJS.enc.Hex.parse(o);var r={};r.key=u;r.iv=n;r.ciphertext=p;var t=q.decrypt(r,u,{iv:n});return CryptoJS.enc.Hex.stringify(t)};var j=function(n,p,o){return e(CryptoJS.AES,n,p,o)};var m=function(n,p,o){return e(CryptoJS.TripleDES,n,p,o)};var e=function(r,w,t,o){var q=CryptoJS.enc.Hex.parse(w);var v=CryptoJS.enc.Hex.parse(t);var n=CryptoJS.enc.Hex.parse(o);var u=r.encrypt(q,v,{iv:n});var p=CryptoJS.enc.Hex.parse(u.toString());var s=CryptoJS.enc.Base64.stringify(p);return s};var g={"AES-256-CBC":{proc:c,eproc:j,keylen:32,ivlen:16},"AES-192-CBC":{proc:c,eproc:j,keylen:24,ivlen:16},"AES-128-CBC":{proc:c,eproc:j,keylen:16,ivlen:16},"DES-EDE3-CBC":{proc:d,eproc:m,keylen:24,ivlen:8}};var b=function(n){return g[n]["proc"]};var k=function(n){var p=CryptoJS.lib.WordArray.random(n);var o=CryptoJS.enc.Hex.stringify(p);return o};var l=function(q){var r={};if(q.match(new RegExp("DEK-Info: ([^,]+),([0-9A-Fa-f]+)","m"))){r.cipher=RegExp.$1;r.ivsalt=RegExp.$2}if(q.match(new RegExp("-----BEGIN ([A-Z]+) PRIVATE KEY-----"))){r.type=RegExp.$1}var p=-1;var t=0;if(q.indexOf("\r\n\r\n")!=-1){p=q.indexOf("\r\n\r\n");t=2}if(q.indexOf("\n\n")!=-1){p=q.indexOf("\n\n");t=1}var o=q.indexOf("-----END");if(p!=-1&&o!=-1){var n=q.substring(p+t*2,o-t);n=n.replace(/\s+/g,"");r.data=n}return r};var h=function(o,w,n){var t=n.substring(0,16);var r=CryptoJS.enc.Hex.parse(t);var p=CryptoJS.enc.Utf8.parse(w);var s=g[o]["keylen"]+g[o]["ivlen"];var v="";var u=null;for(;;){var q=CryptoJS.algo.MD5.create();if(u!=null){q.update(u)}q.update(p);q.update(r);u=q.finalize();v=v+CryptoJS.enc.Hex.stringify(u);if(v.length>=s*2){break}}var x={};x.keyhex=v.substr(0,g[o]["keylen"]*2);x.ivhex=v.substr(g[o]["keylen"]*2,g[o]["ivlen"]*2);return x};var a=function(n,t,p,u){var q=CryptoJS.enc.Base64.parse(n);var o=CryptoJS.enc.Hex.stringify(q);var s=g[t]["proc"];var r=s(o,p,u);return r};var f=function(n,q,o,s){var p=g[q]["eproc"];var r=p(n,o,s);return r};return{version:"1.0.0",getHexFromPEM:function(o,r){var p=o;if(p.indexOf("BEGIN "+r)==-1){throw"can't find PEM header: "+r}p=p.replace("-----BEGIN "+r+"-----","");p=p.replace("-----END "+r+"-----","");var q=p.replace(/\s+/g,"");var n=b64tohex(q);return n},getDecryptedKeyHexByKeyIV:function(o,r,q,p){var n=b(r);return n(o,q,p)},parsePKCS5PEM:function(n){return l(n)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(o,n,p){return h(o,n,p)},decryptKeyB64:function(n,p,o,q){return a(n,p,o,q)},getDecryptedKeyHex:function(w,v){var o=l(w);var r=o.type;var p=o.cipher;var n=o.ivsalt;var q=o.data;var u=h(p,v,n);var t=u.keyhex;var s=a(q,p,t,n);return s},getRSAKeyFromEncryptedPKCS5PEM:function(p,o){var q=this.getDecryptedKeyHex(p,o);var n=new RSAKey();n.readPrivateKeyFromASN1HexString(q);return n},getEncryptedPKCS5PEMFromPrvKeyHex:function(q,x,r,p){var n="";if(typeof r=="undefined"||r==null){r="AES-256-CBC"}if(typeof g[r]=="undefined"){throw"KEYUTIL unsupported algorithm: "+r}if(typeof p=="undefined"||p==null){var t=g[r]["ivlen"];var s=k(t);p=s.toUpperCase()}var w=h(r,x,p);var v=w.keyhex;var u=f(q,r,v,p);var o=u.replace(/(.{64})/g,"$1\r\n");var n="-----BEGIN RSA PRIVATE KEY-----\r\n";n+="Proc-Type: 4,ENCRYPTED\r\n";n+="DEK-Info: "+r+","+p+"\r\n";n+="\r\n";n+=o;n+="\r\n-----END RSA PRIVATE KEY-----\r\n";return n},getEncryptedPKCS5PEMFromRSAKey:function(C,D,o,s){var A=new KJUR.asn1.DERInteger({"int":0});var v=new KJUR.asn1.DERInteger({bigint:C.n});var z=new KJUR.asn1.DERInteger({"int":C.e});var B=new KJUR.asn1.DERInteger({bigint:C.d});var t=new KJUR.asn1.DERInteger({bigint:C.p});var r=new KJUR.asn1.DERInteger({bigint:C.q});var y=new KJUR.asn1.DERInteger({bigint:C.dmp1});var u=new KJUR.asn1.DERInteger({bigint:C.dmq1});var x=new KJUR.asn1.DERInteger({bigint:C.coeff});var E=new KJUR.asn1.DERSequence({array:[A,v,z,B,t,r,y,u,x]});var w=E.getEncodedHex();return this.getEncryptedPKCS5PEMFromPrvKeyHex(w,D,o,s)},newEncryptedPKCS5PEM:function(n,o,r,s){if(typeof o=="undefined"||o==null){o=1024}if(typeof r=="undefined"||r==null){r="10001"}var p=new RSAKey();p.generate(o,r);var q=null;if(typeof s=="undefined"||s==null){q=this.getEncryptedPKCS5PEMFromRSAKey(pkey,n)}else{q=this.getEncryptedPKCS5PEMFromRSAKey(pkey,n,s)}return q},getRSAKeyFromPlainPKCS8PEM:function(p){if(p.match(/ENCRYPTED/)){throw"pem shall be not ENCRYPTED"}var o=this.getHexFromPEM(p,"PRIVATE KEY");var n=this.getRSAKeyFromPlainPKCS8Hex(o);return n},getRSAKeyFromPlainPKCS8Hex:function(q){var p=ASN1HEX.getPosArrayOfChildren_AtObj(q,0);if(p.length!=3){throw"outer DERSequence shall have 3 elements: "+p.length}var o=ASN1HEX.getHexOfTLV_AtObj(q,p[1]);if(o!="300d06092a864886f70d0101010500"){throw"PKCS8 AlgorithmIdentifier is not rsaEnc: "+o}var o=ASN1HEX.getHexOfTLV_AtObj(q,p[1]);var r=ASN1HEX.getHexOfTLV_AtObj(q,p[2]);var s=ASN1HEX.getHexOfV_AtObj(r,0);var n=new RSAKey();n.readPrivateKeyFromASN1HexString(s);return n},parseHexOfEncryptedPKCS8:function(u){var q={};var p=ASN1HEX.getPosArrayOfChildren_AtObj(u,0);if(p.length!=2){throw"malformed format: SEQUENCE(0).items != 2: "+p.length}q.ciphertext=ASN1HEX.getHexOfV_AtObj(u,p[1]);var w=ASN1HEX.getPosArrayOfChildren_AtObj(u,p[0]);if(w.length!=2){throw"malformed format: SEQUENCE(0.0).items != 2: "+w.length}if(ASN1HEX.getHexOfV_AtObj(u,w[0])!="2a864886f70d01050d"){throw"this only supports pkcs5PBES2"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(u,w[1]);if(w.length!=2){throw"malformed format: SEQUENCE(0.0.1).items != 2: "+n.length}var o=ASN1HEX.getPosArrayOfChildren_AtObj(u,n[1]);if(o.length!=2){throw"malformed format: SEQUENCE(0.0.1.1).items != 2: "+o.length}if(ASN1HEX.getHexOfV_AtObj(u,o[0])!="2a864886f70d0307"){throw"this only supports TripleDES"}q.encryptionSchemeAlg="TripleDES";q.encryptionSchemeIV=ASN1HEX.getHexOfV_AtObj(u,o[1]);var r=ASN1HEX.getPosArrayOfChildren_AtObj(u,n[0]);if(r.length!=2){throw"malformed format: SEQUENCE(0.0.1.0).items != 2: "+r.length}if(ASN1HEX.getHexOfV_AtObj(u,r[0])!="2a864886f70d01050c"){throw"this only supports pkcs5PBKDF2"}var v=ASN1HEX.getPosArrayOfChildren_AtObj(u,r[1]);if(v.length<2){throw"malformed format: SEQUENCE(0.0.1.0.1).items < 2: "+v.length}q.pbkdf2Salt=ASN1HEX.getHexOfV_AtObj(u,v[0]);var s=ASN1HEX.getHexOfV_AtObj(u,v[1]);try{q.pbkdf2Iter=parseInt(s,16)}catch(t){throw"malformed format pbkdf2Iter: "+s}return q},getPBKDF2KeyHexFromParam:function(s,n){var r=CryptoJS.enc.Hex.parse(s.pbkdf2Salt);var o=s.pbkdf2Iter;var q=CryptoJS.PBKDF2(n,r,{keySize:192/32,iterations:o});var p=CryptoJS.enc.Hex.stringify(q);return p},getPlainPKCS8HexFromEncryptedPKCS8PEM:function(v,w){var p=this.getHexFromPEM(v,"ENCRYPTED PRIVATE KEY");var n=this.parseHexOfEncryptedPKCS8(p);var s=KEYUTIL.getPBKDF2KeyHexFromParam(n,w);var t={};t.ciphertext=CryptoJS.enc.Hex.parse(n.ciphertext);var r=CryptoJS.enc.Hex.parse(s);var q=CryptoJS.enc.Hex.parse(n.encryptionSchemeIV);var u=CryptoJS.TripleDES.decrypt(t,r,{iv:q});var o=CryptoJS.enc.Hex.stringify(u);return o},getRSAKeyFromEncryptedPKCS8PEM:function(q,p){var o=this.getPlainPKCS8HexFromEncryptedPKCS8PEM(q,p);var n=this.getRSAKeyFromPlainPKCS8Hex(o);return n},getKeyFromEncryptedPKCS8PEM:function(q,o){var n=this.getPlainPKCS8HexFromEncryptedPKCS8PEM(q,o);var p=this.getKeyFromPlainPrivatePKCS8Hex(n);return p},parsePlainPrivatePKCS8Hex:function(q){var o={};o.algparam=null;if(q.substr(0,2)!="30"){throw"malformed plain PKCS8 private key(code:001)"}var p=ASN1HEX.getPosArrayOfChildren_AtObj(q,0);if(p.length!=3){throw"malformed plain PKCS8 private key(code:002)"}if(q.substr(p[1],2)!="30"){throw"malformed PKCS8 private key(code:003)"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(q,p[1]);if(n.length!=2){throw"malformed PKCS8 private key(code:004)"}if(q.substr(n[0],2)!="06"){throw"malformed PKCS8 private key(code:005)"}o.algoid=ASN1HEX.getHexOfV_AtObj(q,n[0]);if(q.substr(n[1],2)=="06"){o.algparam=ASN1HEX.getHexOfV_AtObj(q,n[1])}if(q.substr(p[2],2)!="04"){throw"malformed PKCS8 private key(code:006)"}o.keyidx=ASN1HEX.getStartPosOfV_AtObj(q,p[2]);return o},getKeyFromPlainPrivatePKCS8PEM:function(o){var n=this.getHexFromPEM(o,"PRIVATE KEY");var p=this.getKeyFromPlainPrivatePKCS8Hex(n);return p},getKeyFromPlainPrivatePKCS8Hex:function(n){var p=this.parsePlainPrivatePKCS8Hex(n);if(p.algoid=="2a864886f70d010101"){this.parsePrivateRawRSAKeyHexAtObj(n,p);var o=p.key;var q=new RSAKey();q.setPrivateEx(o.n,o.e,o.d,o.p,o.q,o.dp,o.dq,o.co);return q}else{if(p.algoid=="2a8648ce3d0201"){this.parsePrivateRawECKeyHexAtObj(n,p);if(KJUR.crypto.OID.oidhex2name[p.algparam]===undefined){throw"KJUR.crypto.OID.oidhex2name undefined: "+p.algparam}var r=KJUR.crypto.OID.oidhex2name[p.algparam];var q=new KJUR.crypto.ECDSA({curve:r,prv:p.key});return q}else{throw"unsupported private key algorithm"}}},getRSAKeyFromPublicPKCS8PEM:function(o){var p=this.getHexFromPEM(o,"PUBLIC KEY");var n=this.getRSAKeyFromPublicPKCS8Hex(p);return n},getKeyFromPublicPKCS8PEM:function(o){var p=this.getHexFromPEM(o,"PUBLIC KEY");var n=this.getKeyFromPublicPKCS8Hex(p);return n},getKeyFromPublicPKCS8Hex:function(o){var n=this.parsePublicPKCS8Hex(o);if(n.algoid=="2a864886f70d010101"){var r=this.parsePublicRawRSAKeyHex(n.key);var p=new RSAKey();p.setPublic(r.n,r.e);return p}else{if(n.algoid=="2a8648ce3d0201"){if(KJUR.crypto.OID.oidhex2name[n.algparam]===undefined){throw"KJUR.crypto.OID.oidhex2name undefined: "+n.algparam}var q=KJUR.crypto.OID.oidhex2name[n.algparam];var p=new KJUR.crypto.ECDSA({curve:q,pub:n.key});return p}else{throw"unsupported public key algorithm"}}},parsePublicRawRSAKeyHex:function(p){var n={};if(p.substr(0,2)!="30"){throw"malformed RSA key(code:001)"}var o=ASN1HEX.getPosArrayOfChildren_AtObj(p,0);if(o.length!=2){throw"malformed RSA key(code:002)"}if(p.substr(o[0],2)!="02"){throw"malformed RSA key(code:003)"}n.n=ASN1HEX.getHexOfV_AtObj(p,o[0]);if(p.substr(o[1],2)!="02"){throw"malformed RSA key(code:004)"}n.e=ASN1HEX.getHexOfV_AtObj(p,o[1]);return n},parsePrivateRawRSAKeyHexAtObj:function(o,q){var p=q.keyidx;if(o.substr(p,2)!="30"){throw"malformed RSA private key(code:001)"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(o,p);if(n.length!=9){throw"malformed RSA private key(code:002)"}q.key={};q.key.n=ASN1HEX.getHexOfV_AtObj(o,n[1]);q.key.e=ASN1HEX.getHexOfV_AtObj(o,n[2]);q.key.d=ASN1HEX.getHexOfV_AtObj(o,n[3]);q.key.p=ASN1HEX.getHexOfV_AtObj(o,n[4]);q.key.q=ASN1HEX.getHexOfV_AtObj(o,n[5]);q.key.dp=ASN1HEX.getHexOfV_AtObj(o,n[6]);q.key.dq=ASN1HEX.getHexOfV_AtObj(o,n[7]);q.key.co=ASN1HEX.getHexOfV_AtObj(o,n[8])},parsePrivateRawECKeyHexAtObj:function(o,q){var p=q.keyidx;if(o.substr(p,2)!="30"){throw"malformed ECC private key(code:001)"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(o,p);if(n.length!=3){throw"malformed ECC private key(code:002)"}if(o.substr(n[1],2)!="04"){throw"malformed ECC private key(code:003)"}q.key=ASN1HEX.getHexOfV_AtObj(o,n[1])},parsePublicPKCS8Hex:function(q){var o={};o.algparam=null;var p=ASN1HEX.getPosArrayOfChildren_AtObj(q,0);if(p.length!=2){throw"outer DERSequence shall have 2 elements: "+p.length}var r=p[0];if(q.substr(r,2)!="30"){throw"malformed PKCS8 public key(code:001)"}var n=ASN1HEX.getPosArrayOfChildren_AtObj(q,r);if(n.length!=2){throw"malformed PKCS8 public key(code:002)"}if(q.substr(n[0],2)!="06"){throw"malformed PKCS8 public key(code:003)"}o.algoid=ASN1HEX.getHexOfV_AtObj(q,n[0]);if(q.substr(n[1],2)=="06"){o.algparam=ASN1HEX.getHexOfV_AtObj(q,n[1])}if(q.substr(p[1],2)!="03"){throw"malformed PKCS8 public key(code:004)"}o.key=ASN1HEX.getHexOfV_AtObj(q,p[1]).substr(2);return o},getRSAKeyFromPublicPKCS8Hex:function(r){var q=ASN1HEX.getPosArrayOfChildren_AtObj(r,0);if(q.length!=2){throw"outer DERSequence shall have 2 elements: "+q.length}var p=ASN1HEX.getHexOfTLV_AtObj(r,q[0]);if(p!="300d06092a864886f70d0101010500"){throw"PKCS8 AlgorithmId is not rsaEncryption"}if(r.substr(q[1],2)!="03"){throw"PKCS8 Public Key is not BITSTRING encapslated."}var t=ASN1HEX.getStartPosOfV_AtObj(r,q[1])+2;if(r.substr(t,2)!="30"){throw"PKCS8 Public Key is not SEQUENCE."}var n=ASN1HEX.getPosArrayOfChildren_AtObj(r,t);if(n.length!=2){throw"inner DERSequence shall have 2 elements: "+n.length}if(r.substr(n[0],2)!="02"){throw"N is not ASN.1 INTEGER"}if(r.substr(n[1],2)!="02"){throw"E is not ASN.1 INTEGER"}var u=ASN1HEX.getHexOfV_AtObj(r,n[0]);var s=ASN1HEX.getHexOfV_AtObj(r,n[1]);var o=new RSAKey();o.setPublic(u,s);return o},}}();KEYUTIL.getKey=function(d,a,c){if(d instanceof RSAKey){return d}if(d instanceof KJUR.crypto.ECDSA){return d}if(d.xy!==undefined&&d.curve!==undefined){return new KJUR.crypto.ECDSA({prv:d.xy,curve:d.curve})}if(d.n!==undefined&&d.e!==undefined&&d.d!==undefined&&d.p!==undefined&&d.q!==undefined&&d.dp!==undefined&&d.dq!==undefined&&d.co!==undefined){var b=new RSAKey();b.setPrivateEx(d.n,d.e,d.d,d.p,d.q,d.dp,d.dq,d.co);return b}if(d.d!==undefined&&d.curve!==undefined){return new KJUR.crypto.ECDSA({pub:d.d,curve:d.curve})}if(d.n!==undefined&&d.e){var b=new RSAKey();b.setPublic(d.n,d.e);return b}if(d.indexOf("-END CERTIFICATE-",0)!=-1||d.indexOf("-END X509 CERTIFICATE-",0)!=-1||d.indexOf("-END TRUSTED CERTIFICATE-",0)!=-1){return X509.getPublicKeyFromCertPEM(d)}if(c==="pkcs8pub"){return KEYUTIL.getKeyFromPublicPKCS8Hex(d)}if(d.indexOf("-END PUBLIC KEY-")!=-1){return KEYUTIL.getKeyFromPublicPKCS8PEM(d)}if(c==="pkcs5prv"){var b=new RSAKey();b.readPrivateKeyFromASN1HexString(d);return b}if(c==="pkcs5prv"){var b=new RSAKey();b.readPrivateKeyFromASN1HexString(d);return b}if(d.indexOf("-END RSA PRIVATE KEY-")!=-1&&d.indexOf("4,ENCRYPTED")==-1){var b=new RSAKey();b.readPrivateKeyFromPEMString(d);return b}if(d.indexOf("-END PRIVATE KEY-")!=-1){return KEYUTIL.getKeyFromPlainPrivatePKCS8PEM(d)}if(d.indexOf("-END RSA PRIVATE KEY-")!=-1&&d.indexOf("4,ENCRYPTED")!=-1){return KEYUTIL.getRSAKeyFromEncryptedPKCS5PEM(d,a)}if(d.indexOf("-END ENCRYPTED PRIVATE KEY-")!=-1){return KEYUTIL.getKeyFromEncryptedPKCS8PEM(d,a)}throw"not supported argument"};KEYUTIL.generateKeypair=function(a,c){if(a=="RSA"){var b=c;var h=new RSAKey();h.generate(b,"10001");var f=new RSAKey();var e=h.n.toString(16);var i=h.e.toString(16);f.setPublic(e,i);var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{if(a=="EC"){var d=c;var g=new KJUR.crypto.ECDSA({curve:d});var j=g.generateKeyPairHex();var h=new KJUR.crypto.ECDSA({curve:d});h.setPrivateKeyHex(j.ecprvhex);var f=new KJUR.crypto.ECDSA({curve:d});f.setPublicKeyHex(j.ecpubhex);var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{throw"unknown algorithm: "+a}}}; -/*! rsapem-1.1.js (c) 2012 Kenji Urushima | kjur.github.com/jsrsasign/license - */ -function _rsapem_pemToBase64(b){var a=b;a=a.replace("-----BEGIN RSA PRIVATE KEY-----","");a=a.replace("-----END RSA PRIVATE KEY-----","");a=a.replace(/[ \n]+/g,"");return a}function _rsapem_getPosArrayOfChildrenFromHex(d){var j=new Array();var k=ASN1HEX.getStartPosOfV_AtObj(d,0);var f=ASN1HEX.getPosOfNextSibling_AtObj(d,k);var h=ASN1HEX.getPosOfNextSibling_AtObj(d,f);var b=ASN1HEX.getPosOfNextSibling_AtObj(d,h);var l=ASN1HEX.getPosOfNextSibling_AtObj(d,b);var e=ASN1HEX.getPosOfNextSibling_AtObj(d,l);var g=ASN1HEX.getPosOfNextSibling_AtObj(d,e);var c=ASN1HEX.getPosOfNextSibling_AtObj(d,g);var i=ASN1HEX.getPosOfNextSibling_AtObj(d,c);j.push(k,f,h,b,l,e,g,c,i);return j}function _rsapem_getHexValueArrayOfChildrenFromHex(i){var o=_rsapem_getPosArrayOfChildrenFromHex(i);var r=ASN1HEX.getHexOfV_AtObj(i,o[0]);var f=ASN1HEX.getHexOfV_AtObj(i,o[1]);var j=ASN1HEX.getHexOfV_AtObj(i,o[2]);var k=ASN1HEX.getHexOfV_AtObj(i,o[3]);var c=ASN1HEX.getHexOfV_AtObj(i,o[4]);var b=ASN1HEX.getHexOfV_AtObj(i,o[5]);var h=ASN1HEX.getHexOfV_AtObj(i,o[6]);var g=ASN1HEX.getHexOfV_AtObj(i,o[7]);var l=ASN1HEX.getHexOfV_AtObj(i,o[8]);var m=new Array();m.push(r,f,j,k,c,b,h,g,l);return m}function _rsapem_readPrivateKeyFromASN1HexString(c){var b=_rsapem_getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])}function _rsapem_readPrivateKeyFromPEMString(e){var c=_rsapem_pemToBase64(e);var d=b64tohex(c);var b=_rsapem_getHexValueArrayOfChildrenFromHex(d);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])}RSAKey.prototype.readPrivateKeyFromPEMString=_rsapem_readPrivateKeyFromPEMString;RSAKey.prototype.readPrivateKeyFromASN1HexString=_rsapem_readPrivateKeyFromASN1HexString; -/*! rsasign-1.2.7.js (c) 2012 Kenji Urushima | kjur.github.com/jsrsasign/license - */ -var _RE_HEXDECONLY=new RegExp("");_RE_HEXDECONLY.compile("[^0-9a-f]","gi");function _rsasign_getHexPaddedDigestInfoForString(d,e,a){var b=function(f){return KJUR.crypto.Util.hashString(f,a)};var c=b(d);return KJUR.crypto.Util.getPaddedDigestInfoHex(c,a,e)}function _zeroPaddingOfSignature(e,d){var c="";var a=d/4-e.length;for(var b=0;b>24,(d&16711680)>>16,(d&65280)>>8,d&255]))));d+=1}return b}function _rsasign_signStringPSS(e,a,d){var c=function(f){return KJUR.crypto.Util.hashHex(f,a)};var b=c(rstrtohex(e));if(d===undefined){d=-1}return this.signWithMessageHashPSS(b,a,d)}function _rsasign_signWithMessageHashPSS(l,a,k){var b=hextorstr(l);var g=b.length;var m=this.n.bitLength()-1;var c=Math.ceil(m/8);var d;var o=function(i){return KJUR.crypto.Util.hashHex(i,a)};if(k===-1||k===undefined){k=g}else{if(k===-2){k=c-g-2}else{if(k<-2){throw"invalid salt length"}}}if(c<(g+k+2)){throw"data too long"}var f="";if(k>0){f=new Array(k);new SecureRandom().nextBytes(f);f=String.fromCharCode.apply(String,f)}var n=hextorstr(o(rstrtohex("\x00\x00\x00\x00\x00\x00\x00\x00"+b+f)));var j=[];for(d=0;d>(8*c-m))&255;q[0]&=~p;for(d=0;dthis.n.bitLength()){return 0}var i=this.doPublic(b);var e=i.toString(16).replace(/^1f+00/,"");var g=_rsasign_getAlgNameAndHashFromHexDisgestInfo(e);if(g.length==0){return false}var d=g[0];var h=g[1];var a=function(k){return KJUR.crypto.Util.hashString(k,d)};var c=a(f);return(h==c)}function _rsasign_verifyWithMessageHash(e,a){a=a.replace(_RE_HEXDECONLY,"");a=a.replace(/[ \n]+/g,"");var b=parseBigInt(a,16);if(b.bitLength()>this.n.bitLength()){return 0}var h=this.doPublic(b);var g=h.toString(16).replace(/^1f+00/,"");var c=_rsasign_getAlgNameAndHashFromHexDisgestInfo(g);if(c.length==0){return false}var d=c[0];var f=c[1];return(f==e)}function _rsasign_verifyStringPSS(c,b,a,f){var e=function(g){return KJUR.crypto.Util.hashHex(g,a)};var d=e(rstrtohex(c));if(f===undefined){f=-1}return this.verifyWithMessageHashPSS(d,b,a,f)}function _rsasign_verifyWithMessageHashPSS(f,s,l,c){var k=new BigInteger(s,16);if(k.bitLength()>this.n.bitLength()){return false}var r=function(i){return KJUR.crypto.Util.hashHex(i,l)};var j=hextorstr(f);var h=j.length;var g=this.n.bitLength()-1;var m=Math.ceil(g/8);var q;if(c===-1||c===undefined){c=h}else{if(c===-2){c=m-h-2}else{if(c<-2){throw"invalid salt length"}}}if(m<(h+c+2)){throw"data too long"}var a=this.doPublic(k).toByteArray();for(q=0;q>(8*m-g))&255;if((d.charCodeAt(0)&p)!==0){throw"bits beyond keysize not zero"}var n=pss_mgf1_str(e,d.length,r);var o=[];for(q=0;qMIT License - */ - -if (typeof KJUR == "undefined" || !KJUR) KJUR = {}; -if (typeof KJUR.jws == "undefined" || !KJUR.jws) KJUR.jws = {}; - -/** - * JSON Web Signature(JWS) class.
    - * @name KJUR.jws.JWS - * @class JSON Web Signature(JWS) class - * @property {Dictionary} parsedJWS This property is set after JWS signature verification.
    - * Following "parsedJWS_*" properties can be accessed as "parsedJWS.*" because of - * JsDoc restriction. - * @property {String} parsedJWS_headB64U string of Encrypted JWS Header - * @property {String} parsedJWS_payloadB64U string of Encrypted JWS Payload - * @property {String} parsedJWS_sigvalB64U string of Encrypted JWS signature value - * @property {String} parsedJWS_si string of Signature Input - * @property {String} parsedJWS_sigvalH hexadecimal string of JWS signature value - * @property {String} parsedJWS_sigvalBI BigInteger(defined in jsbn.js) object of JWS signature value - * @property {String} parsedJWS_headS string of decoded JWS Header - * @property {String} parsedJWS_headS string of decoded JWS Payload - * @requires base64x.js, json-sans-eval.js and jsrsasign library - * @see 'jwjws'(JWS JavaScript Library) home page http://kjur.github.com/jsjws/ - * @see 'jwrsasign'(RSA Sign JavaScript Library) home page http://kjur.github.com/jsrsasign/ - * @see IETF I-D JSON Web Algorithms (JWA) - * @since jsjws 1.0 - * @description - *

    Supported Algorithms

    - * Here is supported algorithm names for {@link KJUR.jws.JWS.sign} and {@link KJUR.jws.JWS.verify} - * methods. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
    alg valuespec requirementjsjws support
    HS256REQUIREDSUPPORTED
    HS384OPTIONALSUPPORTED
    HS512OPTIONALSUPPORTED
    RS256RECOMMENDEDSUPPORTED
    RS384OPTIONALSUPPORTED
    RS512OPTIONALSUPPORTED
    ES256RECOMMENDED+SUPPORTED
    ES384OPTIONALSUPPORTED
    ES512OPTIONAL-
    PS256OPTIONALSUPPORTED
    PS384OPTIONALSUPPORTED
    PS512OPTIONALSUPPORTED
    noneREQUIREDSUPPORTED
    - * NOTE: HS384 is supported since jsjws 3.0.2 with jsrsasign 4.1.4. - */ -KJUR.jws.JWS = function() { - - // === utility ============================================================= - - /** - * parse JWS string and set public property 'parsedJWS' dictionary.
    - * @name parseJWS - * @memberOf KJUR.jws.JWS - * @function - * @param {String} sJWS JWS signature string to be parsed. - * @throws if sJWS is not comma separated string such like "Header.Payload.Signature". - * @throws if JWS Header is a malformed JSON string. - * @since jws 1.1 - */ - this.parseJWS = function(sJWS, sigValNotNeeded) { - if ((this.parsedJWS !== undefined) && - (sigValNotNeeded || (this.parsedJWS.sigvalH !== undefined))) { - return; - } - if (sJWS.match(/^([^.]+)\.([^.]+)\.([^.]+)$/) == null) { - throw "JWS signature is not a form of 'Head.Payload.SigValue'."; - } - var b6Head = RegExp.$1; - var b6Payload = RegExp.$2; - var b6SigVal = RegExp.$3; - var sSI = b6Head + "." + b6Payload; - this.parsedJWS = {}; - this.parsedJWS.headB64U = b6Head; - this.parsedJWS.payloadB64U = b6Payload; - this.parsedJWS.sigvalB64U = b6SigVal; - this.parsedJWS.si = sSI; - - if (!sigValNotNeeded) { - var hSigVal = b64utohex(b6SigVal); - var biSigVal = parseBigInt(hSigVal, 16); - this.parsedJWS.sigvalH = hSigVal; - this.parsedJWS.sigvalBI = biSigVal; - } - - var sHead = b64utoutf8(b6Head); - var sPayload = b64utoutf8(b6Payload); - this.parsedJWS.headS = sHead; - this.parsedJWS.payloadS = sPayload; - - if (! this.isSafeJSONString(sHead, this.parsedJWS, 'headP')) - throw "malformed JSON string for JWS Head: " + sHead; - }; - - // ==== JWS Validation ========================================================= - function _getSignatureInputByString(sHead, sPayload) { - return utf8tob64u(sHead) + "." + utf8tob64u(sPayload); - }; - - function _getHashBySignatureInput(sSignatureInput, sHashAlg) { - var hashfunc = function(s) { return KJUR.crypto.Util.hashString(s, sHashAlg); }; - if (hashfunc == null) throw "hash function not defined in jsrsasign: " + sHashAlg; - return hashfunc(sSignatureInput); - }; - - function _jws_verifySignature(sHead, sPayload, hSig, hN, hE) { - var sSignatureInput = _getSignatureInputByString(sHead, sPayload); - var biSig = parseBigInt(hSig, 16); - return _rsasign_verifySignatureWithArgs(sSignatureInput, biSig, hN, hE); - }; - - /** - * verify JWS signature with naked RSA public key.
    - * This only supports "RS256" and "RS512" algorithm. - * @name verifyJWSByNE - * @memberOf KJUR.jws.JWS - * @function - * @param {String} sJWS JWS signature string to be verified - * @param {String} hN hexadecimal string for modulus of RSA public key - * @param {String} hE hexadecimal string for public exponent of RSA public key - * @return {String} returns 1 when JWS signature is valid, otherwise returns 0 - * @throws if sJWS is not comma separated string such like "Header.Payload.Signature". - * @throws if JWS Header is a malformed JSON string. - * @deprecated from 3.0.0 please move to {@link KJUR.jws.JWS.verify} - */ - this.verifyJWSByNE = function(sJWS, hN, hE) { - this.parseJWS(sJWS); - return _rsasign_verifySignatureWithArgs(this.parsedJWS.si, this.parsedJWS.sigvalBI, hN, hE); - }; - - /** - * verify JWS signature with RSA public key.
    - * This only supports "RS256", "RS512", "PS256" and "PS512" algorithms. - * @name verifyJWSByKey - * @memberOf KJUR.jws.JWS - * @function - * @param {String} sJWS JWS signature string to be verified - * @param {RSAKey} key RSA public key - * @return {Boolean} returns true when JWS signature is valid, otherwise returns false - * @throws if sJWS is not comma separated string such like "Header.Payload.Signature". - * @throws if JWS Header is a malformed JSON string. - * @deprecated from 3.0.0 please move to {@link KJUR.jws.JWS.verify} - */ - this.verifyJWSByKey = function(sJWS, key) { - this.parseJWS(sJWS); - var hashAlg = _jws_getHashAlgFromParsedHead(this.parsedJWS.headP); - var isPSS = this.parsedJWS.headP['alg'].substr(0, 2) == "PS"; - - if (key.hashAndVerify) { - return key.hashAndVerify(hashAlg, - new Buffer(this.parsedJWS.si, 'utf8').toString('base64'), - b64utob64(this.parsedJWS.sigvalB64U), - 'base64', - isPSS); - } else if (isPSS) { - return key.verifyStringPSS(this.parsedJWS.si, - this.parsedJWS.sigvalH, hashAlg); - } else { - return key.verifyString(this.parsedJWS.si, - this.parsedJWS.sigvalH); - } - }; - - /** - * verify JWS signature by PEM formatted X.509 certificate.
    - * This only supports "RS256" and "RS512" algorithm. - * @name verifyJWSByPemX509Cert - * @memberOf KJUR.jws.JWS - * @function - * @param {String} sJWS JWS signature string to be verified - * @param {String} sPemX509Cert string of PEM formatted X.509 certificate - * @return {String} returns 1 when JWS signature is valid, otherwise returns 0 - * @throws if sJWS is not comma separated string such like "Header.Payload.Signature". - * @throws if JWS Header is a malformed JSON string. - * @since 1.1 - * @deprecated from 3.0.0 please move to {@link KJUR.jws.JWS.verify} - */ - this.verifyJWSByPemX509Cert = function(sJWS, sPemX509Cert) { - this.parseJWS(sJWS); - var x509 = new X509(); - x509.readCertPEM(sPemX509Cert); - return x509.subjectPublicKeyRSA.verifyString(this.parsedJWS.si, this.parsedJWS.sigvalH); - }; - - // ==== JWS Generation ========================================================= - function _jws_getHashAlgFromParsedHead(head) { - var sigAlg = head["alg"]; - var hashAlg = ""; - - if (sigAlg != "RS256" && sigAlg != "RS512" && - sigAlg != "PS256" && sigAlg != "PS512") - throw "JWS signature algorithm not supported: " + sigAlg; - if (sigAlg.substr(2) == "256") hashAlg = "sha256"; - if (sigAlg.substr(2) == "512") hashAlg = "sha512"; - return hashAlg; - }; - - function _jws_getHashAlgFromHead(sHead) { - return _jws_getHashAlgFromParsedHead(jsonParse(sHead)); - }; - - function _jws_generateSignatureValueBySI_NED(sHead, sPayload, sSI, hN, hE, hD) { - var rsa = new RSAKey(); - rsa.setPrivate(hN, hE, hD); - - var hashAlg = _jws_getHashAlgFromHead(sHead); - var sigValue = rsa.signString(sSI, hashAlg); - return sigValue; - }; - - function _jws_generateSignatureValueBySI_Key(sHead, sPayload, sSI, key, head) { - var hashAlg = null; - if (typeof head == "undefined") { - hashAlg = _jws_getHashAlgFromHead(sHead); - } else { - hashAlg = _jws_getHashAlgFromParsedHead(head); - } - - var isPSS = head['alg'].substr(0, 2) == "PS"; - - if (key.hashAndSign) { - return b64tob64u(key.hashAndSign(hashAlg, sSI, 'binary', 'base64', isPSS)); - } else if (isPSS) { - return hextob64u(key.signStringPSS(sSI, hashAlg)); - } else { - return hextob64u(key.signString(sSI, hashAlg)); - } - }; - - function _jws_generateSignatureValueByNED(sHead, sPayload, hN, hE, hD) { - var sSI = _getSignatureInputByString(sHead, sPayload); - return _jws_generateSignatureValueBySI_NED(sHead, sPayload, sSI, hN, hE, hD); - }; - - /** - * generate JWS signature by Header, Payload and a naked RSA private key.
    - * This only supports "RS256" and "RS512" algorithm. - * @name generateJWSByNED - * @memberOf KJUR.jws.JWS - * @function - * @param {String} sHead string of JWS Header - * @param {String} sPayload string of JWS Payload - * @param {String} hN hexadecimal string for modulus of RSA public key - * @param {String} hE hexadecimal string for public exponent of RSA public key - * @param {String} hD hexadecimal string for private exponent of RSA private key - * @return {String} JWS signature string - * @throws if sHead is a malformed JSON string. - * @throws if supported signature algorithm was not specified in JSON Header. - * @deprecated from 3.0.0 please move to {@link KJUR.jws.JWS.sign} - */ - this.generateJWSByNED = function(sHead, sPayload, hN, hE, hD) { - if (! this.isSafeJSONString(sHead)) throw "JWS Head is not safe JSON string: " + sHead; - var sSI = _getSignatureInputByString(sHead, sPayload); - var hSigValue = _jws_generateSignatureValueBySI_NED(sHead, sPayload, sSI, hN, hE, hD); - var b64SigValue = hextob64u(hSigValue); - - this.parsedJWS = {}; - this.parsedJWS.headB64U = sSI.split(".")[0]; - this.parsedJWS.payloadB64U = sSI.split(".")[1]; - this.parsedJWS.sigvalB64U = b64SigValue; - - return sSI + "." + b64SigValue; - }; - - /** - * generate JWS signature by Header, Payload and a RSA private key.
    - * This only supports "RS256", "RS512", "PS256" and "PS512" algorithms. - * @name generateJWSByKey - * @memberOf KJUR.jws.JWS - * @function - * @param {String} sHead string of JWS Header - * @param {String} sPayload string of JWS Payload - * @param {RSAKey} RSA private key - * @return {String} JWS signature string - * @throws if sHead is a malformed JSON string. - * @throws if supported signature algorithm was not specified in JSON Header. - * @deprecated from 3.0.0 please move to {@link KJUR.jws.JWS.sign} - */ - this.generateJWSByKey = function(sHead, sPayload, key) { - var obj = {}; - if (!this.isSafeJSONString(sHead, obj, 'headP')) - throw "JWS Head is not safe JSON string: " + sHead; - var sSI = _getSignatureInputByString(sHead, sPayload); - var b64SigValue = _jws_generateSignatureValueBySI_Key(sHead, sPayload, sSI, key, obj.headP); - - this.parsedJWS = {}; - this.parsedJWS.headB64U = sSI.split(".")[0]; - this.parsedJWS.payloadB64U = sSI.split(".")[1]; - this.parsedJWS.sigvalB64U = b64SigValue; - - return sSI + "." + b64SigValue; - }; - - // === sign with PKCS#1 RSA private key ===================================================== - function _jws_generateSignatureValueBySI_PemPrvKey(sHead, sPayload, sSI, sPemPrvKey) { - var rsa = new RSAKey(); - rsa.readPrivateKeyFromPEMString(sPemPrvKey); - var hashAlg = _jws_getHashAlgFromHead(sHead); - var sigValue = rsa.signString(sSI, hashAlg); - return sigValue; - }; - - /** - * generate JWS signature by Header, Payload and a PEM formatted PKCS#1 RSA private key.
    - * This only supports "RS256" and "RS512" algorithm. - * @name generateJWSByP1PrvKey - * @memberOf KJUR.jws.JWS - * @function - * @param {String} sHead string of JWS Header - * @param {String} sPayload string of JWS Payload - * @param {String} string for sPemPrvKey PEM formatted PKCS#1 RSA private key
    - * Heading and trailing space characters in PEM key will be ignored. - * @return {String} JWS signature string - * @throws if sHead is a malformed JSON string. - * @throws if supported signature algorithm was not specified in JSON Header. - * @since 1.1 - * @deprecated from 3.0.0 please move to {@link KJUR.jws.JWS.sign} - */ - this.generateJWSByP1PrvKey = function(sHead, sPayload, sPemPrvKey) { - if (! this.isSafeJSONString(sHead)) throw "JWS Head is not safe JSON string: " + sHead; - var sSI = _getSignatureInputByString(sHead, sPayload); - var hSigValue = _jws_generateSignatureValueBySI_PemPrvKey(sHead, sPayload, sSI, sPemPrvKey); - var b64SigValue = hextob64u(hSigValue); - - this.parsedJWS = {}; - this.parsedJWS.headB64U = sSI.split(".")[0]; - this.parsedJWS.payloadB64U = sSI.split(".")[1]; - this.parsedJWS.sigvalB64U = b64SigValue; - - return sSI + "." + b64SigValue; - }; -}; - -// === major static method ======================================================== - -/** - * generate JWS signature by specified key
    - * @name sign - * @memberOf KJUR.jws.JWS - * @function - * @static - * @param {String} alg JWS algorithm name to sign and force set to sHead or null - * @param {String} sHead string of JWS Header - * @param {String} sPayload string of JWS Payload - * @param {String} key string of private key or key object to sign - * @param {String} pass (OPTION)passcode to use encrypted private key - * @return {String} JWS signature string - * @since jws 3.0.0 - * @see jsrsasign KJUR.crypto.Signature method - * @see jsrsasign KJUR.crypto.Mac method - * @description - * This method supports following algorithms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
    alg valuespec requirementjsjws support
    HS256REQUIREDSUPPORTED
    HS384OPTIONAL-
    HS512OPTIONALSUPPORTED
    RS256RECOMMENDEDSUPPORTED
    RS384OPTIONALSUPPORTED
    RS512OPTIONALSUPPORTED
    ES256RECOMMENDED+SUPPORTED
    ES384OPTIONALSUPPORTED
    ES512OPTIONAL-
    PS256OPTIONALSUPPORTED
    PS384OPTIONALSUPPORTED
    PS512OPTIONALSUPPORTED
    noneREQUIREDSUPPORTED
    - *
    - *
    NOTE1: - *
    salt length of RSAPSS signature is the same as the hash algorithm length - * because of IETF JOSE ML discussion. - *
    NOTE2: - *
    The reason of HS384 unsupport is - * CryptoJS HmacSHA384 bug. - *
    - */ -KJUR.jws.JWS.sign = function(alg, sHeader, sPayload, key, pass) { - var ns1 = KJUR.jws.JWS; - - if (! ns1.isSafeJSONString(sHeader)) - throw "JWS Head is not safe JSON string: " + sHead; - - var pHeader = ns1.readSafeJSONString(sHeader); - - // 1. use alg if defined in sHeader - if ((alg == '' || alg == null) && - pHeader['alg'] !== undefined) { - alg = pHeader['alg']; - } - - // 2. set alg in sHeader if undefined - if ((alg != '' && alg != null) && - pHeader['alg'] === undefined) { - pHeader['alg'] = alg; - sHeader = JSON.stringify(pHeader); - } - - // 3. set signature algorithm like SHA1withRSA - var sigAlg = null; - if (ns1.jwsalg2sigalg[alg] === undefined) { - throw "unsupported alg name: " + alg; - } else { - sigAlg = ns1.jwsalg2sigalg[alg]; - } - - var uHeader = utf8tob64u(sHeader); - var uPayload = utf8tob64u(sPayload); - var uSignatureInput = uHeader + "." + uPayload - - // 4. sign - var hSig = ""; - if (sigAlg.substr(0, 4) == "Hmac") { - if (key === undefined) - throw "hexadecimal key shall be specified for HMAC"; - var mac = new KJUR.crypto.Mac({'alg': sigAlg, 'pass': hextorstr(key)}); - mac.updateString(uSignatureInput); - hSig = mac.doFinal(); - } else if (sigAlg.indexOf("withECDSA") != -1) { - var sig = new KJUR.crypto.Signature({'alg': sigAlg}); - sig.init(key, pass); - sig.updateString(uSignatureInput); - hASN1Sig = sig.sign(); - hSig = KJUR.crypto.ECDSA.asn1SigToConcatSig(hASN1Sig); - } else if (sigAlg != "none") { - var sig = new KJUR.crypto.Signature({'alg': sigAlg}); - sig.init(key, pass); - sig.updateString(uSignatureInput); - hSig = sig.sign(); - } - - var uSig = hextob64u(hSig); - return uSignatureInput + "." + uSig; -}; - -/** - * verify JWS signature by specified key or certificate
    - * @name verify - * @memberOf KJUR.jws.JWS - * @function - * @static - * @param {String} sJWS string of JWS signature to verify - * @param {String} key string of public key, certificate or key object to verify - * @return {Boolean} true if the signature is valid otherwise false - * @since jws 3.0.0 - * @see jsrsasign KJUR.crypto.Signature method - * @see jsrsasign KJUR.crypto.Mac method - */ -KJUR.jws.JWS.verify = function(sJWS, key) { - var jws = KJUR.jws.JWS; - var a = sJWS.split("."); - var uHeader = a[0]; - var uPayload = a[1]; - var uSignatureInput = uHeader + "." + uPayload; - var hSig = b64utohex(a[2]); - - var pHeader = jws.readSafeJSONString(b64utoutf8(a[0])); - var alg = null; - if (pHeader.alg === undefined) { - throw "algorithm not specified in header"; - } else { - alg = pHeader.alg; - } - - var sigAlg = null; - if (jws.jwsalg2sigalg[pHeader.alg] === undefined) { - throw "unsupported alg name: " + alg; - } else { - sigAlg = jws.jwsalg2sigalg[alg]; - } - - // x. verify - if (sigAlg == "none") { - return true; - } else if (sigAlg.substr(0, 4) == "Hmac") { - if (key === undefined) - throw "hexadecimal key shall be specified for HMAC"; - var mac = new KJUR.crypto.Mac({'alg': sigAlg, 'pass': hextorstr(key)}); - mac.updateString(uSignatureInput); - hSig2 = mac.doFinal(); - return hSig == hSig2; - } else if (sigAlg.indexOf("withECDSA") != -1) { - var hASN1Sig = null; - try { - hASN1Sig = KJUR.crypto.ECDSA.concatSigToASN1Sig(hSig); - } catch (ex) { - return false; - } - var sig = new KJUR.crypto.Signature({'alg': sigAlg}); - sig.init(key) - sig.updateString(uSignatureInput); - return sig.verify(hASN1Sig); - } else { - var sig = new KJUR.crypto.Signature({'alg': sigAlg}); - sig.init(key) - sig.updateString(uSignatureInput); - return sig.verify(hSig); - } -}; - -/* - * @since jws 3.0.0 - */ -KJUR.jws.JWS.jwsalg2sigalg = { - "HS256": "HmacSHA256", - //"HS384": "HmacSHA384", // unsupported because of CryptoJS bug - "HS512": "HmacSHA512", - "RS256": "SHA256withRSA", - "RS384": "SHA384withRSA", - "RS512": "SHA512withRSA", - "ES256": "SHA256withECDSA", - "ES384": "SHA384withECDSA", - //"ES512": "SHA512withECDSA", // unsupported because of jsrsasign's bug - "PS256": "SHA256withRSAandMGF1", - "PS384": "SHA384withRSAandMGF1", - "PS512": "SHA512withRSAandMGF1", - "none": "none", -}; - -// === utility static method ====================================================== - -/** - * check whether a String "s" is a safe JSON string or not.
    - * If a String "s" is a malformed JSON string or an other object type - * this returns 0, otherwise this returns 1. - * @name isSafeJSONString - * @memberOf KJUR.jws.JWS - * @function - * @static - * @param {String} s JSON string - * @return {Number} 1 or 0 - */ -KJUR.jws.JWS.isSafeJSONString = function(s, h, p) { - var o = null; - try { - o = jsonParse(s); - if (typeof o != "object") return 0; - if (o.constructor === Array) return 0; - if (h) h[p] = o; - return 1; - } catch (ex) { - return 0; - } -}; - -/** - * read a String "s" as JSON object if it is safe.
    - * If a String "s" is a malformed JSON string or not JSON string, - * this returns null, otherwise returns JSON object. - * @name readSafeJSONString - * @memberOf KJUR.jws.JWS - * @function - * @static - * @param {String} s JSON string - * @return {Object} JSON object or null - * @since 1.1.1 - */ -KJUR.jws.JWS.readSafeJSONString = function(s) { - var o = null; - try { - o = jsonParse(s); - if (typeof o != "object") return null; - if (o.constructor === Array) return null; - return o; - } catch (ex) { - return null; - } -}; - -/** - * get Encoed Signature Value from JWS string.
    - * @name getEncodedSignatureValueFromJWS - * @memberOf KJUR.jws.JWS - * @function - * @static - * @param {String} sJWS JWS signature string to be verified - * @return {String} string of Encoded Signature Value - * @throws if sJWS is not comma separated string such like "Header.Payload.Signature". - */ -KJUR.jws.JWS.getEncodedSignatureValueFromJWS = function(sJWS) { - if (sJWS.match(/^[^.]+\.[^.]+\.([^.]+)$/) == null) { - throw "JWS signature is not a form of 'Head.Payload.SigValue'."; - } - return RegExp.$1; -}; - -/** - * IntDate class for time representation for JSON Web Token(JWT) - * @class KJUR.jws.IntDate class - * @name KJUR.jws.IntDate - * @since jws 3.0.1 - * @description - * Utility class for IntDate which is integer representation of UNIX origin time - * used in JSON Web Token(JWT). - */ -KJUR.jws.IntDate = function() { -}; - -/** - * @name get - * @memberOf KJUR.jws.IntDate - * @function - * @static - * @param {String} s string of time representation - * @return {Integer} UNIX origin time in seconds for argument 's' - * @since jws 3.0.1 - * @throws "unsupported format: s" when malformed format - * @description - * This method will accept following representation of time. - *
      - *
    • now - current time
    • - *
    • now + 1hour - after 1 hour from now
    • - *
    • now + 1day - after 1 day from now
    • - *
    • now + 1month - after 30 days from now
    • - *
    • now + 1year - after 365 days from now
    • - *
    • YYYYmmDDHHMMSSZ - UTC time (ex. 20130828235959Z)
    • - *
    • number - UNIX origin time (seconds from 1970-01-01 00:00:00) (ex. 1377714748)
    • - *
    - */ -KJUR.jws.IntDate.get = function(s) { - if (s == "now") { - return KJUR.jws.IntDate.getNow(); - } else if (s == "now + 1hour") { - return KJUR.jws.IntDate.getNow() + 60 * 60; - } else if (s == "now + 1day") { - return KJUR.jws.IntDate.getNow() + 60 * 60 * 24; - } else if (s == "now + 1month") { - return KJUR.jws.IntDate.getNow() + 60 * 60 * 24 * 30; - } else if (s == "now + 1year") { - return KJUR.jws.IntDate.getNow() + 60 * 60 * 24 * 365; - } else if (s.match(/Z$/)) { - return KJUR.jws.IntDate.getZulu(s); - } else if (s.match(/^[0-9]+$/)) { - return parseInt(s); - } - throw "unsupported format: " + s; -}; - -KJUR.jws.IntDate.getZulu = function(s) { - if (a = s.match(/(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)Z/)) { - var year = parseInt(RegExp.$1); - var month = parseInt(RegExp.$2) - 1; - var day = parseInt(RegExp.$3); - var hour = parseInt(RegExp.$4); - var min = parseInt(RegExp.$5); - var sec = parseInt(RegExp.$6); - var d = new Date(Date.UTC(year, month, day, hour, min, sec)); - return ~~(d / 1000); - } - throw "unsupported format: " + s; -}; - -/* - * @since jws 3.0.1 - */ -KJUR.jws.IntDate.getNow = function() { - var d = ~~(new Date() / 1000); - return d; -}; - -/* - * @since jws 3.0.1 - */ -KJUR.jws.IntDate.intDate2UTCString = function(intDate) { - var d = new Date(intDate * 1000); - return d.toUTCString(); -}; - -/* - * @since jws 3.0.1 - */ -KJUR.jws.IntDate.intDate2Zulu = function(intDate) { - var d = new Date(intDate * 1000); - var year = ("0000" + d.getUTCFullYear()).slice(-4); - var mon = ("00" + (d.getUTCMonth() + 1)).slice(-2); - var day = ("00" + d.getUTCDate()).slice(-2); - var hour = ("00" + d.getUTCHours()).slice(-2); - var min = ("00" + d.getUTCMinutes()).slice(-2); - var sec = ("00" + d.getUTCSeconds()).slice(-2); - return year + mon + day + hour + min + sec + "Z"; -}; diff --git a/vendor/zepto/.bower.json b/vendor/zepto/.bower.json deleted file mode 100644 index bdc2cd3b..00000000 --- a/vendor/zepto/.bower.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "zepto", - "description": "Shim repository for the Zepto.js JavaScript library.", - "version": "1.1.3", - "main": "./zepto.js", - "homepage": "https://github.com/components/zepto", - "_release": "1.1.3", - "_resolution": { - "type": "version", - "tag": "1.1.3", - "commit": "cd958be4c11cea297dfd51ec3e2893d1ccd9effb" - }, - "_source": "git://github.com/components/zepto.git", - "_target": "1.1.3", - "_originalSource": "zepto" -} \ No newline at end of file diff --git a/vendor/zepto/.gitignore b/vendor/zepto/.gitignore deleted file mode 100644 index f6821d4b..00000000 --- a/vendor/zepto/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -vendor -components -composer.lock -vendor -zepto diff --git a/vendor/zepto/Makefile b/vendor/zepto/Makefile deleted file mode 100644 index 5587a6bf..00000000 --- a/vendor/zepto/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -VERSION=v1.1.3 - -default: zepto - @cd $< && git pull && git checkout $(VERSION) && npm install && npm run-script dist - @cp -f $]*>/, - singleTagRE = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, - tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, - rootNodeRE = /^(?:body|html)$/i, - capitalRE = /([A-Z])/g, - - // special attributes that should be get/set via method calls - methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'], - - adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ], - table = document.createElement('table'), - tableRow = document.createElement('tr'), - containers = { - 'tr': document.createElement('tbody'), - 'tbody': table, 'thead': table, 'tfoot': table, - 'td': tableRow, 'th': tableRow, - '*': document.createElement('div') - }, - readyRE = /complete|loaded|interactive/, - simpleSelectorRE = /^[\w-]*$/, - class2type = {}, - toString = class2type.toString, - zepto = {}, - camelize, uniq, - tempParent = document.createElement('div'), - propMap = { - 'tabindex': 'tabIndex', - 'readonly': 'readOnly', - 'for': 'htmlFor', - 'class': 'className', - 'maxlength': 'maxLength', - 'cellspacing': 'cellSpacing', - 'cellpadding': 'cellPadding', - 'rowspan': 'rowSpan', - 'colspan': 'colSpan', - 'usemap': 'useMap', - 'frameborder': 'frameBorder', - 'contenteditable': 'contentEditable' - }, - isArray = Array.isArray || - function(object){ return object instanceof Array } - - zepto.matches = function(element, selector) { - if (!selector || !element || element.nodeType !== 1) return false - var matchesSelector = element.webkitMatchesSelector || element.mozMatchesSelector || - element.oMatchesSelector || element.matchesSelector - if (matchesSelector) return matchesSelector.call(element, selector) - // fall back to performing a selector: - var match, parent = element.parentNode, temp = !parent - if (temp) (parent = tempParent).appendChild(element) - match = ~zepto.qsa(parent, selector).indexOf(element) - temp && tempParent.removeChild(element) - return match - } - - function type(obj) { - return obj == null ? String(obj) : - class2type[toString.call(obj)] || "object" - } - - function isFunction(value) { return type(value) == "function" } - function isWindow(obj) { return obj != null && obj == obj.window } - function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE } - function isObject(obj) { return type(obj) == "object" } - function isPlainObject(obj) { - return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype - } - function likeArray(obj) { return typeof obj.length == 'number' } - - function compact(array) { return filter.call(array, function(item){ return item != null }) } - function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array } - camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) } - function dasherize(str) { - return str.replace(/::/g, '/') - .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') - .replace(/([a-z\d])([A-Z])/g, '$1_$2') - .replace(/_/g, '-') - .toLowerCase() - } - uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) } - - function classRE(name) { - return name in classCache ? - classCache[name] : (classCache[name] = new RegExp('(^|\\s)' + name + '(\\s|$)')) - } - - function maybeAddPx(name, value) { - return (typeof value == "number" && !cssNumber[dasherize(name)]) ? value + "px" : value - } - - function defaultDisplay(nodeName) { - var element, display - if (!elementDisplay[nodeName]) { - element = document.createElement(nodeName) - document.body.appendChild(element) - display = getComputedStyle(element, '').getPropertyValue("display") - element.parentNode.removeChild(element) - display == "none" && (display = "block") - elementDisplay[nodeName] = display - } - return elementDisplay[nodeName] - } - - function children(element) { - return 'children' in element ? - slice.call(element.children) : - $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node }) - } - - // `$.zepto.fragment` takes a html string and an optional tag name - // to generate DOM nodes nodes from the given html string. - // The generated DOM nodes are returned as an array. - // This function can be overriden in plugins for example to make - // it compatible with browsers that don't support the DOM fully. - zepto.fragment = function(html, name, properties) { - var dom, nodes, container - - // A special case optimization for a single tag - if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1)) - - if (!dom) { - if (html.replace) html = html.replace(tagExpanderRE, "<$1>") - if (name === undefined) name = fragmentRE.test(html) && RegExp.$1 - if (!(name in containers)) name = '*' - - container = containers[name] - container.innerHTML = '' + html - dom = $.each(slice.call(container.childNodes), function(){ - container.removeChild(this) - }) - } - - if (isPlainObject(properties)) { - nodes = $(dom) - $.each(properties, function(key, value) { - if (methodAttributes.indexOf(key) > -1) nodes[key](value) - else nodes.attr(key, value) - }) - } - - return dom - } - - // `$.zepto.Z` swaps out the prototype of the given `dom` array - // of nodes with `$.fn` and thus supplying all the Zepto functions - // to the array. Note that `__proto__` is not supported on Internet - // Explorer. This method can be overriden in plugins. - zepto.Z = function(dom, selector) { - dom = dom || [] - dom.__proto__ = $.fn - dom.selector = selector || '' - return dom - } - - // `$.zepto.isZ` should return `true` if the given object is a Zepto - // collection. This method can be overriden in plugins. - zepto.isZ = function(object) { - return object instanceof zepto.Z - } - - // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and - // takes a CSS selector and an optional context (and handles various - // special cases). - // This method can be overriden in plugins. - zepto.init = function(selector, context) { - var dom - // If nothing given, return an empty Zepto collection - if (!selector) return zepto.Z() - // Optimize for string selectors - else if (typeof selector == 'string') { - selector = selector.trim() - // If it's a html fragment, create nodes from it - // Note: In both Chrome 21 and Firefox 15, DOM error 12 - // is thrown if the fragment doesn't begin with < - if (selector[0] == '<' && fragmentRE.test(selector)) - dom = zepto.fragment(selector, RegExp.$1, context), selector = null - // If there's a context, create a collection on that context first, and select - // nodes from there - else if (context !== undefined) return $(context).find(selector) - // If it's a CSS selector, use it to select nodes. - else dom = zepto.qsa(document, selector) - } - // If a function is given, call it when the DOM is ready - else if (isFunction(selector)) return $(document).ready(selector) - // If a Zepto collection is given, just return it - else if (zepto.isZ(selector)) return selector - else { - // normalize array if an array of nodes is given - if (isArray(selector)) dom = compact(selector) - // Wrap DOM nodes. - else if (isObject(selector)) - dom = [selector], selector = null - // If it's a html fragment, create nodes from it - else if (fragmentRE.test(selector)) - dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null - // If there's a context, create a collection on that context first, and select - // nodes from there - else if (context !== undefined) return $(context).find(selector) - // And last but no least, if it's a CSS selector, use it to select nodes. - else dom = zepto.qsa(document, selector) - } - // create a new Zepto collection from the nodes found - return zepto.Z(dom, selector) - } - - // `$` will be the base `Zepto` object. When calling this - // function just call `$.zepto.init, which makes the implementation - // details of selecting nodes and creating Zepto collections - // patchable in plugins. - $ = function(selector, context){ - return zepto.init(selector, context) - } - - function extend(target, source, deep) { - for (key in source) - if (deep && (isPlainObject(source[key]) || isArray(source[key]))) { - if (isPlainObject(source[key]) && !isPlainObject(target[key])) - target[key] = {} - if (isArray(source[key]) && !isArray(target[key])) - target[key] = [] - extend(target[key], source[key], deep) - } - else if (source[key] !== undefined) target[key] = source[key] - } - - // Copy all but undefined properties from one or more - // objects to the `target` object. - $.extend = function(target){ - var deep, args = slice.call(arguments, 1) - if (typeof target == 'boolean') { - deep = target - target = args.shift() - } - args.forEach(function(arg){ extend(target, arg, deep) }) - return target - } - - // `$.zepto.qsa` is Zepto's CSS selector implementation which - // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`. - // This method can be overriden in plugins. - zepto.qsa = function(element, selector){ - var found, - maybeID = selector[0] == '#', - maybeClass = !maybeID && selector[0] == '.', - nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked - isSimple = simpleSelectorRE.test(nameOnly) - return (isDocument(element) && isSimple && maybeID) ? - ( (found = element.getElementById(nameOnly)) ? [found] : [] ) : - (element.nodeType !== 1 && element.nodeType !== 9) ? [] : - slice.call( - isSimple && !maybeID ? - maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class - element.getElementsByTagName(selector) : // Or a tag - element.querySelectorAll(selector) // Or it's not simple, and we need to query all - ) - } - - function filtered(nodes, selector) { - return selector == null ? $(nodes) : $(nodes).filter(selector) - } - - $.contains = function(parent, node) { - return parent !== node && parent.contains(node) - } - - function funcArg(context, arg, idx, payload) { - return isFunction(arg) ? arg.call(context, idx, payload) : arg - } - - function setAttribute(node, name, value) { - value == null ? node.removeAttribute(name) : node.setAttribute(name, value) - } - - // access className property while respecting SVGAnimatedString - function className(node, value){ - var klass = node.className, - svg = klass && klass.baseVal !== undefined - - if (value === undefined) return svg ? klass.baseVal : klass - svg ? (klass.baseVal = value) : (node.className = value) - } - - // "true" => true - // "false" => false - // "null" => null - // "42" => 42 - // "42.5" => 42.5 - // "08" => "08" - // JSON => parse if valid - // String => self - function deserializeValue(value) { - var num - try { - return value ? - value == "true" || - ( value == "false" ? false : - value == "null" ? null : - !/^0/.test(value) && !isNaN(num = Number(value)) ? num : - /^[\[\{]/.test(value) ? $.parseJSON(value) : - value ) - : value - } catch(e) { - return value - } - } - - $.type = type - $.isFunction = isFunction - $.isWindow = isWindow - $.isArray = isArray - $.isPlainObject = isPlainObject - - $.isEmptyObject = function(obj) { - var name - for (name in obj) return false - return true - } - - $.inArray = function(elem, array, i){ - return emptyArray.indexOf.call(array, elem, i) - } - - $.camelCase = camelize - $.trim = function(str) { - return str == null ? "" : String.prototype.trim.call(str) - } - - // plugin compatibility - $.uuid = 0 - $.support = { } - $.expr = { } - - $.map = function(elements, callback){ - var value, values = [], i, key - if (likeArray(elements)) - for (i = 0; i < elements.length; i++) { - value = callback(elements[i], i) - if (value != null) values.push(value) - } - else - for (key in elements) { - value = callback(elements[key], key) - if (value != null) values.push(value) - } - return flatten(values) - } - - $.each = function(elements, callback){ - var i, key - if (likeArray(elements)) { - for (i = 0; i < elements.length; i++) - if (callback.call(elements[i], i, elements[i]) === false) return elements - } else { - for (key in elements) - if (callback.call(elements[key], key, elements[key]) === false) return elements - } - - return elements - } - - $.grep = function(elements, callback){ - return filter.call(elements, callback) - } - - if (window.JSON) $.parseJSON = JSON.parse - - // Populate the class2type map - $.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase() - }) - - // Define methods that will be available on all - // Zepto collections - $.fn = { - // Because a collection acts like an array - // copy over these useful array functions. - forEach: emptyArray.forEach, - reduce: emptyArray.reduce, - push: emptyArray.push, - sort: emptyArray.sort, - indexOf: emptyArray.indexOf, - concat: emptyArray.concat, - - // `map` and `slice` in the jQuery API work differently - // from their array counterparts - map: function(fn){ - return $($.map(this, function(el, i){ return fn.call(el, i, el) })) - }, - slice: function(){ - return $(slice.apply(this, arguments)) - }, - - ready: function(callback){ - // need to check if document.body exists for IE as that browser reports - // document ready when it hasn't yet created the body element - if (readyRE.test(document.readyState) && document.body) callback($) - else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false) - return this - }, - get: function(idx){ - return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length] - }, - toArray: function(){ return this.get() }, - size: function(){ - return this.length - }, - remove: function(){ - return this.each(function(){ - if (this.parentNode != null) - this.parentNode.removeChild(this) - }) - }, - each: function(callback){ - emptyArray.every.call(this, function(el, idx){ - return callback.call(el, idx, el) !== false - }) - return this - }, - filter: function(selector){ - if (isFunction(selector)) return this.not(this.not(selector)) - return $(filter.call(this, function(element){ - return zepto.matches(element, selector) - })) - }, - add: function(selector,context){ - return $(uniq(this.concat($(selector,context)))) - }, - is: function(selector){ - return this.length > 0 && zepto.matches(this[0], selector) - }, - not: function(selector){ - var nodes=[] - if (isFunction(selector) && selector.call !== undefined) - this.each(function(idx){ - if (!selector.call(this,idx)) nodes.push(this) - }) - else { - var excludes = typeof selector == 'string' ? this.filter(selector) : - (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector) - this.forEach(function(el){ - if (excludes.indexOf(el) < 0) nodes.push(el) - }) - } - return $(nodes) - }, - has: function(selector){ - return this.filter(function(){ - return isObject(selector) ? - $.contains(this, selector) : - $(this).find(selector).size() - }) - }, - eq: function(idx){ - return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1) - }, - first: function(){ - var el = this[0] - return el && !isObject(el) ? el : $(el) - }, - last: function(){ - var el = this[this.length - 1] - return el && !isObject(el) ? el : $(el) - }, - find: function(selector){ - var result, $this = this - if (typeof selector == 'object') - result = $(selector).filter(function(){ - var node = this - return emptyArray.some.call($this, function(parent){ - return $.contains(parent, node) - }) - }) - else if (this.length == 1) result = $(zepto.qsa(this[0], selector)) - else result = this.map(function(){ return zepto.qsa(this, selector) }) - return result - }, - closest: function(selector, context){ - var node = this[0], collection = false - if (typeof selector == 'object') collection = $(selector) - while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector))) - node = node !== context && !isDocument(node) && node.parentNode - return $(node) - }, - parents: function(selector){ - var ancestors = [], nodes = this - while (nodes.length > 0) - nodes = $.map(nodes, function(node){ - if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) { - ancestors.push(node) - return node - } - }) - return filtered(ancestors, selector) - }, - parent: function(selector){ - return filtered(uniq(this.pluck('parentNode')), selector) - }, - children: function(selector){ - return filtered(this.map(function(){ return children(this) }), selector) - }, - contents: function() { - return this.map(function() { return slice.call(this.childNodes) }) - }, - siblings: function(selector){ - return filtered(this.map(function(i, el){ - return filter.call(children(el.parentNode), function(child){ return child!==el }) - }), selector) - }, - empty: function(){ - return this.each(function(){ this.innerHTML = '' }) - }, - // `pluck` is borrowed from Prototype.js - pluck: function(property){ - return $.map(this, function(el){ return el[property] }) - }, - show: function(){ - return this.each(function(){ - this.style.display == "none" && (this.style.display = '') - if (getComputedStyle(this, '').getPropertyValue("display") == "none") - this.style.display = defaultDisplay(this.nodeName) - }) - }, - replaceWith: function(newContent){ - return this.before(newContent).remove() - }, - wrap: function(structure){ - var func = isFunction(structure) - if (this[0] && !func) - var dom = $(structure).get(0), - clone = dom.parentNode || this.length > 1 - - return this.each(function(index){ - $(this).wrapAll( - func ? structure.call(this, index) : - clone ? dom.cloneNode(true) : dom - ) - }) - }, - wrapAll: function(structure){ - if (this[0]) { - $(this[0]).before(structure = $(structure)) - var children - // drill down to the inmost element - while ((children = structure.children()).length) structure = children.first() - $(structure).append(this) - } - return this - }, - wrapInner: function(structure){ - var func = isFunction(structure) - return this.each(function(index){ - var self = $(this), contents = self.contents(), - dom = func ? structure.call(this, index) : structure - contents.length ? contents.wrapAll(dom) : self.append(dom) - }) - }, - unwrap: function(){ - this.parent().each(function(){ - $(this).replaceWith($(this).children()) - }) - return this - }, - clone: function(){ - return this.map(function(){ return this.cloneNode(true) }) - }, - hide: function(){ - return this.css("display", "none") - }, - toggle: function(setting){ - return this.each(function(){ - var el = $(this) - ;(setting === undefined ? el.css("display") == "none" : setting) ? el.show() : el.hide() - }) - }, - prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') }, - next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') }, - html: function(html){ - return arguments.length === 0 ? - (this.length > 0 ? this[0].innerHTML : null) : - this.each(function(idx){ - var originHtml = this.innerHTML - $(this).empty().append( funcArg(this, html, idx, originHtml) ) - }) - }, - text: function(text){ - return arguments.length === 0 ? - (this.length > 0 ? this[0].textContent : null) : - this.each(function(){ this.textContent = (text === undefined) ? '' : ''+text }) - }, - attr: function(name, value){ - var result - return (typeof name == 'string' && value === undefined) ? - (this.length == 0 || this[0].nodeType !== 1 ? undefined : - (name == 'value' && this[0].nodeName == 'INPUT') ? this.val() : - (!(result = this[0].getAttribute(name)) && name in this[0]) ? this[0][name] : result - ) : - this.each(function(idx){ - if (this.nodeType !== 1) return - if (isObject(name)) for (key in name) setAttribute(this, key, name[key]) - else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name))) - }) - }, - removeAttr: function(name){ - return this.each(function(){ this.nodeType === 1 && setAttribute(this, name) }) - }, - prop: function(name, value){ - name = propMap[name] || name - return (value === undefined) ? - (this[0] && this[0][name]) : - this.each(function(idx){ - this[name] = funcArg(this, value, idx, this[name]) - }) - }, - data: function(name, value){ - var data = this.attr('data-' + name.replace(capitalRE, '-$1').toLowerCase(), value) - return data !== null ? deserializeValue(data) : undefined - }, - val: function(value){ - return arguments.length === 0 ? - (this[0] && (this[0].multiple ? - $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') : - this[0].value) - ) : - this.each(function(idx){ - this.value = funcArg(this, value, idx, this.value) - }) - }, - offset: function(coordinates){ - if (coordinates) return this.each(function(index){ - var $this = $(this), - coords = funcArg(this, coordinates, index, $this.offset()), - parentOffset = $this.offsetParent().offset(), - props = { - top: coords.top - parentOffset.top, - left: coords.left - parentOffset.left - } - - if ($this.css('position') == 'static') props['position'] = 'relative' - $this.css(props) - }) - if (this.length==0) return null - var obj = this[0].getBoundingClientRect() - return { - left: obj.left + window.pageXOffset, - top: obj.top + window.pageYOffset, - width: Math.round(obj.width), - height: Math.round(obj.height) - } - }, - css: function(property, value){ - if (arguments.length < 2) { - var element = this[0], computedStyle = getComputedStyle(element, '') - if(!element) return - if (typeof property == 'string') - return element.style[camelize(property)] || computedStyle.getPropertyValue(property) - else if (isArray(property)) { - var props = {} - $.each(isArray(property) ? property: [property], function(_, prop){ - props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop)) - }) - return props - } - } - - var css = '' - if (type(property) == 'string') { - if (!value && value !== 0) - this.each(function(){ this.style.removeProperty(dasherize(property)) }) - else - css = dasherize(property) + ":" + maybeAddPx(property, value) - } else { - for (key in property) - if (!property[key] && property[key] !== 0) - this.each(function(){ this.style.removeProperty(dasherize(key)) }) - else - css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';' - } - - return this.each(function(){ this.style.cssText += ';' + css }) - }, - index: function(element){ - return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0]) - }, - hasClass: function(name){ - if (!name) return false - return emptyArray.some.call(this, function(el){ - return this.test(className(el)) - }, classRE(name)) - }, - addClass: function(name){ - if (!name) return this - return this.each(function(idx){ - classList = [] - var cls = className(this), newName = funcArg(this, name, idx, cls) - newName.split(/\s+/g).forEach(function(klass){ - if (!$(this).hasClass(klass)) classList.push(klass) - }, this) - classList.length && className(this, cls + (cls ? " " : "") + classList.join(" ")) - }) - }, - removeClass: function(name){ - return this.each(function(idx){ - if (name === undefined) return className(this, '') - classList = className(this) - funcArg(this, name, idx, classList).split(/\s+/g).forEach(function(klass){ - classList = classList.replace(classRE(klass), " ") - }) - className(this, classList.trim()) - }) - }, - toggleClass: function(name, when){ - if (!name) return this - return this.each(function(idx){ - var $this = $(this), names = funcArg(this, name, idx, className(this)) - names.split(/\s+/g).forEach(function(klass){ - (when === undefined ? !$this.hasClass(klass) : when) ? - $this.addClass(klass) : $this.removeClass(klass) - }) - }) - }, - scrollTop: function(value){ - if (!this.length) return - var hasScrollTop = 'scrollTop' in this[0] - if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset - return this.each(hasScrollTop ? - function(){ this.scrollTop = value } : - function(){ this.scrollTo(this.scrollX, value) }) - }, - scrollLeft: function(value){ - if (!this.length) return - var hasScrollLeft = 'scrollLeft' in this[0] - if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset - return this.each(hasScrollLeft ? - function(){ this.scrollLeft = value } : - function(){ this.scrollTo(value, this.scrollY) }) - }, - position: function() { - if (!this.length) return - - var elem = this[0], - // Get *real* offsetParent - offsetParent = this.offsetParent(), - // Get correct offsets - offset = this.offset(), - parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset() - - // Subtract element margins - // note: when an element has margin: auto the offsetLeft and marginLeft - // are the same in Safari causing offset.left to incorrectly be 0 - offset.top -= parseFloat( $(elem).css('margin-top') ) || 0 - offset.left -= parseFloat( $(elem).css('margin-left') ) || 0 - - // Add offsetParent borders - parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0 - parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0 - - // Subtract the two offsets - return { - top: offset.top - parentOffset.top, - left: offset.left - parentOffset.left - } - }, - offsetParent: function() { - return this.map(function(){ - var parent = this.offsetParent || document.body - while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css("position") == "static") - parent = parent.offsetParent - return parent - }) - } - } - - // for now - $.fn.detach = $.fn.remove - - // Generate the `width` and `height` functions - ;['width', 'height'].forEach(function(dimension){ - var dimensionProperty = - dimension.replace(/./, function(m){ return m[0].toUpperCase() }) - - $.fn[dimension] = function(value){ - var offset, el = this[0] - if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] : - isDocument(el) ? el.documentElement['scroll' + dimensionProperty] : - (offset = this.offset()) && offset[dimension] - else return this.each(function(idx){ - el = $(this) - el.css(dimension, funcArg(this, value, idx, el[dimension]())) - }) - } - }) - - function traverseNode(node, fun) { - fun(node) - for (var key in node.childNodes) traverseNode(node.childNodes[key], fun) - } - - // Generate the `after`, `prepend`, `before`, `append`, - // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods. - adjacencyOperators.forEach(function(operator, operatorIndex) { - var inside = operatorIndex % 2 //=> prepend, append - - $.fn[operator] = function(){ - // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings - var argType, nodes = $.map(arguments, function(arg) { - argType = type(arg) - return argType == "object" || argType == "array" || arg == null ? - arg : zepto.fragment(arg) - }), - parent, copyByClone = this.length > 1 - if (nodes.length < 1) return this - - return this.each(function(_, target){ - parent = inside ? target : target.parentNode - - // convert all methods to a "before" operation - target = operatorIndex == 0 ? target.nextSibling : - operatorIndex == 1 ? target.firstChild : - operatorIndex == 2 ? target : - null - - nodes.forEach(function(node){ - if (copyByClone) node = node.cloneNode(true) - else if (!parent) return $(node).remove() - - traverseNode(parent.insertBefore(node, target), function(el){ - if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' && - (!el.type || el.type === 'text/javascript') && !el.src) - window['eval'].call(window, el.innerHTML) - }) - }) - }) - } - - // after => insertAfter - // prepend => prependTo - // before => insertBefore - // append => appendTo - $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){ - $(html)[operator](this) - return this - } - }) - - zepto.Z.prototype = $.fn - - // Export internal API functions in the `$.zepto` namespace - zepto.uniq = uniq - zepto.deserializeValue = deserializeValue - $.zepto = zepto - - return $ -})() - -window.Zepto = Zepto -window.$ === undefined && (window.$ = Zepto) - -;(function($){ - var _zid = 1, undefined, - slice = Array.prototype.slice, - isFunction = $.isFunction, - isString = function(obj){ return typeof obj == 'string' }, - handlers = {}, - specialEvents={}, - focusinSupported = 'onfocusin' in window, - focus = { focus: 'focusin', blur: 'focusout' }, - hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' } - - specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents' - - function zid(element) { - return element._zid || (element._zid = _zid++) - } - function findHandlers(element, event, fn, selector) { - event = parse(event) - if (event.ns) var matcher = matcherFor(event.ns) - return (handlers[zid(element)] || []).filter(function(handler) { - return handler - && (!event.e || handler.e == event.e) - && (!event.ns || matcher.test(handler.ns)) - && (!fn || zid(handler.fn) === zid(fn)) - && (!selector || handler.sel == selector) - }) - } - function parse(event) { - var parts = ('' + event).split('.') - return {e: parts[0], ns: parts.slice(1).sort().join(' ')} - } - function matcherFor(ns) { - return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)') - } - - function eventCapture(handler, captureSetting) { - return handler.del && - (!focusinSupported && (handler.e in focus)) || - !!captureSetting - } - - function realEvent(type) { - return hover[type] || (focusinSupported && focus[type]) || type - } - - function add(element, events, fn, data, selector, delegator, capture){ - var id = zid(element), set = (handlers[id] || (handlers[id] = [])) - events.split(/\s/).forEach(function(event){ - if (event == 'ready') return $(document).ready(fn) - var handler = parse(event) - handler.fn = fn - handler.sel = selector - // emulate mouseenter, mouseleave - if (handler.e in hover) fn = function(e){ - var related = e.relatedTarget - if (!related || (related !== this && !$.contains(this, related))) - return handler.fn.apply(this, arguments) - } - handler.del = delegator - var callback = delegator || fn - handler.proxy = function(e){ - e = compatible(e) - if (e.isImmediatePropagationStopped()) return - e.data = data - var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args)) - if (result === false) e.preventDefault(), e.stopPropagation() - return result - } - handler.i = set.length - set.push(handler) - if ('addEventListener' in element) - element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture)) - }) - } - function remove(element, events, fn, selector, capture){ - var id = zid(element) - ;(events || '').split(/\s/).forEach(function(event){ - findHandlers(element, event, fn, selector).forEach(function(handler){ - delete handlers[id][handler.i] - if ('removeEventListener' in element) - element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture)) - }) - }) - } - - $.event = { add: add, remove: remove } - - $.proxy = function(fn, context) { - if (isFunction(fn)) { - var proxyFn = function(){ return fn.apply(context, arguments) } - proxyFn._zid = zid(fn) - return proxyFn - } else if (isString(context)) { - return $.proxy(fn[context], fn) - } else { - throw new TypeError("expected function") - } - } - - $.fn.bind = function(event, data, callback){ - return this.on(event, data, callback) - } - $.fn.unbind = function(event, callback){ - return this.off(event, callback) - } - $.fn.one = function(event, selector, data, callback){ - return this.on(event, selector, data, callback, 1) - } - - var returnTrue = function(){return true}, - returnFalse = function(){return false}, - ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$)/, - eventMethods = { - preventDefault: 'isDefaultPrevented', - stopImmediatePropagation: 'isImmediatePropagationStopped', - stopPropagation: 'isPropagationStopped' - } - - function compatible(event, source) { - if (source || !event.isDefaultPrevented) { - source || (source = event) - - $.each(eventMethods, function(name, predicate) { - var sourceMethod = source[name] - event[name] = function(){ - this[predicate] = returnTrue - return sourceMethod && sourceMethod.apply(source, arguments) - } - event[predicate] = returnFalse - }) - - if (source.defaultPrevented !== undefined ? source.defaultPrevented : - 'returnValue' in source ? source.returnValue === false : - source.getPreventDefault && source.getPreventDefault()) - event.isDefaultPrevented = returnTrue - } - return event - } - - function createProxy(event) { - var key, proxy = { originalEvent: event } - for (key in event) - if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key] - - return compatible(proxy, event) - } - - $.fn.delegate = function(selector, event, callback){ - return this.on(event, selector, callback) - } - $.fn.undelegate = function(selector, event, callback){ - return this.off(event, selector, callback) - } - - $.fn.live = function(event, callback){ - $(document.body).delegate(this.selector, event, callback) - return this - } - $.fn.die = function(event, callback){ - $(document.body).undelegate(this.selector, event, callback) - return this - } - - $.fn.on = function(event, selector, data, callback, one){ - var autoRemove, delegator, $this = this - if (event && !isString(event)) { - $.each(event, function(type, fn){ - $this.on(type, selector, data, fn, one) - }) - return $this - } - - if (!isString(selector) && !isFunction(callback) && callback !== false) - callback = data, data = selector, selector = undefined - if (isFunction(data) || data === false) - callback = data, data = undefined - - if (callback === false) callback = returnFalse - - return $this.each(function(_, element){ - if (one) autoRemove = function(e){ - remove(element, e.type, callback) - return callback.apply(this, arguments) - } - - if (selector) delegator = function(e){ - var evt, match = $(e.target).closest(selector, element).get(0) - if (match && match !== element) { - evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element}) - return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1))) - } - } - - add(element, event, callback, data, selector, delegator || autoRemove) - }) - } - $.fn.off = function(event, selector, callback){ - var $this = this - if (event && !isString(event)) { - $.each(event, function(type, fn){ - $this.off(type, selector, fn) - }) - return $this - } - - if (!isString(selector) && !isFunction(callback) && callback !== false) - callback = selector, selector = undefined - - if (callback === false) callback = returnFalse - - return $this.each(function(){ - remove(this, event, callback, selector) - }) - } - - $.fn.trigger = function(event, args){ - event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event) - event._args = args - return this.each(function(){ - // items in the collection might not be DOM elements - if('dispatchEvent' in this) this.dispatchEvent(event) - else $(this).triggerHandler(event, args) - }) - } - - // triggers event handlers on current element just as if an event occurred, - // doesn't trigger an actual event, doesn't bubble - $.fn.triggerHandler = function(event, args){ - var e, result - this.each(function(i, element){ - e = createProxy(isString(event) ? $.Event(event) : event) - e._args = args - e.target = element - $.each(findHandlers(element, event.type || event), function(i, handler){ - result = handler.proxy(e) - if (e.isImmediatePropagationStopped()) return false - }) - }) - return result - } - - // shortcut methods for `.bind(event, fn)` for each event type - ;('focusin focusout load resize scroll unload click dblclick '+ - 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+ - 'change select keydown keypress keyup error').split(' ').forEach(function(event) { - $.fn[event] = function(callback) { - return callback ? - this.bind(event, callback) : - this.trigger(event) - } - }) - - ;['focus', 'blur'].forEach(function(name) { - $.fn[name] = function(callback) { - if (callback) this.bind(name, callback) - else this.each(function(){ - try { this[name]() } - catch(e) {} - }) - return this - } - }) - - $.Event = function(type, props) { - if (!isString(type)) props = type, type = props.type - var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true - if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name]) - event.initEvent(type, bubbles, true) - return compatible(event) - } - -})(Zepto) - -;(function($){ - var jsonpID = 0, - document = window.document, - key, - name, - rscript = /)<[^<]*)*<\/script>/gi, - scriptTypeRE = /^(?:text|application)\/javascript/i, - xmlTypeRE = /^(?:text|application)\/xml/i, - jsonType = 'application/json', - htmlType = 'text/html', - blankRE = /^\s*$/ - - // trigger a custom event and return false if it was cancelled - function triggerAndReturn(context, eventName, data) { - var event = $.Event(eventName) - $(context).trigger(event, data) - return !event.isDefaultPrevented() - } - - // trigger an Ajax "global" event - function triggerGlobal(settings, context, eventName, data) { - if (settings.global) return triggerAndReturn(context || document, eventName, data) - } - - // Number of active Ajax requests - $.active = 0 - - function ajaxStart(settings) { - if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart') - } - function ajaxStop(settings) { - if (settings.global && !(--$.active)) triggerGlobal(settings, null, 'ajaxStop') - } - - // triggers an extra global event "ajaxBeforeSend" that's like "ajaxSend" but cancelable - function ajaxBeforeSend(xhr, settings) { - var context = settings.context - if (settings.beforeSend.call(context, xhr, settings) === false || - triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false) - return false - - triggerGlobal(settings, context, 'ajaxSend', [xhr, settings]) - } - function ajaxSuccess(data, xhr, settings, deferred) { - var context = settings.context, status = 'success' - settings.success.call(context, data, status, xhr) - if (deferred) deferred.resolveWith(context, [data, status, xhr]) - triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data]) - ajaxComplete(status, xhr, settings) - } - // type: "timeout", "error", "abort", "parsererror" - function ajaxError(error, type, xhr, settings, deferred) { - var context = settings.context - settings.error.call(context, xhr, type, error) - if (deferred) deferred.rejectWith(context, [xhr, type, error]) - triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type]) - ajaxComplete(type, xhr, settings) - } - // status: "success", "notmodified", "error", "timeout", "abort", "parsererror" - function ajaxComplete(status, xhr, settings) { - var context = settings.context - settings.complete.call(context, xhr, status) - triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings]) - ajaxStop(settings) - } - - // Empty function, used as default callback - function empty() {} - - $.ajaxJSONP = function(options, deferred){ - if (!('type' in options)) return $.ajax(options) - - var _callbackName = options.jsonpCallback, - callbackName = ($.isFunction(_callbackName) ? - _callbackName() : _callbackName) || ('jsonp' + (++jsonpID)), - script = document.createElement('script'), - originalCallback = window[callbackName], - responseData, - abort = function(errorType) { - $(script).triggerHandler('error', errorType || 'abort') - }, - xhr = { abort: abort }, abortTimeout - - if (deferred) deferred.promise(xhr) - - $(script).on('load error', function(e, errorType){ - clearTimeout(abortTimeout) - $(script).off().remove() - - if (e.type == 'error' || !responseData) { - ajaxError(null, errorType || 'error', xhr, options, deferred) - } else { - ajaxSuccess(responseData[0], xhr, options, deferred) - } - - window[callbackName] = originalCallback - if (responseData && $.isFunction(originalCallback)) - originalCallback(responseData[0]) - - originalCallback = responseData = undefined - }) - - if (ajaxBeforeSend(xhr, options) === false) { - abort('abort') - return xhr - } - - window[callbackName] = function(){ - responseData = arguments - } - - script.src = options.url.replace(/\?(.+)=\?/, '?$1=' + callbackName) - document.head.appendChild(script) - - if (options.timeout > 0) abortTimeout = setTimeout(function(){ - abort('timeout') - }, options.timeout) - - return xhr - } - - $.ajaxSettings = { - // Default type of request - type: 'GET', - // Callback that is executed before request - beforeSend: empty, - // Callback that is executed if the request succeeds - success: empty, - // Callback that is executed the the server drops error - error: empty, - // Callback that is executed on request complete (both: error and success) - complete: empty, - // The context for the callbacks - context: null, - // Whether to trigger "global" Ajax events - global: true, - // Transport - xhr: function () { - return new window.XMLHttpRequest() - }, - // MIME types mapping - // IIS returns Javascript as "application/x-javascript" - accepts: { - script: 'text/javascript, application/javascript, application/x-javascript', - json: jsonType, - xml: 'application/xml, text/xml', - html: htmlType, - text: 'text/plain' - }, - // Whether the request is to another domain - crossDomain: false, - // Default timeout - timeout: 0, - // Whether data should be serialized to string - processData: true, - // Whether the browser should be allowed to cache GET responses - cache: true - } - - function mimeToDataType(mime) { - if (mime) mime = mime.split(';', 2)[0] - return mime && ( mime == htmlType ? 'html' : - mime == jsonType ? 'json' : - scriptTypeRE.test(mime) ? 'script' : - xmlTypeRE.test(mime) && 'xml' ) || 'text' - } - - function appendQuery(url, query) { - if (query == '') return url - return (url + '&' + query).replace(/[&?]{1,2}/, '?') - } - - // serialize payload and append it to the URL for GET requests - function serializeData(options) { - if (options.processData && options.data && $.type(options.data) != "string") - options.data = $.param(options.data, options.traditional) - if (options.data && (!options.type || options.type.toUpperCase() == 'GET')) - options.url = appendQuery(options.url, options.data), options.data = undefined - } - - $.ajax = function(options){ - var settings = $.extend({}, options || {}), - deferred = $.Deferred && $.Deferred() - for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key] - - ajaxStart(settings) - - if (!settings.crossDomain) settings.crossDomain = /^([\w-]+:)?\/\/([^\/]+)/.test(settings.url) && - RegExp.$2 != window.location.host - - if (!settings.url) settings.url = window.location.toString() - serializeData(settings) - if (settings.cache === false) settings.url = appendQuery(settings.url, '_=' + Date.now()) - - var dataType = settings.dataType, hasPlaceholder = /\?.+=\?/.test(settings.url) - if (dataType == 'jsonp' || hasPlaceholder) { - if (!hasPlaceholder) - settings.url = appendQuery(settings.url, - settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?') - return $.ajaxJSONP(settings, deferred) - } - - var mime = settings.accepts[dataType], - headers = { }, - setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] }, - protocol = /^([\w-]+:)\/\//.test(settings.url) ? RegExp.$1 : window.location.protocol, - xhr = settings.xhr(), - nativeSetHeader = xhr.setRequestHeader, - abortTimeout - - if (deferred) deferred.promise(xhr) - - if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest') - setHeader('Accept', mime || '*/*') - if (mime = settings.mimeType || mime) { - if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0] - xhr.overrideMimeType && xhr.overrideMimeType(mime) - } - if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET')) - setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded') - - if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name]) - xhr.setRequestHeader = setHeader - - xhr.onreadystatechange = function(){ - if (xhr.readyState == 4) { - xhr.onreadystatechange = empty - clearTimeout(abortTimeout) - var result, error = false - if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) { - dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type')) - result = xhr.responseText - - try { - // http://perfectionkills.com/global-eval-what-are-the-options/ - if (dataType == 'script') (1,eval)(result) - else if (dataType == 'xml') result = xhr.responseXML - else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result) - } catch (e) { error = e } - - if (error) ajaxError(error, 'parsererror', xhr, settings, deferred) - else ajaxSuccess(result, xhr, settings, deferred) - } else { - ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred) - } - } - } - - if (ajaxBeforeSend(xhr, settings) === false) { - xhr.abort() - ajaxError(null, 'abort', xhr, settings, deferred) - return xhr - } - - if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name] - - var async = 'async' in settings ? settings.async : true - xhr.open(settings.type, settings.url, async, settings.username, settings.password) - - for (name in headers) nativeSetHeader.apply(xhr, headers[name]) - - if (settings.timeout > 0) abortTimeout = setTimeout(function(){ - xhr.onreadystatechange = empty - xhr.abort() - ajaxError(null, 'timeout', xhr, settings, deferred) - }, settings.timeout) - - // avoid sending empty string (#319) - xhr.send(settings.data ? settings.data : null) - return xhr - } - - // handle optional data/success arguments - function parseArguments(url, data, success, dataType) { - if ($.isFunction(data)) dataType = success, success = data, data = undefined - if (!$.isFunction(success)) dataType = success, success = undefined - return { - url: url - , data: data - , success: success - , dataType: dataType - } - } - - $.get = function(/* url, data, success, dataType */){ - return $.ajax(parseArguments.apply(null, arguments)) - } - - $.post = function(/* url, data, success, dataType */){ - var options = parseArguments.apply(null, arguments) - options.type = 'POST' - return $.ajax(options) - } - - $.getJSON = function(/* url, data, success */){ - var options = parseArguments.apply(null, arguments) - options.dataType = 'json' - return $.ajax(options) - } - - $.fn.load = function(url, data, success){ - if (!this.length) return this - var self = this, parts = url.split(/\s/), selector, - options = parseArguments(url, data, success), - callback = options.success - if (parts.length > 1) options.url = parts[0], selector = parts[1] - options.success = function(response){ - self.html(selector ? - $('
    ').html(response.replace(rscript, "")).find(selector) - : response) - callback && callback.apply(self, arguments) - } - $.ajax(options) - return this - } - - var escape = encodeURIComponent - - function serialize(params, obj, traditional, scope){ - var type, array = $.isArray(obj), hash = $.isPlainObject(obj) - $.each(obj, function(key, value) { - type = $.type(value) - if (scope) key = traditional ? scope : - scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']' - // handle data in serializeArray() format - if (!scope && array) params.add(value.name, value.value) - // recurse into nested objects - else if (type == "array" || (!traditional && type == "object")) - serialize(params, value, traditional, key) - else params.add(key, value) - }) - } - - $.param = function(obj, traditional){ - var params = [] - params.add = function(k, v){ this.push(escape(k) + '=' + escape(v)) } - serialize(params, obj, traditional) - return params.join('&').replace(/%20/g, '+') - } -})(Zepto) - -;(function($){ - $.fn.serializeArray = function() { - var result = [], el - $([].slice.call(this.get(0).elements)).each(function(){ - el = $(this) - var type = el.attr('type') - if (this.nodeName.toLowerCase() != 'fieldset' && - !this.disabled && type != 'submit' && type != 'reset' && type != 'button' && - ((type != 'radio' && type != 'checkbox') || this.checked)) - result.push({ - name: el.attr('name'), - value: el.val() - }) - }) - return result - } - - $.fn.serialize = function(){ - var result = [] - this.serializeArray().forEach(function(elm){ - result.push(encodeURIComponent(elm.name) + '=' + encodeURIComponent(elm.value)) - }) - return result.join('&') - } - - $.fn.submit = function(callback) { - if (callback) this.bind('submit', callback) - else if (this.length) { - var event = $.Event('submit') - this.eq(0).trigger(event) - if (!event.isDefaultPrevented()) this.get(0).submit() - } - return this - } - -})(Zepto) - -;(function($){ - // __proto__ doesn't exist on IE<11, so redefine - // the Z function to use object extension instead - if (!('__proto__' in {})) { - $.extend($.zepto, { - Z: function(dom, selector){ - dom = dom || [] - $.extend(dom, $.fn) - dom.selector = selector || '' - dom.__Z = true - return dom - }, - // this is a kludge but works - isZ: function(object){ - return $.type(object) === 'array' && '__Z' in object - } - }) - } - - // getComputedStyle shouldn't freak out when called - // without a valid element as argument - try { - getComputedStyle(undefined) - } catch(e) { - var nativeGetComputedStyle = getComputedStyle; - window.getComputedStyle = function(element){ - try { - return nativeGetComputedStyle(element) - } catch(e) { - return null - } - } - } -})(Zepto) diff --git a/vendor/zepto/zepto.min.js b/vendor/zepto/zepto.min.js deleted file mode 100644 index 5c8a2008..00000000 --- a/vendor/zepto/zepto.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/* Zepto v1.1.3 - zepto event ajax form ie - zeptojs.com/license */ -var Zepto=function(){function L(t){return null==t?String(t):j[T.call(t)]||"object"}function Z(t){return"function"==L(t)}function $(t){return null!=t&&t==t.window}function _(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function D(t){return"object"==L(t)}function R(t){return D(t)&&!$(t)&&Object.getPrototypeOf(t)==Object.prototype}function M(t){return"number"==typeof t.length}function k(t){return s.call(t,function(t){return null!=t})}function z(t){return t.length>0?n.fn.concat.apply([],t):t}function F(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function q(t){return t in f?f[t]:f[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function H(t,e){return"number"!=typeof e||c[F(t)]?e:e+"px"}function I(t){var e,n;return u[t]||(e=a.createElement(t),a.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),u[t]=n),u[t]}function V(t){return"children"in t?o.call(t.children):n.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function U(n,i,r){for(e in i)r&&(R(i[e])||A(i[e]))?(R(i[e])&&!R(n[e])&&(n[e]={}),A(i[e])&&!A(n[e])&&(n[e]=[]),U(n[e],i[e],r)):i[e]!==t&&(n[e]=i[e])}function B(t,e){return null==e?n(t):n(t).filter(e)}function J(t,e,n,i){return Z(e)?e.call(t,n,i):e}function X(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function W(e,n){var i=e.className,r=i&&i.baseVal!==t;return n===t?r?i.baseVal:i:void(r?i.baseVal=n:e.className=n)}function Y(t){var e;try{return t?"true"==t||("false"==t?!1:"null"==t?null:/^0/.test(t)||isNaN(e=Number(t))?/^[\[\{]/.test(t)?n.parseJSON(t):t:e):t}catch(i){return t}}function G(t,e){e(t);for(var n in t.childNodes)G(t.childNodes[n],e)}var t,e,n,i,C,N,r=[],o=r.slice,s=r.filter,a=window.document,u={},f={},c={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},l=/^\s*<(\w+|!)[^>]*>/,h=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,p=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,d=/^(?:body|html)$/i,m=/([A-Z])/g,g=["val","css","html","text","data","width","height","offset"],v=["after","prepend","before","append"],y=a.createElement("table"),x=a.createElement("tr"),b={tr:a.createElement("tbody"),tbody:y,thead:y,tfoot:y,td:x,th:x,"*":a.createElement("div")},w=/complete|loaded|interactive/,E=/^[\w-]*$/,j={},T=j.toString,S={},O=a.createElement("div"),P={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},A=Array.isArray||function(t){return t instanceof Array};return S.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var i,r=t.parentNode,o=!r;return o&&(r=O).appendChild(t),i=~S.qsa(r,e).indexOf(t),o&&O.removeChild(t),i},C=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},N=function(t){return s.call(t,function(e,n){return t.indexOf(e)==n})},S.fragment=function(e,i,r){var s,u,f;return h.test(e)&&(s=n(a.createElement(RegExp.$1))),s||(e.replace&&(e=e.replace(p,"<$1>")),i===t&&(i=l.test(e)&&RegExp.$1),i in b||(i="*"),f=b[i],f.innerHTML=""+e,s=n.each(o.call(f.childNodes),function(){f.removeChild(this)})),R(r)&&(u=n(s),n.each(r,function(t,e){g.indexOf(t)>-1?u[t](e):u.attr(t,e)})),s},S.Z=function(t,e){return t=t||[],t.__proto__=n.fn,t.selector=e||"",t},S.isZ=function(t){return t instanceof S.Z},S.init=function(e,i){var r;if(!e)return S.Z();if("string"==typeof e)if(e=e.trim(),"<"==e[0]&&l.test(e))r=S.fragment(e,RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=S.qsa(a,e)}else{if(Z(e))return n(a).ready(e);if(S.isZ(e))return e;if(A(e))r=k(e);else if(D(e))r=[e],e=null;else if(l.test(e))r=S.fragment(e.trim(),RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=S.qsa(a,e)}}return S.Z(r,e)},n=function(t,e){return S.init(t,e)},n.extend=function(t){var e,n=o.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){U(t,n,e)}),t},S.qsa=function(t,e){var n,i="#"==e[0],r=!i&&"."==e[0],s=i||r?e.slice(1):e,a=E.test(s);return _(t)&&a&&i?(n=t.getElementById(s))?[n]:[]:1!==t.nodeType&&9!==t.nodeType?[]:o.call(a&&!i?r?t.getElementsByClassName(s):t.getElementsByTagName(e):t.querySelectorAll(e))},n.contains=function(t,e){return t!==e&&t.contains(e)},n.type=L,n.isFunction=Z,n.isWindow=$,n.isArray=A,n.isPlainObject=R,n.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},n.inArray=function(t,e,n){return r.indexOf.call(e,t,n)},n.camelCase=C,n.trim=function(t){return null==t?"":String.prototype.trim.call(t)},n.uuid=0,n.support={},n.expr={},n.map=function(t,e){var n,r,o,i=[];if(M(t))for(r=0;r=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return r.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return Z(t)?this.not(this.not(t)):n(s.call(this,function(e){return S.matches(e,t)}))},add:function(t,e){return n(N(this.concat(n(t,e))))},is:function(t){return this.length>0&&S.matches(this[0],t)},not:function(e){var i=[];if(Z(e)&&e.call!==t)this.each(function(t){e.call(this,t)||i.push(this)});else{var r="string"==typeof e?this.filter(e):M(e)&&Z(e.item)?o.call(e):n(e);this.forEach(function(t){r.indexOf(t)<0&&i.push(t)})}return n(i)},has:function(t){return this.filter(function(){return D(t)?n.contains(this,t):n(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!D(t)?t:n(t)},last:function(){var t=this[this.length-1];return t&&!D(t)?t:n(t)},find:function(t){var e,i=this;return e="object"==typeof t?n(t).filter(function(){var t=this;return r.some.call(i,function(e){return n.contains(e,t)})}):1==this.length?n(S.qsa(this[0],t)):this.map(function(){return S.qsa(this,t)})},closest:function(t,e){var i=this[0],r=!1;for("object"==typeof t&&(r=n(t));i&&!(r?r.indexOf(i)>=0:S.matches(i,t));)i=i!==e&&!_(i)&&i.parentNode;return n(i)},parents:function(t){for(var e=[],i=this;i.length>0;)i=n.map(i,function(t){return(t=t.parentNode)&&!_(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return B(e,t)},parent:function(t){return B(N(this.pluck("parentNode")),t)},children:function(t){return B(this.map(function(){return V(this)}),t)},contents:function(){return this.map(function(){return o.call(this.childNodes)})},siblings:function(t){return B(this.map(function(t,e){return s.call(V(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return n.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=I(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=Z(t);if(this[0]&&!e)var i=n(t).get(0),r=i.parentNode||this.length>1;return this.each(function(o){n(this).wrapAll(e?t.call(this,o):r?i.cloneNode(!0):i)})},wrapAll:function(t){if(this[0]){n(this[0]).before(t=n(t));for(var e;(e=t.children()).length;)t=e.first();n(t).append(this)}return this},wrapInner:function(t){var e=Z(t);return this.each(function(i){var r=n(this),o=r.contents(),s=e?t.call(this,i):t;o.length?o.wrapAll(s):r.append(s)})},unwrap:function(){return this.parent().each(function(){n(this).replaceWith(n(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(e){return this.each(function(){var i=n(this);(e===t?"none"==i.css("display"):e)?i.show():i.hide()})},prev:function(t){return n(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return n(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0===arguments.length?this.length>0?this[0].innerHTML:null:this.each(function(e){var i=this.innerHTML;n(this).empty().append(J(this,t,e,i))})},text:function(e){return 0===arguments.length?this.length>0?this[0].textContent:null:this.each(function(){this.textContent=e===t?"":""+e})},attr:function(n,i){var r;return"string"==typeof n&&i===t?0==this.length||1!==this[0].nodeType?t:"value"==n&&"INPUT"==this[0].nodeName?this.val():!(r=this[0].getAttribute(n))&&n in this[0]?this[0][n]:r:this.each(function(t){if(1===this.nodeType)if(D(n))for(e in n)X(this,e,n[e]);else X(this,n,J(this,i,t,this.getAttribute(n)))})},removeAttr:function(t){return this.each(function(){1===this.nodeType&&X(this,t)})},prop:function(e,n){return e=P[e]||e,n===t?this[0]&&this[0][e]:this.each(function(t){this[e]=J(this,n,t,this[e])})},data:function(e,n){var i=this.attr("data-"+e.replace(m,"-$1").toLowerCase(),n);return null!==i?Y(i):t},val:function(t){return 0===arguments.length?this[0]&&(this[0].multiple?n(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value):this.each(function(e){this.value=J(this,t,e,this.value)})},offset:function(t){if(t)return this.each(function(e){var i=n(this),r=J(this,t,e,i.offset()),o=i.offsetParent().offset(),s={top:r.top-o.top,left:r.left-o.left};"static"==i.css("position")&&(s.position="relative"),i.css(s)});if(0==this.length)return null;var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(t,i){if(arguments.length<2){var r=this[0],o=getComputedStyle(r,"");if(!r)return;if("string"==typeof t)return r.style[C(t)]||o.getPropertyValue(t);if(A(t)){var s={};return n.each(A(t)?t:[t],function(t,e){s[e]=r.style[C(e)]||o.getPropertyValue(e)}),s}}var a="";if("string"==L(t))i||0===i?a=F(t)+":"+H(t,i):this.each(function(){this.style.removeProperty(F(t))});else for(e in t)t[e]||0===t[e]?a+=F(e)+":"+H(e,t[e])+";":this.each(function(){this.style.removeProperty(F(e))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(n(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?r.some.call(this,function(t){return this.test(W(t))},q(t)):!1},addClass:function(t){return t?this.each(function(e){i=[];var r=W(this),o=J(this,t,e,r);o.split(/\s+/g).forEach(function(t){n(this).hasClass(t)||i.push(t)},this),i.length&&W(this,r+(r?" ":"")+i.join(" "))}):this},removeClass:function(e){return this.each(function(n){return e===t?W(this,""):(i=W(this),J(this,e,n,i).split(/\s+/g).forEach(function(t){i=i.replace(q(t)," ")}),void W(this,i.trim()))})},toggleClass:function(e,i){return e?this.each(function(r){var o=n(this),s=J(this,e,r,W(this));s.split(/\s+/g).forEach(function(e){(i===t?!o.hasClass(e):i)?o.addClass(e):o.removeClass(e)})}):this},scrollTop:function(e){if(this.length){var n="scrollTop"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n="scrollLeft"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),i=this.offset(),r=d.test(e[0].nodeName)?{top:0,left:0}:e.offset();return i.top-=parseFloat(n(t).css("margin-top"))||0,i.left-=parseFloat(n(t).css("margin-left"))||0,r.top+=parseFloat(n(e[0]).css("border-top-width"))||0,r.left+=parseFloat(n(e[0]).css("border-left-width"))||0,{top:i.top-r.top,left:i.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||a.body;t&&!d.test(t.nodeName)&&"static"==n(t).css("position");)t=t.offsetParent;return t})}},n.fn.detach=n.fn.remove,["width","height"].forEach(function(e){var i=e.replace(/./,function(t){return t[0].toUpperCase()});n.fn[e]=function(r){var o,s=this[0];return r===t?$(s)?s["inner"+i]:_(s)?s.documentElement["scroll"+i]:(o=this.offset())&&o[e]:this.each(function(t){s=n(this),s.css(e,J(this,r,t,s[e]()))})}}),v.forEach(function(t,e){var i=e%2;n.fn[t]=function(){var t,o,r=n.map(arguments,function(e){return t=L(e),"object"==t||"array"==t||null==e?e:S.fragment(e)}),s=this.length>1;return r.length<1?this:this.each(function(t,a){o=i?a:a.parentNode,a=0==e?a.nextSibling:1==e?a.firstChild:2==e?a:null,r.forEach(function(t){if(s)t=t.cloneNode(!0);else if(!o)return n(t).remove();G(o.insertBefore(t,a),function(t){null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src||window.eval.call(window,t.innerHTML)})})})},n.fn[i?t+"To":"insert"+(e?"Before":"After")]=function(e){return n(e)[t](this),this}}),S.Z.prototype=n.fn,S.uniq=N,S.deserializeValue=Y,n.zepto=S,n}();window.Zepto=Zepto,void 0===window.$&&(window.$=Zepto),function(t){function l(t){return t._zid||(t._zid=e++)}function h(t,e,n,i){if(e=p(e),e.ns)var r=d(e.ns);return(s[l(t)]||[]).filter(function(t){return!(!t||e.e&&t.e!=e.e||e.ns&&!r.test(t.ns)||n&&l(t.fn)!==l(n)||i&&t.sel!=i)})}function p(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function d(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function m(t,e){return t.del&&!u&&t.e in f||!!e}function g(t){return c[t]||u&&f[t]||t}function v(e,i,r,o,a,u,f){var h=l(e),d=s[h]||(s[h]=[]);i.split(/\s/).forEach(function(i){if("ready"==i)return t(document).ready(r);var s=p(i);s.fn=r,s.sel=a,s.e in c&&(r=function(e){var n=e.relatedTarget;return!n||n!==this&&!t.contains(this,n)?s.fn.apply(this,arguments):void 0}),s.del=u;var l=u||r;s.proxy=function(t){if(t=j(t),!t.isImmediatePropagationStopped()){t.data=o;var i=l.apply(e,t._args==n?[t]:[t].concat(t._args));return i===!1&&(t.preventDefault(),t.stopPropagation()),i}},s.i=d.length,d.push(s),"addEventListener"in e&&e.addEventListener(g(s.e),s.proxy,m(s,f))})}function y(t,e,n,i,r){var o=l(t);(e||"").split(/\s/).forEach(function(e){h(t,e,n,i).forEach(function(e){delete s[o][e.i],"removeEventListener"in t&&t.removeEventListener(g(e.e),e.proxy,m(e,r))})})}function j(e,i){return(i||!e.isDefaultPrevented)&&(i||(i=e),t.each(E,function(t,n){var r=i[t];e[t]=function(){return this[n]=x,r&&r.apply(i,arguments)},e[n]=b}),(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?i.returnValue===!1:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=x)),e}function T(t){var e,i={originalEvent:t};for(e in t)w.test(e)||t[e]===n||(i[e]=t[e]);return j(i,t)}var n,e=1,i=Array.prototype.slice,r=t.isFunction,o=function(t){return"string"==typeof t},s={},a={},u="onfocusin"in window,f={focus:"focusin",blur:"focusout"},c={mouseenter:"mouseover",mouseleave:"mouseout"};a.click=a.mousedown=a.mouseup=a.mousemove="MouseEvents",t.event={add:v,remove:y},t.proxy=function(e,n){if(r(e)){var i=function(){return e.apply(n,arguments)};return i._zid=l(e),i}if(o(n))return t.proxy(e[n],e);throw new TypeError("expected function")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,i){return this.on(t,e,n,i,1)};var x=function(){return!0},b=function(){return!1},w=/^([A-Z]|returnValue$|layer[XY]$)/,E={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,s,a,u,f){var c,l,h=this;return e&&!o(e)?(t.each(e,function(t,e){h.on(t,s,a,e,f)}),h):(o(s)||r(u)||u===!1||(u=a,a=s,s=n),(r(a)||a===!1)&&(u=a,a=n),u===!1&&(u=b),h.each(function(n,r){f&&(c=function(t){return y(r,t.type,u),u.apply(this,arguments)}),s&&(l=function(e){var n,o=t(e.target).closest(s,r).get(0);return o&&o!==r?(n=t.extend(T(e),{currentTarget:o,liveFired:r}),(c||u).apply(o,[n].concat(i.call(arguments,1)))):void 0}),v(r,e,u,a,s,l||c)}))},t.fn.off=function(e,i,s){var a=this;return e&&!o(e)?(t.each(e,function(t,e){a.off(t,i,e)}),a):(o(i)||r(s)||s===!1||(s=i,i=n),s===!1&&(s=b),a.each(function(){y(this,e,s,i)}))},t.fn.trigger=function(e,n){return e=o(e)||t.isPlainObject(e)?t.Event(e):j(e),e._args=n,this.each(function(){"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,n){var i,r;return this.each(function(s,a){i=T(o(e)?t.Event(e):e),i._args=n,i.target=a,t.each(h(a,e.type||e),function(t,e){return r=e.proxy(i),i.isImmediatePropagationStopped()?!1:void 0})}),r},"focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){t.fn[e]=function(t){return t?this.bind(e,t):this.trigger(e)}}),["focus","blur"].forEach(function(e){t.fn[e]=function(t){return t?this.bind(e,t):this.each(function(){try{this[e]()}catch(t){}}),this}}),t.Event=function(t,e){o(t)||(e=t,t=e.type);var n=document.createEvent(a[t]||"Events"),i=!0;if(e)for(var r in e)"bubbles"==r?i=!!e[r]:n[r]=e[r];return n.initEvent(t,i,!0),j(n)}}(Zepto),function(t){function l(e,n,i){var r=t.Event(n);return t(e).trigger(r,i),!r.isDefaultPrevented()}function h(t,e,i,r){return t.global?l(e||n,i,r):void 0}function p(e){e.global&&0===t.active++&&h(e,null,"ajaxStart")}function d(e){e.global&&!--t.active&&h(e,null,"ajaxStop")}function m(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||h(e,n,"ajaxBeforeSend",[t,e])===!1?!1:void h(e,n,"ajaxSend",[t,e])}function g(t,e,n,i){var r=n.context,o="success";n.success.call(r,t,o,e),i&&i.resolveWith(r,[t,o,e]),h(n,r,"ajaxSuccess",[e,n,t]),y(o,e,n)}function v(t,e,n,i,r){var o=i.context;i.error.call(o,n,e,t),r&&r.rejectWith(o,[n,e,t]),h(i,o,"ajaxError",[n,i,t||e]),y(e,n,i)}function y(t,e,n){var i=n.context;n.complete.call(i,e,t),h(n,i,"ajaxComplete",[e,n]),d(n)}function x(){}function b(t){return t&&(t=t.split(";",2)[0]),t&&(t==f?"html":t==u?"json":s.test(t)?"script":a.test(t)&&"xml")||"text"}function w(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function E(e){e.processData&&e.data&&"string"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&"GET"!=e.type.toUpperCase()||(e.url=w(e.url,e.data),e.data=void 0)}function j(e,n,i,r){return t.isFunction(n)&&(r=i,i=n,n=void 0),t.isFunction(i)||(r=i,i=void 0),{url:e,data:n,success:i,dataType:r}}function S(e,n,i,r){var o,s=t.isArray(n),a=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),r&&(n=i?r:r+"["+(a||"object"==o||"array"==o?n:"")+"]"),!r&&s?e.add(u.name,u.value):"array"==o||!i&&"object"==o?S(e,u,i,n):e.add(n,u)})}var i,r,e=0,n=window.document,o=/)<[^<]*)*<\/script>/gi,s=/^(?:text|application)\/javascript/i,a=/^(?:text|application)\/xml/i,u="application/json",f="text/html",c=/^\s*$/;t.active=0,t.ajaxJSONP=function(i,r){if(!("type"in i))return t.ajax(i);var f,h,o=i.jsonpCallback,s=(t.isFunction(o)?o():o)||"jsonp"+ ++e,a=n.createElement("script"),u=window[s],c=function(e){t(a).triggerHandler("error",e||"abort")},l={abort:c};return r&&r.promise(l),t(a).on("load error",function(e,n){clearTimeout(h),t(a).off().remove(),"error"!=e.type&&f?g(f[0],l,i,r):v(null,n||"error",l,i,r),window[s]=u,f&&t.isFunction(u)&&u(f[0]),u=f=void 0}),m(l,i)===!1?(c("abort"),l):(window[s]=function(){f=arguments},a.src=i.url.replace(/\?(.+)=\?/,"?$1="+s),n.head.appendChild(a),i.timeout>0&&(h=setTimeout(function(){c("timeout")},i.timeout)),l)},t.ajaxSettings={type:"GET",beforeSend:x,success:x,error:x,complete:x,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:u,xml:"application/xml, text/xml",html:f,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0},t.ajax=function(e){var n=t.extend({},e||{}),o=t.Deferred&&t.Deferred();for(i in t.ajaxSettings)void 0===n[i]&&(n[i]=t.ajaxSettings[i]);p(n),n.crossDomain||(n.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(n.url)&&RegExp.$2!=window.location.host),n.url||(n.url=window.location.toString()),E(n),n.cache===!1&&(n.url=w(n.url,"_="+Date.now()));var s=n.dataType,a=/\?.+=\?/.test(n.url);if("jsonp"==s||a)return a||(n.url=w(n.url,n.jsonp?n.jsonp+"=?":n.jsonp===!1?"":"callback=?")),t.ajaxJSONP(n,o);var j,u=n.accepts[s],f={},l=function(t,e){f[t.toLowerCase()]=[t,e]},h=/^([\w-]+:)\/\//.test(n.url)?RegExp.$1:window.location.protocol,d=n.xhr(),y=d.setRequestHeader;if(o&&o.promise(d),n.crossDomain||l("X-Requested-With","XMLHttpRequest"),l("Accept",u||"*/*"),(u=n.mimeType||u)&&(u.indexOf(",")>-1&&(u=u.split(",",2)[0]),d.overrideMimeType&&d.overrideMimeType(u)),(n.contentType||n.contentType!==!1&&n.data&&"GET"!=n.type.toUpperCase())&&l("Content-Type",n.contentType||"application/x-www-form-urlencoded"),n.headers)for(r in n.headers)l(r,n.headers[r]);if(d.setRequestHeader=l,d.onreadystatechange=function(){if(4==d.readyState){d.onreadystatechange=x,clearTimeout(j);var e,i=!1;if(d.status>=200&&d.status<300||304==d.status||0==d.status&&"file:"==h){s=s||b(n.mimeType||d.getResponseHeader("content-type")),e=d.responseText;try{"script"==s?(1,eval)(e):"xml"==s?e=d.responseXML:"json"==s&&(e=c.test(e)?null:t.parseJSON(e))}catch(r){i=r}i?v(i,"parsererror",d,n,o):g(e,d,n,o)}else v(d.statusText||null,d.status?"error":"abort",d,n,o)}},m(d,n)===!1)return d.abort(),v(null,"abort",d,n,o),d;if(n.xhrFields)for(r in n.xhrFields)d[r]=n.xhrFields[r];var T="async"in n?n.async:!0;d.open(n.type,n.url,T,n.username,n.password);for(r in f)y.apply(d,f[r]);return n.timeout>0&&(j=setTimeout(function(){d.onreadystatechange=x,d.abort(),v(null,"timeout",d,n,o)},n.timeout)),d.send(n.data?n.data:null),d},t.get=function(){return t.ajax(j.apply(null,arguments))},t.post=function(){var e=j.apply(null,arguments);return e.type="POST",t.ajax(e)},t.getJSON=function(){var e=j.apply(null,arguments);return e.dataType="json",t.ajax(e)},t.fn.load=function(e,n,i){if(!this.length)return this;var a,r=this,s=e.split(/\s/),u=j(e,n,i),f=u.success;return s.length>1&&(u.url=s[0],a=s[1]),u.success=function(e){r.html(a?t("
    ").html(e.replace(o,"")).find(a):e),f&&f.apply(r,arguments)},t.ajax(u),this};var T=encodeURIComponent;t.param=function(t,e){var n=[];return n.add=function(t,e){this.push(T(t)+"="+T(e))},S(n,t,e),n.join("&").replace(/%20/g,"+")}}(Zepto),function(t){t.fn.serializeArray=function(){var n,e=[];return t([].slice.call(this.get(0).elements)).each(function(){n=t(this);var i=n.attr("type");"fieldset"!=this.nodeName.toLowerCase()&&!this.disabled&&"submit"!=i&&"reset"!=i&&"button"!=i&&("radio"!=i&&"checkbox"!=i||this.checked)&&e.push({name:n.attr("name"),value:n.val()})}),e},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(e)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(Zepto),function(t){"__proto__"in{}||t.extend(t.zepto,{Z:function(e,n){return e=e||[],t.extend(e,t.fn),e.selector=n||"",e.__Z=!0,e},isZ:function(e){return"array"===t.type(e)&&"__Z"in e}});try{getComputedStyle(void 0)}catch(e){var n=getComputedStyle;window.getComputedStyle=function(t){try{return n(t)}catch(e){return null}}}}(Zepto); \ No newline at end of file diff --git a/views/index.jade b/views/index.pug similarity index 82% rename from views/index.jade rename to views/index.pug index 90b4381d..c229e21f 100644 --- a/views/index.jade +++ b/views/index.pug @@ -122,7 +122,7 @@ block content //- label //- input(type='radio', name='algorithm', value='PS512') .jwt-select - select + select#algorithm-select option(name='algorithm',value='HS256', selected='') HS256 //- option(name='algorithm',value='HS384') HS384 option(name='algorithm',value='HS512') HS512 @@ -188,10 +188,10 @@ block content .filter span Filter by .jwt-select - select + select#libraries-select // Languages must be in alphabetic order option(value='*', selected='') All - option(value='.1c') 1c + option(value='._1c') 1c option(value='.c') C option(value='.clojure') Clojure option(value='.crystal') Crystal @@ -229,70 +229,70 @@ block content path(d='M16 10v28l22-14z') .libraries-sv(data-accordion-group) - include libraries/net.jade - include libraries/net2.jade - include libraries/netrt.jade - include libraries/python.jade - include libraries/python2.jade - include libraries/python3.jade - include libraries/node.jade - include libraries/java.jade - include libraries/java2.jade - include libraries/java3.jade - include libraries/java4.jade - include libraries/java5.jade - include libraries/java6.jade - include libraries/js.jade - include libraries/js2.jade - include libraries/perl5.jade - include libraries/ruby.jade - include libraries/ruby2.jade - include libraries/ruby3.jade - include libraries/ruby4.jade - include libraries/elixir.jade - include libraries/elixir2.jade - include libraries/elixir3.jade - include libraries/go.jade - include libraries/go2.jade - include libraries/go3.jade - include libraries/go4.jade - include libraries/go5.jade - include libraries/go6.jade - include libraries/go7.jade - include libraries/go8.jade - include libraries/groovy.jade - include libraries/haskell.jade - include libraries/haskell2.jade - include libraries/haxe.jade - include libraries/rust.jade - include libraries/rust2.jade - include libraries/rust3.jade - include libraries/lua.jade - include libraries/scala.jade - include libraries/scala2.jade - include libraries/scala3.jade - include libraries/scala4.jade - include libraries/d.jade - include libraries/d2.jade - include libraries/clojure.jade - include libraries/objective-c.jade - include libraries/swift.jade - include libraries/swift2.jade - include libraries/c.jade - include libraries/c2.jade - include libraries/q.jade - include libraries/delphi.jade - include libraries/delphi2.jade - include libraries/php.jade - include libraries/php3.jade - include libraries/php4.jade - include libraries/php5.jade - include libraries/php6.jade - include libraries/php7.jade - include libraries/php8.jade - include libraries/crystal.jade - include libraries/1c.jade - include libraries/postgresql.jade + include libraries/net.pug + include libraries/net2.pug + include libraries/netrt.pug + include libraries/python.pug + include libraries/python2.pug + include libraries/python3.pug + include libraries/node.pug + include libraries/java.pug + include libraries/java2.pug + include libraries/java3.pug + include libraries/java4.pug + include libraries/java5.pug + include libraries/java6.pug + include libraries/js.pug + include libraries/js2.pug + include libraries/perl5.pug + include libraries/ruby.pug + include libraries/ruby2.pug + include libraries/ruby3.pug + include libraries/ruby4.pug + include libraries/elixir.pug + include libraries/elixir2.pug + include libraries/elixir3.pug + include libraries/go.pug + include libraries/go2.pug + include libraries/go3.pug + include libraries/go4.pug + include libraries/go5.pug + include libraries/go6.pug + include libraries/go7.pug + include libraries/go8.pug + include libraries/groovy.pug + include libraries/haskell.pug + include libraries/haskell2.pug + include libraries/haxe.pug + include libraries/rust.pug + include libraries/rust2.pug + include libraries/rust3.pug + include libraries/lua.pug + include libraries/scala.pug + include libraries/scala2.pug + include libraries/scala3.pug + include libraries/scala4.pug + include libraries/d.pug + include libraries/d2.pug + include libraries/clojure.pug + include libraries/objective-c.pug + include libraries/swift.pug + include libraries/swift2.pug + include libraries/c.pug + include libraries/c2.pug + include libraries/q.pug + include libraries/delphi.pug + include libraries/delphi2.pug + include libraries/php.pug + include libraries/php3.pug + include libraries/php4.pug + include libraries/php5.pug + include libraries/php6.pug + include libraries/php7.pug + include libraries/php8.pug + include libraries/crystal.pug + include libraries/1c.pug + include libraries/postgresql.pug section.sources .container diff --git a/views/introduction.jade b/views/introduction.pug similarity index 98% rename from views/introduction.jade rename to views/introduction.pug index 3c8ff583..18901087 100644 --- a/views/introduction.jade +++ b/views/introduction.pug @@ -63,7 +63,7 @@ block content section.plain-text .container - include:markdown md/introduction.md + include:markdown-it md/introduction.md section.go-tool .container diff --git a/views/layout.jade b/views/layout.pug similarity index 83% rename from views/layout.jade rename to views/layout.pug index 1edc1b64..2014980a 100644 --- a/views/layout.jade +++ b/views/layout.pug @@ -43,8 +43,8 @@ html(lang='en') link(rel="stylesheet", href="http://github.com/css/bootstrap.min.css") // build:css dist/css/app.css - link(rel='stylesheet', href='http://github.com/vendor/codemirror/lib/codemirror.css', type='text/css', media='all') - link(rel='stylesheet', href='http://github.com/vendor/codemirror/addon/lint/lint.css', type='text/css', media='all') + link(rel='stylesheet', href='http://github.com/css/codemirror.css', type='text/css', media='all') + link(rel='stylesheet', href='http://github.com/css/lint.css', type='text/css', media='all') link(rel="stylesheet", href='http://github.com/css/budicon.css', type="text/css", media="all") link(rel='stylesheet', href='http://github.com/css/app.css', type='text/css', media='all') @@ -116,39 +116,8 @@ html(lang='en') a(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/tree/master/views', target="_blank") Send a Pull Request .column.social-counter a.twitter-follow-button(href='https://twitter.com/auth0', data-show-count='true') Follow @auth0 - - - // - Bootstrap core JavaScript - ================================================== - // Placed at the end of the document so the pages load faster - script(src='http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js') - script(src='http://github.com/js/bootstrap.min.js') - - script(src="http://fast.wistia.net/assets/external/E-v1.js" async) - - // build:js dist/js/app.js - script(src='http://github.com/vendor/zepto/zepto.js') - script(src='http://github.com/vendor/jsonlint/lib/jsonlint.js') - script(src='http://github.com/vendor/json-sans-eval-min/index.js') - script(src='http://github.com/vendor/codemirror/lib/codemirror.js') - script(src='http://github.com/vendor/codemirror/mode/javascript/javascript.js') - script(src='http://github.com/vendor/codemirror/addon/lint/lint.js') - script(src='http://github.com/vendor/codemirror/addon/lint/javascript-lint.js') - script(src='http://github.com/vendor/codemirror/addon/lint/json-lint.js') - script(src='http://github.com/vendor/jsrsasign/index.js') - script(src='http://github.com/vendor/jws.js/index.js') - script(src='http://github.com/js/jwt_mode.js') - script(src='http://github.com/js/jwt.js') - - script(src='http://github.com/js/isotope.pkgd.min.js') - script(src='http://github.com/js/flipclock.js') - script(src='http://github.com/js/accordion.js') - script(src='http://github.com/js/highlight.min.js') - - script(src='http://github.com/js/default-tokens.js') - script(src='http://github.com/js/app.js') - // endbuild + + script(src='http://github.com/js/index.js') script. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ diff --git a/views/libraries/1c.jade b/views/libraries/1c.pug similarity index 97% rename from views/libraries/1c.jade rename to views/libraries/1c.pug index 428f806d..2f60a593 100644 --- a/views/libraries/1c.jade +++ b/views/libraries/1c.pug @@ -1,5 +1,5 @@ // 1C pintov/1c-jwt -article.jwt-1c.1c.accordion(data-accordion) +article.jwt-1c._1c.accordion(data-accordion) .panel-heading(data-control) img(src='http://github.com/img/22.svg') h3 1C diff --git a/views/libraries/c.jade b/views/libraries/c.pug similarity index 100% rename from views/libraries/c.jade rename to views/libraries/c.pug diff --git a/views/libraries/c2.jade b/views/libraries/c2.pug similarity index 100% rename from views/libraries/c2.jade rename to views/libraries/c2.pug diff --git a/views/libraries/clojure.jade b/views/libraries/clojure.pug similarity index 100% rename from views/libraries/clojure.jade rename to views/libraries/clojure.pug diff --git a/views/libraries/crystal.jade b/views/libraries/crystal.pug similarity index 100% rename from views/libraries/crystal.jade rename to views/libraries/crystal.pug diff --git a/views/libraries/d.jade b/views/libraries/d.pug similarity index 100% rename from views/libraries/d.jade rename to views/libraries/d.pug diff --git a/views/libraries/d2.jade b/views/libraries/d2.pug similarity index 100% rename from views/libraries/d2.jade rename to views/libraries/d2.pug diff --git a/views/libraries/delphi.jade b/views/libraries/delphi.pug similarity index 100% rename from views/libraries/delphi.jade rename to views/libraries/delphi.pug diff --git a/views/libraries/delphi2.jade b/views/libraries/delphi2.pug similarity index 100% rename from views/libraries/delphi2.jade rename to views/libraries/delphi2.pug diff --git a/views/libraries/elixir.jade b/views/libraries/elixir.pug similarity index 100% rename from views/libraries/elixir.jade rename to views/libraries/elixir.pug diff --git a/views/libraries/elixir2.jade b/views/libraries/elixir2.pug similarity index 100% rename from views/libraries/elixir2.jade rename to views/libraries/elixir2.pug diff --git a/views/libraries/elixir3.jade b/views/libraries/elixir3.pug similarity index 100% rename from views/libraries/elixir3.jade rename to views/libraries/elixir3.pug diff --git a/views/libraries/go.jade b/views/libraries/go.pug similarity index 100% rename from views/libraries/go.jade rename to views/libraries/go.pug diff --git a/views/libraries/go2.jade b/views/libraries/go2.pug similarity index 100% rename from views/libraries/go2.jade rename to views/libraries/go2.pug diff --git a/views/libraries/go3.jade b/views/libraries/go3.pug similarity index 100% rename from views/libraries/go3.jade rename to views/libraries/go3.pug diff --git a/views/libraries/go4.jade b/views/libraries/go4.pug similarity index 100% rename from views/libraries/go4.jade rename to views/libraries/go4.pug diff --git a/views/libraries/go5.jade b/views/libraries/go5.pug similarity index 100% rename from views/libraries/go5.jade rename to views/libraries/go5.pug diff --git a/views/libraries/go6.jade b/views/libraries/go6.pug similarity index 100% rename from views/libraries/go6.jade rename to views/libraries/go6.pug diff --git a/views/libraries/go7.jade b/views/libraries/go7.pug similarity index 100% rename from views/libraries/go7.jade rename to views/libraries/go7.pug diff --git a/views/libraries/go8.jade b/views/libraries/go8.pug similarity index 100% rename from views/libraries/go8.jade rename to views/libraries/go8.pug diff --git a/views/libraries/groovy.jade b/views/libraries/groovy.pug similarity index 100% rename from views/libraries/groovy.jade rename to views/libraries/groovy.pug diff --git a/views/libraries/haskell.jade b/views/libraries/haskell.pug similarity index 100% rename from views/libraries/haskell.jade rename to views/libraries/haskell.pug diff --git a/views/libraries/haskell2.jade b/views/libraries/haskell2.pug similarity index 100% rename from views/libraries/haskell2.jade rename to views/libraries/haskell2.pug diff --git a/views/libraries/haxe.jade b/views/libraries/haxe.pug similarity index 100% rename from views/libraries/haxe.jade rename to views/libraries/haxe.pug diff --git a/views/libraries/java.jade b/views/libraries/java.pug similarity index 100% rename from views/libraries/java.jade rename to views/libraries/java.pug diff --git a/views/libraries/java2.jade b/views/libraries/java2.pug similarity index 100% rename from views/libraries/java2.jade rename to views/libraries/java2.pug diff --git a/views/libraries/java3.jade b/views/libraries/java3.pug similarity index 100% rename from views/libraries/java3.jade rename to views/libraries/java3.pug diff --git a/views/libraries/java4.jade b/views/libraries/java4.pug similarity index 100% rename from views/libraries/java4.jade rename to views/libraries/java4.pug diff --git a/views/libraries/java5.jade b/views/libraries/java5.pug similarity index 100% rename from views/libraries/java5.jade rename to views/libraries/java5.pug diff --git a/views/libraries/java6.jade b/views/libraries/java6.pug similarity index 100% rename from views/libraries/java6.jade rename to views/libraries/java6.pug diff --git a/views/libraries/js.jade b/views/libraries/js.pug similarity index 100% rename from views/libraries/js.jade rename to views/libraries/js.pug diff --git a/views/libraries/js2.jade b/views/libraries/js2.pug similarity index 100% rename from views/libraries/js2.jade rename to views/libraries/js2.pug diff --git a/views/libraries/lua.jade b/views/libraries/lua.pug similarity index 100% rename from views/libraries/lua.jade rename to views/libraries/lua.pug diff --git a/views/libraries/net.jade b/views/libraries/net.pug similarity index 100% rename from views/libraries/net.jade rename to views/libraries/net.pug diff --git a/views/libraries/net2.jade b/views/libraries/net2.pug similarity index 100% rename from views/libraries/net2.jade rename to views/libraries/net2.pug diff --git a/views/libraries/netrt.jade b/views/libraries/netrt.pug similarity index 100% rename from views/libraries/netrt.jade rename to views/libraries/netrt.pug diff --git a/views/libraries/node.jade b/views/libraries/node.pug similarity index 100% rename from views/libraries/node.jade rename to views/libraries/node.pug diff --git a/views/libraries/objective-c.jade b/views/libraries/objective-c.pug similarity index 100% rename from views/libraries/objective-c.jade rename to views/libraries/objective-c.pug diff --git a/views/libraries/perl5.jade b/views/libraries/perl5.pug similarity index 100% rename from views/libraries/perl5.jade rename to views/libraries/perl5.pug diff --git a/views/libraries/php.jade b/views/libraries/php.pug similarity index 100% rename from views/libraries/php.jade rename to views/libraries/php.pug diff --git a/views/libraries/php3.jade b/views/libraries/php3.pug similarity index 100% rename from views/libraries/php3.jade rename to views/libraries/php3.pug diff --git a/views/libraries/php4.jade b/views/libraries/php4.pug similarity index 100% rename from views/libraries/php4.jade rename to views/libraries/php4.pug diff --git a/views/libraries/php5.jade b/views/libraries/php5.pug similarity index 100% rename from views/libraries/php5.jade rename to views/libraries/php5.pug diff --git a/views/libraries/php6.jade b/views/libraries/php6.pug similarity index 100% rename from views/libraries/php6.jade rename to views/libraries/php6.pug diff --git a/views/libraries/php7.jade b/views/libraries/php7.pug similarity index 100% rename from views/libraries/php7.jade rename to views/libraries/php7.pug diff --git a/views/libraries/php8.jade b/views/libraries/php8.pug similarity index 100% rename from views/libraries/php8.jade rename to views/libraries/php8.pug diff --git a/views/libraries/postgresql.jade b/views/libraries/postgresql.pug similarity index 100% rename from views/libraries/postgresql.jade rename to views/libraries/postgresql.pug diff --git a/views/libraries/python.jade b/views/libraries/python.pug similarity index 100% rename from views/libraries/python.jade rename to views/libraries/python.pug diff --git a/views/libraries/python2.jade b/views/libraries/python2.pug similarity index 98% rename from views/libraries/python2.jade rename to views/libraries/python2.pug index 42061578..d7dbba54 100644 --- a/views/libraries/python2.jade +++ b/views/libraries/python2.pug @@ -4,7 +4,7 @@ article.jwt-python.python.accordion(data-accordion) img(src='http://github.com/img/4.svg') h3 Python .panel-wrap(data-content) - .panel-body.mversion + .panel-body .column p i.icon-budicon-500 diff --git a/views/libraries/python3.jade b/views/libraries/python3.pug similarity index 98% rename from views/libraries/python3.jade rename to views/libraries/python3.pug index 88e3e641..25fb15c3 100644 --- a/views/libraries/python3.jade +++ b/views/libraries/python3.pug @@ -4,7 +4,7 @@ article.jwt-python.python.accordion(data-accordion) img(src='http://github.com/img/4.svg') h3 Python .panel-wrap(data-content) - .panel-body.mversion + .panel-body .column p i.icon-budicon-500 diff --git a/views/libraries/q.jade b/views/libraries/q.pug similarity index 100% rename from views/libraries/q.jade rename to views/libraries/q.pug diff --git a/views/libraries/ruby.jade b/views/libraries/ruby.pug similarity index 100% rename from views/libraries/ruby.jade rename to views/libraries/ruby.pug diff --git a/views/libraries/ruby2.jade b/views/libraries/ruby2.pug similarity index 100% rename from views/libraries/ruby2.jade rename to views/libraries/ruby2.pug diff --git a/views/libraries/ruby3.jade b/views/libraries/ruby3.pug similarity index 100% rename from views/libraries/ruby3.jade rename to views/libraries/ruby3.pug diff --git a/views/libraries/ruby4.jade b/views/libraries/ruby4.pug similarity index 100% rename from views/libraries/ruby4.jade rename to views/libraries/ruby4.pug diff --git a/views/libraries/rust.jade b/views/libraries/rust.pug similarity index 100% rename from views/libraries/rust.jade rename to views/libraries/rust.pug diff --git a/views/libraries/rust2.jade b/views/libraries/rust2.pug similarity index 100% rename from views/libraries/rust2.jade rename to views/libraries/rust2.pug diff --git a/views/libraries/rust3.jade b/views/libraries/rust3.pug similarity index 100% rename from views/libraries/rust3.jade rename to views/libraries/rust3.pug diff --git a/views/libraries/scala.jade b/views/libraries/scala.pug similarity index 100% rename from views/libraries/scala.jade rename to views/libraries/scala.pug diff --git a/views/libraries/scala2.jade b/views/libraries/scala2.pug similarity index 100% rename from views/libraries/scala2.jade rename to views/libraries/scala2.pug diff --git a/views/libraries/scala3.jade b/views/libraries/scala3.pug similarity index 100% rename from views/libraries/scala3.jade rename to views/libraries/scala3.pug diff --git a/views/libraries/scala4.jade b/views/libraries/scala4.pug similarity index 100% rename from views/libraries/scala4.jade rename to views/libraries/scala4.pug diff --git a/views/libraries/swift.jade b/views/libraries/swift.pug similarity index 100% rename from views/libraries/swift.jade rename to views/libraries/swift.pug diff --git a/views/libraries/swift2.jade b/views/libraries/swift2.pug similarity index 100% rename from views/libraries/swift2.jade rename to views/libraries/swift2.pug diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 00000000..54ffcad9 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,38 @@ +const webpack = require('webpack'); + +module.exports = { + devtool: 'source-map', + entry: { + website: './src/website/index.js', + //extension: './src/extension/index.js' + }, + output: { + filename: '[name]/js/index.js', + path: __dirname + '/dist' + }, + module: { + rules: [{ + test: /\.js$/, + exclude: /(node_modules|bower_components)/, + use: { + loader: 'babel-loader', + options: { + presets: [[ + '@babel/preset-env', { + targets: { + browsers: ["last 5 versions", "safari >= 7"] + }, + modules: false + } + ]] + } + } + }] + }, + plugins: [ + new webpack.ProvidePlugin({ + $: "jquery", + jQuery: "jquery" + }) + ] +}; From a4c3e7b01eef4c60688eb0d33b80a0dfa021cb07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 9 Jan 2018 21:08:28 -0300 Subject: [PATCH 064/611] Initialization fixes. --- src/utils.js | 4 ++-- src/website/editor/index.js | 8 +++++--- src/website/editor/utils.js | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/utils.js b/src/utils.js index f6c1a1f7..acbb8422 100644 --- a/src/utils.js +++ b/src/utils.js @@ -28,8 +28,8 @@ export function httpGet(url, cache = true) { }); } -export function downloadPublicKeyIfPossible() { - return ''; +export function downloadPublicKeyIfPossible(decodedToken) { + return Promise.reject(); } export function isValidBase64String(s, urlOnly) { diff --git a/src/website/editor/index.js b/src/website/editor/index.js index 9bde2b08..36627756 100644 --- a/src/website/editor/index.js +++ b/src/website/editor/index.js @@ -1,4 +1,5 @@ import { copyTextToClipboard } from '../utils.js'; +import { downloadPublicKeyIfPossible } from '../../utils.js'; import { tooltipHandler } from './tooltip.js'; import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; import { @@ -273,12 +274,12 @@ function setupEvents() { eventManager.addCodeMirrorEvent(payloadEditor, 'change', encodeToken); // HMAC secret, when changed the encoded token must be updated. - eventManager.addDomEvent(secretInput, 'change', encodeToken); + eventManager.addDomEvent(secretInput, 'input', encodeToken); // Private key, when changed the encoded token must be updated. - eventManager.addDomEvent(privateKeyTextArea, 'change', encodeToken); + eventManager.addDomEvent(privateKeyTextArea, 'input', encodeToken); // Public key, when changed the encoded token must NOT be updated // (only verified). - eventManager.addDomEvent(publicKeyTextArea, 'change', verifyToken); + eventManager.addDomEvent(publicKeyTextArea, 'input', verifyToken); // The following event are never disabled, so it is not necessary to go // through the event manager for them. @@ -296,5 +297,6 @@ export function setTokenEditorValue(value) { export function setupTokenEditor() { setupEvents(); selectAlgorithm('HS256'); + useDefaultToken('HS256'); fixEditorHeight(); } diff --git a/src/website/editor/utils.js b/src/website/editor/utils.js index b714a38d..c4c10cce 100644 --- a/src/website/editor/utils.js +++ b/src/website/editor/utils.js @@ -34,5 +34,5 @@ export function fixEditorHeight() { } export function stringify(object) { - return JSON.stringify(object, 2); + return JSON.stringify(object, null, 2); } From ce3b97a928659e2eee97725191dc72563d2020ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 9 Jan 2018 21:37:28 -0300 Subject: [PATCH 065/611] Removed unused stylesheet. --- views/layout.pug | 1 - 1 file changed, 1 deletion(-) diff --git a/views/layout.pug b/views/layout.pug index 2014980a..dd06478d 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -36,7 +36,6 @@ html(lang='en') // Just for debugging purposes. Don't actually copy this line! | - link(rel="stylesheet", type="text/css", href="http://cloud.typography.com/7834932/650606/css/fonts.css") link(rel="stylesheet", type="text/css", href="http://fonts.googleapis.com/css?family=Roboto+Mono") From db79eb4a9c38e7dcf779f9fe5ed55d3b3f5052ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 9 Jan 2018 21:39:54 -0300 Subject: [PATCH 066/611] Fix OpenSearch. --- Gruntfile.js | 2 +- src/website/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 1cde8068..c4891886 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -11,7 +11,7 @@ module.exports = grunt => { main: { files: [{ expand: true, - src: ['img/**', 'fonts/**', 'assets/**'], + src: ['img/**', 'fonts/**', 'assets/**', 'opensearch.xml'], dest: 'dist/website' }, { expand: true, diff --git a/src/website/index.js b/src/website/index.js index 6a667d86..6a0dc5fa 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -33,7 +33,7 @@ function parseLocationQuery() { scroll = true; } if(token) { - setTokenEditorValue(value); + setTokenEditorValue(token); scroll = true; } From 4006ee5a7cb069226a05d09f0481096d14361cf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 10 Jan 2018 21:26:07 -0300 Subject: [PATCH 067/611] Smooth scrolling. --- src/website/editor/utils.js | 3 ++- src/website/index.js | 22 ++++++++++++++++++---- src/website/utils.js | 26 ++++++++++++++++++++++++++ stylus/app.styl | 3 +++ 4 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/website/editor/utils.js b/src/website/editor/utils.js index c4c10cce..924fcd16 100644 --- a/src/website/editor/utils.js +++ b/src/website/editor/utils.js @@ -1,4 +1,5 @@ import { tokenEditor } from './instances.js'; +import { isWideScreen } from '../utils.js'; import { algorithmSelect, publicKeyTextArea, @@ -28,7 +29,7 @@ export function copyTokenLink() { } export function fixEditorHeight() { - if(window.matchMedia('(min-width: 768px)').matches) { + if(isWideScreen()) { editorElement.style.height = `${decodedElement.offsetHeight}px`; } } diff --git a/src/website/index.js b/src/website/index.js index 6a0dc5fa..022842a2 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -7,11 +7,12 @@ import { useDefaultToken } from './editor'; import { setupJwtCounter } from './counter.js'; -import { getParameterByName } from './utils.js'; +import { getParameterByName, smoothScrollTo } from './utils.js'; import { publicKeyTextArea, codeElements, - debuggerSection + debuggerSection, + menuScrollableLinks } from './dom-elements.js'; import hljs from 'highlight.js'; @@ -70,8 +71,21 @@ function setupHighlighting() { } function setupSmoothScrolling() { - //TODO - console.log('TODO: smooth scrolling'); + Array.prototype.forEach.call(menuScrollableLinks, scrollable => { + scrollable.addEventListener('click', event => { + event.preventDefault(); + + const start = scrollable.href.indexOf('#'); + if(start === -1) { + console.error(' element with .scrollto set and bad link: ', + scrollable.href); + return; + } + + const id = scrollable.href.substr(start + 1); + smoothScrollTo(document.getElementById(id)); + }); + }); } // Initialization diff --git a/src/website/utils.js b/src/website/utils.js index f35b5955..c5ffecac 100644 --- a/src/website/utils.js +++ b/src/website/utils.js @@ -1,3 +1,5 @@ +import { navbarElement } from './dom-elements.js'; + export function safeLocalStorageSetItem(key, value) { try { localStorage.setItem(key, value); @@ -103,3 +105,27 @@ export function isInViewport(elem) { bounding.right <= (window.innerWidth || document.documentElement.clientWidth) ); }; + +export function isWideScreen() { + return window.matchMedia('(min-width: 768px)').matches; +} + +// This is the only function that really requires jQuery, other than some +// of the dependencies. Consider this when adding code that depends on +// jQuery somewhere else. +export function smoothScrollTo(element) { + // TODO: don't use jQuery + + const navHeight = $(navbarElement).height(); + const targetElement = $(element); + + if (isWideScreen()) { + $('html, body').animate({ + scrollTop: targetElement.offset().top - navHeight + }, 500); + } else { + $('html, body').animate({ + scrollTop: targetElement.offset().top + }, 500); + } +} diff --git a/stylus/app.styl b/stylus/app.styl index 282f7615..8055a550 100644 --- a/stylus/app.styl +++ b/stylus/app.styl @@ -56,6 +56,9 @@ a &:hover color: darken(#00b9f1, 50%) +p + margin 30px 0 30px 0 + .container width 100% max-width 1200px From ab170ee19a2cb125b8ddfb47d590f48f4ffc695c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 10 Jan 2018 22:50:40 -0300 Subject: [PATCH 068/611] Fix introduction. --- Gruntfile.js | 6 +-- src/utils.js | 8 ++-- src/website/dom-elements.js | 5 ++- src/website/highlighting.js | 18 ++++++++ src/website/index.js | 42 +++---------------- src/website/introduction/index.js | 6 +++ src/website/smooth-scrolling.js | 42 +++++++++++++++++++ src/website/utils.js | 22 ---------- views/counter.pug | 14 +++++++ views/index.pug | 4 ++ views/introduction.pug | 4 ++ views/layout.pug | 16 ------- ...ack.config.js => website.webpack.config.js | 8 ++-- 13 files changed, 107 insertions(+), 88 deletions(-) create mode 100644 src/website/highlighting.js create mode 100644 src/website/introduction/index.js create mode 100644 src/website/smooth-scrolling.js create mode 100644 views/counter.pug rename webpack.config.js => website.webpack.config.js (79%) diff --git a/Gruntfile.js b/Gruntfile.js index c4891886..0574fb2b 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,4 +1,4 @@ -const webpackConfig = require('./webpack.config.js'); +const websiteWebpackConfig = require('./website.webpack.config.js'); module.exports = grunt => { grunt.loadNpmTasks('grunt-contrib-copy'); @@ -42,8 +42,8 @@ module.exports = grunt => { } }, webpack: { - prod: webpackConfig, - dev: webpackConfig + prod: websiteWebpackConfig, + dev: websiteWebpackConfig } }); diff --git a/src/utils.js b/src/utils.js index acbb8422..2e04853e 100644 --- a/src/utils.js +++ b/src/utils.js @@ -28,10 +28,6 @@ export function httpGet(url, cache = true) { }); } -export function downloadPublicKeyIfPossible(decodedToken) { - return Promise.reject(); -} - export function isValidBase64String(s, urlOnly) { try { const validChars = urlOnly ? @@ -105,3 +101,7 @@ export function isValidKey(key) { }; } +export function downloadPublicKeyIfPossible(decodedToken) { + return Promise.reject(); +} + diff --git a/src/website/dom-elements.js b/src/website/dom-elements.js index ae1b7611..4d46d67c 100644 --- a/src/website/dom-elements.js +++ b/src/website/dom-elements.js @@ -7,8 +7,9 @@ export const menuScrollableLinks = export const sectionElements = document.getElementsByTagName('section'); export const extensionButton = document.getElementById('extension-button'); -export const extensionButtonText = - extensionButton.querySelector('.button-text'); +export const extensionButtonText = extensionButton ? + extensionButton.querySelector('.button-text') : + undefined; export const codeElements = document.querySelectorAll('.plain-text pre code'); diff --git a/src/website/highlighting.js b/src/website/highlighting.js new file mode 100644 index 00000000..4fca0bf6 --- /dev/null +++ b/src/website/highlighting.js @@ -0,0 +1,18 @@ +import { codeElements } from './dom-elements.js'; + +import hljs from 'highlight.js'; + +export function setupHighlighting() { + // TODO: consider replacing this with CodeMirror, which we already use. + + hljs.configure({ + classPrefix: '' + }); + + Array.prototype.forEach.call(codeElements, element => { + if (!element.classList.contains('hljs')) { + element.classList.add('hljs'); + hljs.highlightBlock(element); + } + }); +} diff --git a/src/website/index.js b/src/website/index.js index 022842a2..5f14db2c 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -7,16 +7,15 @@ import { useDefaultToken } from './editor'; import { setupJwtCounter } from './counter.js'; +import { setupSmoothScrolling } from './smooth-scrolling.js'; +import { setupHighlighting } from './highlighting.js'; import { getParameterByName, smoothScrollTo } from './utils.js'; import { publicKeyTextArea, codeElements, debuggerSection, - menuScrollableLinks } from './dom-elements.js'; -import hljs from 'highlight.js'; - /* For initialization, look at the end of this file */ function parseLocationQuery() { @@ -38,7 +37,9 @@ function parseLocationQuery() { scroll = true; } - debuggerSection.scrollIntoView(true); + if(scroll) { + debuggerSection.scrollIntoView(true); + } } function loadToken() { @@ -55,39 +56,6 @@ function loadToken() { } } -function setupHighlighting() { - // TODO: consider replacing this with CodeMirror, which we already use. - - hljs.configure({ - classPrefix: '' - }); - - Array.prototype.forEach.call(codeElements, element => { - if(!element.classList.contains('hljs')) { - element.classList.add('hljs'); - hljs.highlightBlock(element); - } - }); -} - -function setupSmoothScrolling() { - Array.prototype.forEach.call(menuScrollableLinks, scrollable => { - scrollable.addEventListener('click', event => { - event.preventDefault(); - - const start = scrollable.href.indexOf('#'); - if(start === -1) { - console.error(' element with .scrollto set and bad link: ', - scrollable.href); - return; - } - - const id = scrollable.href.substr(start + 1); - smoothScrollTo(document.getElementById(id)); - }); - }); -} - // Initialization setupNavbar(); setupExtensionButton(); diff --git a/src/website/introduction/index.js b/src/website/introduction/index.js new file mode 100644 index 00000000..8b070141 --- /dev/null +++ b/src/website/introduction/index.js @@ -0,0 +1,6 @@ +import { setupHighlighting } from '../highlighting.js'; +import { setupJwtCounter } from '../counter.js'; + +// Initialization +setupHighlighting(); +setupJwtCounter(); diff --git a/src/website/smooth-scrolling.js b/src/website/smooth-scrolling.js new file mode 100644 index 00000000..c9d02c0c --- /dev/null +++ b/src/website/smooth-scrolling.js @@ -0,0 +1,42 @@ +import { menuScrollableLinks, navbarElement } from './dom-elements.js'; +import { isWideScreen } from './utils.js'; + +import $ from 'jquery'; + +// This is the only function that really requires jQuery, other than some +// of the dependencies. Consider this when adding code that depends on +// jQuery somewhere else. +export function smoothScrollTo(element) { + // TODO: don't use jQuery + + const navHeight = $(navbarElement).height(); + const targetElement = $(element); + + if (isWideScreen()) { + $('html, body').animate({ + scrollTop: targetElement.offset().top - navHeight + }, 500); + } else { + $('html, body').animate({ + scrollTop: targetElement.offset().top + }, 500); + } +} + +export function setupSmoothScrolling() { + Array.prototype.forEach.call(menuScrollableLinks, scrollable => { + scrollable.addEventListener('click', event => { + event.preventDefault(); + + const start = scrollable.href.indexOf('#'); + if (start === -1) { + console.error(' element with .scrollto set and bad link: ', + scrollable.href); + return; + } + + const id = scrollable.href.substr(start + 1); + smoothScrollTo(document.getElementById(id)); + }); + }); +} diff --git a/src/website/utils.js b/src/website/utils.js index c5ffecac..79cdfdec 100644 --- a/src/website/utils.js +++ b/src/website/utils.js @@ -1,5 +1,3 @@ -import { navbarElement } from './dom-elements.js'; - export function safeLocalStorageSetItem(key, value) { try { localStorage.setItem(key, value); @@ -109,23 +107,3 @@ export function isInViewport(elem) { export function isWideScreen() { return window.matchMedia('(min-width: 768px)').matches; } - -// This is the only function that really requires jQuery, other than some -// of the dependencies. Consider this when adding code that depends on -// jQuery somewhere else. -export function smoothScrollTo(element) { - // TODO: don't use jQuery - - const navHeight = $(navbarElement).height(); - const targetElement = $(element); - - if (isWideScreen()) { - $('html, body').animate({ - scrollTop: targetElement.offset().top - navHeight - }, 500); - } else { - $('html, body').animate({ - scrollTop: targetElement.offset().top - }, 500); - } -} diff --git a/views/counter.pug b/views/counter.pug new file mode 100644 index 00000000..c98a0acc --- /dev/null +++ b/views/counter.pug @@ -0,0 +1,14 @@ +.tokens-created + .container + img(src='http://github.com/img/pic_logo_ft.svg') + p JWT.io is brought to you by + a(href='https://auth0.com/signup', target="_blank") Auth0 + p Securely implement authentication with JWTs using Auth0 on any stack and any device in less than 10 minutes. + + a(href='https://auth0.com/signup', target="_blank").btn.btn-success Create free account + + .token + h5 TOKENS CREATED + + .counter + \ No newline at end of file diff --git a/views/index.pug b/views/index.pug index c229e21f..c6edb0cb 100644 --- a/views/index.pug +++ b/views/index.pug @@ -333,3 +333,7 @@ block content h2 Store img(src='http://github.com/img/pic_tshirt.png') a.buy(href='http://swag.auth0.com/', target='_blank') Buy T-Shirt + + include counter.pug + + script(src='http://github.com/js/index.js') diff --git a/views/introduction.pug b/views/introduction.pug index 18901087..fcbaa0db 100644 --- a/views/introduction.pug +++ b/views/introduction.pug @@ -69,3 +69,7 @@ block content .container p Get started with JWT today a(href='http://github.com/#debugger').btn.btn-success Start using the tool + + include counter.pug + + script(src='http://github.com/js/introduction.js') diff --git a/views/layout.pug b/views/layout.pug index dd06478d..28b8fe01 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -89,20 +89,6 @@ html(lang='en') block content - .tokens-created - .container - img(src='http://github.com/img/pic_logo_ft.svg') - p JWT.io is brought to you by - a(href='https://auth0.com/signup', target="_blank") Auth0 - p Securely implement authentication with JWTs using Auth0 on any stack and any device in less than 10 minutes. - - a(href='https://auth0.com/signup', target="_blank").btn.btn-success Create free account - - .token - h5 TOKENS CREATED - - .counter - footer .container .columns @@ -115,8 +101,6 @@ html(lang='en') a(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/tree/master/views', target="_blank") Send a Pull Request .column.social-counter a.twitter-follow-button(href='https://twitter.com/auth0', data-show-count='true') Follow @auth0 - - script(src='http://github.com/js/index.js') script. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ diff --git a/webpack.config.js b/website.webpack.config.js similarity index 79% rename from webpack.config.js rename to website.webpack.config.js index 54ffcad9..a4c0777f 100644 --- a/webpack.config.js +++ b/website.webpack.config.js @@ -3,12 +3,12 @@ const webpack = require('webpack'); module.exports = { devtool: 'source-map', entry: { - website: './src/website/index.js', - //extension: './src/extension/index.js' + index: './src/website/index.js', + introduction: './src/website/introduction/index.js' }, output: { - filename: '[name]/js/index.js', - path: __dirname + '/dist' + filename: '[name].js', + path: __dirname + '/dist/website/js' }, module: { rules: [{ From 8267a138ea50bbf2f2637b0fd07fd9ef14a31324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 10 Jan 2018 23:59:38 -0300 Subject: [PATCH 069/611] Download public keys if possible. --- src/public-key-download.js | 77 +++++++++++++++++++++++++++++++++++++ src/utils.js | 5 --- src/website/editor/index.js | 12 +++--- 3 files changed, 83 insertions(+), 11 deletions(-) create mode 100644 src/public-key-download.js diff --git a/src/public-key-download.js b/src/public-key-download.js new file mode 100644 index 00000000..de2ab508 --- /dev/null +++ b/src/public-key-download.js @@ -0,0 +1,77 @@ +import { httpGet } from './utils.js'; + +function getKeyFromX5c(x5c) { + if(!x5c) { + throw new Error('x5c claim not present?'); + } + + if(!(x5c instanceof Array)) { + x5c = [ x5c ]; + } + + let certChain = ''; + x5c.forEach(cert => { + certChain += '-----BEGIN CERTIFICATE-----\n'; + certChain += cert + '\n'; + certChain += '-----END CERTIFICATE-----\n'; + }); + + return certChain; +} + +function getKeyFromX5Claims(claims) { + return new Promise((resolve, reject) => { + if(claims.x5c) { + resolve(getKeyFromX5c(claims.x5c)); + } else if(claims.x5u) { + resolve(httpGet(claims.x5u).then(getKeyFromX5c)); + } else { + reject('x5c or x5u claims not available'); + } + }); +} + +function getKeyFromJwkKeySetUrl(kid, url) { + return httpGet(url).then(data => { + data = JSON.parse(data); + + if(!data || !data.keys || !(data.keys instanceof Array)) { + throw new Error(`Could not get JWK key set from URL: ${url}`); + } + + for(let i = 0; i < data.keys.length; ++i) { + const jwk = data.keys[i]; + if(jwk.kid === kid) { + return getKeyFromX5Claims(jwk); + } + } + + throw new Error(`Could not find key with kid ${kid} in URL: ${url}`); + }); +} + +export function downloadPublicKeyIfPossible(decodedToken) { + return new Promise((resolve, reject) => { + const header = decodedToken.header; + const payload = decodedToken.payload; + + if(!header.alg || header.alg.indexOf('HS') === 0) { + reject(`Unsupported alg: ${header.alg}`); + return; + } + + if(header.x5c || header.x5u) { + resolve(getKeyFromX5Claims(header)); + } else if(header.jku) { + resolve(getKeyFromJwkKeySetUrl(header.kid, header.jku)); + } else if(header.jwk) { + resolve(getKeyFromX5Claims(header.jwk)); + } else if(header.kid && payload.iss) { + //Auth0-specific scheme + const url = payload.iss + '.well-known/jwks.json'; + resolve(getKeyFromJwkKeySetUrl(header.kid, url)); + } else { + reject('No details about key'); + } + }); +} diff --git a/src/utils.js b/src/utils.js index 2e04853e..394d3e3e 100644 --- a/src/utils.js +++ b/src/utils.js @@ -100,8 +100,3 @@ export function isValidKey(key) { key: key }; } - -export function downloadPublicKeyIfPossible(decodedToken) { - return Promise.reject(); -} - diff --git a/src/website/editor/index.js b/src/website/editor/index.js index 36627756..fb554276 100644 --- a/src/website/editor/index.js +++ b/src/website/editor/index.js @@ -1,5 +1,5 @@ import { copyTextToClipboard } from '../utils.js'; -import { downloadPublicKeyIfPossible } from '../../utils.js'; +import { downloadPublicKeyIfPossible } from '../../public-key-download.js'; import { tooltipHandler } from './tooltip.js'; import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; import { @@ -114,8 +114,8 @@ export function useDefaultToken(algorithm) { if(algorithm.indexOf('HS') === 0) { secretInput.value = defaults.secret; } else { - publicKeyTextArea.firstChild.textContent = defaults.publicKey; - privateKeyTextArea.firstChild.textContent = defaults.privateKey; + publicKeyTextArea.value = defaults.publicKey; + privateKeyTextArea.value = defaults.privateKey; } markAsValid(); @@ -203,7 +203,7 @@ function encodeToken() { const encoded = sign(header, payload, header.alg.indexOf('HS') === 0 ? secretInput.value : - privateKeyTextArea.firstChild.textContent, + privateKeyTextArea.value, secretBase64Checkbox.checked); tokenEditor.setValue(encoded); @@ -224,7 +224,7 @@ function decodeToken() { selectAlgorithm(decoded.header.alg); downloadPublicKeyIfPossible(decoded).then(publicKey => { eventManager.withDisabledEvents(() => { - publicKeyTextArea.firstChild.textContent = publicKey; + publicKeyTextArea.value = publicKey; verifyToken(); }); }); @@ -251,7 +251,7 @@ function verifyToken() { const publicKeyOrSecret = decoded.header.alg.indexOf('HS') === 0 ? secretInput.value : - publicKeyTextArea.firstChild.textContent; + publicKeyTextArea.value; if(verify(jwt, publicKeyOrSecret, secretBase64Checkbox.checked)) { markAsValid(); From 4ddd37aedc488845747a81625165987304ee56f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 11 Jan 2018 00:26:33 -0300 Subject: [PATCH 070/611] Fix tooltips and editor failing to mark invalid tokens when private key is missing. --- src/website/editor/index.js | 4 +++- src/website/editor/tooltip.js | 2 +- views/index.pug | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/website/editor/index.js b/src/website/editor/index.js index fb554276..ce9d7c75 100644 --- a/src/website/editor/index.js +++ b/src/website/editor/index.js @@ -208,7 +208,9 @@ function encodeToken() { tokenEditor.setValue(encoded); } catch(e) { - console.error('Failed to sign/encode token: ', e); + console.error('Failed to sign/encode token: ', e); + markAsInvalid(); + tokenEditor.setValue(''); } verifyToken(); diff --git a/src/website/editor/tooltip.js b/src/website/editor/tooltip.js index 1203ad54..ef820b40 100644 --- a/src/website/editor/tooltip.js +++ b/src/website/editor/tooltip.js @@ -18,7 +18,7 @@ export function tooltipHandler(event) { payloadTooltipElement.style.left = event.pageX + 'px'; payloadTooltipElement.style.top = event.pageY + 'px'; - payloadTooltipElement.style.display = ''; + payloadTooltipElement.style.display = 'block'; } else { payloadTooltipElement.style.display = 'none'; } diff --git a/views/index.pug b/views/index.pug index c6edb0cb..4134d145 100644 --- a/views/index.pug +++ b/views/index.pug @@ -159,7 +159,7 @@ block content p.text-line PAYLOAD: span DATA .js-payload - #js-payload-tooltip + #js-payload-tooltip placeholder .jwt-explained.jwt-signature p.text-line VERIFY SIGNATURE From b09b097b16821a51ac948dfacefae493048f0617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 11 Jan 2018 22:34:02 -0300 Subject: [PATCH 071/611] Grunt watch and general bugfixes. --- Gruntfile.js | 26 +++++++++++++++++++++++++- package.json | 1 + src/jwt.js | 30 ++++++++++++++++++++---------- src/utils.js | 4 ++++ src/website/editor/index.js | 25 ++++++++++++++++++------- src/website/editor/instances.js | 3 ++- stylus/app.styl | 7 ++++--- 7 files changed, 74 insertions(+), 22 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 0574fb2b..d2217442 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -5,6 +5,7 @@ module.exports = grunt => { grunt.loadNpmTasks('grunt-contrib-stylus'); grunt.loadNpmTasks('grunt-contrib-pug'); grunt.loadNpmTasks('grunt-webpack'); + grunt.loadNpmTasks('grunt-contrib-watch'); grunt.initConfig({ copy: { @@ -44,9 +45,32 @@ module.exports = grunt => { webpack: { prod: websiteWebpackConfig, dev: websiteWebpackConfig + }, + watch: { + js: { + files: 'src/**', + tasks: 'webpack' + }, + assets: { + files: [ + 'img/**', + 'fonts/**', + 'assets/**', + 'opensearch.xml', + 'node_modules/bootstrap/dist/css/bootstrap.min.css', + 'node_modules/codemirror/lib/codemirror.css', + 'node_modules/codemirror/addon/lint/lint.css', + 'css/budicon.css' + ], + tasks: 'copy' + }, + views: { + files: ['stylus/**', 'views/**'], + tasks: ['stylus', 'pug'] + } } }); grunt.registerTask('build', ['copy', 'stylus', 'pug', 'webpack']); - grunt.registerTask('default', ['build']); + grunt.registerTask('default', ['build', 'watch']); }; diff --git a/package.json b/package.json index a3dcbea6..49f87895 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "grunt-contrib-copy": "^1.0.0", "grunt-contrib-pug": "^1.0.0", "grunt-contrib-stylus": "^1.2.0", + "grunt-contrib-watch": "^1.0.0", "grunt-webpack": "^3.0.2", "highlight.js": "^9.12.0", "isotope-layout": "^3.0.5", diff --git a/src/jwt.js b/src/jwt.js index 7745a61d..10ad9c6a 100644 --- a/src/jwt.js +++ b/src/jwt.js @@ -31,29 +31,39 @@ export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { return false; } - if(decoded.header.alg.indexOf('HS') === 0) { - return jws.JWS.verify(jwt, - base64Secret ? - b64utohex(secretOrPublicKeyString) : - utf8tohex(secretOrPublicKeyString)); - } else { - return jws.JWS.verify(jwt, secretOrPublicKeyString); + try { + if(decoded.header.alg.indexOf('HS') === 0) { + return jws.JWS.verify(jwt, + base64Secret ? + b64utohex(secretOrPublicKeyString) : + utf8tohex(secretOrPublicKeyString)); + } else { + return jws.JWS.verify(jwt, secretOrPublicKeyString); + } + } catch(e) { + console.error('Could not verify token, ' + + 'probably due to bad data in it or the keys: ', e); + return false; } } export function decode(jwt) { const split = jwt.split('.'); - const result = {}; + const result = { + errors: false + }; try { result.header = JSON.parse(b64utoutf8(split[0])); } catch(e) { - result.header = ''; + result.header = {}; + result.errors = true; } try { result.payload = JSON.parse(b64utoutf8(split[1])); } catch(e) { - result.payload = ''; + result.payload = {}; + result.errors = true; } return result; diff --git a/src/utils.js b/src/utils.js index 394d3e3e..b1cf7699 100644 --- a/src/utils.js +++ b/src/utils.js @@ -100,3 +100,7 @@ export function isValidKey(key) { key: key }; } + +export function deferToNextLoop(func) { + setTimeout(func, 1); +} diff --git a/src/website/editor/index.js b/src/website/editor/index.js index ce9d7c75..ff35a419 100644 --- a/src/website/editor/index.js +++ b/src/website/editor/index.js @@ -1,4 +1,5 @@ import { copyTextToClipboard } from '../utils.js'; +import { deferToNextLoop } from '../../utils.js'; import { downloadPublicKeyIfPossible } from '../../public-key-download.js'; import { tooltipHandler } from './tooltip.js'; import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; @@ -73,7 +74,7 @@ function displaySecretOrKeys(algorithm) { keyEditorContainer.style.display = ''; } - fixEditorHeight(); + deferToNextLoop(fixEditorHeight); } function selectAlgorithm(algorithm) { @@ -175,6 +176,8 @@ function markAsInvalidWithElement(element, clearTokenEditor = true) { } function encodeToken() { + deferToNextLoop(fixEditorHeight); + eventManager.withDisabledEvents(() => { let header; try { @@ -218,23 +221,31 @@ function encodeToken() { } function decodeToken() { + deferToNextLoop(fixEditorHeight); + eventManager.withDisabledEvents(() => { try { const jwt = getTrimmedValue(tokenEditor); const decoded = decode(jwt); selectAlgorithm(decoded.header.alg); - downloadPublicKeyIfPossible(decoded).then(publicKey => { - eventManager.withDisabledEvents(() => { - publicKeyTextArea.value = publicKey; - verifyToken(); + if(decoded.header.alg && decoded.header.alg.indexOf('HS') === -1) { + downloadPublicKeyIfPossible(decoded).then(publicKey => { + eventManager.withDisabledEvents(() => { + publicKeyTextArea.value = publicKey; + verifyToken(); + }); }); - }); + } headerEditor.setValue(stringify(decoded.header)); payloadEditor.setValue(stringify(decoded.payload)); - verifyToken(); + if(decoded.errors) { + markAsInvalidWithElement(editorElement, false); + } else { + verifyToken(); + } } catch(e) { console.error('Failed to decode token: ', e); } diff --git a/src/website/editor/instances.js b/src/website/editor/instances.js index de78a194..c88551fc 100644 --- a/src/website/editor/instances.js +++ b/src/website/editor/instances.js @@ -16,7 +16,8 @@ const jsonEditorOptions = { instance.replaceSelection(' ', 'end'); } }, - lint: true + lint: true, + scrollbarStyle: 'null' }; const tokenEditorOptions = Object.assign({}, jsonEditorOptions, { diff --git a/stylus/app.styl b/stylus/app.styl index 8055a550..50c22815 100644 --- a/stylus/app.styl +++ b/stylus/app.styl @@ -518,6 +518,9 @@ body +breakpoint("tablet") grid(2, 30px, '.box-content') + .error .CodeMirror + background-color #ffc0cb + .box-content height 0 overflow hidden @@ -576,9 +579,7 @@ body textarea width 100% max-width 266px - resize none - &.error - background-color #ffc0cb + resize none .validation-status text-transform capitalize From a22264edad55d1b79d9c8df758a91015eecd326d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 11 Jan 2018 23:07:44 -0300 Subject: [PATCH 072/611] Remove unnecessary languages for highlighting. --- src/website/highlighting.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/website/highlighting.js b/src/website/highlighting.js index 4fca0bf6..0607cae8 100644 --- a/src/website/highlighting.js +++ b/src/website/highlighting.js @@ -1,6 +1,11 @@ import { codeElements } from './dom-elements.js'; -import hljs from 'highlight.js'; +import hljs from 'highlight.js/lib/highlight.js'; +import jsHighlight from 'highlight.js/lib/languages/javascript'; +import jsonHighlight from 'highlight.js/lib/languages/json'; + +hljs.registerLanguage('javascript', jsHighlight); +hljs.registerLanguage('json', jsonHighlight); export function setupHighlighting() { // TODO: consider replacing this with CodeMirror, which we already use. From 0d945c34b745c46ec16e1a9605790033f874c092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 11 Jan 2018 23:40:04 -0300 Subject: [PATCH 073/611] Fix CodeMirror scrolling. --- stylus/app.styl | 1 - stylus/codemirror.styl | 8 +++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/stylus/app.styl b/stylus/app.styl index 50c22815..dcb5fc1c 100644 --- a/stylus/app.styl +++ b/stylus/app.styl @@ -535,7 +535,6 @@ body .input padding 10px - overflow scroll +breakpoint("tablet") padding 20px // &[data-alg="HS256"] diff --git a/stylus/codemirror.styl b/stylus/codemirror.styl index e8c5304d..f3fef468 100644 --- a/stylus/codemirror.styl +++ b/stylus/codemirror.styl @@ -2,11 +2,17 @@ zoom 1 font-family 'Roboto Mono', Menlo outline none - height auto + height 100% * outline none box-shadow none +.CodeMirror-scroll + overflow hidden !important + margin-bottom 0 + margin-right 0 + padding-bottom 0 + .jwt-playground .input &.error background pink From 1ba57dee6cd176a9c33273f58826a34d2ff44b23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 11 Jan 2018 23:58:19 -0300 Subject: [PATCH 074/611] Fix debugger tabs (encode/decode) on mobile screens. --- src/website/dom-elements.js | 6 ++++++ src/website/editor/index.js | 30 +++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/website/dom-elements.js b/src/website/dom-elements.js index 4d46d67c..37b8a066 100644 --- a/src/website/dom-elements.js +++ b/src/website/dom-elements.js @@ -15,6 +15,12 @@ export const codeElements = document.querySelectorAll('.plain-text pre code'); export const debuggerSection = document.getElementById('debugger-io'); +export const encodedTabLink = + document.querySelector('.tab-link a[href="#encoded-jwt"]'); +export const decodedTabLink = + document.querySelector('.tab-link a[href="#decoded-jwt"]'); +export const encodedTabElement = document.getElementById('encoded-jwt'); +export const decodedTabElement = document.getElementById('decoded-jwt'); export const editorElement = document.querySelector('#encoded-jwt .input'); export const decodedElement = document.querySelector('#decoded-jwt .output'); export const headerElement = document.querySelector('.js-header'); diff --git a/src/website/editor/index.js b/src/website/editor/index.js index ff35a419..22aaeab5 100644 --- a/src/website/editor/index.js +++ b/src/website/editor/index.js @@ -27,7 +27,11 @@ import { rsaShaTextSpan, keyEditorContainer, secretEditorContainer, - secretBase64Checkbox + secretBase64Checkbox, + encodedTabLink, + decodedTabLink, + encodedTabElement, + decodedTabElement } from '../dom-elements.js'; // The event manager lets us enable/disable events as needed without @@ -273,6 +277,28 @@ function verifyToken() { } } +function setupTabEvents() { + // These are relevant for portrait or mobile screens. + + encodedTabLink.addEventListener('click', event => { + event.preventDefault(); + + decodedTabLink.parentNode.classList.remove('current'); + encodedTabLink.parentNode.classList.add('current'); + decodedTabElement.classList.remove('current'); + encodedTabElement.classList.add('current'); + }); + + decodedTabLink.addEventListener('click', event => { + event.preventDefault(); + + encodedTabLink.parentNode.classList.remove('current'); + decodedTabLink.parentNode.classList.add('current'); + encodedTabElement.classList.remove('current'); + decodedTabElement.classList.add('current'); + }); +} + function setupEvents() { // The event manager lets us enable/disable events as needed without // manually tracking them. Events that need to be disabled should be @@ -301,6 +327,8 @@ function setupEvents() { payloadElement.addEventListener('mousemove', tooltipHandler); // Temporary (share button not ready yet) signatureStatusElement.addEventListener('click', copyTokenLink); + + setupTabEvents(); } export function setTokenEditorValue(value) { From ddc0e6711e630dfc4361a30e677aaaf687304bdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 12 Jan 2018 17:06:05 -0300 Subject: [PATCH 075/611] Preparations for extension/website merge. --- Gruntfile.js | 25 ++++++++++++------- package.json | 5 +++- views/{ => website}/counter.pug | 0 views/{ => website}/index.pug | 0 views/{ => website}/introduction.pug | 0 views/{ => website}/layout.pug | 0 views/{ => website}/libraries/1c.pug | 0 views/{ => website}/libraries/c.pug | 0 views/{ => website}/libraries/c2.pug | 0 views/{ => website}/libraries/clojure.pug | 0 views/{ => website}/libraries/crystal.pug | 0 views/{ => website}/libraries/d.pug | 0 views/{ => website}/libraries/d2.pug | 0 views/{ => website}/libraries/delphi.pug | 0 views/{ => website}/libraries/delphi2.pug | 0 views/{ => website}/libraries/elixir.pug | 0 views/{ => website}/libraries/elixir2.pug | 0 views/{ => website}/libraries/elixir3.pug | 0 views/{ => website}/libraries/go.pug | 0 views/{ => website}/libraries/go2.pug | 0 views/{ => website}/libraries/go3.pug | 0 views/{ => website}/libraries/go4.pug | 0 views/{ => website}/libraries/go5.pug | 0 views/{ => website}/libraries/go6.pug | 0 views/{ => website}/libraries/go7.pug | 0 views/{ => website}/libraries/go8.pug | 0 views/{ => website}/libraries/groovy.pug | 0 views/{ => website}/libraries/haskell.pug | 0 views/{ => website}/libraries/haskell2.pug | 0 views/{ => website}/libraries/haxe.pug | 0 views/{ => website}/libraries/java.pug | 0 views/{ => website}/libraries/java2.pug | 0 views/{ => website}/libraries/java3.pug | 0 views/{ => website}/libraries/java4.pug | 0 views/{ => website}/libraries/java5.pug | 0 views/{ => website}/libraries/java6.pug | 0 views/{ => website}/libraries/js.pug | 0 views/{ => website}/libraries/js2.pug | 0 views/{ => website}/libraries/lua.pug | 0 views/{ => website}/libraries/net.pug | 0 views/{ => website}/libraries/net2.pug | 0 views/{ => website}/libraries/netrt.pug | 0 views/{ => website}/libraries/node.pug | 0 views/{ => website}/libraries/objective-c.pug | 0 views/{ => website}/libraries/perl5.pug | 0 views/{ => website}/libraries/php.pug | 0 views/{ => website}/libraries/php3.pug | 0 views/{ => website}/libraries/php4.pug | 0 views/{ => website}/libraries/php5.pug | 0 views/{ => website}/libraries/php6.pug | 0 views/{ => website}/libraries/php7.pug | 0 views/{ => website}/libraries/php8.pug | 0 views/{ => website}/libraries/postgresql.pug | 0 views/{ => website}/libraries/python.pug | 0 views/{ => website}/libraries/python2.pug | 0 views/{ => website}/libraries/python3.pug | 0 views/{ => website}/libraries/q.pug | 0 views/{ => website}/libraries/ruby.pug | 0 views/{ => website}/libraries/ruby2.pug | 0 views/{ => website}/libraries/ruby3.pug | 0 views/{ => website}/libraries/ruby4.pug | 0 views/{ => website}/libraries/rust.pug | 0 views/{ => website}/libraries/rust2.pug | 0 views/{ => website}/libraries/rust3.pug | 0 views/{ => website}/libraries/scala.pug | 0 views/{ => website}/libraries/scala2.pug | 0 views/{ => website}/libraries/scala3.pug | 0 views/{ => website}/libraries/scala4.pug | 0 views/{ => website}/libraries/swift.pug | 0 views/{ => website}/libraries/swift2.pug | 0 views/{ => website}/md/introduction.md | 0 ...ebpack.config.js => webpack.website-dev.js | 0 webpack.website-prod.js | 11 ++++++++ 73 files changed, 31 insertions(+), 10 deletions(-) rename views/{ => website}/counter.pug (100%) rename views/{ => website}/index.pug (100%) rename views/{ => website}/introduction.pug (100%) rename views/{ => website}/layout.pug (100%) rename views/{ => website}/libraries/1c.pug (100%) rename views/{ => website}/libraries/c.pug (100%) rename views/{ => website}/libraries/c2.pug (100%) rename views/{ => website}/libraries/clojure.pug (100%) rename views/{ => website}/libraries/crystal.pug (100%) rename views/{ => website}/libraries/d.pug (100%) rename views/{ => website}/libraries/d2.pug (100%) rename views/{ => website}/libraries/delphi.pug (100%) rename views/{ => website}/libraries/delphi2.pug (100%) rename views/{ => website}/libraries/elixir.pug (100%) rename views/{ => website}/libraries/elixir2.pug (100%) rename views/{ => website}/libraries/elixir3.pug (100%) rename views/{ => website}/libraries/go.pug (100%) rename views/{ => website}/libraries/go2.pug (100%) rename views/{ => website}/libraries/go3.pug (100%) rename views/{ => website}/libraries/go4.pug (100%) rename views/{ => website}/libraries/go5.pug (100%) rename views/{ => website}/libraries/go6.pug (100%) rename views/{ => website}/libraries/go7.pug (100%) rename views/{ => website}/libraries/go8.pug (100%) rename views/{ => website}/libraries/groovy.pug (100%) rename views/{ => website}/libraries/haskell.pug (100%) rename views/{ => website}/libraries/haskell2.pug (100%) rename views/{ => website}/libraries/haxe.pug (100%) rename views/{ => website}/libraries/java.pug (100%) rename views/{ => website}/libraries/java2.pug (100%) rename views/{ => website}/libraries/java3.pug (100%) rename views/{ => website}/libraries/java4.pug (100%) rename views/{ => website}/libraries/java5.pug (100%) rename views/{ => website}/libraries/java6.pug (100%) rename views/{ => website}/libraries/js.pug (100%) rename views/{ => website}/libraries/js2.pug (100%) rename views/{ => website}/libraries/lua.pug (100%) rename views/{ => website}/libraries/net.pug (100%) rename views/{ => website}/libraries/net2.pug (100%) rename views/{ => website}/libraries/netrt.pug (100%) rename views/{ => website}/libraries/node.pug (100%) rename views/{ => website}/libraries/objective-c.pug (100%) rename views/{ => website}/libraries/perl5.pug (100%) rename views/{ => website}/libraries/php.pug (100%) rename views/{ => website}/libraries/php3.pug (100%) rename views/{ => website}/libraries/php4.pug (100%) rename views/{ => website}/libraries/php5.pug (100%) rename views/{ => website}/libraries/php6.pug (100%) rename views/{ => website}/libraries/php7.pug (100%) rename views/{ => website}/libraries/php8.pug (100%) rename views/{ => website}/libraries/postgresql.pug (100%) rename views/{ => website}/libraries/python.pug (100%) rename views/{ => website}/libraries/python2.pug (100%) rename views/{ => website}/libraries/python3.pug (100%) rename views/{ => website}/libraries/q.pug (100%) rename views/{ => website}/libraries/ruby.pug (100%) rename views/{ => website}/libraries/ruby2.pug (100%) rename views/{ => website}/libraries/ruby3.pug (100%) rename views/{ => website}/libraries/ruby4.pug (100%) rename views/{ => website}/libraries/rust.pug (100%) rename views/{ => website}/libraries/rust2.pug (100%) rename views/{ => website}/libraries/rust3.pug (100%) rename views/{ => website}/libraries/scala.pug (100%) rename views/{ => website}/libraries/scala2.pug (100%) rename views/{ => website}/libraries/scala3.pug (100%) rename views/{ => website}/libraries/scala4.pug (100%) rename views/{ => website}/libraries/swift.pug (100%) rename views/{ => website}/libraries/swift2.pug (100%) rename views/{ => website}/md/introduction.md (100%) rename website.webpack.config.js => webpack.website-dev.js (100%) create mode 100644 webpack.website-prod.js diff --git a/Gruntfile.js b/Gruntfile.js index d2217442..a60b265e 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,4 +1,5 @@ -const websiteWebpackConfig = require('./website.webpack.config.js'); +const websiteWebpackConfigDev = require('./webpack.website-dev.js'); +const websiteWebpackConfigProd = require('./webpack.website-prod.js'); module.exports = grunt => { grunt.loadNpmTasks('grunt-contrib-copy'); @@ -6,8 +7,10 @@ module.exports = grunt => { grunt.loadNpmTasks('grunt-contrib-pug'); grunt.loadNpmTasks('grunt-webpack'); grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-clean'); grunt.initConfig({ + clean: [ 'dist' ], copy: { main: { files: [{ @@ -37,19 +40,20 @@ module.exports = grunt => { pug: { compile: { files: { - 'dist/website/index.html': 'views/index.pug', - 'dist/website/introduction/index.html': 'views/introduction.pug' + 'dist/website/index.html': 'views/website/index.pug', + 'dist/website/introduction/index.html': + 'views/website/introduction.pug' } } }, webpack: { - prod: websiteWebpackConfig, - dev: websiteWebpackConfig + prod: websiteWebpackConfigProd, + dev: websiteWebpackConfigDev }, watch: { js: { files: 'src/**', - tasks: 'webpack' + tasks: 'webpack:dev' }, assets: { files: [ @@ -66,11 +70,14 @@ module.exports = grunt => { }, views: { files: ['stylus/**', 'views/**'], - tasks: ['stylus', 'pug'] + tasks: ['build-views'] } } }); - grunt.registerTask('build', ['copy', 'stylus', 'pug', 'webpack']); - grunt.registerTask('default', ['build', 'watch']); + grunt.registerTask('build-views', ['stylus', 'pug']); + grunt.registerTask('build', ['clean', 'copy', 'build-views', 'webpack:prod']); + grunt.registerTask('build-dev', + ['clean', 'copy', 'build-views', 'webpack:dev']); + grunt.registerTask('default', ['build-dev', 'watch']); }; diff --git a/package.json b/package.json index 49f87895..37f6c0e1 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "flipclock": "^0.7.8", "grunt": "^1.0.1", "grunt-cli": "^1.2.0", + "grunt-contrib-clean": "^1.1.0", "grunt-contrib-copy": "^1.0.0", "grunt-contrib-pug": "^1.0.0", "grunt-contrib-stylus": "^1.2.0", @@ -28,7 +29,9 @@ "jstransformer-markdown-it": "^2.0.0", "pug": "^2.0.0-rc.4", "stylus": "^0.54.5", - "webpack": "^3.10.0" + "uglifyjs-webpack-plugin": "^1.1.6", + "webpack": "^3.10.0", + "webpack-merge": "^4.1.1" }, "scripts": { "test": "echo UNIMPLEMENTED", diff --git a/views/counter.pug b/views/website/counter.pug similarity index 100% rename from views/counter.pug rename to views/website/counter.pug diff --git a/views/index.pug b/views/website/index.pug similarity index 100% rename from views/index.pug rename to views/website/index.pug diff --git a/views/introduction.pug b/views/website/introduction.pug similarity index 100% rename from views/introduction.pug rename to views/website/introduction.pug diff --git a/views/layout.pug b/views/website/layout.pug similarity index 100% rename from views/layout.pug rename to views/website/layout.pug diff --git a/views/libraries/1c.pug b/views/website/libraries/1c.pug similarity index 100% rename from views/libraries/1c.pug rename to views/website/libraries/1c.pug diff --git a/views/libraries/c.pug b/views/website/libraries/c.pug similarity index 100% rename from views/libraries/c.pug rename to views/website/libraries/c.pug diff --git a/views/libraries/c2.pug b/views/website/libraries/c2.pug similarity index 100% rename from views/libraries/c2.pug rename to views/website/libraries/c2.pug diff --git a/views/libraries/clojure.pug b/views/website/libraries/clojure.pug similarity index 100% rename from views/libraries/clojure.pug rename to views/website/libraries/clojure.pug diff --git a/views/libraries/crystal.pug b/views/website/libraries/crystal.pug similarity index 100% rename from views/libraries/crystal.pug rename to views/website/libraries/crystal.pug diff --git a/views/libraries/d.pug b/views/website/libraries/d.pug similarity index 100% rename from views/libraries/d.pug rename to views/website/libraries/d.pug diff --git a/views/libraries/d2.pug b/views/website/libraries/d2.pug similarity index 100% rename from views/libraries/d2.pug rename to views/website/libraries/d2.pug diff --git a/views/libraries/delphi.pug b/views/website/libraries/delphi.pug similarity index 100% rename from views/libraries/delphi.pug rename to views/website/libraries/delphi.pug diff --git a/views/libraries/delphi2.pug b/views/website/libraries/delphi2.pug similarity index 100% rename from views/libraries/delphi2.pug rename to views/website/libraries/delphi2.pug diff --git a/views/libraries/elixir.pug b/views/website/libraries/elixir.pug similarity index 100% rename from views/libraries/elixir.pug rename to views/website/libraries/elixir.pug diff --git a/views/libraries/elixir2.pug b/views/website/libraries/elixir2.pug similarity index 100% rename from views/libraries/elixir2.pug rename to views/website/libraries/elixir2.pug diff --git a/views/libraries/elixir3.pug b/views/website/libraries/elixir3.pug similarity index 100% rename from views/libraries/elixir3.pug rename to views/website/libraries/elixir3.pug diff --git a/views/libraries/go.pug b/views/website/libraries/go.pug similarity index 100% rename from views/libraries/go.pug rename to views/website/libraries/go.pug diff --git a/views/libraries/go2.pug b/views/website/libraries/go2.pug similarity index 100% rename from views/libraries/go2.pug rename to views/website/libraries/go2.pug diff --git a/views/libraries/go3.pug b/views/website/libraries/go3.pug similarity index 100% rename from views/libraries/go3.pug rename to views/website/libraries/go3.pug diff --git a/views/libraries/go4.pug b/views/website/libraries/go4.pug similarity index 100% rename from views/libraries/go4.pug rename to views/website/libraries/go4.pug diff --git a/views/libraries/go5.pug b/views/website/libraries/go5.pug similarity index 100% rename from views/libraries/go5.pug rename to views/website/libraries/go5.pug diff --git a/views/libraries/go6.pug b/views/website/libraries/go6.pug similarity index 100% rename from views/libraries/go6.pug rename to views/website/libraries/go6.pug diff --git a/views/libraries/go7.pug b/views/website/libraries/go7.pug similarity index 100% rename from views/libraries/go7.pug rename to views/website/libraries/go7.pug diff --git a/views/libraries/go8.pug b/views/website/libraries/go8.pug similarity index 100% rename from views/libraries/go8.pug rename to views/website/libraries/go8.pug diff --git a/views/libraries/groovy.pug b/views/website/libraries/groovy.pug similarity index 100% rename from views/libraries/groovy.pug rename to views/website/libraries/groovy.pug diff --git a/views/libraries/haskell.pug b/views/website/libraries/haskell.pug similarity index 100% rename from views/libraries/haskell.pug rename to views/website/libraries/haskell.pug diff --git a/views/libraries/haskell2.pug b/views/website/libraries/haskell2.pug similarity index 100% rename from views/libraries/haskell2.pug rename to views/website/libraries/haskell2.pug diff --git a/views/libraries/haxe.pug b/views/website/libraries/haxe.pug similarity index 100% rename from views/libraries/haxe.pug rename to views/website/libraries/haxe.pug diff --git a/views/libraries/java.pug b/views/website/libraries/java.pug similarity index 100% rename from views/libraries/java.pug rename to views/website/libraries/java.pug diff --git a/views/libraries/java2.pug b/views/website/libraries/java2.pug similarity index 100% rename from views/libraries/java2.pug rename to views/website/libraries/java2.pug diff --git a/views/libraries/java3.pug b/views/website/libraries/java3.pug similarity index 100% rename from views/libraries/java3.pug rename to views/website/libraries/java3.pug diff --git a/views/libraries/java4.pug b/views/website/libraries/java4.pug similarity index 100% rename from views/libraries/java4.pug rename to views/website/libraries/java4.pug diff --git a/views/libraries/java5.pug b/views/website/libraries/java5.pug similarity index 100% rename from views/libraries/java5.pug rename to views/website/libraries/java5.pug diff --git a/views/libraries/java6.pug b/views/website/libraries/java6.pug similarity index 100% rename from views/libraries/java6.pug rename to views/website/libraries/java6.pug diff --git a/views/libraries/js.pug b/views/website/libraries/js.pug similarity index 100% rename from views/libraries/js.pug rename to views/website/libraries/js.pug diff --git a/views/libraries/js2.pug b/views/website/libraries/js2.pug similarity index 100% rename from views/libraries/js2.pug rename to views/website/libraries/js2.pug diff --git a/views/libraries/lua.pug b/views/website/libraries/lua.pug similarity index 100% rename from views/libraries/lua.pug rename to views/website/libraries/lua.pug diff --git a/views/libraries/net.pug b/views/website/libraries/net.pug similarity index 100% rename from views/libraries/net.pug rename to views/website/libraries/net.pug diff --git a/views/libraries/net2.pug b/views/website/libraries/net2.pug similarity index 100% rename from views/libraries/net2.pug rename to views/website/libraries/net2.pug diff --git a/views/libraries/netrt.pug b/views/website/libraries/netrt.pug similarity index 100% rename from views/libraries/netrt.pug rename to views/website/libraries/netrt.pug diff --git a/views/libraries/node.pug b/views/website/libraries/node.pug similarity index 100% rename from views/libraries/node.pug rename to views/website/libraries/node.pug diff --git a/views/libraries/objective-c.pug b/views/website/libraries/objective-c.pug similarity index 100% rename from views/libraries/objective-c.pug rename to views/website/libraries/objective-c.pug diff --git a/views/libraries/perl5.pug b/views/website/libraries/perl5.pug similarity index 100% rename from views/libraries/perl5.pug rename to views/website/libraries/perl5.pug diff --git a/views/libraries/php.pug b/views/website/libraries/php.pug similarity index 100% rename from views/libraries/php.pug rename to views/website/libraries/php.pug diff --git a/views/libraries/php3.pug b/views/website/libraries/php3.pug similarity index 100% rename from views/libraries/php3.pug rename to views/website/libraries/php3.pug diff --git a/views/libraries/php4.pug b/views/website/libraries/php4.pug similarity index 100% rename from views/libraries/php4.pug rename to views/website/libraries/php4.pug diff --git a/views/libraries/php5.pug b/views/website/libraries/php5.pug similarity index 100% rename from views/libraries/php5.pug rename to views/website/libraries/php5.pug diff --git a/views/libraries/php6.pug b/views/website/libraries/php6.pug similarity index 100% rename from views/libraries/php6.pug rename to views/website/libraries/php6.pug diff --git a/views/libraries/php7.pug b/views/website/libraries/php7.pug similarity index 100% rename from views/libraries/php7.pug rename to views/website/libraries/php7.pug diff --git a/views/libraries/php8.pug b/views/website/libraries/php8.pug similarity index 100% rename from views/libraries/php8.pug rename to views/website/libraries/php8.pug diff --git a/views/libraries/postgresql.pug b/views/website/libraries/postgresql.pug similarity index 100% rename from views/libraries/postgresql.pug rename to views/website/libraries/postgresql.pug diff --git a/views/libraries/python.pug b/views/website/libraries/python.pug similarity index 100% rename from views/libraries/python.pug rename to views/website/libraries/python.pug diff --git a/views/libraries/python2.pug b/views/website/libraries/python2.pug similarity index 100% rename from views/libraries/python2.pug rename to views/website/libraries/python2.pug diff --git a/views/libraries/python3.pug b/views/website/libraries/python3.pug similarity index 100% rename from views/libraries/python3.pug rename to views/website/libraries/python3.pug diff --git a/views/libraries/q.pug b/views/website/libraries/q.pug similarity index 100% rename from views/libraries/q.pug rename to views/website/libraries/q.pug diff --git a/views/libraries/ruby.pug b/views/website/libraries/ruby.pug similarity index 100% rename from views/libraries/ruby.pug rename to views/website/libraries/ruby.pug diff --git a/views/libraries/ruby2.pug b/views/website/libraries/ruby2.pug similarity index 100% rename from views/libraries/ruby2.pug rename to views/website/libraries/ruby2.pug diff --git a/views/libraries/ruby3.pug b/views/website/libraries/ruby3.pug similarity index 100% rename from views/libraries/ruby3.pug rename to views/website/libraries/ruby3.pug diff --git a/views/libraries/ruby4.pug b/views/website/libraries/ruby4.pug similarity index 100% rename from views/libraries/ruby4.pug rename to views/website/libraries/ruby4.pug diff --git a/views/libraries/rust.pug b/views/website/libraries/rust.pug similarity index 100% rename from views/libraries/rust.pug rename to views/website/libraries/rust.pug diff --git a/views/libraries/rust2.pug b/views/website/libraries/rust2.pug similarity index 100% rename from views/libraries/rust2.pug rename to views/website/libraries/rust2.pug diff --git a/views/libraries/rust3.pug b/views/website/libraries/rust3.pug similarity index 100% rename from views/libraries/rust3.pug rename to views/website/libraries/rust3.pug diff --git a/views/libraries/scala.pug b/views/website/libraries/scala.pug similarity index 100% rename from views/libraries/scala.pug rename to views/website/libraries/scala.pug diff --git a/views/libraries/scala2.pug b/views/website/libraries/scala2.pug similarity index 100% rename from views/libraries/scala2.pug rename to views/website/libraries/scala2.pug diff --git a/views/libraries/scala3.pug b/views/website/libraries/scala3.pug similarity index 100% rename from views/libraries/scala3.pug rename to views/website/libraries/scala3.pug diff --git a/views/libraries/scala4.pug b/views/website/libraries/scala4.pug similarity index 100% rename from views/libraries/scala4.pug rename to views/website/libraries/scala4.pug diff --git a/views/libraries/swift.pug b/views/website/libraries/swift.pug similarity index 100% rename from views/libraries/swift.pug rename to views/website/libraries/swift.pug diff --git a/views/libraries/swift2.pug b/views/website/libraries/swift2.pug similarity index 100% rename from views/libraries/swift2.pug rename to views/website/libraries/swift2.pug diff --git a/views/md/introduction.md b/views/website/md/introduction.md similarity index 100% rename from views/md/introduction.md rename to views/website/md/introduction.md diff --git a/website.webpack.config.js b/webpack.website-dev.js similarity index 100% rename from website.webpack.config.js rename to webpack.website-dev.js diff --git a/webpack.website-prod.js b/webpack.website-prod.js new file mode 100644 index 00000000..d82e97f7 --- /dev/null +++ b/webpack.website-prod.js @@ -0,0 +1,11 @@ +const webpack = require('webpack'); +const merge = require('webpack-merge'); +const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); + +const devConfig = require('./webpack.website-dev.js'); + +module.exports = merge(devConfig, { + plugins: [ + new UglifyJsPlugin() + ] +}); From 74677947e505513477bdf08d5ec76b537fc708bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 12 Jan 2018 19:50:19 -0300 Subject: [PATCH 076/611] More preparations for extension/website merge. Extra algs enabled. --- Gruntfile.js | 3 +- css/google-roboto-mono.css | 56 +++++++ src/website/index.js | 11 ++ views/extension/index.pug | 0 views/extension/layout.pug | 10 ++ views/icons.pug | 17 +++ views/stylesheets.pug | 6 + views/title.pug | 7 + views/token-editor.pug | 67 ++++++++ views/website/assets.pug | 40 +++++ views/website/ebook.pug | 5 + views/website/extension.pug | 17 +++ views/website/index.pug | 294 +----------------------------------- views/website/layout.pug | 43 +----- views/website/libraries.pug | 114 ++++++++++++++ 15 files changed, 360 insertions(+), 330 deletions(-) create mode 100644 css/google-roboto-mono.css create mode 100644 views/extension/index.pug create mode 100644 views/extension/layout.pug create mode 100644 views/icons.pug create mode 100644 views/stylesheets.pug create mode 100644 views/title.pug create mode 100644 views/token-editor.pug create mode 100644 views/website/assets.pug create mode 100644 views/website/ebook.pug create mode 100644 views/website/extension.pug create mode 100644 views/website/libraries.pug diff --git a/Gruntfile.js b/Gruntfile.js index a60b265e..bba76220 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -24,7 +24,8 @@ module.exports = grunt => { 'node_modules/bootstrap/dist/css/bootstrap.min.css', 'node_modules/codemirror/lib/codemirror.css', 'node_modules/codemirror/addon/lint/lint.css', - 'css/budicon.css' + 'css/budicon.css', + 'css/google-roboto-mono.css' ], dest: 'dist/website/css/' }] diff --git a/css/google-roboto-mono.css b/css/google-roboto-mono.css new file mode 100644 index 00000000..9fe85925 --- /dev/null +++ b/css/google-roboto-mono.css @@ -0,0 +1,56 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpYzTOQ_MqJVwkKsUn0wKzc2I.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpYzUj_cnvWIuuBMVgbX098Mw.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpY0bcKLIaa1LC45dFaAfauRA.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpY2o_sUJ8uO4YLWRInS22T3Y.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpY76up8jxqWt8HVA3mDhkV_0.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpYyYE0-AqJ3nfInTTiDXDjU4.woff2) format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpY44P5ICox8Kq3LLUNMylGO4.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2212, U+2215; +} diff --git a/src/website/index.js b/src/website/index.js index 5f14db2c..6b70ce1a 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -56,6 +56,16 @@ function loadToken() { } } +function pickEbookOrExtensionBanner() { + var extensionSection = document.getElementsByClassName("update-site")[0]; + var ebookSection = document.getElementsByClassName("jtw-ebook-banner")[0]; + if (Math.random() >= .5) { + extensionSection.style.display = 'block'; + } else { + ebookSection.style.display = 'block'; + } +} + // Initialization setupNavbar(); setupExtensionButton(); @@ -66,3 +76,4 @@ loadToken(); parseLocationQuery(); setupHighlighting(); setupJwtCounter(); +pickEbookOrExtensionBanner(); diff --git a/views/extension/index.pug b/views/extension/index.pug new file mode 100644 index 00000000..e69de29b diff --git a/views/extension/layout.pug b/views/extension/layout.pug new file mode 100644 index 00000000..8e8f5729 --- /dev/null +++ b/views/extension/layout.pug @@ -0,0 +1,10 @@ +doctype html +html(lang='en') + head + include ../title.pug + include ../stylesheets.pug + include ../icons.pug + + body + block content + diff --git a/views/icons.pug b/views/icons.pug new file mode 100644 index 00000000..2a4aa1ab --- /dev/null +++ b/views/icons.pug @@ -0,0 +1,17 @@ +link(rel='apple-touch-icon', sizes='57x57', href='http://github.com/img/favicon/apple-icon-57x57.png') +link(rel='apple-touch-icon', sizes='60x60', href='http://github.com/img/favicon/apple-icon-60x60.png') +link(rel='apple-touch-icon', sizes='72x72', href='http://github.com/img/favicon/apple-icon-72x72.png') +link(rel='apple-touch-icon', sizes='76x76', href='http://github.com/img/favicon/apple-icon-76x76.png') +link(rel='apple-touch-icon', sizes='114x114', href='http://github.com/img/favicon/apple-icon-114x114.png') +link(rel='apple-touch-icon', sizes='120x120', href='http://github.com/img/favicon/apple-icon-120x120.png') +link(rel='apple-touch-icon', sizes='144x144', href='http://github.com/img/favicon/apple-icon-144x144.png') +link(rel='apple-touch-icon', sizes='152x152', href='http://github.com/img/favicon/apple-icon-152x152.png') +link(rel='apple-touch-icon', sizes='180x180', href='http://github.com/img/favicon/apple-icon-180x180.png') +link(rel='icon', type='image/png', sizes='192x192', href='http://github.com/img/favicon/android-icon-192x192.png') +link(rel='icon', type='image/png', sizes='32x32', href='http://github.com/img/favicon/favicon-32x32.png') +link(rel='icon', type='image/png', sizes='96x96', href='http://github.com/img/favicon/favicon-96x96.png') +link(rel='icon', type='image/png', sizes='16x16', href='http://github.com/img/favicon/favicon-16x16.png') +link(rel='manifest', href='http://github.com/img/favicon/manifest.json') +meta(name='msapplication-TileColor', content='#000000') +meta(name='msapplication-TileImage', content='/img/favicon/ms-icon-144x144.png') +meta(name='theme-color', content='#000000') diff --git a/views/stylesheets.pug b/views/stylesheets.pug new file mode 100644 index 00000000..e421daaa --- /dev/null +++ b/views/stylesheets.pug @@ -0,0 +1,6 @@ +link(rel="stylesheet", type="text/css", href="http://github.com/css/google-roboto-mono.css") +link(rel="stylesheet", href="http://github.com/css/bootstrap.min.css") +link(rel='stylesheet', href='http://github.com/css/codemirror.css', type='text/css', media='all') +link(rel='stylesheet', href='http://github.com/css/lint.css', type='text/css', media='all') +link(rel="stylesheet", href='http://github.com/css/budicon.css', type="text/css", media="all") +link(rel='stylesheet', href='http://github.com/css/app.css', type='text/css', media='all') diff --git a/views/title.pug b/views/title.pug new file mode 100644 index 00000000..3aa95947 --- /dev/null +++ b/views/title.pug @@ -0,0 +1,7 @@ +block meta + title JSON Web Tokens - jwt.io + meta(charset='utf-8') + meta(http-equiv='X-UA-Compatible', content='IE=edge') + meta(name='viewport', content='width=device-width, minimum-scale=1.0, maximum-scale=1.0') + meta(name='author', content='auth0.com') + meta(name='description', content='JSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is digitally signed using JSON Web Signature (JWS).') diff --git a/views/token-editor.pug b/views/token-editor.pug new file mode 100644 index 00000000..60e09e93 --- /dev/null +++ b/views/token-editor.pug @@ -0,0 +1,67 @@ +section#debugger-io.debugger-jwt + .container + //- a(name='debugger') + h1 Debugger + + .jwt-playground + .selections + .algorithm + span Algorithm + .jwt-select + select#algorithm-select + option(name='algorithm',value='HS256', selected='') HS256 + option(name='algorithm',value='HS384') HS384 + option(name='algorithm',value='HS512') HS512 + option(name='algorithm',value='RS256') RS256 + option(name='algorithm',value='RS384') RS384 + option(name='algorithm',value='RS512') RS512 + option(name='algorithm',value='ES256') ES256 + option(name='algorithm',value='ES384') ES384 + //- Unsupported by jsrsasign + option(name='algorithm',value='ES512') ES512 + option(name='algorithm',value='PS256') PS256 + option(name='algorithm',value='PS384') PS384 + option(name='algorithm',value='PS512') PS512 + + .algorithm-code + .tab-nav + .tab-link.current + a(href='#encoded-jwt') Encoded + small paste a token here + .tab-link + a(href='#decoded-jwt') Decoded + small edit the payload and secret + + .tab-content + #encoded-jwt.box-content.current + .input.js-input + #decoded-jwt.box-content + .output + .jwt-explained.jwt-header + p.text-line HEADER: + span ALGORITHM & TOKEN TYPE + .js-header + + .jwt-explained.jwt-payload + p.text-line PAYLOAD: + span DATA + .js-payload + #js-payload-tooltip placeholder + + .jwt-explained.jwt-signature + p.text-line VERIFY SIGNATURE + pre.pre-encode.HS256. + HMACSHA256( + base64UrlEncode(header) + "." + + base64UrlEncode(payload), + + ) + pre.pre-encode.RS256. + RSASHA256( + base64UrlEncode(header) + "." + + base64UrlEncode(payload), + , + + ) + + .validation-status.js-signature diff --git a/views/website/assets.pug b/views/website/assets.pug new file mode 100644 index 00000000..46f88eef --- /dev/null +++ b/views/website/assets.pug @@ -0,0 +1,40 @@ +section.sources + .container + .columns + .column.badges + h2 Badges + .hold + a(href='http://jwt.io/assets/badge.svg', target='_blank') + img(src='http://github.com/assets/badge.svg') + .text-hold + a(href='http://jwt.io/assets/badge.svg', target='_blank') + i.icon-budicon-722 + p http://jwt.io/assets/badge.svg + .hold + a(href='http://jwt.io/assets/badge-compatible.svg', target='_blank') + img(src='http://github.com/assets/badge-compatible.svg') + .text-hold + a(href='http://jwt.io/assets/badge-compatible.svg', target='_blank') + i.icon-budicon-722 + p http://jwt.io/assets/badge-compatible.svg + .column.logotype + h2 Logotype + .hold + a(href='http://jwt.io/assets/icon.svg', target='_blank') + img(src='http://github.com/assets/icon.svg') + .text-hold + a(href='http://jwt.io/assets/icon.svg', target='_blank') + i.icon-budicon-722 + p http://jwt.io/assets/icon.svg + .hold + a(href='http://jwt.io/assets/logo.svg', target='_blank') + img(src='http://github.com/assets/logo.svg') + .text-hold + a(href='http://jwt.io/assets/logo.svg', target='_blank') + i.icon-budicon-722 + p http://jwt.io/assets/logo.svg + .column.tshirt + h2 Store + img(src='http://github.com/img/pic_tshirt.png') + a.buy(href='http://swag.auth0.com/', target='_blank') Buy T-Shirt + \ No newline at end of file diff --git a/views/website/ebook.pug b/views/website/ebook.pug new file mode 100644 index 00000000..6e49ddc4 --- /dev/null +++ b/views/website/ebook.pug @@ -0,0 +1,5 @@ +section.jtw-ebook-banner + span + strong Get the JWT Handbook for free! + | Spread the word and download it now. + a.btn.btn-download-ebook(href='https://auth0.com/e-books/jwt-handbook?utm_source=jwtio&utm_medium=sc&utm_campaign=rotating_banner', target='_blank') Download Ebook diff --git a/views/website/extension.pug b/views/website/extension.pug new file mode 100644 index 00000000..87f7b922 --- /dev/null +++ b/views/website/extension.pug @@ -0,0 +1,17 @@ +section.update-site + span + strong Love JWT.IO? + | Bring the debugger to your favorite browser with our new chrome extension. + a#extension-button.extension-button + svg(width='14px', height='13px', viewbox='24 11 14 13', version='1.1', xmlns='http://www.w3.org/2000/svg', xmlns:xlink='http://www.w3.org/1999/xlink') + defs + path#path-1(d='M30.0287226,15.7142857 L30.0287226,11 L31.600907,11 L31.600907,15.7142857 L36.3174603,15.7142857 L36.3174603,17.2857143 L31.600907,17.2857143 L31.600907,22 L30.0287226,22 L30.0287226,17.2857143 L25.3121693,17.2857143 L25.3121693,15.7142857 L30.0287226,15.7142857 Z') + filter#filter-2(x='-50%', y='-50%', width='200%', height='200%', filterunits='objectBoundingBox') + feoffset(dx='0', dy='1', in='SourceAlpha', result='shadowOffsetOuter1') + fegaussianblur(stddeviation='0.5', in='shadowOffsetOuter1', result='shadowBlurOuter1') + fecolormatrix(values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0', type='matrix', in='shadowBlurOuter1') + g#Rectangle-213(stroke='none', fill='none') + use(fill='black', fill-opacity='1', filter='url(#filter-2)', xlink:href='#path-1') + use(fill='#FFFFFF', fill-rule='evenodd', xlink:href='#path-1') + + span.button-text Add to chrome \ No newline at end of file diff --git a/views/website/index.pug b/views/website/index.pug index 4134d145..51a8b6ab 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -40,299 +40,15 @@ block content a.btn.btn-lg(href="http://github.com/introduction") Learn more about jwt - section.update-site - span - strong Love JWT.IO? - | Bring the debugger to your favorite browser with our new chrome extension. - a#extension-button.extension-button - svg(width='14px', height='13px', viewbox='24 11 14 13', version='1.1', xmlns='http://www.w3.org/2000/svg', xmlns:xlink='http://www.w3.org/1999/xlink') - defs - path#path-1(d='M30.0287226,15.7142857 L30.0287226,11 L31.600907,11 L31.600907,15.7142857 L36.3174603,15.7142857 L36.3174603,17.2857143 L31.600907,17.2857143 L31.600907,22 L30.0287226,22 L30.0287226,17.2857143 L25.3121693,17.2857143 L25.3121693,15.7142857 L30.0287226,15.7142857 Z') - filter#filter-2(x='-50%', y='-50%', width='200%', height='200%', filterunits='objectBoundingBox') - feoffset(dx='0', dy='1', in='SourceAlpha', result='shadowOffsetOuter1') - fegaussianblur(stddeviation='0.5', in='shadowOffsetOuter1', result='shadowBlurOuter1') - fecolormatrix(values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0', type='matrix', in='shadowBlurOuter1') - g#Rectangle-213(stroke='none', fill='none') - use(fill='black', fill-opacity='1', filter='url(#filter-2)', xlink:href='#path-1') - use(fill='#FFFFFF', fill-rule='evenodd', xlink:href='#path-1') - - span.button-text Add to chrome - section.jtw-ebook-banner - span - strong Get the JWT Handbook for free! - | Spread the word and download it now. - a.btn.btn-download-ebook(href='https://auth0.com/e-books/jwt-handbook?utm_source=jwtio&utm_medium=sc&utm_campaign=rotating_banner', target='_blank') Download Ebook + include extension.pug - script. - var extensionSection = document.getElementsByClassName("update-site")[0]; - var ebookSection = document.getElementsByClassName("jtw-ebook-banner")[0]; - if (Math.random() >= .5) { - extensionSection.style.display = 'block'; - } else { - ebookSection.style.display = 'block'; - } - - section#debugger-io.debugger-jwt - .container - //- a(name='debugger') - h1 Debugger - - .jwt-playground - .selections - .token-type - span Token - .hide - label - input(type='radio', name='token-type', value='id_token', checked='') - label - input(type='radio', name='token-type', value='access_token') - .jwt-select - select - option(name='token-type',value='id_token', selected='') id_token - option(name='token-type',value='access_token') access_token - - .algorithm - span Algorithm - .hide - label - input(type='radio', name='algorithm', value='HS256', checked='') - //- Buggy support in library - //- label - //- input(type='radio', name='algorithm', value='HS384') - label - input(type='radio', name='algorithm', value='HS512') - label - input(type='radio', name='algorithm', value='RS256') - label - input(type='radio', name='algorithm', value='RS384') - label - input(type='radio', name='algorithm', value='RS512') - label - input(type='radio', name='algorithm', value='ES256') - label - input(type='radio', name='algorithm', value='ES384') - //- Not supported by JWS library - //- label - //- input(type='radio', name='algorithm', value='ES512') - //- Buggy support in library - //- label - //- input(type='radio', name='algorithm', value='PS256') - //- label - //- input(type='radio', name='algorithm', value='PS384') - //- label - //- input(type='radio', name='algorithm', value='PS512') - .jwt-select - select#algorithm-select - option(name='algorithm',value='HS256', selected='') HS256 - //- option(name='algorithm',value='HS384') HS384 - option(name='algorithm',value='HS512') HS512 - option(name='algorithm',value='RS256') RS256 - option(name='algorithm',value='RS384') RS384 - option(name='algorithm',value='RS512') RS512 - option(name='algorithm',value='ES256') ES256 - option(name='algorithm',value='ES384') ES384 - //- option(name='algorithm',value='ES512') ES512 - //- option(name='algorithm',value='PS256') PS256 - //- option(name='algorithm',value='PS384') PS384 - //- option(name='algorithm',value='PS512') PS512 - - .algorithm-code - .tab-nav - .tab-link.current - a(href='#encoded-jwt') Encoded - small paste a token here - .tab-link - a(href='#decoded-jwt') Decoded - small edit the payload and secret - - .tab-content - #encoded-jwt.box-content.current - .input.js-input - #decoded-jwt.box-content - .output - .jwt-explained.jwt-header - p.text-line HEADER: - span ALGORITHM & TOKEN TYPE - .js-header - - .jwt-explained.jwt-payload - p.text-line PAYLOAD: - span DATA - .js-payload - #js-payload-tooltip placeholder + include ebook.pug - .jwt-explained.jwt-signature - p.text-line VERIFY SIGNATURE - pre.pre-encode.HS256. - HMACSHA256( - base64UrlEncode(header) + "." + - base64UrlEncode(payload), - - ) - pre.pre-encode.RS256. - RSASHA256( - base64UrlEncode(header) + "." + - base64UrlEncode(payload), - , - - ) + include ../token-editor.pug - .validation-status.js-signature + include libraries.pug - section#libraries-io.libraries-jwt - .container - .title-header - //- a(name='libraries') - h1 Libraries for Token Signing/Verification - - .filter - span Filter by - .jwt-select - select#libraries-select - // Languages must be in alphabetic order - option(value='*', selected='') All - option(value='._1c') 1c - option(value='.c') C - option(value='.clojure') Clojure - option(value='.crystal') Crystal - option(value='.d') D - option(value='.delphi') Delphi - option(value='.elixir') Elixir - option(value='.go') Go - option(value='.groovy') Groovy - option(value='.haskell') Haskell - option(value='.haxe') Haxe - option(value='.java') Java - option(value='.js') JavaScript - option(value='.lua') Lua - option(value='.net') .NET - option(value='.node') Node.js - option(value='.objective-c') Objective-c - option(value='.perl') Perl - option(value='.php') PHP - option(value='.postgresql') PostgreSQL - option(value='.python') Python - option(value='.q') Q - option(value='.ruby') Ruby - option(value='.rust') Rust - option(value='.scala') Scala - option(value='.swift') Swift - - .warning - b Warning: - | Critical vulnerabilities in JSON Web Token libraries with asymmetric keys. - a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/') - | Learn more - - svg(height='48', viewbox='0 0 48 48', width='48', xmlns='http://www.w3.org/2000/svg') - path(d='M-838-2232H562v3600H-838z', fill='none') - path(d='M16 10v28l22-14z') - - .libraries-sv(data-accordion-group) - include libraries/net.pug - include libraries/net2.pug - include libraries/netrt.pug - include libraries/python.pug - include libraries/python2.pug - include libraries/python3.pug - include libraries/node.pug - include libraries/java.pug - include libraries/java2.pug - include libraries/java3.pug - include libraries/java4.pug - include libraries/java5.pug - include libraries/java6.pug - include libraries/js.pug - include libraries/js2.pug - include libraries/perl5.pug - include libraries/ruby.pug - include libraries/ruby2.pug - include libraries/ruby3.pug - include libraries/ruby4.pug - include libraries/elixir.pug - include libraries/elixir2.pug - include libraries/elixir3.pug - include libraries/go.pug - include libraries/go2.pug - include libraries/go3.pug - include libraries/go4.pug - include libraries/go5.pug - include libraries/go6.pug - include libraries/go7.pug - include libraries/go8.pug - include libraries/groovy.pug - include libraries/haskell.pug - include libraries/haskell2.pug - include libraries/haxe.pug - include libraries/rust.pug - include libraries/rust2.pug - include libraries/rust3.pug - include libraries/lua.pug - include libraries/scala.pug - include libraries/scala2.pug - include libraries/scala3.pug - include libraries/scala4.pug - include libraries/d.pug - include libraries/d2.pug - include libraries/clojure.pug - include libraries/objective-c.pug - include libraries/swift.pug - include libraries/swift2.pug - include libraries/c.pug - include libraries/c2.pug - include libraries/q.pug - include libraries/delphi.pug - include libraries/delphi2.pug - include libraries/php.pug - include libraries/php3.pug - include libraries/php4.pug - include libraries/php5.pug - include libraries/php6.pug - include libraries/php7.pug - include libraries/php8.pug - include libraries/crystal.pug - include libraries/1c.pug - include libraries/postgresql.pug - - section.sources - .container - .columns - .column.badges - h2 Badges - .hold - a(href='http://jwt.io/assets/badge.svg', target='_blank') - img(src='http://github.com/assets/badge.svg') - .text-hold - a(href='http://jwt.io/assets/badge.svg', target='_blank') - i.icon-budicon-722 - p http://jwt.io/assets/badge.svg - .hold - a(href='http://jwt.io/assets/badge-compatible.svg', target='_blank') - img(src='http://github.com/assets/badge-compatible.svg') - .text-hold - a(href='http://jwt.io/assets/badge-compatible.svg', target='_blank') - i.icon-budicon-722 - p http://jwt.io/assets/badge-compatible.svg - .column.logotype - h2 Logotype - .hold - a(href='http://jwt.io/assets/icon.svg', target='_blank') - img(src='http://github.com/assets/icon.svg') - .text-hold - a(href='http://jwt.io/assets/icon.svg', target='_blank') - i.icon-budicon-722 - p http://jwt.io/assets/icon.svg - .hold - a(href='http://jwt.io/assets/logo.svg', target='_blank') - img(src='http://github.com/assets/logo.svg') - .text-hold - a(href='http://jwt.io/assets/logo.svg', target='_blank') - i.icon-budicon-722 - p http://jwt.io/assets/logo.svg - .column.tshirt - h2 Store - img(src='http://github.com/img/pic_tshirt.png') - a.buy(href='http://swag.auth0.com/', target='_blank') Buy T-Shirt + include assets.pug include counter.pug diff --git a/views/website/layout.pug b/views/website/layout.pug index 28b8fe01..6fbd89b6 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -1,13 +1,7 @@ doctype html html(lang='en') head - block meta - title JSON Web Tokens - jwt.io - meta(charset='utf-8') - meta(http-equiv='X-UA-Compatible', content='IE=edge') - meta(name='viewport', content='width=device-width, minimum-scale=1.0, maximum-scale=1.0') - meta(name='author', content='auth0.com') - meta(name='description', content='JSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is digitally signed using JSON Web Signature (JWS).') + include ../title.pug //- Google Verification Code meta(name="google-site-verification", content="cFjJt_KK4v_TKnCZ3hcuLlEUBBk4RLT0iByrpjCsvLA") @@ -34,46 +28,15 @@ html(lang='en') meta(property='og:image:width', content='1200') meta(property='og:image:height', content='630') - // Just for debugging purposes. Don't actually copy this line! - | - link(rel="stylesheet", type="text/css", href="http://fonts.googleapis.com/css?family=Roboto+Mono") - - - link(rel="stylesheet", href="http://github.com/css/bootstrap.min.css") - - // build:css dist/css/app.css - link(rel='stylesheet', href='http://github.com/css/codemirror.css', type='text/css', media='all') - link(rel='stylesheet', href='http://github.com/css/lint.css', type='text/css', media='all') - link(rel="stylesheet", href='http://github.com/css/budicon.css', type="text/css", media="all") - link(rel='stylesheet', href='http://github.com/css/app.css', type='text/css', media='all') + include ../stylesheets.pug link(rel='search', type='application/opensearchdescription+xml', title='JWT.io', href='http://github.com/opensearch.xml') - - link(rel='apple-touch-icon', sizes='57x57', href='http://github.com/img/favicon/apple-icon-57x57.png') - link(rel='apple-touch-icon', sizes='60x60', href='http://github.com/img/favicon/apple-icon-60x60.png') - link(rel='apple-touch-icon', sizes='72x72', href='http://github.com/img/favicon/apple-icon-72x72.png') - link(rel='apple-touch-icon', sizes='76x76', href='http://github.com/img/favicon/apple-icon-76x76.png') - link(rel='apple-touch-icon', sizes='114x114', href='http://github.com/img/favicon/apple-icon-114x114.png') - link(rel='apple-touch-icon', sizes='120x120', href='http://github.com/img/favicon/apple-icon-120x120.png') - link(rel='apple-touch-icon', sizes='144x144', href='http://github.com/img/favicon/apple-icon-144x144.png') - link(rel='apple-touch-icon', sizes='152x152', href='http://github.com/img/favicon/apple-icon-152x152.png') - link(rel='apple-touch-icon', sizes='180x180', href='http://github.com/img/favicon/apple-icon-180x180.png') - link(rel='icon', type='image/png', sizes='192x192', href='http://github.com/img/favicon/android-icon-192x192.png') - link(rel='icon', type='image/png', sizes='32x32', href='http://github.com/img/favicon/favicon-32x32.png') - link(rel='icon', type='image/png', sizes='96x96', href='http://github.com/img/favicon/favicon-96x96.png') - link(rel='icon', type='image/png', sizes='16x16', href='http://github.com/img/favicon/favicon-16x16.png') - link(rel='manifest', href='http://github.com/img/favicon/manifest.json') - meta(name='msapplication-TileColor', content='#000000') - meta(name='msapplication-TileImage', content='/img/favicon/ms-icon-144x144.png') - meta(name='theme-color', content='#000000') + include ../icons.pug // Chrome extension link, required for inline installs link(rel="chrome-webstore-item", href="https://chrome.google.com/webstore/detail/ppmmlchacdbknfphdeafcbmklcghghmd") - // HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries - | - body // Google Tag Manager diff --git a/views/website/libraries.pug b/views/website/libraries.pug new file mode 100644 index 00000000..b9c68cb2 --- /dev/null +++ b/views/website/libraries.pug @@ -0,0 +1,114 @@ +section#libraries-io.libraries-jwt + .container + .title-header + h1 Libraries for Token Signing/Verification + + .filter + span Filter by + .jwt-select + select#libraries-select + // Languages must be in alphabetic order + option(value='*', selected='') All + option(value='._1c') 1c + option(value='.c') C + option(value='.clojure') Clojure + option(value='.crystal') Crystal + option(value='.d') D + option(value='.delphi') Delphi + option(value='.elixir') Elixir + option(value='.go') Go + option(value='.groovy') Groovy + option(value='.haskell') Haskell + option(value='.haxe') Haxe + option(value='.java') Java + option(value='.js') JavaScript + option(value='.lua') Lua + option(value='.net') .NET + option(value='.node') Node.js + option(value='.objective-c') Objective-c + option(value='.perl') Perl + option(value='.php') PHP + option(value='.postgresql') PostgreSQL + option(value='.python') Python + option(value='.q') Q + option(value='.ruby') Ruby + option(value='.rust') Rust + option(value='.scala') Scala + option(value='.swift') Swift + + .warning + b Warning: + | Critical vulnerabilities in JSON Web Token libraries with asymmetric keys. + a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/') + | Learn more + + svg(height='48', viewbox='0 0 48 48', width='48', xmlns='http://www.w3.org/2000/svg') + path(d='M-838-2232H562v3600H-838z', fill='none') + path(d='M16 10v28l22-14z') + + .libraries-sv(data-accordion-group) + include libraries/net.pug + include libraries/net2.pug + include libraries/netrt.pug + include libraries/python.pug + include libraries/python2.pug + include libraries/python3.pug + include libraries/node.pug + include libraries/java.pug + include libraries/java2.pug + include libraries/java3.pug + include libraries/java4.pug + include libraries/java5.pug + include libraries/java6.pug + include libraries/js.pug + include libraries/js2.pug + include libraries/perl5.pug + include libraries/ruby.pug + include libraries/ruby2.pug + include libraries/ruby3.pug + include libraries/ruby4.pug + include libraries/elixir.pug + include libraries/elixir2.pug + include libraries/elixir3.pug + include libraries/go.pug + include libraries/go2.pug + include libraries/go3.pug + include libraries/go4.pug + include libraries/go5.pug + include libraries/go6.pug + include libraries/go7.pug + include libraries/go8.pug + include libraries/groovy.pug + include libraries/haskell.pug + include libraries/haskell2.pug + include libraries/haxe.pug + include libraries/rust.pug + include libraries/rust2.pug + include libraries/rust3.pug + include libraries/lua.pug + include libraries/scala.pug + include libraries/scala2.pug + include libraries/scala3.pug + include libraries/scala4.pug + include libraries/d.pug + include libraries/d2.pug + include libraries/clojure.pug + include libraries/objective-c.pug + include libraries/swift.pug + include libraries/swift2.pug + include libraries/c.pug + include libraries/c2.pug + include libraries/q.pug + include libraries/delphi.pug + include libraries/delphi2.pug + include libraries/php.pug + include libraries/php3.pug + include libraries/php4.pug + include libraries/php5.pug + include libraries/php6.pug + include libraries/php7.pug + include libraries/php8.pug + include libraries/crystal.pug + include libraries/1c.pug + include libraries/postgresql.pug + \ No newline at end of file From ea710274c095297718818437cfa327a2da93ae5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 12 Jan 2018 20:41:56 -0300 Subject: [PATCH 077/611] Put dom getters in dom-elements.js. --- src/website/dom-elements.js | 3 +++ src/website/index.js | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/website/dom-elements.js b/src/website/dom-elements.js index 37b8a066..21b64213 100644 --- a/src/website/dom-elements.js +++ b/src/website/dom-elements.js @@ -6,6 +6,9 @@ export const menuScrollableLinks = export const sectionElements = document.getElementsByTagName('section'); +export const extensionSection = document.querySelector('.update-site'); +export const ebookSection = document.querySelector('.jtw-ebook-banner'); + export const extensionButton = document.getElementById('extension-button'); export const extensionButtonText = extensionButton ? extensionButton.querySelector('.button-text') : diff --git a/src/website/index.js b/src/website/index.js index 6b70ce1a..5eb3aa99 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -14,6 +14,8 @@ import { publicKeyTextArea, codeElements, debuggerSection, + extensionSection, + ebookSection } from './dom-elements.js'; /* For initialization, look at the end of this file */ @@ -57,9 +59,7 @@ function loadToken() { } function pickEbookOrExtensionBanner() { - var extensionSection = document.getElementsByClassName("update-site")[0]; - var ebookSection = document.getElementsByClassName("jtw-ebook-banner")[0]; - if (Math.random() >= .5) { + if(Math.random() >= 0.5) { extensionSection.style.display = 'block'; } else { ebookSection.style.display = 'block'; From bbe1eb570fb83b56aed5f50d16fb08d38fc3e684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 12 Jan 2018 21:48:09 -0300 Subject: [PATCH 078/611] More views modularization for website/extension merge. --- views/extension/index.pug | 3 ++ views/token-editor-algorithms.pug | 16 ++++++++ views/token-editor-common.pug | 42 +++++++++++++++++++ views/token-editor.pug | 67 ------------------------------- views/website/index.pug | 2 +- views/website/token-editor.pug | 13 ++++++ 6 files changed, 75 insertions(+), 68 deletions(-) create mode 100644 views/token-editor-algorithms.pug create mode 100644 views/token-editor-common.pug delete mode 100644 views/token-editor.pug create mode 100644 views/website/token-editor.pug diff --git a/views/extension/index.pug b/views/extension/index.pug index e69de29b..ecc0f4d3 100644 --- a/views/extension/index.pug +++ b/views/extension/index.pug @@ -0,0 +1,3 @@ +extends layout + +include ../token-editor.pug diff --git a/views/token-editor-algorithms.pug b/views/token-editor-algorithms.pug new file mode 100644 index 00000000..12ddd3fd --- /dev/null +++ b/views/token-editor-algorithms.pug @@ -0,0 +1,16 @@ +select#algorithm-select + option(name='algorithm',value='HS256', selected='') HS256 + option(name='algorithm',value='HS384') HS384 + option(name='algorithm',value='HS512') HS512 + option(name='algorithm',value='RS256') RS256 + option(name='algorithm',value='RS384') RS384 + option(name='algorithm',value='RS512') RS512 + option(name='algorithm',value='ES256') ES256 + option(name='algorithm',value='ES384') ES384 + //- Unsupported by jsrsasign + option(name='algorithm',value='ES512') ES512 + option(name='algorithm',value='PS256') PS256 + option(name='algorithm',value='PS384') PS384 + option(name='algorithm',value='PS512') PS512 + + \ No newline at end of file diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug new file mode 100644 index 00000000..2c480bf0 --- /dev/null +++ b/views/token-editor-common.pug @@ -0,0 +1,42 @@ +.algorithm-code + .tab-nav + .tab-link.current + a(href='#encoded-jwt') Encoded + small paste a token here + .tab-link + a(href='#decoded-jwt') Decoded + small edit the payload and secret + + .tab-content + #encoded-jwt.box-content.current + .input.js-input + #decoded-jwt.box-content + .output + .jwt-explained.jwt-header + p.text-line HEADER: + span ALGORITHM & TOKEN TYPE + .js-header + + .jwt-explained.jwt-payload + p.text-line PAYLOAD: + span DATA + .js-payload + #js-payload-tooltip placeholder + + .jwt-explained.jwt-signature + p.text-line VERIFY SIGNATURE + pre.pre-encode.HS256. + HMACSHA256( + base64UrlEncode(header) + "." + + base64UrlEncode(payload), + + ) + pre.pre-encode.RS256. + RSASHA256( + base64UrlEncode(header) + "." + + base64UrlEncode(payload), + , + + ) + +.validation-status.js-signature \ No newline at end of file diff --git a/views/token-editor.pug b/views/token-editor.pug deleted file mode 100644 index 60e09e93..00000000 --- a/views/token-editor.pug +++ /dev/null @@ -1,67 +0,0 @@ -section#debugger-io.debugger-jwt - .container - //- a(name='debugger') - h1 Debugger - - .jwt-playground - .selections - .algorithm - span Algorithm - .jwt-select - select#algorithm-select - option(name='algorithm',value='HS256', selected='') HS256 - option(name='algorithm',value='HS384') HS384 - option(name='algorithm',value='HS512') HS512 - option(name='algorithm',value='RS256') RS256 - option(name='algorithm',value='RS384') RS384 - option(name='algorithm',value='RS512') RS512 - option(name='algorithm',value='ES256') ES256 - option(name='algorithm',value='ES384') ES384 - //- Unsupported by jsrsasign - option(name='algorithm',value='ES512') ES512 - option(name='algorithm',value='PS256') PS256 - option(name='algorithm',value='PS384') PS384 - option(name='algorithm',value='PS512') PS512 - - .algorithm-code - .tab-nav - .tab-link.current - a(href='#encoded-jwt') Encoded - small paste a token here - .tab-link - a(href='#decoded-jwt') Decoded - small edit the payload and secret - - .tab-content - #encoded-jwt.box-content.current - .input.js-input - #decoded-jwt.box-content - .output - .jwt-explained.jwt-header - p.text-line HEADER: - span ALGORITHM & TOKEN TYPE - .js-header - - .jwt-explained.jwt-payload - p.text-line PAYLOAD: - span DATA - .js-payload - #js-payload-tooltip placeholder - - .jwt-explained.jwt-signature - p.text-line VERIFY SIGNATURE - pre.pre-encode.HS256. - HMACSHA256( - base64UrlEncode(header) + "." + - base64UrlEncode(payload), - - ) - pre.pre-encode.RS256. - RSASHA256( - base64UrlEncode(header) + "." + - base64UrlEncode(payload), - , - - ) - - .validation-status.js-signature diff --git a/views/website/index.pug b/views/website/index.pug index 51a8b6ab..bec27d75 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -44,7 +44,7 @@ block content include ebook.pug - include ../token-editor.pug + include token-editor.pug include libraries.pug diff --git a/views/website/token-editor.pug b/views/website/token-editor.pug new file mode 100644 index 00000000..0010233c --- /dev/null +++ b/views/website/token-editor.pug @@ -0,0 +1,13 @@ +section#debugger-io.debugger-jwt + .container + //- a(name='debugger') + h1 Debugger + + .jwt-playground + .selections + .algorithm + span Algorithm + .jwt-select + include ../token-editor-algorithms.pug + + include ../token-editor-common.pug From 85569deef64e749f415080a3270a2ca5d33094e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 15 Jan 2018 18:50:02 -0300 Subject: [PATCH 079/611] Extension and website working together. --- Gruntfile.js | 166 ++++++++++++++--- html/extension/bg.html | 3 + img/{ => extension}/bg_arrow_select.svg | 0 img/extension/debugger-logo.svg | 35 ++++ .../favicon/android-icon-192x192.png | Bin .../favicon/android-icon-48x48.png | Bin img/{ => extension}/favicon/favicon-16x16.png | Bin img/{ => extension}/favicon/favicon-32x32.png | Bin img/{ => extension}/favicon/favicon-96x96.png | Bin img/extension/favicon/icon-128x128.png | Bin 0 -> 3551 bytes .../favicon/icon-chrome-store-128x128.png | Bin 0 -> 4246 bytes img/{ => extension}/ico_logo.svg | 0 img/extension/icon-chromeless.svg | 29 +++ {assets => img/extension}/icon.svg | 0 {assets => img/extension}/logo.svg | 0 img/extension/share-badge.svg | 33 ++++ img/{ => website}/1.svg | 0 img/{ => website}/10.svg | 0 img/{ => website}/11.svg | 0 img/{ => website}/12.svg | 0 img/{ => website}/13.svg | 0 img/{ => website}/14.svg | 0 img/{ => website}/15.svg | 0 img/{ => website}/16.svg | 0 img/{ => website}/17.svg | 0 img/{ => website}/18.svg | 0 img/{ => website}/19.svg | 0 img/{ => website}/2.svg | 0 img/{ => website}/20.svg | 0 img/{ => website}/21.svg | 0 img/{ => website}/22.svg | 0 img/{ => website}/23.svg | 0 img/{ => website}/24.svg | 0 img/{ => website}/25.svg | 0 img/{ => website}/3.svg | 0 img/{ => website}/4.svg | 0 img/{ => website}/5.svg | 0 img/{ => website}/6.svg | 0 img/{ => website}/7.svg | 0 img/{ => website}/8.svg | 0 img/{ => website}/9.svg | 0 {assets => img/website}/badge-compatible.svg | 0 {assets => img/website}/badge.svg | 0 img/{ => website}/bg_arrow.svg | 0 img/website/bg_arrow_select.svg | 14 ++ img/{ => website}/bg_steps.svg | 0 img/{ => website}/facebook-card.png | Bin .../favicon/android-icon-144x144.png | Bin .../favicon/android-icon-192x192.png} | Bin .../favicon/android-icon-36x36.png | Bin img/website/favicon/android-icon-48x48.png | Bin 0 -> 1395 bytes .../favicon/android-icon-72x72.png | Bin .../favicon/android-icon-96x96.png | Bin .../favicon/apple-icon-114x114.png | Bin .../favicon/apple-icon-120x120.png | Bin .../favicon/apple-icon-144x144.png | Bin .../favicon/apple-icon-152x152.png | Bin .../favicon/apple-icon-180x180.png | Bin .../favicon/apple-icon-57x57.png | Bin .../favicon/apple-icon-60x60.png | Bin .../favicon/apple-icon-72x72.png | Bin .../favicon/apple-icon-76x76.png | Bin .../favicon/apple-icon-precomposed.png} | Bin img/website/favicon/apple-icon.png | Bin 0 -> 4202 bytes img/{ => website}/favicon/browserconfig.xml | 0 img/website/favicon/favicon-16x16.png | Bin 0 -> 327 bytes img/website/favicon/favicon-32x32.png | Bin 0 -> 873 bytes img/website/favicon/favicon-96x96.png | Bin 0 -> 2176 bytes img/{ => website}/favicon/favicon.ico | Bin img/{ => website}/favicon/manifest.json | 0 img/{ => website}/favicon/ms-icon-144x144.png | Bin img/{ => website}/favicon/ms-icon-150x150.png | Bin img/{ => website}/favicon/ms-icon-310x310.png | Bin img/{ => website}/favicon/ms-icon-70x70.png | Bin img/{ => website}/ico_a0_white.svg | 0 img/{ => website}/ico_check.svg | 0 img/{ => website}/ico_check2.svg | 0 img/{ => website}/ico_close.svg | 0 img/{ => website}/ico_edit.svg | 0 img/{ => website}/ico_enlarge.svg | 0 img/{ => website}/ico_github.svg | 0 img/website/ico_logo.svg | 26 +++ img/{ => website}/ico_question.svg | 0 img/{ => website}/ico_star.svg | 0 img/{ => website}/ico_status.svg | 0 img/{ => website}/ico_twitter.svg | 0 img/website/icon.svg | 28 +++ img/website/logo-asset.svg | 27 +++ img/{ => website}/logo.svg | 0 img/{ => website}/pic_logo.svg | 0 img/{ => website}/pic_logo2.svg | 0 img/{ => website}/pic_logo3.svg | 0 img/{ => website}/pic_logo4.svg | 0 img/{ => website}/pic_logo_ft.svg | 0 img/{ => website}/pic_tshirt.png | Bin img/{ => website}/pic_tshirt_b.png | Bin img/{ => website}/q.svg | 0 img/{ => website}/twitter-card.png | Bin manifest.json | 43 +++++ src/dom-elements.js | 31 ++++ src/{ => editor}/default-tokens.js | 0 src/{website => }/editor/event-manager.js | 0 src/{website => }/editor/index.js | 9 +- src/{website => }/editor/instances.js | 0 src/{website => }/editor/jwt-mode.js | 0 src/{ => editor}/jwt.js | 0 src/{ => editor}/public-key-download.js | 2 +- src/{website => }/editor/tooltip.js | 0 src/{website => }/editor/utils.js | 0 src/extension/dom-elements.js | 1 + src/extension/index.js | 44 +++++ src/{website => }/strings.js | 0 src/utils.js | 79 +++++++++ src/website/dom-elements.js | 34 +--- src/website/extension.js | 2 +- src/website/index.js | 4 +- src/website/smooth-scrolling.js | 2 +- src/website/utils.js | 79 --------- stylus/extension/index.styl | 167 ++++++++++++++++++ stylus/{ => website}/codemirror.styl | 0 stylus/{ => website}/flip-clock.styl | 0 stylus/{ => website}/highlight.styl | 0 stylus/{app.styl => website/index.styl} | 0 stylus/{ => website}/mixins.styl | 0 views/extension/index.pug | 47 ++++- views/extension/layout.pug | 1 - views/stylesheets.pug | 2 +- views/website/assets.pug | 32 ++-- webpack.common.js | 30 ++++ webpack.extension-dev.js | 13 ++ webpack.extension-prod.js | 10 ++ webpack.website-dev.js | 36 +--- webpack.website-prod.js | 1 - 133 files changed, 835 insertions(+), 195 deletions(-) create mode 100644 html/extension/bg.html rename img/{ => extension}/bg_arrow_select.svg (100%) create mode 100644 img/extension/debugger-logo.svg rename img/{ => extension}/favicon/android-icon-192x192.png (100%) rename img/{ => extension}/favicon/android-icon-48x48.png (100%) rename img/{ => extension}/favicon/favicon-16x16.png (100%) rename img/{ => extension}/favicon/favicon-32x32.png (100%) rename img/{ => extension}/favicon/favicon-96x96.png (100%) create mode 100644 img/extension/favicon/icon-128x128.png create mode 100644 img/extension/favicon/icon-chrome-store-128x128.png rename img/{ => extension}/ico_logo.svg (100%) create mode 100644 img/extension/icon-chromeless.svg rename {assets => img/extension}/icon.svg (100%) rename {assets => img/extension}/logo.svg (100%) create mode 100644 img/extension/share-badge.svg rename img/{ => website}/1.svg (100%) rename img/{ => website}/10.svg (100%) rename img/{ => website}/11.svg (100%) rename img/{ => website}/12.svg (100%) rename img/{ => website}/13.svg (100%) rename img/{ => website}/14.svg (100%) rename img/{ => website}/15.svg (100%) rename img/{ => website}/16.svg (100%) rename img/{ => website}/17.svg (100%) rename img/{ => website}/18.svg (100%) rename img/{ => website}/19.svg (100%) rename img/{ => website}/2.svg (100%) rename img/{ => website}/20.svg (100%) rename img/{ => website}/21.svg (100%) rename img/{ => website}/22.svg (100%) rename img/{ => website}/23.svg (100%) rename img/{ => website}/24.svg (100%) rename img/{ => website}/25.svg (100%) rename img/{ => website}/3.svg (100%) rename img/{ => website}/4.svg (100%) rename img/{ => website}/5.svg (100%) rename img/{ => website}/6.svg (100%) rename img/{ => website}/7.svg (100%) rename img/{ => website}/8.svg (100%) rename img/{ => website}/9.svg (100%) rename {assets => img/website}/badge-compatible.svg (100%) rename {assets => img/website}/badge.svg (100%) rename img/{ => website}/bg_arrow.svg (100%) create mode 100644 img/website/bg_arrow_select.svg rename img/{ => website}/bg_steps.svg (100%) rename img/{ => website}/facebook-card.png (100%) rename img/{ => website}/favicon/android-icon-144x144.png (100%) rename img/{favicon/apple-icon-precomposed.png => website/favicon/android-icon-192x192.png} (100%) rename img/{ => website}/favicon/android-icon-36x36.png (100%) create mode 100755 img/website/favicon/android-icon-48x48.png rename img/{ => website}/favicon/android-icon-72x72.png (100%) rename img/{ => website}/favicon/android-icon-96x96.png (100%) rename img/{ => website}/favicon/apple-icon-114x114.png (100%) rename img/{ => website}/favicon/apple-icon-120x120.png (100%) rename img/{ => website}/favicon/apple-icon-144x144.png (100%) rename img/{ => website}/favicon/apple-icon-152x152.png (100%) rename img/{ => website}/favicon/apple-icon-180x180.png (100%) rename img/{ => website}/favicon/apple-icon-57x57.png (100%) rename img/{ => website}/favicon/apple-icon-60x60.png (100%) rename img/{ => website}/favicon/apple-icon-72x72.png (100%) rename img/{ => website}/favicon/apple-icon-76x76.png (100%) rename img/{favicon/apple-icon.png => website/favicon/apple-icon-precomposed.png} (100%) create mode 100755 img/website/favicon/apple-icon.png rename img/{ => website}/favicon/browserconfig.xml (100%) create mode 100755 img/website/favicon/favicon-16x16.png create mode 100755 img/website/favicon/favicon-32x32.png create mode 100755 img/website/favicon/favicon-96x96.png rename img/{ => website}/favicon/favicon.ico (100%) rename img/{ => website}/favicon/manifest.json (100%) rename img/{ => website}/favicon/ms-icon-144x144.png (100%) rename img/{ => website}/favicon/ms-icon-150x150.png (100%) rename img/{ => website}/favicon/ms-icon-310x310.png (100%) rename img/{ => website}/favicon/ms-icon-70x70.png (100%) rename img/{ => website}/ico_a0_white.svg (100%) rename img/{ => website}/ico_check.svg (100%) rename img/{ => website}/ico_check2.svg (100%) rename img/{ => website}/ico_close.svg (100%) rename img/{ => website}/ico_edit.svg (100%) rename img/{ => website}/ico_enlarge.svg (100%) rename img/{ => website}/ico_github.svg (100%) create mode 100644 img/website/ico_logo.svg rename img/{ => website}/ico_question.svg (100%) rename img/{ => website}/ico_star.svg (100%) rename img/{ => website}/ico_status.svg (100%) rename img/{ => website}/ico_twitter.svg (100%) create mode 100644 img/website/icon.svg create mode 100644 img/website/logo-asset.svg rename img/{ => website}/logo.svg (100%) rename img/{ => website}/pic_logo.svg (100%) rename img/{ => website}/pic_logo2.svg (100%) rename img/{ => website}/pic_logo3.svg (100%) rename img/{ => website}/pic_logo4.svg (100%) rename img/{ => website}/pic_logo_ft.svg (100%) rename img/{ => website}/pic_tshirt.png (100%) rename img/{ => website}/pic_tshirt_b.png (100%) rename img/{ => website}/q.svg (100%) rename img/{ => website}/twitter-card.png (100%) create mode 100644 manifest.json create mode 100644 src/dom-elements.js rename src/{ => editor}/default-tokens.js (100%) rename src/{website => }/editor/event-manager.js (100%) rename src/{website => }/editor/index.js (97%) rename src/{website => }/editor/instances.js (100%) rename src/{website => }/editor/jwt-mode.js (100%) rename src/{ => editor}/jwt.js (100%) rename src/{ => editor}/public-key-download.js (98%) rename src/{website => }/editor/tooltip.js (100%) rename src/{website => }/editor/utils.js (100%) create mode 100644 src/extension/dom-elements.js create mode 100644 src/extension/index.js rename src/{website => }/strings.js (100%) create mode 100644 stylus/extension/index.styl rename stylus/{ => website}/codemirror.styl (100%) rename stylus/{ => website}/flip-clock.styl (100%) rename stylus/{ => website}/highlight.styl (100%) rename stylus/{app.styl => website/index.styl} (100%) rename stylus/{ => website}/mixins.styl (100%) create mode 100644 webpack.common.js create mode 100644 webpack.extension-dev.js create mode 100644 webpack.extension-prod.js diff --git a/Gruntfile.js b/Gruntfile.js index bba76220..8f3b2cbc 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,6 +1,3 @@ -const websiteWebpackConfigDev = require('./webpack.website-dev.js'); -const websiteWebpackConfigProd = require('./webpack.website-prod.js'); - module.exports = grunt => { grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-stylus'); @@ -10,12 +7,21 @@ module.exports = grunt => { grunt.loadNpmTasks('grunt-contrib-clean'); grunt.initConfig({ - clean: [ 'dist' ], + clean: { + website: [ 'dist/website' ], + extension: ['dist/extension'] + }, + copy: { - main: { + website: { files: [{ expand: true, - src: ['img/**', 'fonts/**', 'assets/**', 'opensearch.xml'], + cwd: 'img/website', + src: ['**'], + dest: 'dist/website/img' + }, { + expand: true, + src: ['fonts/**', 'opensearch.xml'], dest: 'dist/website' }, { expand: true, @@ -29,39 +35,96 @@ module.exports = grunt => { ], dest: 'dist/website/css/' }] + }, + extension: { + files: [{ + expand: true, + flatten: true, + src: ['manifest.json', 'html/extension/bg.html'], + dest: 'dist/extension' + }, { + expand: true, + cwd: 'img/extension', + src: ['**'], + dest: 'dist/extension/img' + }, { + expand: true, + src: ['fonts/**'], + dest: 'dist/extension' + }, { + expand: true, + flatten: true, + src: [ + 'node_modules/bootstrap/dist/css/bootstrap.min.css', + 'node_modules/codemirror/lib/codemirror.css', + 'node_modules/codemirror/addon/lint/lint.css', + 'css/budicon.css', + 'css/google-roboto-mono.css' + ], + dest: 'dist/extension/css/' + }] } }, + stylus: { - compile: { + website: { + files: { + 'dist/website/css/index.css': 'stylus/website/index.styl' + } + }, + extension: { files: { - 'dist/website/css/app.css': 'stylus/app.styl' + 'dist/extension/css/index.css': 'stylus/extension/index.styl' } } }, + pug: { - compile: { + website: { files: { 'dist/website/index.html': 'views/website/index.pug', 'dist/website/introduction/index.html': 'views/website/introduction.pug' } + }, + extension: { + files: { + 'dist/extension/index.html': 'views/extension/index.pug' + } } }, + webpack: { - prod: websiteWebpackConfigProd, - dev: websiteWebpackConfigDev + websiteProd: require('./webpack.website-prod.js'), + websiteDev: require('./webpack.website-dev.js'), + extensionProd: require('./webpack.extension-prod.js'), + extensionDev: require('./webpack.extension-dev.js'), }, + watch: { - js: { - files: 'src/**', - tasks: 'webpack:dev' + websiteSrc: { + files: ['src/*.js', 'src/website/**'], + tasks: 'webpack:websiteDev' + }, + extensionSrc: { + files: ['src/*.js', 'src/extension/**'], + tasks: 'webpack:extensionDev' + }, + websiteImg: { + files: [ 'img/website/**' ], + tasks: 'copy:website' + }, + extensionImg: { + files: [ 'img/extension/**' ], + tasks: 'copy:extension' + }, + opensearch: { + files: 'opensearch.xml', + tasks: 'copy:website' }, assets: { files: [ - 'img/**', 'fonts/**', - 'assets/**', - 'opensearch.xml', 'node_modules/bootstrap/dist/css/bootstrap.min.css', 'node_modules/codemirror/lib/codemirror.css', 'node_modules/codemirror/addon/lint/lint.css', @@ -69,16 +132,71 @@ module.exports = grunt => { ], tasks: 'copy' }, - views: { - files: ['stylus/**', 'views/**'], - tasks: ['build-views'] + websiteViews: { + files: [ + 'stylus/*.styl', + 'stylus/website/**', + 'views/*.pug', + 'views/website/**' + ], + tasks: ['build-website-views'] + }, + extensionViews: { + files: [ + 'stylus/*.styl', + 'stylus/extension/**', + 'views/*.pug', + 'views/extension/**' + ], + tasks: ['build-extension-views'] } } }); - grunt.registerTask('build-views', ['stylus', 'pug']); - grunt.registerTask('build', ['clean', 'copy', 'build-views', 'webpack:prod']); - grunt.registerTask('build-dev', - ['clean', 'copy', 'build-views', 'webpack:dev']); + grunt.registerTask('build-website-views', [ + 'stylus:website', + 'pug:website' + ]); + + grunt.registerTask('build-extension-views', [ + 'stylus:extension', + 'pug:extension' + ]); + + grunt.registerTask('build-website', [ + 'clean:website', + 'copy:website', + 'build-website-views', + 'webpack:websiteProd' + ]); + + grunt.registerTask('build-website-dev', [ + 'clean:website', + 'copy:website', + 'build-website-views', + 'webpack:websiteDev' + ]); + + grunt.registerTask('build-extension', [ + 'clean:extension', + 'copy:extension', + 'build-extension-views', + 'webpack:extensionProd' + ]); + + grunt.registerTask('build-extension-dev', [ + 'clean:extension', + 'copy:extension', + 'build-extension-views', + 'webpack:extensionDev' + ]); + + grunt.registerTask('build', ['build-website', 'build-extension']); + + grunt.registerTask('build-dev', [ + 'build-website-dev', + 'build-extension-dev' + ]); + grunt.registerTask('default', ['build-dev', 'watch']); }; diff --git a/html/extension/bg.html b/html/extension/bg.html new file mode 100644 index 00000000..bd54434b --- /dev/null +++ b/html/extension/bg.html @@ -0,0 +1,3 @@ + + + diff --git a/img/bg_arrow_select.svg b/img/extension/bg_arrow_select.svg similarity index 100% rename from img/bg_arrow_select.svg rename to img/extension/bg_arrow_select.svg diff --git a/img/extension/debugger-logo.svg b/img/extension/debugger-logo.svg new file mode 100644 index 00000000..d416c0d4 --- /dev/null +++ b/img/extension/debugger-logo.svg @@ -0,0 +1,35 @@ + + + + Group 3 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/img/favicon/android-icon-192x192.png b/img/extension/favicon/android-icon-192x192.png similarity index 100% rename from img/favicon/android-icon-192x192.png rename to img/extension/favicon/android-icon-192x192.png diff --git a/img/favicon/android-icon-48x48.png b/img/extension/favicon/android-icon-48x48.png similarity index 100% rename from img/favicon/android-icon-48x48.png rename to img/extension/favicon/android-icon-48x48.png diff --git a/img/favicon/favicon-16x16.png b/img/extension/favicon/favicon-16x16.png similarity index 100% rename from img/favicon/favicon-16x16.png rename to img/extension/favicon/favicon-16x16.png diff --git a/img/favicon/favicon-32x32.png b/img/extension/favicon/favicon-32x32.png similarity index 100% rename from img/favicon/favicon-32x32.png rename to img/extension/favicon/favicon-32x32.png diff --git a/img/favicon/favicon-96x96.png b/img/extension/favicon/favicon-96x96.png similarity index 100% rename from img/favicon/favicon-96x96.png rename to img/extension/favicon/favicon-96x96.png diff --git a/img/extension/favicon/icon-128x128.png b/img/extension/favicon/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..543412b5e44906d5aeaeb17fec369d694061aa56 GIT binary patch literal 3551 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 H9V7n(Y9i%1 literal 0 HcmV?d00001 diff --git a/img/ico_logo.svg b/img/extension/ico_logo.svg similarity index 100% rename from img/ico_logo.svg rename to img/extension/ico_logo.svg diff --git a/img/extension/icon-chromeless.svg b/img/extension/icon-chromeless.svg new file mode 100644 index 00000000..81ab2ea8 --- /dev/null +++ b/img/extension/icon-chromeless.svg @@ -0,0 +1,29 @@ + + + + icon + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/assets/icon.svg b/img/extension/icon.svg similarity index 100% rename from assets/icon.svg rename to img/extension/icon.svg diff --git a/assets/logo.svg b/img/extension/logo.svg similarity index 100% rename from assets/logo.svg rename to img/extension/logo.svg diff --git a/img/extension/share-badge.svg b/img/extension/share-badge.svg new file mode 100644 index 00000000..9ca0beca --- /dev/null +++ b/img/extension/share-badge.svg @@ -0,0 +1,33 @@ + + + + badge + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/img/1.svg b/img/website/1.svg similarity index 100% rename from img/1.svg rename to img/website/1.svg diff --git a/img/10.svg b/img/website/10.svg similarity index 100% rename from img/10.svg rename to img/website/10.svg diff --git a/img/11.svg b/img/website/11.svg similarity index 100% rename from img/11.svg rename to img/website/11.svg diff --git a/img/12.svg b/img/website/12.svg similarity index 100% rename from img/12.svg rename to img/website/12.svg diff --git a/img/13.svg b/img/website/13.svg similarity index 100% rename from img/13.svg rename to img/website/13.svg diff --git a/img/14.svg b/img/website/14.svg similarity index 100% rename from img/14.svg rename to img/website/14.svg diff --git a/img/15.svg b/img/website/15.svg similarity index 100% rename from img/15.svg rename to img/website/15.svg diff --git a/img/16.svg b/img/website/16.svg similarity index 100% rename from img/16.svg rename to img/website/16.svg diff --git a/img/17.svg b/img/website/17.svg similarity index 100% rename from img/17.svg rename to img/website/17.svg diff --git a/img/18.svg b/img/website/18.svg similarity index 100% rename from img/18.svg rename to img/website/18.svg diff --git a/img/19.svg b/img/website/19.svg similarity index 100% rename from img/19.svg rename to img/website/19.svg diff --git a/img/2.svg b/img/website/2.svg similarity index 100% rename from img/2.svg rename to img/website/2.svg diff --git a/img/20.svg b/img/website/20.svg similarity index 100% rename from img/20.svg rename to img/website/20.svg diff --git a/img/21.svg b/img/website/21.svg similarity index 100% rename from img/21.svg rename to img/website/21.svg diff --git a/img/22.svg b/img/website/22.svg similarity index 100% rename from img/22.svg rename to img/website/22.svg diff --git a/img/23.svg b/img/website/23.svg similarity index 100% rename from img/23.svg rename to img/website/23.svg diff --git a/img/24.svg b/img/website/24.svg similarity index 100% rename from img/24.svg rename to img/website/24.svg diff --git a/img/25.svg b/img/website/25.svg similarity index 100% rename from img/25.svg rename to img/website/25.svg diff --git a/img/3.svg b/img/website/3.svg similarity index 100% rename from img/3.svg rename to img/website/3.svg diff --git a/img/4.svg b/img/website/4.svg similarity index 100% rename from img/4.svg rename to img/website/4.svg diff --git a/img/5.svg b/img/website/5.svg similarity index 100% rename from img/5.svg rename to img/website/5.svg diff --git a/img/6.svg b/img/website/6.svg similarity index 100% rename from img/6.svg rename to img/website/6.svg diff --git a/img/7.svg b/img/website/7.svg similarity index 100% rename from img/7.svg rename to img/website/7.svg diff --git a/img/8.svg b/img/website/8.svg similarity index 100% rename from img/8.svg rename to img/website/8.svg diff --git a/img/9.svg b/img/website/9.svg similarity index 100% rename from img/9.svg rename to img/website/9.svg diff --git a/assets/badge-compatible.svg b/img/website/badge-compatible.svg similarity index 100% rename from assets/badge-compatible.svg rename to img/website/badge-compatible.svg diff --git a/assets/badge.svg b/img/website/badge.svg similarity index 100% rename from assets/badge.svg rename to img/website/badge.svg diff --git a/img/bg_arrow.svg b/img/website/bg_arrow.svg similarity index 100% rename from img/bg_arrow.svg rename to img/website/bg_arrow.svg diff --git a/img/website/bg_arrow_select.svg b/img/website/bg_arrow_select.svg new file mode 100644 index 00000000..1be940ac --- /dev/null +++ b/img/website/bg_arrow_select.svg @@ -0,0 +1,14 @@ + + + + Path 34 + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/img/bg_steps.svg b/img/website/bg_steps.svg similarity index 100% rename from img/bg_steps.svg rename to img/website/bg_steps.svg diff --git a/img/facebook-card.png b/img/website/facebook-card.png similarity index 100% rename from img/facebook-card.png rename to img/website/facebook-card.png diff --git a/img/favicon/android-icon-144x144.png b/img/website/favicon/android-icon-144x144.png similarity index 100% rename from img/favicon/android-icon-144x144.png rename to img/website/favicon/android-icon-144x144.png diff --git a/img/favicon/apple-icon-precomposed.png b/img/website/favicon/android-icon-192x192.png similarity index 100% rename from img/favicon/apple-icon-precomposed.png rename to img/website/favicon/android-icon-192x192.png diff --git a/img/favicon/android-icon-36x36.png b/img/website/favicon/android-icon-36x36.png similarity index 100% rename from img/favicon/android-icon-36x36.png rename to img/website/favicon/android-icon-36x36.png diff --git a/img/website/favicon/android-icon-48x48.png b/img/website/favicon/android-icon-48x48.png new file mode 100755 index 0000000000000000000000000000000000000000..31ec5b6d98832fe2785a2832e66bc95eb112b1b3 GIT binary patch literal 1395 zcmV-(1&sQMP){Qz75^ymWs0sy=7baZq8y7O3ASO5wN*gO9K1_;HzHF-{0Q=s@}IT+5nu)0Fa6L0a`~BR!&Y%rvN(u5*Q5)4H^Im(mDG0 z_xAw2^#JkZ-QC^T*w_Hl$crVW0IQ?`e4>XXp#gWB0H2q6A&>xterX$f0BBjx005UHyFewQyX8tGI;Q*}Q-rn8->D>UN*0V6y0NT$0pU(i($Nfzk z0L;Q)#=)2}!J;g{0Fk`_pSw-Kx|}Myx3{+dinIW_u>i8J611!Ugsih8tN^sDkSD6C zrl+W8)hje?&On6yrYg!m<08nUF7iMr-VebJ~09sY$0aLsL zPp<_|08vf05lzbiO+pV$$^l6`5J<-XNJd6Ro)tzg4LP3xIi3JH05&v;05Es}D=R4~ zQve<%0T3nu4oS`y1UYF&DZYf#g|TU5FN1kB$4R2ZoG%x+RerKPsz1 zTd~Z^s!=5c2*5O?tOt<$k0L5;h%gd3o@2yv*26(DQ#Q9R$dy2!NsM9jrc7)KG# zQg!XxRaw-Xu0uFgXCT)uV@xCd&vnoJLD|%X={M}cicX6s;GF;f002ovPDHLkV1i-f BQXK#Q literal 0 HcmV?d00001 diff --git a/img/favicon/android-icon-72x72.png b/img/website/favicon/android-icon-72x72.png similarity index 100% rename from img/favicon/android-icon-72x72.png rename to img/website/favicon/android-icon-72x72.png diff --git a/img/favicon/android-icon-96x96.png b/img/website/favicon/android-icon-96x96.png similarity index 100% rename from img/favicon/android-icon-96x96.png rename to img/website/favicon/android-icon-96x96.png diff --git a/img/favicon/apple-icon-114x114.png b/img/website/favicon/apple-icon-114x114.png similarity index 100% rename from img/favicon/apple-icon-114x114.png rename to img/website/favicon/apple-icon-114x114.png diff --git a/img/favicon/apple-icon-120x120.png b/img/website/favicon/apple-icon-120x120.png similarity index 100% rename from img/favicon/apple-icon-120x120.png rename to img/website/favicon/apple-icon-120x120.png diff --git a/img/favicon/apple-icon-144x144.png b/img/website/favicon/apple-icon-144x144.png similarity index 100% rename from img/favicon/apple-icon-144x144.png rename to img/website/favicon/apple-icon-144x144.png diff --git a/img/favicon/apple-icon-152x152.png b/img/website/favicon/apple-icon-152x152.png similarity index 100% rename from img/favicon/apple-icon-152x152.png rename to img/website/favicon/apple-icon-152x152.png diff --git a/img/favicon/apple-icon-180x180.png b/img/website/favicon/apple-icon-180x180.png similarity index 100% rename from img/favicon/apple-icon-180x180.png rename to img/website/favicon/apple-icon-180x180.png diff --git a/img/favicon/apple-icon-57x57.png b/img/website/favicon/apple-icon-57x57.png similarity index 100% rename from img/favicon/apple-icon-57x57.png rename to img/website/favicon/apple-icon-57x57.png diff --git a/img/favicon/apple-icon-60x60.png b/img/website/favicon/apple-icon-60x60.png similarity index 100% rename from img/favicon/apple-icon-60x60.png rename to img/website/favicon/apple-icon-60x60.png diff --git a/img/favicon/apple-icon-72x72.png b/img/website/favicon/apple-icon-72x72.png similarity index 100% rename from img/favicon/apple-icon-72x72.png rename to img/website/favicon/apple-icon-72x72.png diff --git a/img/favicon/apple-icon-76x76.png b/img/website/favicon/apple-icon-76x76.png similarity index 100% rename from img/favicon/apple-icon-76x76.png rename to img/website/favicon/apple-icon-76x76.png diff --git a/img/favicon/apple-icon.png b/img/website/favicon/apple-icon-precomposed.png similarity index 100% rename from img/favicon/apple-icon.png rename to img/website/favicon/apple-icon-precomposed.png diff --git a/img/website/favicon/apple-icon.png b/img/website/favicon/apple-icon.png new file mode 100755 index 0000000000000000000000000000000000000000..639aa125abc92efee62768e30583ca87c5cb5f9e GIT binary patch literal 4202 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 G@&5<;u49-0 literal 0 HcmV?d00001 diff --git a/img/favicon/browserconfig.xml b/img/website/favicon/browserconfig.xml similarity index 100% rename from img/favicon/browserconfig.xml rename to img/website/favicon/browserconfig.xml diff --git a/img/website/favicon/favicon-16x16.png b/img/website/favicon/favicon-16x16.png new file mode 100755 index 0000000000000000000000000000000000000000..d8058a798cde4d907f92b7c8819afc7c8603f429 GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}OMp*^E08{X_%K63maD5PgRXuF zgQf_Z00S5AL6c|e?Vd2af4tlH0mJfJ0&{M%KEAQ?`W1$Sml)>kxw&fBWSuP=l-IB} ztY+A>iec3%uBwtykwgZM7;o_y?bs+5=g992k+0bzHnWBAWOOm*cVN)7iPyHN<1*3U zHegWJ)n`}dl$0=H5aM9sWb^&13Uo)Er;B5V#O2;TSH1=Z0haV>qId4b{{L@3sa4=m z=dRMF{H*%}r+i1;_0`A<=n@7`S3j3^P66Vt30Q2XBgoOM6T1fyI$u;Z%^5y`p;Q-*(@&Q-?DmNPj zArKG{1_B5G1qT4V_5j4X0D*d78F2toYv=$|08B^#NJJ?MF?Ikc02m)t0384n6#x(s zDgX}<00z-G`0n!Y^6u^cwd=$+=K$*80O{QTHt#!JWBvMNW1|=uK_@+0X_geI{-X6o&h;-1}p#;95?_J z4gdvYBH&^G00DhTL_t(I%hi(QQo~RXMsISH5K^Zt)Jp|->TXas+}+*XT_2i+3^OU2 zK0wc}duPvlv$MOP0=cx?qh*WwGyqiyQVqbD0PwLKOP0*6P<+xF8+byjjTEU^AxS|g zKclclkR7@W1o4<|DER&jcx0ytqHY>NHv1s#xBe?CLjjpmCm}_%%}s|C)Cv>{uV29t zGJ~kt=38th!Y)q=N+a%GA=YZ(2%%b(M!bLeDwhk4XF?pqaqOHU$acqCP_(wYp83>t zVK~;<jN{R&Ib$N5?>u|q;tnvp_}fg zWx^@r2tlSPTzHkt$>loLju>UQ;0T6ROxPQYNa4q}>u8{T`NSqhhcX;Np;jjprh7;o zG&N6(NQqu4(`b~S6e~006$F{Dqeq?vJQ`jgbt|B^xfkmoiS+_cFi9bmV%Mz_k!^Z@ zf>HZiWCinrBy0hEa@N0-OTU3~Tss_5PJ0HT7PZvTMQ)*wciE@2Z6YY1UQhCnMUn_U6z1VB!U7)KnfoH=rjNI*x)@>48hF- zF82wXyNfzm3};S&Tj(+b{6Ku)Bc8T0ZeZr5joz68+d*TShNuoGY?2kk;y?_9MI=BF zW+wPX<51j_NvQBui0Cz6g2yvmrZY{(pHUM-@ah>;=O1WzSW;2~QQ2`SbO<{KUJ<)D zh0Gwn;6vdfB+$166+BKD4|1|{Ai_2Ln7g&A1sp&{Yh~rv{QNv{CSZCLsz%}8kqrzD z4Z-*ze0&XWUUYSJ-P+a;txxi`YvA!ccu*;H<`$f}39S4?)l0z00%|&Bqy%k_jfshY z*hn}W0!|11hxpASeqRxvam1?|aRygMGMQWlc3^K?3D(!ZY@38BXc=XJQ9S5If);Gm zR8dj!0~HTYvH^J+8JX=MtqqbG3`PaSp|m#;cNFl1Hj}AJn^El5K^X4ib$7w__J?}y z(A`9D;zM2o)N>(+3w4|{z1yXwrEsgbgP*NypRAN}cuP`XxDE7NQhAH2|SL zXA;qeI`aKm!frVtuHCG&vYw00E7d$Nh^PhAv{QOXr}A{^LOzrTm))(YabDP@nTDm2 zq?u$b&JRLD-xvjm^dB0O zakJt}^0r);C)`OW%y;>`TsE7bgZ)It^q^K%^fmt|jF`C}g11lZT}g6tIW}v2!KF{T zq6C$*lBGyCw7dG5k=1-el)_W#Y(Wey)@`wu&=CPRZdj+E zEwWR>|M(~GLxnxQV`cmP`GUr4=}t5|Stoutb|c^t1MVkVtAfz^q`dEAY6=N?CiLns z-Bva4;}Q?{7d(;B2o9@}A6kf=oVWa{&v$tD*VmUalaA77Gfdi14zYpbuWea|EF<|K z4fo^WcXEO;&TY1(j!n9JE+@+KW=RK4kFO{%+Zw9fflXhn8af0~p!A92b?}&CE8?nLOvH20k z)41MgKAz7(ggJ?^CQR~xs<{QBeY!f;*+(d$87o|VVzYtt6Xm|m!a!tA8tHb)?dzFm9|>w-CLW+G+LMz=_p~k-SPCRR+$jtyo_aP z7e@+e%=KfM@%Fu)r&buwsAqSJc~gFpHi-u>kOnfS>+c2+aPP5rTHZAFZo{EUHMFg| zu71jyUl=ygh44E(b<-S0V=Bf#ZE;eP-V2NZ{-fJsaBs?P&WX|FYH<3JFx}#Cb}NQX z7qK~oZI_mhDd8tt(||X5!FAR&GDVbJE~M2$)BEOtVD6b>U8km+x>;Zp^Okl!!{N=vzu2FS6~U!E%D2KOa_W(Z z%K6|LuP0~yrN)h^<~bDn@A{^)PSt@RYYLc^eyBJh+#0A`SI>6WlL@YAMzKG{R)-#) zju34$%IaTDh&!efvxGk@eKwi-K5a!-XYJCOQ?-4NScz;@Y(ru1jXc0fj9M;Svls2% zH*w0Ofr1KlwP@b;2HPNF2ileAT%Q@bSPEJT;r__86V_EfdrI{!*KNJ%*klk)_A*C{ zBLSx}dZ>(KX*X6LZmvv16k;;k<)*R&RQFr02;BC1YYn`r$|E|6#^q4TIyZf&+U~{2 twc1syMw=zx%$yW@V{ + + + auth0-svg + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/img/ico_question.svg b/img/website/ico_question.svg similarity index 100% rename from img/ico_question.svg rename to img/website/ico_question.svg diff --git a/img/ico_star.svg b/img/website/ico_star.svg similarity index 100% rename from img/ico_star.svg rename to img/website/ico_star.svg diff --git a/img/ico_status.svg b/img/website/ico_status.svg similarity index 100% rename from img/ico_status.svg rename to img/website/ico_status.svg diff --git a/img/ico_twitter.svg b/img/website/ico_twitter.svg similarity index 100% rename from img/ico_twitter.svg rename to img/website/ico_twitter.svg diff --git a/img/website/icon.svg b/img/website/icon.svg new file mode 100644 index 00000000..67ffc813 --- /dev/null +++ b/img/website/icon.svg @@ -0,0 +1,28 @@ + + + + Group + Created with Sketch. + + + + + \ No newline at end of file diff --git a/img/website/logo-asset.svg b/img/website/logo-asset.svg new file mode 100644 index 00000000..17252849 --- /dev/null +++ b/img/website/logo-asset.svg @@ -0,0 +1,27 @@ + + + + Group + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/img/logo.svg b/img/website/logo.svg similarity index 100% rename from img/logo.svg rename to img/website/logo.svg diff --git a/img/pic_logo.svg b/img/website/pic_logo.svg similarity index 100% rename from img/pic_logo.svg rename to img/website/pic_logo.svg diff --git a/img/pic_logo2.svg b/img/website/pic_logo2.svg similarity index 100% rename from img/pic_logo2.svg rename to img/website/pic_logo2.svg diff --git a/img/pic_logo3.svg b/img/website/pic_logo3.svg similarity index 100% rename from img/pic_logo3.svg rename to img/website/pic_logo3.svg diff --git a/img/pic_logo4.svg b/img/website/pic_logo4.svg similarity index 100% rename from img/pic_logo4.svg rename to img/website/pic_logo4.svg diff --git a/img/pic_logo_ft.svg b/img/website/pic_logo_ft.svg similarity index 100% rename from img/pic_logo_ft.svg rename to img/website/pic_logo_ft.svg diff --git a/img/pic_tshirt.png b/img/website/pic_tshirt.png similarity index 100% rename from img/pic_tshirt.png rename to img/website/pic_tshirt.png diff --git a/img/pic_tshirt_b.png b/img/website/pic_tshirt_b.png similarity index 100% rename from img/pic_tshirt_b.png rename to img/website/pic_tshirt_b.png diff --git a/img/q.svg b/img/website/q.svg similarity index 100% rename from img/q.svg rename to img/website/q.svg diff --git a/img/twitter-card.png b/img/website/twitter-card.png similarity index 100% rename from img/twitter-card.png rename to img/website/twitter-card.png diff --git a/manifest.json b/manifest.json new file mode 100644 index 00000000..3a978123 --- /dev/null +++ b/manifest.json @@ -0,0 +1,43 @@ +{ + "manifest_version": 2, + + "name": "JWT Debugger", + "description": "The JWT.io debugger as a Chrome extension", + "version": "2.0.0", + + "browser_action": { + "default_icon": "img/favicon/favicon-96x96.png", + "default_popup": "index.html" + }, + + "background": { + "page": "bg.html" + }, + + "icons": { + "16": "img/favicon/favicon-16x16.png", + "32": "img/favicon/favicon-32x32.png", + "48": "img/favicon/android-icon-48x48.png", + "96": "img/favicon/favicon-96x96.png", + "192": "img/favicon/android-icon-192x192.png" + }, + + "commands": { + "_execute_browser_action": { + "suggested_key": { + "default": "Ctrl+Shift+K", + "mac": "Command+Shift+K", + "linux": "Ctrl+Shift+K" + } + } + }, + + "permissions": [ + "activeTab", + "", + "cookies", + "storage", + "clipboardRead", + "clipboardWrite" + ] +} diff --git a/src/dom-elements.js b/src/dom-elements.js new file mode 100644 index 00000000..3cd8ed72 --- /dev/null +++ b/src/dom-elements.js @@ -0,0 +1,31 @@ +export const encodedTabLink = + document.querySelector('.tab-link a[href="#encoded-jwt"]'); +export const decodedTabLink = + document.querySelector('.tab-link a[href="#decoded-jwt"]'); +export const encodedTabElement = document.getElementById('encoded-jwt'); +export const decodedTabElement = document.getElementById('decoded-jwt'); +export const editorElement = document.querySelector('#encoded-jwt .input'); +export const decodedElement = document.querySelector('#decoded-jwt .output'); +export const headerElement = document.querySelector('.js-header'); +export const payloadElement = document.querySelector('.js-payload'); +export const payloadTooltipElement = + document.getElementById('js-payload-tooltip'); + +export const signatureStatusElement = + document.querySelector('.validation-status.js-signature'); + +export const algorithmSelect = document.getElementById('algorithm-select'); + +export const keyEditorContainer = document.querySelector('.jwt-signature pre.RS256'); +export const rsaShaTextSpan = document.getElementById('rsasha-text'); +export const secretEditorContainer = document.querySelector('.jwt-signature pre.HS256'); +export const hmacShaTextSpan = document.getElementById('hmacsha-text'); + +export const publicKeyTextArea = + document.querySelector('.jwt-signature textarea[name="public-key"]'); +export const privateKeyTextArea = + document.querySelector('.jwt-signature textarea[name="private-key"]'); +export const secretInput = + document.querySelector('.jwt-signature input[name="secret"]'); +export const secretBase64Checkbox = + document.getElementById('is-base64-encoded'); diff --git a/src/default-tokens.js b/src/editor/default-tokens.js similarity index 100% rename from src/default-tokens.js rename to src/editor/default-tokens.js diff --git a/src/website/editor/event-manager.js b/src/editor/event-manager.js similarity index 100% rename from src/website/editor/event-manager.js rename to src/editor/event-manager.js diff --git a/src/website/editor/index.js b/src/editor/index.js similarity index 97% rename from src/website/editor/index.js rename to src/editor/index.js index 22aaeab5..6067c952 100644 --- a/src/website/editor/index.js +++ b/src/editor/index.js @@ -1,6 +1,5 @@ -import { copyTextToClipboard } from '../utils.js'; -import { deferToNextLoop } from '../../utils.js'; -import { downloadPublicKeyIfPossible } from '../../public-key-download.js'; +import { copyTextToClipboard, deferToNextLoop } from '../utils.js'; +import { downloadPublicKeyIfPossible } from './public-key-download.js'; import { tooltipHandler } from './tooltip.js'; import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; import { @@ -9,10 +8,10 @@ import { stringify, fixEditorHeight } from './utils.js'; -import { sign, verify, decode } from '../../jwt.js'; +import { sign, verify, decode } from './jwt.js'; import EventManager from './event-manager.js'; import strings from '../strings.js'; -import defaultTokens from '../../default-tokens.js'; +import defaultTokens from './default-tokens.js'; import { algorithmSelect, signatureStatusElement, diff --git a/src/website/editor/instances.js b/src/editor/instances.js similarity index 100% rename from src/website/editor/instances.js rename to src/editor/instances.js diff --git a/src/website/editor/jwt-mode.js b/src/editor/jwt-mode.js similarity index 100% rename from src/website/editor/jwt-mode.js rename to src/editor/jwt-mode.js diff --git a/src/jwt.js b/src/editor/jwt.js similarity index 100% rename from src/jwt.js rename to src/editor/jwt.js diff --git a/src/public-key-download.js b/src/editor/public-key-download.js similarity index 98% rename from src/public-key-download.js rename to src/editor/public-key-download.js index de2ab508..afb748d0 100644 --- a/src/public-key-download.js +++ b/src/editor/public-key-download.js @@ -1,4 +1,4 @@ -import { httpGet } from './utils.js'; +import { httpGet } from '../utils.js'; function getKeyFromX5c(x5c) { if(!x5c) { diff --git a/src/website/editor/tooltip.js b/src/editor/tooltip.js similarity index 100% rename from src/website/editor/tooltip.js rename to src/editor/tooltip.js diff --git a/src/website/editor/utils.js b/src/editor/utils.js similarity index 100% rename from src/website/editor/utils.js rename to src/editor/utils.js diff --git a/src/extension/dom-elements.js b/src/extension/dom-elements.js new file mode 100644 index 00000000..1d0afd1c --- /dev/null +++ b/src/extension/dom-elements.js @@ -0,0 +1 @@ +export * from '../dom-elements.js'; \ No newline at end of file diff --git a/src/extension/index.js b/src/extension/index.js new file mode 100644 index 00000000..3d889638 --- /dev/null +++ b/src/extension/index.js @@ -0,0 +1,44 @@ +import { + setupTokenEditor, + setTokenEditorValue, + useDefaultToken +} from '../editor'; +import { getParameterByName } from '../utils.js'; +import { publicKeyTextArea } from './dom-elements.js'; + +/* For initialization, look at the end of this file */ + +function parseLocationQuery() { + const publicKey = getParameterByName('publicKey'); + const value = getParameterByName('value'); + const token = getParameterByName('token'); + + if(publicKey) { + publicKeyTextArea.value = publicKey; + } + if(value) { + setTokenEditorValue(value); + } + if(token) { + setTokenEditorValue(token); + } +} + +function loadToken() { + const lastToken = localStorage.getItem('lastToken'); + if(lastToken) { + setTokenEditorValue(value); + + const lastPublicKey = localStorage.getItem('lastPublicKey'); + if(lastPublicKey) { + publicKeyTextArea.value = lastPublicKey; + } + } else { + useDefaultToken('HS256'); + } +} + +// Initialization +setupTokenEditor(); +loadToken(); +parseLocationQuery(); diff --git a/src/website/strings.js b/src/strings.js similarity index 100% rename from src/website/strings.js rename to src/strings.js diff --git a/src/utils.js b/src/utils.js index b1cf7699..c11a502f 100644 --- a/src/utils.js +++ b/src/utils.js @@ -104,3 +104,82 @@ export function isValidKey(key) { export function deferToNextLoop(func) { setTimeout(func, 1); } + +// https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript +export function copyTextToClipboard(text) { + var textArea = document.createElement("textarea"); + + // + // *** This styling is an extra step which is likely not required. *** + // + // Why is it here? To ensure: + // 1. the element is able to have focus and selection. + // 2. if element was to flash render it has minimal visual impact. + // 3. less flakyness with selection and copying which **might** occur if + // the textarea element is not visible. + // + // The likelihood is the element won't even render, not even a flash, + // so some of these are just precautions. However in IE the element + // is visible whilst the popup box asking the user for permission for + // the web page to copy to the clipboard. + // + + // Place in top-left corner of screen regardless of scroll position. + textArea.style.position = 'fixed'; + textArea.style.top = 0; + textArea.style.left = 0; + + // Ensure it has a small width and height. Setting to 1px / 1em + // doesn't work as this gives a negative w/h on some browsers. + textArea.style.width = '2em'; + textArea.style.height = '2em'; + + // We don't need padding, reducing the size if it does flash render. + textArea.style.padding = 0; + + // Clean up any borders. + textArea.style.border = 'none'; + textArea.style.outline = 'none'; + textArea.style.boxShadow = 'none'; + + // Avoid flash of white box if rendered for any reason. + textArea.style.background = 'transparent'; + + textArea.value = text; + + document.body.appendChild(textArea); + + textArea.select(); + + try { + document.execCommand('copy'); + } catch (err) { + console.error(err); + } + + document.body.removeChild(textArea); +} + +// https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript +export function getParameterByName(name, url) { + if(!url) { + url = window.location.href; + } + + name = name.replace(/[\[\]]/g, "\\$&"); + + const regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"); + const results = regex.exec(url); + if(!results) { + return null; + } + if(!results[2]) { + return ''; + } + + return decodeURIComponent(results[2].replace(/\+/g, " ")); +} + +export function isWideScreen() { + return window.matchMedia('(min-width: 768px)').matches; +} diff --git a/src/website/dom-elements.js b/src/website/dom-elements.js index 21b64213..53929903 100644 --- a/src/website/dom-elements.js +++ b/src/website/dom-elements.js @@ -1,3 +1,5 @@ +export * from '../dom-elements.js'; + export const navbarElement = document.querySelector('nav.navbar'); export const menuTriggerElement = document.querySelector('.menu-trigger'); export const menuLinks = document.querySelectorAll('.navbar .menu a'); @@ -18,38 +20,6 @@ export const codeElements = document.querySelectorAll('.plain-text pre code'); export const debuggerSection = document.getElementById('debugger-io'); -export const encodedTabLink = - document.querySelector('.tab-link a[href="#encoded-jwt"]'); -export const decodedTabLink = - document.querySelector('.tab-link a[href="#decoded-jwt"]'); -export const encodedTabElement = document.getElementById('encoded-jwt'); -export const decodedTabElement = document.getElementById('decoded-jwt'); -export const editorElement = document.querySelector('#encoded-jwt .input'); -export const decodedElement = document.querySelector('#decoded-jwt .output'); -export const headerElement = document.querySelector('.js-header'); -export const payloadElement = document.querySelector('.js-payload'); -export const payloadTooltipElement = - document.getElementById('js-payload-tooltip'); - -export const signatureStatusElement = - document.querySelector('.validation-status.js-signature'); - -export const algorithmSelect = document.getElementById('algorithm-select'); - -export const keyEditorContainer = document.querySelector('.jwt-signature pre.RS256'); -export const rsaShaTextSpan = document.getElementById('rsasha-text'); -export const secretEditorContainer = document.querySelector('.jwt-signature pre.HS256'); -export const hmacShaTextSpan = document.getElementById('hmacsha-text'); - -export const publicKeyTextArea = - document.querySelector('.jwt-signature textarea[name="public-key"]'); -export const privateKeyTextArea = - document.querySelector('.jwt-signature textarea[name="private-key"]'); -export const secretInput = - document.querySelector('.jwt-signature input[name="secret"]'); -export const secretBase64Checkbox = - document.getElementById('is-base64-encoded'); - export const starsElements = document.getElementsByClassName('stars'); export const librariesElement = document.querySelector('.libraries-sv'); export const librariesSelect = document.getElementById('libraries-select'); diff --git a/src/website/extension.js b/src/website/extension.js index c63140c6..9084ea11 100644 --- a/src/website/extension.js +++ b/src/website/extension.js @@ -1,5 +1,5 @@ import { extensionButton, extensionButtonText } from './dom-elements.js'; -import strings from './strings.js'; +import strings from '../strings.js'; // https://stackoverflow.com/questions/4565112/javascript-how-to-find-out-if-the-user-browser-is-chrome function isChrome() { diff --git a/src/website/index.js b/src/website/index.js index 5eb3aa99..8777ab33 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -5,11 +5,11 @@ import { setupTokenEditor, setTokenEditorValue, useDefaultToken -} from './editor'; +} from '../editor'; import { setupJwtCounter } from './counter.js'; import { setupSmoothScrolling } from './smooth-scrolling.js'; import { setupHighlighting } from './highlighting.js'; -import { getParameterByName, smoothScrollTo } from './utils.js'; +import { getParameterByName } from '../utils.js'; import { publicKeyTextArea, codeElements, diff --git a/src/website/smooth-scrolling.js b/src/website/smooth-scrolling.js index c9d02c0c..c3aca1a5 100644 --- a/src/website/smooth-scrolling.js +++ b/src/website/smooth-scrolling.js @@ -1,5 +1,5 @@ import { menuScrollableLinks, navbarElement } from './dom-elements.js'; -import { isWideScreen } from './utils.js'; +import { isWideScreen } from '../utils.js'; import $ from 'jquery'; diff --git a/src/website/utils.js b/src/website/utils.js index 79cdfdec..3bb573db 100644 --- a/src/website/utils.js +++ b/src/website/utils.js @@ -7,81 +7,6 @@ export function safeLocalStorageSetItem(key, value) { } } -// https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript -export function getParameterByName(name, url) { - if(!url) { - url = window.location.href; - } - - name = name.replace(/[\[\]]/g, "\\$&"); - - const regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"); - const results = regex.exec(url); - if(!results) { - return null; - } - if(!results[2]) { - return ''; - } - - return decodeURIComponent(results[2].replace(/\+/g, " ")); -} - -// https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript -export function copyTextToClipboard(text) { - var textArea = document.createElement("textarea"); - - // - // *** This styling is an extra step which is likely not required. *** - // - // Why is it here? To ensure: - // 1. the element is able to have focus and selection. - // 2. if element was to flash render it has minimal visual impact. - // 3. less flakyness with selection and copying which **might** occur if - // the textarea element is not visible. - // - // The likelihood is the element won't even render, not even a flash, - // so some of these are just precautions. However in IE the element - // is visible whilst the popup box asking the user for permission for - // the web page to copy to the clipboard. - // - - // Place in top-left corner of screen regardless of scroll position. - textArea.style.position = 'fixed'; - textArea.style.top = 0; - textArea.style.left = 0; - - // Ensure it has a small width and height. Setting to 1px / 1em - // doesn't work as this gives a negative w/h on some browsers. - textArea.style.width = '2em'; - textArea.style.height = '2em'; - - // We don't need padding, reducing the size if it does flash render. - textArea.style.padding = 0; - - // Clean up any borders. - textArea.style.border = 'none'; - textArea.style.outline = 'none'; - textArea.style.boxShadow = 'none'; - - // Avoid flash of white box if rendered for any reason. - textArea.style.background = 'transparent'; - - textArea.value = text; - - document.body.appendChild(textArea); - - textArea.select(); - - try { - document.execCommand('copy'); - } catch (err) { - console.error(err); - } - - document.body.removeChild(textArea); -} - export function getOffsetBoundingClientRect(element) { const rect = element.getBoundingClientRect(); @@ -103,7 +28,3 @@ export function isInViewport(elem) { bounding.right <= (window.innerWidth || document.documentElement.clientWidth) ); }; - -export function isWideScreen() { - return window.matchMedia('(min-width: 768px)').matches; -} diff --git a/stylus/extension/index.styl b/stylus/extension/index.styl new file mode 100644 index 00000000..e066622c --- /dev/null +++ b/stylus/extension/index.styl @@ -0,0 +1,167 @@ +@import 'http://github.com/website/index' + +.container + width 800px + +.jwt-clipboard-btn + background #000 + display inline-block + padding 6px 6px + padding-left 15px + color #fff !important + text-decoration none !important + border-radius 20px + text-transform uppercase + font-size 12px + letter-spacing .5px + position relative + line-height 28px + padding-right 40px + width 190px + text-align center + + &:hover + opacity: 0.85 + + img + position absolute + top 7px + right 7px + +.h-block + display inline-block; + + & + .h-block + margin-left: 15px; + +.tab-link small + zoom .8 + +.jwt-playground + padding-top 12px + + .save-back + color #0094c1 + margin-left 15px + + .colophon, + .validation-status + zoom .8 + + .colophon + margin-top 12px + margin-bottom 12px + position relative + + .share-callouts + margin-left 20px + + svg + position relative + top 5px + margin-left 4px + + a + text-decoration none + color currentColor + + .top-section + margin-bottom 18px + zoom .8 + + a + outline none + + .keyboard-info + display inline-block + margin-left 20px + opacity 0.5 + //line-height 37px + + .algorithm + text-align right + + .validation-status + margin-top 20px + + .algorithm-code + margin-top 0px + + .tab-content + .jwt-explained + .text-line + zoom .8 + pre + font-size 11px + line-height 1.5 + padding 0 + .CodeMirror-wrap, + .pre-encode + min-height 105px + padding: 8px + .input + padding 10px + + .tab-nav + margin-bottom 10px + + a + font-size 16px + +.custom-select + display inline-block + position relative + select + background white + width 100px + height 38px + font-size 12px + padding 0 10px + border 1px solid #D8D8D8 + border-radius 3px + -webkit-appearance none + -moz-appearance none + appearance none + outline 0 + &::-ms-expand + display none + + &:before + content "" + background white + height 34px + width 23px + display block + position absolute + right 2px + top 1px + pointer-events none + + &:after + background url(http://github.com/img/bg_arrow_select.svg) no-repeat + width 8px + height 6px + content '' + display inline-block + position absolute + top 16px + right 10px + pointer-events none + +.select-field + .select-field + margin-right 15px + +.select-field + text-align center + span + font-weight bold + text-transform uppercase + font-size 12px + vertical-align middle + .custom-select + margin-left 10px + +section + padding 15px 0 0 0 + +breakpoint("tablet") + padding 0px 0 diff --git a/stylus/codemirror.styl b/stylus/website/codemirror.styl similarity index 100% rename from stylus/codemirror.styl rename to stylus/website/codemirror.styl diff --git a/stylus/flip-clock.styl b/stylus/website/flip-clock.styl similarity index 100% rename from stylus/flip-clock.styl rename to stylus/website/flip-clock.styl diff --git a/stylus/highlight.styl b/stylus/website/highlight.styl similarity index 100% rename from stylus/highlight.styl rename to stylus/website/highlight.styl diff --git a/stylus/app.styl b/stylus/website/index.styl similarity index 100% rename from stylus/app.styl rename to stylus/website/index.styl diff --git a/stylus/mixins.styl b/stylus/website/mixins.styl similarity index 100% rename from stylus/mixins.styl rename to stylus/website/mixins.styl diff --git a/views/extension/index.pug b/views/extension/index.pug index ecc0f4d3..bbf6932e 100644 --- a/views/extension/index.pug +++ b/views/extension/index.pug @@ -1,3 +1,48 @@ extends layout -include ../token-editor.pug +block content + + section#debugger-io.debugger-jwt + .container + .jwt-playground + .top-section.clearfix + + .pull-left + .jwt-logo.h-block + img(src="http://github.com/img/debugger-logo.svg" height="33" alt="Share this jwt") + + .pull-right + .select-field.h-block + span Open JWT from + .custom-select + select + optgroup + option(name='0', selected) + optgroup(label="Web Storage") + optgroup(label="Cookies") + + .select-field.algorithm.h-block + span Algorithm + .jwt-select.custom-select + include ../token-editor-algorithms.pug + + .share-this-jwt.h-block + a.jwt-clipboard-btn(href="#") + span#share-this-jwt-text Share this JWT + img(src="http://github.com/img/icon-chromeless.svg" height="25" alt="Share this jwt") + + include ../token-editor-common.pug + + .colophon.clearfix + .pull-left + a(target="_blank" href="https://auth0.com/?utm_source=jwt-ext&utm_campaign=badge") + | Supported by + img(src="http://github.com/img/ico_logo.svg") + + .pull-right.save-back.hide + a(href="#") Save back to localStorage + + .pull-right.keyboard-info + span Press Ctrl + Shift + K to open the JWT debugger + + script(src='http://github.com/js/index.js') diff --git a/views/extension/layout.pug b/views/extension/layout.pug index 8e8f5729..6bb79645 100644 --- a/views/extension/layout.pug +++ b/views/extension/layout.pug @@ -3,7 +3,6 @@ html(lang='en') head include ../title.pug include ../stylesheets.pug - include ../icons.pug body block content diff --git a/views/stylesheets.pug b/views/stylesheets.pug index e421daaa..5dfda206 100644 --- a/views/stylesheets.pug +++ b/views/stylesheets.pug @@ -3,4 +3,4 @@ link(rel="stylesheet", href="http://github.com/css/bootstrap.min.css") link(rel='stylesheet', href='http://github.com/css/codemirror.css', type='text/css', media='all') link(rel='stylesheet', href='http://github.com/css/lint.css', type='text/css', media='all') link(rel="stylesheet", href='http://github.com/css/budicon.css', type="text/css", media="all") -link(rel='stylesheet', href='http://github.com/css/app.css', type='text/css', media='all') +link(rel='stylesheet', href='http://github.com/css/index.css', type='text/css', media='all') diff --git a/views/website/assets.pug b/views/website/assets.pug index 46f88eef..c04b9c0e 100644 --- a/views/website/assets.pug +++ b/views/website/assets.pug @@ -4,35 +4,35 @@ section.sources .column.badges h2 Badges .hold - a(href='http://jwt.io/assets/badge.svg', target='_blank') - img(src='http://github.com/assets/badge.svg') + a(href='http://jwt.io/img/badge.svg', target='_blank') + img(src='http://github.com/img/badge.svg') .text-hold - a(href='http://jwt.io/assets/badge.svg', target='_blank') + a(href='http://jwt.io/img/badge.svg', target='_blank') i.icon-budicon-722 - p http://jwt.io/assets/badge.svg + p http://jwt.io/img/badge.svg .hold - a(href='http://jwt.io/assets/badge-compatible.svg', target='_blank') - img(src='http://github.com/assets/badge-compatible.svg') + a(href='http://jwt.io/img/badge-compatible.svg', target='_blank') + img(src='http://github.com/img/badge-compatible.svg') .text-hold - a(href='http://jwt.io/assets/badge-compatible.svg', target='_blank') + a(href='http://jwt.io/img/badge-compatible.svg', target='_blank') i.icon-budicon-722 - p http://jwt.io/assets/badge-compatible.svg + p http://jwt.io/img/badge-compatible.svg .column.logotype h2 Logotype .hold - a(href='http://jwt.io/assets/icon.svg', target='_blank') - img(src='http://github.com/assets/icon.svg') + a(href='http://jwt.io/img/icon.svg', target='_blank') + img(src='http://github.com/img/icon.svg') .text-hold - a(href='http://jwt.io/assets/icon.svg', target='_blank') + a(href='http://jwt.io/img/icon.svg', target='_blank') i.icon-budicon-722 - p http://jwt.io/assets/icon.svg + p http://jwt.io/img/icon.svg .hold - a(href='http://jwt.io/assets/logo.svg', target='_blank') - img(src='http://github.com/assets/logo.svg') + a(href='http://jwt.io/img/logo-asset.svg', target='_blank') + img(src='http://github.com/img/logo-asset.svg') .text-hold - a(href='http://jwt.io/assets/logo.svg', target='_blank') + a(href='http://jwt.io/img/logo-asset.svg', target='_blank') i.icon-budicon-722 - p http://jwt.io/assets/logo.svg + p http://jwt.io/img/logo-asset.svg .column.tshirt h2 Store img(src='http://github.com/img/pic_tshirt.png') diff --git a/webpack.common.js b/webpack.common.js new file mode 100644 index 00000000..44416901 --- /dev/null +++ b/webpack.common.js @@ -0,0 +1,30 @@ +const webpack = require('webpack'); + +module.exports = { + devtool: 'source-map', + module: { + rules: [{ + test: /\.js$/, + exclude: /(node_modules|bower_components)/, + use: { + loader: 'babel-loader', + options: { + presets: [[ + '@babel/preset-env', { + targets: { + browsers: ["last 5 versions", "safari >= 7"] + }, + modules: false + } + ]] + } + } + }] + }, + plugins: [ + new webpack.ProvidePlugin({ + $: "jquery", + jQuery: "jquery" + }) + ] +}; \ No newline at end of file diff --git a/webpack.extension-dev.js b/webpack.extension-dev.js new file mode 100644 index 00000000..3727c070 --- /dev/null +++ b/webpack.extension-dev.js @@ -0,0 +1,13 @@ +const merge = require('webpack-merge'); + +const common = require('./webpack.common.js'); + +module.exports = merge(common, { + entry: { + index: './src/extension/index.js', + }, + output: { + filename: '[name].js', + path: __dirname + '/dist/extension/js' + } +}); diff --git a/webpack.extension-prod.js b/webpack.extension-prod.js new file mode 100644 index 00000000..a9c4eefb --- /dev/null +++ b/webpack.extension-prod.js @@ -0,0 +1,10 @@ +const merge = require('webpack-merge'); +const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); + +const devConfig = require('./webpack.extension-dev.js'); + +module.exports = merge(devConfig, { + plugins: [ + new UglifyJsPlugin() + ] +}); diff --git a/webpack.website-dev.js b/webpack.website-dev.js index a4c0777f..a43c6992 100644 --- a/webpack.website-dev.js +++ b/webpack.website-dev.js @@ -1,7 +1,8 @@ -const webpack = require('webpack'); +const merge = require('webpack-merge'); -module.exports = { - devtool: 'source-map', +const common = require('./webpack.common.js'); + +module.exports = merge(common, { entry: { index: './src/website/index.js', introduction: './src/website/introduction/index.js' @@ -9,30 +10,5 @@ module.exports = { output: { filename: '[name].js', path: __dirname + '/dist/website/js' - }, - module: { - rules: [{ - test: /\.js$/, - exclude: /(node_modules|bower_components)/, - use: { - loader: 'babel-loader', - options: { - presets: [[ - '@babel/preset-env', { - targets: { - browsers: ["last 5 versions", "safari >= 7"] - }, - modules: false - } - ]] - } - } - }] - }, - plugins: [ - new webpack.ProvidePlugin({ - $: "jquery", - jQuery: "jquery" - }) - ] -}; + } +}); diff --git a/webpack.website-prod.js b/webpack.website-prod.js index d82e97f7..945d4122 100644 --- a/webpack.website-prod.js +++ b/webpack.website-prod.js @@ -1,4 +1,3 @@ -const webpack = require('webpack'); const merge = require('webpack-merge'); const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); From a1c48a1b9c428a35a244557f46b2617da69b988f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 15 Jan 2018 19:04:18 -0300 Subject: [PATCH 080/611] Reencode the token when the Base64 secret checkbox is toggled. --- src/editor/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/editor/index.js b/src/editor/index.js index 6067c952..3be198b6 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -313,6 +313,8 @@ function setupEvents() { // HMAC secret, when changed the encoded token must be updated. eventManager.addDomEvent(secretInput, 'input', encodeToken); + // Base64 checkbox, when changes the encoded token must be updated. + eventManager.addDomEvent(secretBase64Checkbox, 'input', encodeToken); // Private key, when changed the encoded token must be updated. eventManager.addDomEvent(privateKeyTextArea, 'input', encodeToken); // Public key, when changed the encoded token must NOT be updated From c343c6ee7fb3c2f545b082c06c21f3fbb93a4585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 15 Jan 2018 19:07:19 -0300 Subject: [PATCH 081/611] Remove unnecessary code for the extension. --- src/extension/index.js | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/extension/index.js b/src/extension/index.js index 3d889638..41d63da0 100644 --- a/src/extension/index.js +++ b/src/extension/index.js @@ -3,27 +3,10 @@ import { setTokenEditorValue, useDefaultToken } from '../editor'; -import { getParameterByName } from '../utils.js'; import { publicKeyTextArea } from './dom-elements.js'; /* For initialization, look at the end of this file */ -function parseLocationQuery() { - const publicKey = getParameterByName('publicKey'); - const value = getParameterByName('value'); - const token = getParameterByName('token'); - - if(publicKey) { - publicKeyTextArea.value = publicKey; - } - if(value) { - setTokenEditorValue(value); - } - if(token) { - setTokenEditorValue(token); - } -} - function loadToken() { const lastToken = localStorage.getItem('lastToken'); if(lastToken) { @@ -41,4 +24,3 @@ function loadToken() { // Initialization setupTokenEditor(); loadToken(); -parseLocationQuery(); From 362224cafffed18ba6ed590aedbe7d0565b9af78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 17 Jan 2018 22:43:50 -0300 Subject: [PATCH 082/611] Fix Grunt watch task for token editor. --- Gruntfile.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 8f3b2cbc..8daa4a6a 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -103,11 +103,11 @@ module.exports = grunt => { watch: { websiteSrc: { - files: ['src/*.js', 'src/website/**'], + files: ['src/*.js', 'src/website/**', 'src/editor/**'], tasks: 'webpack:websiteDev' }, extensionSrc: { - files: ['src/*.js', 'src/extension/**'], + files: ['src/*.js', 'src/extension/**', 'src/editor/**'], tasks: 'webpack:extensionDev' }, websiteImg: { From 17e29da6f34f062ebf1ac94c260cb8b5160ab853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 17 Jan 2018 22:44:31 -0300 Subject: [PATCH 083/611] More default tokens. --- src/editor/default-tokens.js | 103 ++++++++++++------------------ views/token-editor-algorithms.pug | 3 +- 2 files changed, 42 insertions(+), 64 deletions(-) diff --git a/src/editor/default-tokens.js b/src/editor/default-tokens.js index 177ab802..275c5c57 100644 --- a/src/editor/default-tokens.js +++ b/src/editor/default-tokens.js @@ -1,99 +1,76 @@ const rsaPrivateKey = - '-----BEGIN RSA PRIVATE KEY-----\n' + - 'MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw\n' + - '33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW\n' + - '+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB\n' + - 'AoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS\n' + - '3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp\n' + - 'uGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE\n' + - '2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0\n' + - 'GAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K\n' + - 'Su5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY\n' + - '6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5\n' + - 'fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523\n' + - 'Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP\n' + - 'FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n' + - '-----END RSA PRIVATE KEY-----'; +`-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw +33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW ++jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB +AoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS +3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp +uGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE +2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0 +GAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K +Su5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY +6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5 +fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523 +Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP +FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw== +-----END RSA PRIVATE KEY-----`; const rsaPublicKey = - '-----BEGIN PUBLIC KEY-----\n' + - 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd\n' + - 'UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs\n' + - 'HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D\n' + - 'o2kQ+X5xK9cipRgEKwIDAQAB\n' + - '-----END PUBLIC KEY-----'; +`-----BEGIN PUBLIC KEY----- +MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd +UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs +HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D +o2kQ+X5xK9cipRgEKwIDAQAB +-----END PUBLIC KEY-----`; const ecPrivateKey = - '-----BEGIN PRIVATE KEY-----' + - 'MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2' + - 'OF/2NxApJCzGCEDdfSp6VQO30hyhRANCAAQRWz+jn65BtOMvdyHKcvjBeBSDZH2r' + - '1RTwjmYSi9R/zpBnuQ4EiMnCqfMPWiZqB4QdbAd0E7oH50VpuZ1P087G' + - '-----END PRIVATE KEY-----'; +`-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2 +OF/2NxApJCzGCEDdfSp6VQO30hyhRANCAAQRWz+jn65BtOMvdyHKcvjBeBSDZH2r +1RTwjmYSi9R/zpBnuQ4EiMnCqfMPWiZqB4QdbAd0E7oH50VpuZ1P087G +-----END PRIVATE KEY-----`; const ecPublicKey = - '-----BEGIN PUBLIC KEY-----' + - 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVs/o5+uQbTjL3chynL4wXgUg2R9' + - 'q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg==' + - '-----END PUBLIC KEY-----'; +`-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVs/o5+uQbTjL3chynL4wXgUg2R9 +q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== +-----END PUBLIC KEY-----`; export default { hs256: { - token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.' + - 'eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOn' + - 'RydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ', + token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.39jkN-bckg4fbZQEb0xHIxzYL9qI_g4c4WyzEYNHZok', secret: 'secret' }, hs384: { - token: '', + token: 'eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.np_8QucI7cN6tJo0Fvm3i_eVQEHraSJPRC87yq2UQb77gRWMeeca8zDVIaTlVuZk', secret: 'secret' }, hs512: { - token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3' + - 'ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.' + - 'YI0rUGDq5XdRw8vW2sDLRNFMN8Waol03iSFH8I4iLzuYK7FKHaQYWzPt0BJFG' + - 'rAmKJ6SjY0mJIMZqNQJFVpkuw', + token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.nZU_gPcMXkWpkCUpJceSxS7lSickF0tTImHhAR949Z-Nt69LgW8G6lid-mqd9B579tYM8C4FN2jdhR2VRMsjtA', secret: 'secret' }, rs256: { - token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.' + - 'eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRy' + - 'dWV9.EkN-DOsnsuRjRO6BxXemmJDm3HbxrbRzXglbN2S4sOkopdU4IsDxTI8jO1' + - '9W_A4K8ZPJijNLis4EZsHeY559a4DFOd50_OqgHGuERTqYZyuhtF39yxJPAjU' + - 'ESwxk2J5k_4zM3O-vtd1Ghyo4IbqKKSy6J9mTniYJPenn5-HIirE', + token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.TCYt5XsITJX1CxPCT8yAV-TVkIEq_PbChOMqsLfRoPsnsgw5WEuts01mq-pQy7UJiN5mgRxD-WUcX16dUEMGlv50aqzpqh4Qktb3rk-BuQy72IFLOqV0G_zS245-kronKb78cPN25DGlcTwLtjPAYuNzVBAh4vGHSrQyHUdBBPM', privateKey: rsaPrivateKey, publicKey: rsaPublicKey }, rs384: { - token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxM' + - 'jM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.' + - 'Ffs4IGK8GkxrSxp7I8IcuHy_uUSskg2zBwScCGhg6T1o4hkdZ5ytJNRj04kD8' + - 'FEnUrnnUiGKgHL0MWrwmgz6Kmi6fxDSKKbiVlESPkUrgBTMaIlOheDbemy19' + - 'lxUJYqd7A2exNXtCW_UoSs8f3ZdYujNrbZWW8kWgLQuk4oa-0I', + token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.CN9hqUMdVb5LGo06Geb8ap1qYfbJ4rEZIMqTE9gxA2m6GGmsXkznRxzoFpAzQUey9q5HehRTk_-TxYydN3QtFPfrTbAHep7PLhp3XhdvTJ1ok__UBjv4aP6UWTF-Rflr3qeC18LdlM4nyKL7ZwSGDzytWihGod5vn4GAXErUUE4', privateKey: rsaPrivateKey, publicKey: rsaPublicKey }, rs512: { - token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NT' + - 'Y3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.' + - 'yN0Dw5rVJ75rdJXKpflhwASRr4DHwlgmRY4HVMdotCdyg8fOB2sLRehLY9' + - 'g9isBnIuOA0aK7qWpj9cc7G8eYmaFdm95_moOJKxCgH0Rn2d2-wygdjBvMrSp' + - 'kxsKMdbc2tKP0rI3ZYalQ7Q86RagZNZ_JpA2V3j3JPKTQwKFGSTw', + token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.MejLezWY6hjGgbIXkq6Qbvx_-q5vWaTR6qPiNHphvla-XaZD3up1DN6Ib5AEOVtuB3fC9l-0L36noK4qQA79lhpSK3gozXO6XPIcCp4C8MU_ACzGtYe7IwGnnK3Emr6IHQE0bpGinHX1Ak1pAuwJNawaQ6Nvmz2ozZPsyxmiwoo', privateKey: rsaPrivateKey, publicKey: rsaPublicKey }, es256: { - token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODk' + - 'wIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.AZR4yap9' + - 'UoqRlEGkeAHjnr9vvLYAljWg8_ZtKDiaaEuN_oi55XjUNfFHfOniACB' + - '46oYm1D4eVyVb8yGavbq9xQ', + token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA', privateKey: ecPrivateKey, publicKey: ecPublicKey }, es384: { - token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM' + - '0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.' + - '6zBBNCgcY_5yVr5mjhOG7-9vUUuxE7i85FtYihacGWwdQgBwQiPr8Nt' + - 'qG5eE2StJ7S3xBr-qyPY7fbwdJRG5fA', + token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.bmnmBALgkWpJ_wRTj6gJpmEpq6SzvYlgViuNTTHxJYSLseeRyjkIAXlJHT1s1ygi3UCzh4jfIymjHOlqVFIk1A', privateKey: ecPrivateKey, publicKey: ecPublicKey }, @@ -103,12 +80,12 @@ export default { publicKey: ecPublicKey }, ps256: { - token: '', + token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.P9_X1ctIxnnoUpKSWpYw3rF62e-d8LXe3sETuLn4Lhigw5OQhi-mBBKoBMneHy4kimS84zxnMby0FYo9wKM3I3pEg8Qrz0Q00tNhKCwOnZ7Q-e86sW1luK1z82tufF-sZ9_BY_LGQsym0lQmQaHFzLmEDXnOzWsjUThHGVJTI64', privateKey: rsaPrivateKey, publicKey: rsaPublicKey }, ps384: { - token: '', + token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.oywIg-I6w59yw9jiPxewn5n2BhrD7hSifWSmzFKGBMPEMd0qweVNjlyxu2TodunPzlh49OW8QA0ygNRL9VQrWA3GXzb5FubNF4s7Y15QePx52anlvebzihx5-hR0UhKbVC0UODwYNMiY-v0L7iMbT9UvuSj0GAuZMxndo2Y2VFQ', privateKey: rsaPrivateKey, publicKey: rsaPublicKey }, diff --git a/views/token-editor-algorithms.pug b/views/token-editor-algorithms.pug index 12ddd3fd..fe406993 100644 --- a/views/token-editor-algorithms.pug +++ b/views/token-editor-algorithms.pug @@ -11,6 +11,7 @@ select#algorithm-select option(name='algorithm',value='ES512') ES512 option(name='algorithm',value='PS256') PS256 option(name='algorithm',value='PS384') PS384 - option(name='algorithm',value='PS512') PS512 + //- Buggy in jsrsasign + option(name='algorithm',value='PS512') PS512 \ No newline at end of file From 42389328b6fb4ad13a6878d42fbf9d854a7adb30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 17 Jan 2018 22:45:13 -0300 Subject: [PATCH 084/611] Fix last token loading/saving. --- src/editor/index.js | 35 ++++++++++++++++++++++++++++++++--- src/extension/index.js | 24 +----------------------- src/utils.js | 10 ++++++++++ src/website/index.js | 21 +-------------------- src/website/libraries.js | 2 +- src/website/utils.js | 9 --------- 6 files changed, 45 insertions(+), 56 deletions(-) diff --git a/src/editor/index.js b/src/editor/index.js index 3be198b6..c6244396 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -1,4 +1,4 @@ -import { copyTextToClipboard, deferToNextLoop } from '../utils.js'; +import { copyTextToClipboard, deferToNextLoop, safeLocalStorageSetItem } from '../utils.js'; import { downloadPublicKeyIfPossible } from './public-key-download.js'; import { tooltipHandler } from './tooltip.js'; import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; @@ -178,6 +178,32 @@ function markAsInvalidWithElement(element, clearTokenEditor = true) { } } +function saveAsLastToken() { + const token = getTrimmedValue(tokenEditor); + if(token && token.length > 0) { + safeLocalStorageSetItem('lastToken', token); + } + + const publicKey = publicKeyTextArea.value; + if(publicKey && publicKey.length > 0) { + safeLocalStorageSetItem('lastPublicKey', publicKey); + } +} + +function loadToken() { + const lastToken = localStorage.getItem('lastToken'); + if(lastToken) { + setTokenEditorValue(lastToken); + + const lastPublicKey = localStorage.getItem('lastPublicKey'); + if(lastPublicKey) { + publicKeyTextArea.value = lastPublicKey; + } + } else { + useDefaultToken('HS256'); + } +} + function encodeToken() { deferToNextLoop(fixEditorHeight); @@ -211,8 +237,10 @@ function encodeToken() { secretInput.value : privateKeyTextArea.value, secretBase64Checkbox.checked); - + tokenEditor.setValue(encoded); + + saveAsLastToken(); } catch(e) { console.error('Failed to sign/encode token: ', e); markAsInvalid(); @@ -247,6 +275,7 @@ function decodeToken() { if(decoded.errors) { markAsInvalidWithElement(editorElement, false); } else { + saveAsLastToken(); verifyToken(); } } catch(e) { @@ -339,6 +368,6 @@ export function setTokenEditorValue(value) { export function setupTokenEditor() { setupEvents(); selectAlgorithm('HS256'); - useDefaultToken('HS256'); + loadToken(); fixEditorHeight(); } diff --git a/src/extension/index.js b/src/extension/index.js index 41d63da0..84e84630 100644 --- a/src/extension/index.js +++ b/src/extension/index.js @@ -1,26 +1,4 @@ -import { - setupTokenEditor, - setTokenEditorValue, - useDefaultToken -} from '../editor'; -import { publicKeyTextArea } from './dom-elements.js'; - -/* For initialization, look at the end of this file */ - -function loadToken() { - const lastToken = localStorage.getItem('lastToken'); - if(lastToken) { - setTokenEditorValue(value); - - const lastPublicKey = localStorage.getItem('lastPublicKey'); - if(lastPublicKey) { - publicKeyTextArea.value = lastPublicKey; - } - } else { - useDefaultToken('HS256'); - } -} +import { setupTokenEditor } from '../editor'; // Initialization setupTokenEditor(); -loadToken(); diff --git a/src/utils.js b/src/utils.js index c11a502f..5f8c4f3b 100644 --- a/src/utils.js +++ b/src/utils.js @@ -183,3 +183,13 @@ export function getParameterByName(name, url) { export function isWideScreen() { return window.matchMedia('(min-width: 768px)').matches; } + +export function safeLocalStorageSetItem(key, value) { + try { + localStorage.setItem(key, value); + } catch (e) { + console.log('Cannot save token to Local Storage ' + + '(private browsing enabled?), ignoring...', e); + // Safari when in private browsing doesn't allow it + } +} diff --git a/src/website/index.js b/src/website/index.js index 8777ab33..3784752e 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -1,11 +1,7 @@ import { setupNavbar } from './navbar.js'; import { setupExtensionButton } from './extension.js'; import { setupLibraries } from './libraries.js'; -import { - setupTokenEditor, - setTokenEditorValue, - useDefaultToken -} from '../editor'; +import { setupTokenEditor, setTokenEditorValue } from '../editor'; import { setupJwtCounter } from './counter.js'; import { setupSmoothScrolling } from './smooth-scrolling.js'; import { setupHighlighting } from './highlighting.js'; @@ -44,20 +40,6 @@ function parseLocationQuery() { } } -function loadToken() { - const lastToken = localStorage.getItem('lastToken'); - if(lastToken) { - setTokenEditorValue(value); - - const lastPublicKey = localStorage.getItem('lastPublicKey'); - if(lastPublicKey) { - publicKeyTextArea.value = lastPublicKey; - } - } else { - useDefaultToken('HS256'); - } -} - function pickEbookOrExtensionBanner() { if(Math.random() >= 0.5) { extensionSection.style.display = 'block'; @@ -72,7 +54,6 @@ setupExtensionButton(); setupSmoothScrolling(); setupLibraries(); setupTokenEditor(); -loadToken(); parseLocationQuery(); setupHighlighting(); setupJwtCounter(); diff --git a/src/website/libraries.js b/src/website/libraries.js index 1491a00c..e015c72a 100644 --- a/src/website/libraries.js +++ b/src/website/libraries.js @@ -1,4 +1,4 @@ -import { safeLocalStorageSetItem } from './utils.js'; +import { safeLocalStorageSetItem } from '../utils.js'; import { httpGet } from '../utils.js'; import { starsElements, diff --git a/src/website/utils.js b/src/website/utils.js index 3bb573db..9bf5b3a2 100644 --- a/src/website/utils.js +++ b/src/website/utils.js @@ -1,12 +1,3 @@ -export function safeLocalStorageSetItem(key, value) { - try { - localStorage.setItem(key, value); - } catch (e) { - console.error(e); - // Safari when in private browsing doesn't allow it - } -} - export function getOffsetBoundingClientRect(element) { const rect = element.getBoundingClientRect(); From 828868f4c64f9b365ffdf8183fb987b5207d2b20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 18 Jan 2018 01:58:22 -0300 Subject: [PATCH 085/611] JWT sharing now working. --- src/editor/index.js | 46 +++++++++++++++++++++++++++++------ src/editor/utils.js | 12 --------- src/extension/dom-elements.js | 6 ++++- src/extension/index.js | 26 +++++++++++++++++++- src/strings.js | 4 ++- src/utils.js | 9 +++++++ 6 files changed, 81 insertions(+), 22 deletions(-) diff --git a/src/editor/index.js b/src/editor/index.js index c6244396..3cc4bb52 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -1,9 +1,13 @@ -import { copyTextToClipboard, deferToNextLoop, safeLocalStorageSetItem } from '../utils.js'; +import { + copyTextToClipboard, + deferToNextLoop, + safeLocalStorageSetItem, + copyTokenLink +} from '../utils.js'; import { downloadPublicKeyIfPossible } from './public-key-download.js'; import { tooltipHandler } from './tooltip.js'; import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; import { - copyTokenLink, getTrimmedValue, stringify, fixEditorHeight @@ -38,6 +42,14 @@ import { // passed to the event manager. const eventManager = new EventManager(); +function isSharedSecretAlgorithm(algorithm) { + return algorithm && algorithm.indexOf('HS') === 0; +} + +function isPublicKeyAlgorithm(algorithm) { + return algorithm && algorithm.indexOf('HS') === -1; +} + function markAsInvalid() { signatureStatusElement.classList.remove('valid-token'); signatureStatusElement.classList.add('invalid-token'); @@ -115,7 +127,7 @@ export function useDefaultToken(algorithm) { headerEditor.setValue(stringify(decoded.header)); payloadEditor.setValue(stringify(decoded.payload)); - if(algorithm.indexOf('HS') === 0) { + if(isSharedSecretAlgorithm(algorithm)) { secretInput.value = defaults.secret; } else { publicKeyTextArea.value = defaults.publicKey; @@ -233,7 +245,7 @@ function encodeToken() { try { const encoded = sign(header, payload, - header.alg.indexOf('HS') === 0 ? + isSharedSecretAlgorithm(header.alg) ? secretInput.value : privateKeyTextArea.value, secretBase64Checkbox.checked); @@ -260,7 +272,7 @@ function decodeToken() { const decoded = decode(jwt); selectAlgorithm(decoded.header.alg); - if(decoded.header.alg && decoded.header.alg.indexOf('HS') === -1) { + if(isPublicKeyAlgorithm(decoded.header.alg)) { downloadPublicKeyIfPossible(decoded).then(publicKey => { eventManager.withDisabledEvents(() => { publicKeyTextArea.value = publicKey; @@ -294,7 +306,7 @@ function verifyToken() { } const publicKeyOrSecret = - decoded.header.alg.indexOf('HS') === 0 ? + isSharedSecretAlgorithm(decoded.header.alg) ? secretInput.value : publicKeyTextArea.value; @@ -327,6 +339,17 @@ function setupTabEvents() { }); } +function copyTokenHandler(event) { + event.preventDefault(); + + const token = getTrimmedValue(tokenEditor); + const publicKey = isPublicKeyAlgorithm(getSelectedAlgorithm()) ? + publicKeyTextArea.value : + null; + + copyTokenLink(token, publicKey); +} + function setupEvents() { // The event manager lets us enable/disable events as needed without // manually tracking them. Events that need to be disabled should be @@ -356,7 +379,7 @@ function setupEvents() { // Human readable timestamp tooltips payloadElement.addEventListener('mousemove', tooltipHandler); // Temporary (share button not ready yet) - signatureStatusElement.addEventListener('click', copyTokenLink); + signatureStatusElement.addEventListener('click', copyTokenHandler); setupTabEvents(); } @@ -365,6 +388,15 @@ export function setTokenEditorValue(value) { tokenEditor.setValue(value); } +export function getTokenEditorValue() { + return { + token: getTrimmedValue(tokenEditor), + publicKey: isPublicKeyAlgorithm(getSelectedAlgorithm()) ? + publicKeyTextArea.value : + undefined + }; +} + export function setupTokenEditor() { setupEvents(); selectAlgorithm('HS256'); diff --git a/src/editor/utils.js b/src/editor/utils.js index 924fcd16..63c28fba 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -16,18 +16,6 @@ export function getTrimmedValue(instance) { return value.replace(/\s/g, ''); } -export function copyTokenLink() { - const algorithm = algorithmSelect.querySelector(':selected').value; - - let url = 'https://jwt.io/#debugger-io?' - + `token=${encodeURIComponent(getTrimmedValue(tokenEditor))}`; - if (algorithm.indexOf('HS') === -1) { - url += `&publicKey=${encodeURIComponent(publicKeyTextArea.value)}`; - } - - copyTextToClipboard(url); -} - export function fixEditorHeight() { if(isWideScreen()) { editorElement.style.height = `${decodedElement.offsetHeight}px`; diff --git a/src/extension/dom-elements.js b/src/extension/dom-elements.js index 1d0afd1c..f6814741 100644 --- a/src/extension/dom-elements.js +++ b/src/extension/dom-elements.js @@ -1 +1,5 @@ -export * from '../dom-elements.js'; \ No newline at end of file +export * from '../dom-elements.js'; + +export const shareJwtLink = document.querySelector('.jwt-clipboard-btn'); +export const shareJwtTextElement = + document.getElementById('share-this-jwt-text'); diff --git a/src/extension/index.js b/src/extension/index.js index 84e84630..36054990 100644 --- a/src/extension/index.js +++ b/src/extension/index.js @@ -1,4 +1,28 @@ -import { setupTokenEditor } from '../editor'; +import { setupTokenEditor, getTokenEditorValue } from '../editor'; +import { shareJwtLink, shareJwtTextElement } from './dom-elements.js'; +import { copyTokenLink } from '../utils.js'; +import strings from '../strings.js'; + +function setupShareJwtButton() { + shareJwtLink.addEventListener('click', event => { + event.preventDefault(); + + const value = getTokenEditorValue(); + if(value.token) { + // If the selected algorithm does not use public keys, publicKey will be + // undefined. + copyTokenLink(value.token, value.publicKey); + } + + shareJwtTextElement.firstChild.textContent = + strings.extension.jwtIoUrlCopied; + setTimeout(() => { + shareJwtTextElement.firstChild.textContent = + strings.extension.shareThisJwt; + }, 2000); + }); +} // Initialization setupTokenEditor(); +setupShareJwtButton(); diff --git a/src/strings.js b/src/strings.js index b6e3367a..a279a2ce 100644 --- a/src/strings.js +++ b/src/strings.js @@ -1,7 +1,9 @@ export default { extension: { alreadyInstalled: 'Already installed', - addToChrome: 'Add to Chrome' + addToChrome: 'Add to Chrome', + shareThisJwt: 'Share this JWT', + jwtIoUrlCopied: 'JWT.io URL copied' }, editor: { signatureVerified: 'signature verified', diff --git a/src/utils.js b/src/utils.js index 5f8c4f3b..b1a16112 100644 --- a/src/utils.js +++ b/src/utils.js @@ -160,6 +160,15 @@ export function copyTextToClipboard(text) { document.body.removeChild(textArea); } +export function copyTokenLink(token, publicKeyOptional) { + let url = `https://jwt.io/#debugger-io?token=${encodeURIComponent(token)}`; + if(publicKeyOptional) { + url += `&publicKey=${encodeURIComponent(publicKeyOptional)}`; + } + + copyTextToClipboard(url); +} + // https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript export function getParameterByName(name, url) { if(!url) { From 6afc4bf9f0f451d3e659b0ab1eccdc6f1bbc60d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 18 Jan 2018 02:04:11 -0300 Subject: [PATCH 086/611] Minor code aesthetic change. --- src/extension/index.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/extension/index.js b/src/extension/index.js index 36054990..3e8fd2bb 100644 --- a/src/extension/index.js +++ b/src/extension/index.js @@ -14,11 +14,10 @@ function setupShareJwtButton() { copyTokenLink(value.token, value.publicKey); } - shareJwtTextElement.firstChild.textContent = - strings.extension.jwtIoUrlCopied; + const shareJwtTextNode = shareJwtTextElement.firstChild; + shareJwtTextNode.textContent = strings.extension.jwtIoUrlCopied; setTimeout(() => { - shareJwtTextElement.firstChild.textContent = - strings.extension.shareThisJwt; + shareJwtTextNode.textContent = strings.extension.shareThisJwt; }, 2000); }); } From e9f41d7fd1e300110432412665d782df2204bced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 18 Jan 2018 03:53:23 -0300 Subject: [PATCH 087/611] Extension: attempt to load token from clipboard. --- src/editor/index.js | 2 +- src/editor/jwt.js | 18 +++++- src/extension/index.js | 17 +++++- src/extension/page-inspector.js | 100 ++++++++++++++++++++++++++++++++ src/extension/utils.js | 17 ++++++ 5 files changed, 150 insertions(+), 4 deletions(-) create mode 100644 src/extension/page-inspector.js create mode 100644 src/extension/utils.js diff --git a/src/editor/index.js b/src/editor/index.js index 3cc4bb52..9abe505e 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -1,5 +1,4 @@ import { - copyTextToClipboard, deferToNextLoop, safeLocalStorageSetItem, copyTokenLink @@ -204,6 +203,7 @@ function saveAsLastToken() { function loadToken() { const lastToken = localStorage.getItem('lastToken'); + if(lastToken) { setTokenEditorValue(lastToken); diff --git a/src/editor/jwt.js b/src/editor/jwt.js index 10ad9c6a..fbdf3afa 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -48,17 +48,26 @@ export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { } export function decode(jwt) { - const split = jwt.split('.'); - const result = { + header: {}, + payload: {}, errors: false }; + + if(!jwt) { + result.errors = true; + return result; + } + + const split = jwt.split('.'); + try { result.header = JSON.parse(b64utoutf8(split[0])); } catch(e) { result.header = {}; result.errors = true; } + try { result.payload = JSON.parse(b64utoutf8(split[1])); } catch(e) { @@ -68,3 +77,8 @@ export function decode(jwt) { return result; } + +export function isToken(jwt) { + const decoded = decode(jwt); + return !decoded.errors && decoded.header.typ === 'JWT'; +} diff --git a/src/extension/index.js b/src/extension/index.js index 3e8fd2bb..37917f2e 100644 --- a/src/extension/index.js +++ b/src/extension/index.js @@ -1,6 +1,12 @@ -import { setupTokenEditor, getTokenEditorValue } from '../editor'; +import { + setupTokenEditor, + setTokenEditorValue, + getTokenEditorValue +} from '../editor'; +import { setupTokenPageInspector } from './page-inspector.js'; import { shareJwtLink, shareJwtTextElement } from './dom-elements.js'; import { copyTokenLink } from '../utils.js'; +import { getTokenFromClipboardIfPossible } from './utils.js'; import strings from '../strings.js'; function setupShareJwtButton() { @@ -22,6 +28,15 @@ function setupShareJwtButton() { }); } +function loadFromClipboardIfPossible() { + const token = getTokenFromClipboardIfPossible(); + if(token) { + setTokenEditorValue(token); + } +} + // Initialization setupTokenEditor(); +loadFromClipboardIfPossible(); +setupTokenPageInspector(); setupShareJwtButton(); diff --git a/src/extension/page-inspector.js b/src/extension/page-inspector.js new file mode 100644 index 00000000..c0b5b3b6 --- /dev/null +++ b/src/extension/page-inspector.js @@ -0,0 +1,100 @@ +function loadFromStorageAndCookies() { + // Populate cookies/LocalStorage combobox + function checkLoadJwtFromLength() { + var optGroups = [ + $('optgroup[label="Cookies"]'), + $('optgroup[label="Web Storage"]') + ]; + + optGroups.forEach(function(optGroup) { + var hasJWTs = + optGroup.children(':not(.load-from-no-jwts)').length > 0; + if(hasJWTs) { + optGroup.children('.load-from-no-jwts').remove(); + } else { + optGroup.empty(); + optGroup.append($('
  • ', - '', - '
    ', - '
    ', - '
    '+(value ? value : '')+'
    ', - '
    ', - '
    ', - '
    ', - '
    '+(value ? value : '')+'
    ', - '
    ', - '
    ', - '
  • ' - ].join(''); - }, - - /** - * Append the list item to the parent DOM node - */ - - appendListItem: function(css, value) { - var html = this.createListItem(css, value); - - this.$el.append(html); - }, - - /** - * Create the list of digits and appends it to the DOM object - */ - - createList: function() { - - var lastDigit = this.getPrevDigit() ? this.getPrevDigit() : this.digit; - - var html = $([ - '
      ', - this.createListItem(this.classes.before, lastDigit), - this.createListItem(this.classes.active, this.digit), - '
    ' - ].join('')); - - return html; - }, - - getNextDigit: function() { - return this.digit == 9 ? 0 : this.digit + 1; - }, - - getPrevDigit: function() { - return this.digit == 0 ? 9 : this.digit - 1; - } - - }); - - -}(jQuery)); - -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * Capitalize the first letter in a string - * - * @return string - */ - - String.prototype.ucfirst = function() { - return this.substr(0, 1).toUpperCase() + this.substr(1); - }; - - /** - * jQuery helper method - * - * @param int An integer used to start the clock (no. seconds) - * @param object An object of properties to override the default - */ - - $.fn.FlipClock = function(digit, options) { - return new FlipClock($(this), digit, options); - }; - - /** - * jQuery helper method - * - * @param int An integer used to start the clock (no. seconds) - * @param object An object of properties to override the default - */ - - $.fn.flipClock = function(digit, options) { - return $.fn.FlipClock(digit, options); - }; - -}(jQuery)); - -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * The FlipClock Time class is used to manage all the time - * calculations. - * - * @param object A FlipClock.Factory object - * @param mixed This is the digit used to set the clock. If an - * object is passed, 0 will be used. - * @param object An object of properties to override the default - */ - - FlipClock.Time = FlipClock.Base.extend({ - - /** - * The time (in seconds) or a date object - */ - - time: 0, - - /** - * The parent FlipClock.Factory object - */ - - factory: false, - - /** - * The minimum number of digits the clock face must have - */ - - minimumDigits: 0, - - /** - * Constructor - * - * @param object A FlipClock.Factory object - * @param int An integer use to select the correct digit - * @param object An object to override the default properties - */ - - constructor: function(factory, time, options) { - if(typeof options != "object") { - options = {}; - } - - if(!options.minimumDigits) { - options.minimumDigits = factory.minimumDigits; - } - - this.base(options); - this.factory = factory; - - if(time) { - this.time = time; - } - }, - - /** - * Convert a string or integer to an array of digits - * - * @param mixed String or Integer of digits - * @return array An array of digits - */ - - convertDigitsToArray: function(str) { - var data = []; - - str = str.toString(); - - for(var x = 0;x < str.length; x++) { - if(str[x].match(/^\d*$/g)) { - data.push(str[x]); - } - } - - return data; - }, - - /** - * Get a specific digit from the time integer - * - * @param int The specific digit to select from the time - * @return mixed Returns FALSE if no digit is found, otherwise - * the method returns the defined digit - */ - - digit: function(i) { - var timeStr = this.toString(); - var length = timeStr.length; - - if(timeStr[length - i]) { - return timeStr[length - i]; - } - - return false; - }, - - /** - * Formats any array of digits into a valid array of digits - * - * @param mixed An array of digits - * @return array An array of digits - */ - - digitize: function(obj) { - var data = []; - - $.each(obj, function(i, value) { - value = value.toString(); - - if(value.length == 1) { - value = '0'+value; - } - - for(var x = 0; x < value.length; x++) { - data.push(value.charAt(x)); - } - }); - - if(data.length > this.minimumDigits) { - this.minimumDigits = data.length; - } - - if(this.minimumDigits > data.length) { - for(var x = data.length; x < this.minimumDigits; x++) { - data.unshift('0'); - } - } - - return data; - }, - - /** - * Gets a new Date object for the current time - * - * @return array Returns a Date object - */ - - getDateObject: function() { - if(this.time instanceof Date) { - return this.time; - } - - return new Date((new Date()).getTime() + this.getTimeSeconds() * 1000); - }, - - /** - * Gets a digitized daily counter - * - * @return object Returns a digitized object - */ - - getDayCounter: function(includeSeconds) { - var digits = [ - this.getDays(), - this.getHours(true), - this.getMinutes(true) - ]; - - if(includeSeconds) { - digits.push(this.getSeconds(true)); - } - - return this.digitize(digits); - }, - - /** - * Gets number of days - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a floored integer - */ - - getDays: function(mod) { - var days = this.getTimeSeconds() / 60 / 60 / 24; - - if(mod) { - days = days % 7; - } - - return Math.floor(days); - }, - - /** - * Gets an hourly breakdown - * - * @return object Returns a digitized object - */ - - getHourCounter: function() { - var obj = this.digitize([ - this.getHours(), - this.getMinutes(true), - this.getSeconds(true) - ]); - - return obj; - }, - - /** - * Gets an hourly breakdown - * - * @return object Returns a digitized object - */ - - getHourly: function() { - return this.getHourCounter(); - }, - - /** - * Gets number of hours - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a floored integer - */ - - getHours: function(mod) { - var hours = this.getTimeSeconds() / 60 / 60; - - if(mod) { - hours = hours % 24; - } - - return Math.floor(hours); - }, - - /** - * Gets the twenty-four hour time - * - * @return object returns a digitized object - */ - - getMilitaryTime: function(date, showSeconds) { - if(typeof showSeconds === "undefined") { - showSeconds = true; - } - - if(!date) { - date = this.getDateObject(); - } - - var data = [ - date.getHours(), - date.getMinutes() - ]; - - if(showSeconds === true) { - data.push(date.getSeconds()); - } - - return this.digitize(data); - }, - - /** - * Gets number of minutes - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a floored integer - */ - - getMinutes: function(mod) { - var minutes = this.getTimeSeconds() / 60; - - if(mod) { - minutes = minutes % 60; - } - - return Math.floor(minutes); - }, - - /** - * Gets a minute breakdown - */ - - getMinuteCounter: function() { - var obj = this.digitize([ - this.getMinutes(), - this.getSeconds(true) - ]); - - return obj; - }, - - /** - * Gets time count in seconds regardless of if targetting date or not. - * - * @return int Returns a floored integer - */ - - getTimeSeconds: function(date) { - if(!date) { - date = new Date(); - } - - if (this.time instanceof Date) { - if (this.factory.countdown) { - return Math.max(this.time.getTime()/1000 - date.getTime()/1000,0); - } else { - return date.getTime()/1000 - this.time.getTime()/1000 ; - } - } else { - return this.time; - } - }, - - /** - * Gets the current twelve hour time - * - * @return object Returns a digitized object - */ - - getTime: function(date, showSeconds) { - if(typeof showSeconds === "undefined") { - showSeconds = true; - } - - if(!date) { - date = this.getDateObject(); - } - - console.log(date); - - - var hours = date.getHours(); - var merid = hours > 12 ? 'PM' : 'AM'; - var data = [ - hours > 12 ? hours - 12 : (hours === 0 ? 12 : hours), - date.getMinutes() - ]; - - if(showSeconds === true) { - data.push(date.getSeconds()); - } - - return this.digitize(data); - }, - - /** - * Gets number of seconds - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a ceiled integer - */ - - getSeconds: function(mod) { - var seconds = this.getTimeSeconds(); - - if(mod) { - if(seconds == 60) { - seconds = 0; - } - else { - seconds = seconds % 60; - } - } - - return Math.ceil(seconds); - }, - - /** - * Gets number of weeks - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a floored integer - */ - - getWeeks: function(mod) { - var weeks = this.getTimeSeconds() / 60 / 60 / 24 / 7; - - if(mod) { - weeks = weeks % 52; - } - - return Math.floor(weeks); - }, - - /** - * Removes a specific number of leading zeros from the array. - * This method prevents you from removing too many digits, even - * if you try. - * - * @param int Total number of digits to remove - * @return array An array of digits - */ - - removeLeadingZeros: function(totalDigits, digits) { - var total = 0; - var newArray = []; - - $.each(digits, function(i, digit) { - if(i < totalDigits) { - total += parseInt(digits[i], 10); - } - else { - newArray.push(digits[i]); - } - }); - - if(total === 0) { - return newArray; - } - - return digits; - }, - - /** - * Adds X second to the current time - */ - - addSeconds: function(x) { - if(this.time instanceof Date) { - this.time.setSeconds(this.time.getSeconds() + x); - } - else { - this.time += x; - } - }, - - /** - * Adds 1 second to the current time - */ - - addSecond: function() { - this.addSeconds(1); - }, - - /** - * Substracts X seconds from the current time - */ - - subSeconds: function(x) { - if(this.time instanceof Date) { - this.time.setSeconds(this.time.getSeconds() - x); - } - else { - this.time -= x; - } - }, - - /** - * Substracts 1 second from the current time - */ - - subSecond: function() { - this.subSeconds(1); - }, - - /** - * Converts the object to a human readable string - */ - - toString: function() { - return this.getTimeSeconds().toString(); - } - - /* - getYears: function() { - return Math.floor(this.time / 60 / 60 / 24 / 7 / 52); - }, - - getDecades: function() { - return Math.floor(this.getWeeks() / 10); - }*/ - }); - -}(jQuery)); - -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * The FlipClock.Timer object managers the JS timers - * - * @param object The parent FlipClock.Factory object - * @param object Override the default options - */ - - FlipClock.Timer = FlipClock.Base.extend({ - - /** - * Callbacks - */ - - callbacks: { - destroy: false, - create: false, - init: false, - interval: false, - start: false, - stop: false, - reset: false - }, - - /** - * FlipClock timer count (how many intervals have passed) - */ - - count: 0, - - /** - * The parent FlipClock.Factory object - */ - - factory: false, - - /** - * Timer interval (1 second by default) - */ - - interval: 1000, - - /** - * The rate of the animation in milliseconds (not currently in use) - */ - - animationRate: 1000, - - /** - * Constructor - * - * @return void - */ - - constructor: function(factory, options) { - this.base(options); - this.factory = factory; - this.callback(this.callbacks.init); - this.callback(this.callbacks.create); - }, - - /** - * This method gets the elapsed the time as an interger - * - * @return void - */ - - getElapsed: function() { - return this.count * this.interval; - }, - - /** - * This method gets the elapsed the time as a Date object - * - * @return void - */ - - getElapsedTime: function() { - return new Date(this.time + this.getElapsed()); - }, - - /** - * This method is resets the timer - * - * @param callback This method resets the timer back to 0 - * @return void - */ - - reset: function(callback) { - clearInterval(this.timer); - this.count = 0; - this._setInterval(callback); - this.callback(this.callbacks.reset); - }, - - /** - * This method is starts the timer - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - start: function(callback) { - this.factory.running = true; - this._createTimer(callback); - this.callback(this.callbacks.start); - }, - - /** - * This method is stops the timer - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - stop: function(callback) { - this.factory.running = false; - this._clearInterval(callback); - this.callback(this.callbacks.stop); - this.callback(callback); - }, - - /** - * Clear the timer interval - * - * @return void - */ - - _clearInterval: function() { - clearInterval(this.timer); - }, - - /** - * Create the timer object - * - * @param callback A function that is called once the timer is created - * @return void - */ - - _createTimer: function(callback) { - this._setInterval(callback); - }, - - /** - * Destroy the timer object - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - _destroyTimer: function(callback) { - this._clearInterval(); - this.timer = false; - this.callback(callback); - this.callback(this.callbacks.destroy); - }, - - /** - * This method is called each time the timer interval is ran - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - _interval: function(callback) { - this.callback(this.callbacks.interval); - this.callback(callback); - this.count++; - }, - - /** - * This sets the timer interval - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - _setInterval: function(callback) { - var t = this; - - t._interval(callback); - - t.timer = setInterval(function() { - t._interval(callback); - }, this.interval); - } - - }); - -}(jQuery)); - -(function($) { - - /** - * Twenty-Four Hour Clock Face - * - * This class will generate a twenty-four our clock for FlipClock.js - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.TwentyFourHourClockFace = FlipClock.Face.extend({ - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.base(factory, options); - }, - - /** - * Build the clock face - * - * @param object Pass the time that should be used to display on the clock. - */ - - build: function(time) { - var t = this; - var children = this.factory.$el.find('ul'); - - if(!this.factory.time.time) { - this.factory.original = new Date(); - - this.factory.time = new FlipClock.Time(this.factory, this.factory.original); - } - - var time = time ? time : this.factory.time.getMilitaryTime(false, this.showSeconds); - - if(time.length > children.length) { - $.each(time, function(i, digit) { - t.createList(digit); - }); - } - - this.createDivider(); - this.createDivider(); - - $(this.dividers[0]).insertBefore(this.lists[this.lists.length - 2].$el); - $(this.dividers[1]).insertBefore(this.lists[this.lists.length - 4].$el); - - this.base(); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - this.autoIncrement(); - - time = time ? time : this.factory.time.getMilitaryTime(false, this.showSeconds); - - this.base(time, doNotAddPlayClass); - } - - }); - -}(jQuery)); -(function($) { - - /** - * Counter Clock Face - * - * This class will generate a generice flip counter. The timer has been - * disabled. clock.increment() and clock.decrement() have been added. - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.CounterFace = FlipClock.Face.extend({ - - /** - * Tells the counter clock face if it should auto-increment - */ - - shouldAutoIncrement: false, - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - - if(typeof options != "object") { - options = {}; - } - - factory.autoStart = options.autoStart ? true : false; - - if(options.autoStart) { - this.shouldAutoIncrement = true; - } - - factory.increment = function() { - factory.countdown = false; - factory.setTime(factory.getTime().getTimeSeconds() + 1); - }; - - factory.decrement = function() { - factory.countdown = true; - var time = factory.getTime().getTimeSeconds(); - if(time > 0) { - factory.setTime(time - 1); - } - }; - - factory.setValue = function(digits) { - factory.setTime(digits); - }; - - factory.setCounter = function(digits) { - factory.setTime(digits); - }; - - this.base(factory, options); - }, - - /** - * Build the clock face - */ - - build: function() { - var t = this; - var children = this.factory.$el.find('ul'); - var time = this.factory.getTime().digitize([this.factory.getTime().time]); - - if(time.length > children.length) { - $.each(time, function(i, digit) { - var list = t.createList(digit); - - list.select(digit); - }); - - } - - $.each(this.lists, function(i, list) { - list.play(); - }); - - this.base(); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(this.shouldAutoIncrement) { - this.autoIncrement(); - } - - if(!time) { - time = this.factory.getTime().digitize([this.factory.getTime().time]); - } - - this.base(time, doNotAddPlayClass); - }, - - /** - * Reset the clock face - */ - - reset: function() { - this.factory.time = new FlipClock.Time( - this.factory, - this.factory.original ? Math.round(this.factory.original) : 0 - ); - - this.flip(); - } - }); - -}(jQuery)); -(function($) { - - /** - * Daily Counter Clock Face - * - * This class will generate a daily counter for FlipClock.js. A - * daily counter will track days, hours, minutes, and seconds. If - * the number of available digits is exceeded in the count, a new - * digit will be created. - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.DailyCounterFace = FlipClock.Face.extend({ - - showSeconds: true, - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.base(factory, options); - }, - - /** - * Build the clock face - */ - - build: function(time) { - var t = this; - var children = this.factory.$el.find('ul'); - var offset = 0; - - time = time ? time : this.factory.time.getDayCounter(this.showSeconds); - - if(time.length > children.length) { - $.each(time, function(i, digit) { - t.createList(digit); - }); - } - - if(this.showSeconds) { - $(this.createDivider('Seconds')).insertBefore(this.lists[this.lists.length - 2].$el); - } - else - { - offset = 2; - } - - $(this.createDivider('Minutes')).insertBefore(this.lists[this.lists.length - 4 + offset].$el); - $(this.createDivider('Hours')).insertBefore(this.lists[this.lists.length - 6 + offset].$el); - $(this.createDivider('Days', true)).insertBefore(this.lists[0].$el); - - this.base(); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(!time) { - time = this.factory.time.getDayCounter(this.showSeconds); - } - - this.autoIncrement(); - - this.base(time, doNotAddPlayClass); - } - - }); - -}(jQuery)); -(function($) { - - /** - * Hourly Counter Clock Face - * - * This class will generate an hourly counter for FlipClock.js. An - * hour counter will track hours, minutes, and seconds. If number of - * available digits is exceeded in the count, a new digit will be - * created. - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.HourlyCounterFace = FlipClock.Face.extend({ - - // clearExcessDigits: true, - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.base(factory, options); - }, - - /** - * Build the clock face - */ - - build: function(excludeHours, time) { - var t = this; - var children = this.factory.$el.find('ul'); - - time = time ? time : this.factory.time.getHourCounter(); - - if(time.length > children.length) { - $.each(time, function(i, digit) { - t.createList(digit); - }); - } - - $(this.createDivider('Seconds')).insertBefore(this.lists[this.lists.length - 2].$el); - $(this.createDivider('Minutes')).insertBefore(this.lists[this.lists.length - 4].$el); - - if(!excludeHours) { - $(this.createDivider('Hours', true)).insertBefore(this.lists[0].$el); - } - - this.base(); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(!time) { - time = this.factory.time.getHourCounter(); - } - - this.autoIncrement(); - - this.base(time, doNotAddPlayClass); - }, - - /** - * Append a newly created list to the clock - */ - - appendDigitToClock: function(obj) { - this.base(obj); - - this.dividers[0].insertAfter(this.dividers[0].next()); - } - - }); - -}(jQuery)); -(function($) { - - /** - * Minute Counter Clock Face - * - * This class will generate a minute counter for FlipClock.js. A - * minute counter will track minutes and seconds. If an hour is - * reached, the counter will reset back to 0. (4 digits max) - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.MinuteCounterFace = FlipClock.HourlyCounterFace.extend({ - - clearExcessDigits: false, - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.base(factory, options); - }, - - /** - * Build the clock face - */ - - build: function() { - this.base(true, this.factory.time.getMinuteCounter()); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(!time) { - time = this.factory.time.getMinuteCounter(); - } - - this.base(time, doNotAddPlayClass); - } - - }); - -}(jQuery)); -(function($) { - - /** - * Twelve Hour Clock Face - * - * This class will generate a twelve hour clock for FlipClock.js - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.TwelveHourClockFace = FlipClock.TwentyFourHourClockFace.extend({ - - /** - * The meridium jQuery DOM object - */ - - meridium: false, - - /** - * The meridium text as string for easy access - */ - - meridiumText: 'AM', - - /** - * Build the clock face - * - * @param object Pass the time that should be used to display on the clock. - */ - - build: function() { - var t = this; - - var time = this.factory.time.getTime(false, this.showSeconds); - - this.base(time); - this.meridiumText = this.getMeridium(); - this.meridium = $([ - '' - ].join('')); - - this.meridium.insertAfter(this.lists[this.lists.length-1].$el); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(this.meridiumText != this.getMeridium()) { - this.meridiumText = this.getMeridium(); - this.meridium.find('a').html(this.meridiumText); - } - this.base(this.factory.time.getTime(false, this.showSeconds), doNotAddPlayClass); - }, - - /** - * Get the current meridium - * - * @return string Returns the meridium (AM|PM) - */ - - getMeridium: function() { - return new Date().getHours() >= 12 ? 'PM' : 'AM'; - }, - - /** - * Is it currently in the post-medirium? - * - * @return bool Returns true or false - */ - - isPM: function() { - return this.getMeridium() == 'PM' ? true : false; - }, - - /** - * Is it currently before the post-medirium? - * - * @return bool Returns true or false - */ - - isAM: function() { - return this.getMeridium() == 'AM' ? true : false; - } - - }); - -}(jQuery)); -(function($) { - - /** - * FlipClock Arabic Language Pack - * - * This class will be used to translate tokens into the Arabic language. - * - */ - - FlipClock.Lang.Arabic = { - - 'years' : 'سنوات', - 'months' : 'شهور', - 'days' : 'أيام', - 'hours' : 'ساعات', - 'minutes' : 'دقائق', - 'seconds' : 'ثواني' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['ar'] = FlipClock.Lang.Arabic; - FlipClock.Lang['ar-ar'] = FlipClock.Lang.Arabic; - FlipClock.Lang['arabic'] = FlipClock.Lang.Arabic; - -}(jQuery)); -(function($) { - - /** - * FlipClock Danish Language Pack - * - * This class will used to translate tokens into the Danish language. - * - */ - - FlipClock.Lang.Danish = { - - 'years' : 'År', - 'months' : 'Måneder', - 'days' : 'Dage', - 'hours' : 'Timer', - 'minutes' : 'Minutter', - 'seconds' : 'Sekunder' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['da'] = FlipClock.Lang.Danish; - FlipClock.Lang['da-dk'] = FlipClock.Lang.Danish; - FlipClock.Lang['danish'] = FlipClock.Lang.Danish; - -}(jQuery)); -(function($) { - - /** - * FlipClock German Language Pack - * - * This class will used to translate tokens into the German language. - * - */ - - FlipClock.Lang.German = { - - 'years' : 'Jahre', - 'months' : 'Monate', - 'days' : 'Tage', - 'hours' : 'Stunden', - 'minutes' : 'Minuten', - 'seconds' : 'Sekunden' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['de'] = FlipClock.Lang.German; - FlipClock.Lang['de-de'] = FlipClock.Lang.German; - FlipClock.Lang['german'] = FlipClock.Lang.German; - -}(jQuery)); -(function($) { - - /** - * FlipClock English Language Pack - * - * This class will used to translate tokens into the English language. - * - */ - - FlipClock.Lang.English = { - - 'years' : 'Years', - 'months' : 'Months', - 'days' : 'Days', - 'hours' : 'Hours', - 'minutes' : 'Minutes', - 'seconds' : 'Seconds' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['en'] = FlipClock.Lang.English; - FlipClock.Lang['en-us'] = FlipClock.Lang.English; - FlipClock.Lang['english'] = FlipClock.Lang.English; - -}(jQuery)); -(function($) { - - /** - * FlipClock Spanish Language Pack - * - * This class will used to translate tokens into the Spanish language. - * - */ - - FlipClock.Lang.Spanish = { - - 'years' : 'Años', - 'months' : 'Meses', - 'days' : 'DÍas', - 'hours' : 'Horas', - 'minutes' : 'Minutos', - 'seconds' : 'Segundo' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['es'] = FlipClock.Lang.Spanish; - FlipClock.Lang['es-es'] = FlipClock.Lang.Spanish; - FlipClock.Lang['spanish'] = FlipClock.Lang.Spanish; - -}(jQuery)); -(function($) { - - /** - * FlipClock Finnish Language Pack - * - * This class will used to translate tokens into the Finnish language. - * - */ - - FlipClock.Lang.Finnish = { - - 'years' : 'Vuotta', - 'months' : 'Kuukautta', - 'days' : 'Päivää', - 'hours' : 'Tuntia', - 'minutes' : 'Minuuttia', - 'seconds' : 'Sekuntia' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['fi'] = FlipClock.Lang.Finnish; - FlipClock.Lang['fi-fi'] = FlipClock.Lang.Finnish; - FlipClock.Lang['finnish'] = FlipClock.Lang.Finnish; - -}(jQuery)); - -(function($) { - - /** - * FlipClock Canadian French Language Pack - * - * This class will used to translate tokens into the Canadian French language. - * - */ - - FlipClock.Lang.French = { - - 'years' : 'Ans', - 'months' : 'Mois', - 'days' : 'Jours', - 'hours' : 'Heures', - 'minutes' : 'Minutes', - 'seconds' : 'Secondes' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['fr'] = FlipClock.Lang.French; - FlipClock.Lang['fr-ca'] = FlipClock.Lang.French; - FlipClock.Lang['french'] = FlipClock.Lang.French; - -}(jQuery)); - -(function($) { - - /** - * FlipClock Italian Language Pack - * - * This class will used to translate tokens into the Italian language. - * - */ - - FlipClock.Lang.Italian = { - - 'years' : 'Anni', - 'months' : 'Mesi', - 'days' : 'Giorni', - 'hours' : 'Ore', - 'minutes' : 'Minuti', - 'seconds' : 'Secondi' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['it'] = FlipClock.Lang.Italian; - FlipClock.Lang['it-it'] = FlipClock.Lang.Italian; - FlipClock.Lang['italian'] = FlipClock.Lang.Italian; - -}(jQuery)); - -(function($) { - - /** - * FlipClock Latvian Language Pack - * - * This class will used to translate tokens into the Latvian language. - * - */ - - FlipClock.Lang.Latvian = { - - 'years' : 'Gadi', - 'months' : 'Mēneši', - 'days' : 'Dienas', - 'hours' : 'Stundas', - 'minutes' : 'Minūtes', - 'seconds' : 'Sekundes' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['lv'] = FlipClock.Lang.Latvian; - FlipClock.Lang['lv-lv'] = FlipClock.Lang.Latvian; - FlipClock.Lang['latvian'] = FlipClock.Lang.Latvian; - -}(jQuery)); -(function($) { - - /** - * FlipClock Dutch Language Pack - * - * This class will used to translate tokens into the Dutch language. - */ - - FlipClock.Lang.Dutch = { - - 'years' : 'Jaren', - 'months' : 'Maanden', - 'days' : 'Dagen', - 'hours' : 'Uren', - 'minutes' : 'Minuten', - 'seconds' : 'Seconden' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['nl'] = FlipClock.Lang.Dutch; - FlipClock.Lang['nl-be'] = FlipClock.Lang.Dutch; - FlipClock.Lang['dutch'] = FlipClock.Lang.Dutch; - -}(jQuery)); - -(function($) { - - /** - * FlipClock Norwegian-Bokmål Language Pack - * - * This class will used to translate tokens into the Norwegian language. - * - */ - - FlipClock.Lang.Norwegian = { - - 'years' : 'År', - 'months' : 'Måneder', - 'days' : 'Dager', - 'hours' : 'Timer', - 'minutes' : 'Minutter', - 'seconds' : 'Sekunder' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['no'] = FlipClock.Lang.Norwegian; - FlipClock.Lang['nb'] = FlipClock.Lang.Norwegian; - FlipClock.Lang['no-nb'] = FlipClock.Lang.Norwegian; - FlipClock.Lang['norwegian'] = FlipClock.Lang.Norwegian; - -}(jQuery)); - -(function($) { - - /** - * FlipClock Portuguese Language Pack - * - * This class will used to translate tokens into the Portuguese language. - * - */ - - FlipClock.Lang.Portuguese = { - - 'years' : 'Anos', - 'months' : 'Meses', - 'days' : 'Dias', - 'hours' : 'Horas', - 'minutes' : 'Minutos', - 'seconds' : 'Segundos' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['pt'] = FlipClock.Lang.Portuguese; - FlipClock.Lang['pt-br'] = FlipClock.Lang.Portuguese; - FlipClock.Lang['portuguese'] = FlipClock.Lang.Portuguese; - -}(jQuery)); -(function($) { - - /** - * FlipClock Russian Language Pack - * - * This class will used to translate tokens into the Russian language. - * - */ - - FlipClock.Lang.Russian = { - - 'years' : 'лет', - 'months' : 'месяцев', - 'days' : 'дней', - 'hours' : 'часов', - 'minutes' : 'минут', - 'seconds' : 'секунд' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['ru'] = FlipClock.Lang.Russian; - FlipClock.Lang['ru-ru'] = FlipClock.Lang.Russian; - FlipClock.Lang['russian'] = FlipClock.Lang.Russian; - -}(jQuery)); -(function($) { - - /** - * FlipClock Swedish Language Pack - * - * This class will used to translate tokens into the Swedish language. - * - */ - - FlipClock.Lang.Swedish = { - - 'years' : 'År', - 'months' : 'Månader', - 'days' : 'Dagar', - 'hours' : 'Timmar', - 'minutes' : 'Minuter', - 'seconds' : 'Sekunder' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['sv'] = FlipClock.Lang.Swedish; - FlipClock.Lang['sv-se'] = FlipClock.Lang.Swedish; - FlipClock.Lang['swedish'] = FlipClock.Lang.Swedish; - -}(jQuery)); - -(function($) { - - /** - * FlipClock Chinese Language Pack - * - * This class will used to translate tokens into the Chinese language. - * - */ - - FlipClock.Lang.Chinese = { - - 'years' : '年', - 'months' : '月', - 'days' : '日', - 'hours' : '时', - 'minutes' : '分', - 'seconds' : '秒' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['zh'] = FlipClock.Lang.Chinese; - FlipClock.Lang['zh-cn'] = FlipClock.Lang.Chinese; - FlipClock.Lang['chinese'] = FlipClock.Lang.Chinese; - -}(jQuery)); \ No newline at end of file diff --git a/js/highlight.min.js b/js/highlight.min.js deleted file mode 100755 index d9163653..00000000 --- a/js/highlight.min.js +++ /dev/null @@ -1,6 +0,0 @@ -//Version 8.8.0 -!function(e){"undefined"!=typeof exports?e(exports):(window.hljs=e({}),"function"==typeof define&&define.amd&&define("hljs",[],function(){return window.hljs}))}(function(e){function n(e){return e.replace(/&/gm,"&").replace(//gm,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0==t.index}function a(e){return/^(no-?highlight|plain|text)$/i.test(e)}function i(e){var n,t,r,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=/\blang(?:uage)?-([\w-]+)\b/i.exec(i))return w(t[1])?t[1]:"no-highlight";for(i=i.split(/\s+/),n=0,r=i.length;r>n;n++)if(w(i[n])||a(i[n]))return i[n]}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3==i.nodeType?a+=i.nodeValue.length:1==i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!=r[0].offset?e[0].offset"}function u(e){f+=""}function c(e){("start"==e.event?o:u)(e.node)}for(var s=0,f="",l=[];e.length||r.length;){var g=i();if(f+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g==e){l.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g==e&&g.length&&g[0].offset==s);l.reverse().forEach(o)}else"start"==g[0].event?l.push(g[0].node):l.pop(),c(g.splice(0,1)[0])}return f+n(a.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");u[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?c("keyword",a.k):Object.keys(a.k).forEach(function(e){c(e,a.k[e])}),a.k=u}a.lR=t(a.l||/\b\w+\b/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push("self"==e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var f=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=f.length?t(f.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){for(var t=0;t";return i+=e+'">',i+n+o}function p(){if(!L.k)return n(y);var e="",t=0;L.lR.lastIndex=0;for(var r=L.lR.exec(y);r;){e+=n(y.substr(t,r.index-t));var a=g(L,r);a?(B+=a[1],e+=h(a[0],n(r[0]))):e+=n(r[0]),t=L.lR.lastIndex,r=L.lR.exec(y)}return e+n(y.substr(t))}function d(){var e="string"==typeof L.sL;if(e&&!x[L.sL])return n(y);var t=e?f(L.sL,y,!0,M[L.sL]):l(y,L.sL.length?L.sL:void 0);return L.r>0&&(B+=t.r),e&&(M[L.sL]=t.top),h(t.language,t.value,!1,!0)}function b(){return void 0!==L.sL?d():p()}function v(e,t){var r=e.cN?h(e.cN,"",!0):"";e.rB?(k+=r,y=""):e.eB?(k+=n(t)+r,y=""):(k+=r,y=t),L=Object.create(e,{parent:{value:L}})}function m(e,t){if(y+=e,void 0===t)return k+=b(),0;var r=o(t,L);if(r)return k+=b(),v(r,t),r.rB?0:t.length;var a=u(L,t);if(a){var i=L;i.rE||i.eE||(y+=t),k+=b();do L.cN&&(k+="
    "),B+=L.r,L=L.parent;while(L!=a.parent);return i.eE&&(k+=n(t)),y="",a.starts&&v(a.starts,""),i.rE?0:t.length}if(c(t,L))throw new Error('Illegal lexeme "'+t+'" for mode "'+(L.cN||"")+'"');return y+=t,t.length||1}var N=w(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,L=i||N,M={},k="";for(R=L;R!=N;R=R.parent)R.cN&&(k=h(R.cN,"",!0)+k);var y="",B=0;try{for(var C,j,I=0;;){if(L.t.lastIndex=I,C=L.t.exec(t),!C)break;j=m(t.substr(I,C.index-I),C[0]),I=C.index+j}for(m(t.substr(I)),R=L;R.parent;R=R.parent)R.cN&&(k+="");return{r:B,value:k,language:e,top:L}}catch(O){if(-1!=O.message.indexOf("Illegal"))return{r:0,value:n(t)};throw O}}function l(e,t){t=t||E.languages||Object.keys(x);var r={r:0,value:n(e)},a=r;return t.forEach(function(n){if(w(n)){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}}),a.language&&(r.second_best=a),r}function g(e){return E.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,n){return n.replace(/\t/g,E.tabReplace)})),E.useBR&&(e=e.replace(/\n/g,"
    ")),e}function h(e,n,t){var r=n?R[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function p(e){var n=i(e);if(!a(n)){var t;E.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e;var r=t.textContent,o=n?f(n,r,!0):l(r),s=u(t);if(s.length){var p=document.createElementNS("http://www.w3.org/1999/xhtml","div");p.innerHTML=o.value,o.value=c(s,u(p),r)}o.value=g(o.value),e.innerHTML=o.value,e.className=h(e.className,n,o.language),e.result={language:o.language,re:o.r},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.r})}}function d(e){E=o(E,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");Array.prototype.forEach.call(e,p)}}function v(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){R[e]=n})}function N(){return Object.keys(x)}function w(e){return e=e.toLowerCase(),x[e]||x[R[e]]}var E={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},x={},R={};return e.highlight=f,e.highlightAuto=l,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=w,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e});hljs.registerLanguage("prolog",function(c){var r={cN:"atom",b:/[a-z][A-Za-z0-9_]*/,r:0},b={cN:"name",v:[{b:/[A-Z][a-zA-Z0-9_]*/},{b:/_[A-Za-z0-9_]*/}],r:0},a={b:/\(/,e:/\)/,r:0},e={b:/\[/,e:/\]/},n={cN:"comment",b:/%/,e:/$/,c:[c.PWM]},t={cN:"string",b:/`/,e:/`/,c:[c.BE]},g={cN:"string",b:/0\'(\\\'|.)/},N={cN:"string",b:/0\'\\s/},o={b:/:-/},s=[r,b,a,o,e,n,c.CBCM,c.QSM,c.ASM,t,g,N,c.CNM];return a.c=s,e.c=s,{c:s.concat([{b:/\.$/}])}});hljs.registerLanguage("puppet",function(e){var s={keyword:"and case default else elsif false if in import enherits node or true undef unless main settings $string ",literal:"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted",built_in:"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version"},r=e.C("#","$"),a="([A-Za-z_]|::)(\\w|::)*",i=e.inherit(e.TM,{b:a}),o={cN:"variable",b:"\\$"+a},t={cN:"string",c:[e.BE,o],v:[{b:/'/,e:/'/},{b:/"/,e:/"/}]};return{aliases:["pp"],c:[r,o,t,{bK:"class",e:"\\{|;",i:/=/,c:[i,r]},{bK:"define",e:/\{/,c:[{cN:"title",b:e.IR,endsParent:!0}]},{b:e.IR+"\\s+\\{",rB:!0,e:/\S/,c:[{cN:"name",b:e.IR},{b:/\{/,e:/\}/,k:s,r:0,c:[t,r,{b:"[a-zA-Z_]+\\s*=>"},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},o]}],r:0}]}});hljs.registerLanguage("haskell",function(e){var c=[e.C("--","$"),e.C("{-","-}",{c:["self"]})],a={cN:"pragma",b:"{-#",e:"#-}"},i={cN:"preprocessor",b:"^#",e:"$"},n={cN:"type",b:"\\b[A-Z][\\w']*",r:0},t={cN:"container",b:"\\(",e:"\\)",i:'"',c:[a,i,{cN:"type",b:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TM,{b:"[_a-z][\\w']*"})].concat(c)},l={cN:"container",b:"{",e:"}",c:t.c};return{aliases:["hs"],k:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",c:[{cN:"module",b:"\\bmodule\\b",e:"where",k:"module where",c:[t].concat(c),i:"\\W\\.|;"},{cN:"import",b:"\\bimport\\b",e:"$",k:"import|0 qualified as hiding",c:[t].concat(c),i:"\\W\\.|;"},{cN:"class",b:"^(\\s*)?(class|instance)\\b",e:"where",k:"class family instance where",c:[n,t].concat(c)},{cN:"typedef",b:"\\b(data|(new)?type)\\b",e:"$",k:"data family type newtype deriving",c:[a,n,t,l].concat(c)},{cN:"default",bK:"default",e:"$",c:[n,t].concat(c)},{cN:"infix",bK:"infix infixl infixr",e:"$",c:[e.CNM].concat(c)},{cN:"foreign",b:"\\bforeign\\b",e:"$",k:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",c:[n,e.QSM].concat(c)},{cN:"shebang",b:"#!\\/usr\\/bin\\/env runhaskell",e:"$"},a,i,e.QSM,e.CNM,n,e.inherit(e.TM,{b:"^[_a-z][\\w']*"}),{b:"->|<-"}].concat(c)}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"header",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{cN:"horizontal_rule",b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"link_label",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link_url",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"link_reference",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:"^\\[.+\\]:",rB:!0,c:[{cN:"link_reference",b:"\\[",e:"\\]:",eB:!0,eE:!0,starts:{cN:"link_url",e:"$"}}]}]}});hljs.registerLanguage("dockerfile",function(n){return{aliases:["docker"],cI:!0,k:{built_ins:"from maintainer cmd expose add copy entrypoint volume user workdir onbuild run env"},c:[n.HCM,{k:{built_in:"run cmd entrypoint volume add copy workdir onbuild"},b:/^ *(onbuild +)?(run|cmd|entrypoint|volume|add|copy|workdir) +/,starts:{e:/[^\\]\n/,sL:"bash"}},{k:{built_in:"from maintainer expose env user onbuild"},b:/^ *(onbuild +)?(from|maintainer|expose|env|user|onbuild) +/,e:/[^\\]\n/,c:[n.ASM,n.QSM,n.NM,n.HCM]}]}});hljs.registerLanguage("lua",function(e){var t="\\[=*\\[",a="\\]=*\\]",r={b:t,e:a,c:["self"]},n=[e.C("--(?!"+t+")","$"),e.C("--"+t,a,{c:[r],r:10})];return{l:e.UIR,k:{keyword:"and break do else elseif end false for if in local nil not or repeat return then true until while",built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"},c:n.concat([{cN:"function",bK:"function",e:"\\)",c:[e.inherit(e.TM,{b:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{cN:"params",b:"\\(",eW:!0,c:n}].concat(n)},e.CNM,e.ASM,e.QSM,{cN:"string",b:t,e:a,c:[r],r:5}])}});hljs.registerLanguage("vim",function(e){return{l:/[!#@\w]+/,k:{keyword:"N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw d|0 delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu g|0 go gr grepa gu gv ha h|0 helpf helpg helpt hi hid his i|0 ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs n|0 new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf q|0 quita qa r|0 rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv s|0 sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync t|0 tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up v|0 ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank",built_in:"abs acos add and append argc argidx argv asin atan atan2 browse browsedir bufexists buflisted bufloaded bufname bufnr bufwinnr byte2line byteidx call ceil changenr char2nr cindent clearmatches col complete complete_add complete_check confirm copy cos cosh count cscope_connection cursor deepcopy delete did_filetype diff_filler diff_hlID empty escape eval eventhandler executable exists exp expand extend feedkeys filereadable filewritable filter finddir findfile float2nr floor fmod fnameescape fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreground function garbagecollect get getbufline getbufvar getchar getcharmod getcmdline getcmdpos getcmdtype getcwd getfontname getfperm getfsize getftime getftype getline getloclist getmatches getpid getpos getqflist getreg getregtype gettabvar gettabwinvar getwinposx getwinposy getwinvar glob globpath has has_key haslocaldir hasmapto histadd histdel histget histnr hlexists hlID hostname iconv indent index input inputdialog inputlist inputrestore inputsave inputsecret insert invert isdirectory islocked items join keys len libcall libcallnr line line2byte lispindent localtime log log10 luaeval map maparg mapcheck match matchadd matcharg matchdelete matchend matchlist matchstr max min mkdir mode mzeval nextnonblank nr2char or pathshorten pow prevnonblank printf pumvisible py3eval pyeval range readfile reltime reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remove rename repeat resolve reverse round screenattr screenchar screencol screenrow search searchdecl searchpair searchpairpos searchpos server2client serverlist setbufvar setcmdpos setline setloclist setmatches setpos setqflist setreg settabvar settabwinvar setwinvar sha256 shellescape shiftwidth simplify sin sinh sort soundfold spellbadword spellsuggest split sqrt str2float str2nr strchars strdisplaywidth strftime stridx string strlen strpart strridx strtrans strwidth submatch substitute synconcealed synID synIDattr synIDtrans synstack system tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tan tanh tempname tolower toupper tr trunc type undofile undotree values virtcol visualmode wildmenumode winbufnr wincol winheight winline winnr winrestcmd winrestview winsaveview winwidth writefile xor"},i:/[{:]/,c:[e.NM,e.ASM,{cN:"string",b:/"((\\")|[^"\n])*("|\n)/},{cN:"variable",b:/[bwtglsav]:[\w\d_]*/},{cN:"function",bK:"function function!",e:"$",r:0,c:[e.TM,{cN:"params",b:"\\(",e:"\\)"}]}]}});hljs.registerLanguage("scala",function(e){var t={cN:"annotation",b:"@[A-Za-z]+"},a={cN:"string",b:'u?r?"""',e:'"""',r:10},r={cN:"symbol",b:"'\\w[\\w\\d_]*(?!')"},c={cN:"type",b:"\\b[A-Z][A-Za-z0-9_]*",r:0},i={cN:"title",b:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,r:0},l={cN:"class",bK:"class object trait type",e:/[:={\[(\n;]/,c:[{cN:"keyword",bK:"extends with",r:10},i]},n={cN:"function",bK:"def val",e:/[:={\[(\n;]/,c:[i]};return{k:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},c:[e.CLCM,e.CBCM,a,e.QSM,r,c,n,l,e.CNM,t]}});hljs.registerLanguage("ruby",function(e){var c="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",b={cN:"doctag",b:"@[A-Za-z]+"},a={cN:"value",b:"#<",e:">"},n=[e.C("#","$",{c:[b]}),e.C("^\\=begin","^\\=end",{c:[b],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]},i={cN:"params",b:"\\(",e:"\\)",k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+e.IR+"::)?"+e.IR}]}].concat(n)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:c}),i].concat(n)},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":",c:[t,{b:c}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:[a,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(n),r:0}].concat(n);s.c=d,i.c=d;var o="[>?]>",l="[\\w#]+\\(\\w+\\):\\d+:\\d+>",u="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",N=[{b:/^\s*=>/,cN:"status",starts:{e:"$",c:d}},{cN:"prompt",b:"^("+o+"|"+l+"|"+u+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,c:n.concat(N).concat(d)}});hljs.registerLanguage("typescript",function(e){var r={keyword:"in if for while finally var new function|0 do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private get set super static implements enum export import declare type protected",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void"};return{aliases:["ts"],k:r,c:[{cN:"pi",b:/^\s*['"]use strict['"]/,r:0},e.ASM,e.QSM,e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM],r:0},{cN:"function",b:"function",e:/[\{;]/,eE:!0,k:r,c:["self",e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:[e.CLCM,e.CBCM],i:/["'\(]/}],i:/\[|%/,r:0},{cN:"constructor",bK:"constructor",e:/\{/,eE:!0,r:10},{cN:"module",bK:"module",e:/\{/,eE:!0},{cN:"interface",bK:"interface",e:/\{/,eE:!0,k:"interface extends"},{b:/\$[(.]/},{b:"\\."+e.IR,r:0}]}});hljs.registerLanguage("makefile",function(e){var a={cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]};return{aliases:["mk","mak"],c:[e.HCM,{b:/^\w+\s*\W*=/,rB:!0,r:0,starts:{cN:"constant",e:/\s*\W*=/,eE:!0,starts:{e:/$/,r:0,c:[a]}}},{cN:"title",b:/^[\w]+:\s*$/},{cN:"phony",b:/^\.PHONY:/,e:/$/,k:".PHONY",l:/[\.\w]+/},{b:/^\t+/,e:/$/,r:0,c:[e.QSM,a]}]}});hljs.registerLanguage("json",function(e){var t={literal:"true false null"},i=[e.QSM,e.CNM],l={cN:"value",e:",",eW:!0,eE:!0,c:i,k:t},c={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:!0,eE:!0,c:[e.BE],i:"\\n",starts:l}],i:"\\S"},n={b:"\\[",e:"\\]",c:[e.inherit(l,{cN:null})],i:"\\S"};return i.splice(i.length,0,c,n),{c:i,k:t,i:"\\S"}});hljs.registerLanguage("rust",function(e){var t="([uif](8|16|32|64|size))?",r=e.inherit(e.CBCM);return r.c.push("self"),{aliases:["rs"],k:{keyword:"alignof as be box break const continue crate do else enum extern false fn for if impl in let loop match mod mut offsetof once priv proc pub pure ref return self Self sizeof static struct super trait true type typeof unsafe unsized use virtual while where yield int i8 i16 i32 i64 uint u8 u32 u64 float f32 f64 str char bool",built_in:"Copy Send Sized Sync Drop Fn FnMut FnOnce drop Box ToOwned Clone PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator Option Some None Result Ok Err SliceConcatExt String ToString Vec assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln!"},l:e.IR+"!?",i:""}]}});hljs.registerLanguage("xml",function(t){var s="[A-Za-z0-9\\._:-]+",c={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php"},e={eW:!0,i:/]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:!0,c:[{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},t.C("",{r:10}),{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"|$)",e:">",k:{title:"style"},c:[e],starts:{e:"",rE:!0,sL:"css"}},{cN:"tag",b:"|$)",e:">",k:{title:"script"},c:[e],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars"]}},c,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"",c:[{cN:"title",b:/[^ \/><\n\t]+/,r:0},e]}]}});hljs.registerLanguage("actionscript",function(e){var a="[a-zA-Z_$][a-zA-Z0-9_$]*",c="([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)",t={cN:"rest_arg",b:"[.]{3}",e:a,r:10};return{aliases:["as"],k:{keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with",literal:"true false null undefined"},c:[e.ASM,e.QSM,e.CLCM,e.CBCM,e.CNM,{cN:"package",bK:"package",e:"{",c:[e.TM]},{cN:"class",bK:"class interface",e:"{",eE:!0,c:[{bK:"extends implements"},e.TM]},{cN:"preprocessor",bK:"import include",e:";"},{cN:"function",bK:"function",e:"[{;]",eE:!0,i:"\\S",c:[e.TM,{cN:"params",b:"\\(",e:"\\)",c:[e.ASM,e.QSM,e.CLCM,e.CBCM,t]},{cN:"type",b:":",e:c,r:10}]}],i:/#/}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",a={cN:"function",b:c+"\\(",rB:!0,eE:!0,e:"\\("},r={cN:"rule",b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{cN:"value",eW:!0,eE:!0,c:[a,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,r,{cN:"id",b:/\#[A-Za-z0-9_-]+/},{cN:"class",b:/\.[A-Za-z0-9_-]+/},{cN:"attr_selector",b:/\[/,e:/\]/,i:"$"},{cN:"pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"']+/},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[a,e.ASM,e.QSM,e.CSSNM]}]},{cN:"tag",b:c,r:0},{cN:"rules",b:"{",e:"}",i:/\S/,c:[e.CBCM,r]}]}});hljs.registerLanguage("django",function(e){var t={cN:"filter",b:/\|[A-Za-z]+:?/,k:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone",c:[{cN:"argument",b:/"/,e:/"/},{cN:"argument",b:/'/,e:/'/}]};return{aliases:["jinja"],cI:!0,sL:"xml",c:[e.C(/\{%\s*comment\s*%}/,/\{%\s*endcomment\s*%}/),e.C(/\{#/,/#}/),{cN:"template_tag",b:/\{%/,e:/%}/,k:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor in ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup by as ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim",c:[t]},{cN:"variable",b:/\{\{/,e:/}}/,c:[t]}]}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={cN:"variable",v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},o=[e.BE,r,n],i=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:o,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"sub",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",r:5},{cN:"operator",b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=i,s.c=i,{aliases:["pl"],k:t,c:i}});hljs.registerLanguage("scss",function(e){var t="[a-zA-Z-][a-zA-Z0-9_-]*",i={cN:"variable",b:"(\\$"+t+")\\b"},r={cN:"function",b:t+"\\(",rB:!0,eE:!0,e:"\\("},o={cN:"hexcolor",b:"#[0-9A-Fa-f]+"};({cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:!0,i:"[^\\s]",starts:{cN:"value",eW:!0,eE:!0,c:[r,o,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"important",b:"!important"}]}});return{cI:!0,i:"[=/|']",c:[e.CLCM,e.CBCM,r,{cN:"id",b:"\\#[A-Za-z0-9_-]+",r:0},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"tag",b:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",r:0},{cN:"pseudo",b:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{cN:"pseudo",b:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},i,{cN:"attribute",b:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",i:"[^\\s]"},{cN:"value",b:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{cN:"value",b:":",e:";",c:[r,i,o,e.CSSNM,e.QSM,e.ASM,{cN:"important",b:"!important"}]},{cN:"at_rule",b:"@",e:"[{;]",k:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",c:[r,i,e.QSM,e.ASM,o,e.CSSNM,{cN:"preprocessor",b:"\\s[A-Za-z0-9_.-]+",r:0}]}]}});hljs.registerLanguage("swift",function(e){var i={keyword:"class deinit enum extension func init let protocol static struct subscript typealias var break case continue default do else fallthrough if in for return switch where while as dynamicType is new super self Self Type __COLUMN__ __FILE__ __FUNCTION__ __LINE__ associativity didSet get infix inout left mutating none nonmutating operator override postfix precedence prefix right set unowned unowned safe unsafe weak willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue assert bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced join lexicographicalCompare map max maxElement min minElement numericCast partition posix print println quickSort reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith strideof strideofValue swap swift toString transcode underestimateCount unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafePointers withVaList"},t={cN:"type",b:"\\b[A-Z][\\w']*",r:0},n=e.C("/\\*","\\*/",{c:["self"]}),r={cN:"subst",b:/\\\(/,e:"\\)",k:i,c:[]},s={cN:"number",b:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",r:0},o=e.inherit(e.QSM,{c:[r,e.BE]});return r.c=[s],{k:i,c:[o,e.CLCM,n,t,s,{cN:"func",bK:"func",e:"{",eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/,i:/\(/}),{cN:"generics",b://,i:/>/},{cN:"params",b:/\(/,e:/\)/,endsParent:!0,k:i,c:["self",s,o,e.CBCM,{b:":"}],i:/["']/}],i:/\[|%/},{cN:"class",bK:"struct protocol class extension enum",k:i,e:"\\{",eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/})]},{cN:"preprocessor",b:"(@assignment|@class_protocol|@exported|@final|@lazy|@noreturn|@NSCopying|@NSManaged|@objc|@optional|@required|@auto_closure|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix)"},{bK:"import",e:/$/,c:[e.CLCM,n]}]}});hljs.registerLanguage("cs",function(e){var r="abstract as base bool break byte case catch char checked const continue decimal dynamic default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long null when object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async protected public private internal ascending descending from get group into join let orderby partial select set value var where yield",t=e.IR+"(<"+e.IR+">)?";return{aliases:["csharp"],k:r,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"xmlDocTag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},e.ASM,e.QSM,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[{cN:"title",b:"[a-zA-Z](\\.?\\w)*",r:0},e.CLCM,e.CBCM]},{bK:"new return throw await",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"tag",b:""},{cN:"keyword",b:/\w+/,r:0,k:{common:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"sqbracket",b:"\\s\\[",e:"\\]$"},{cN:"cbracket",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("r",function(e){var r="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{c:[e.HCM,{b:r,l:r,k:{keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},r:0},{cN:"number",b:"0[xX][0-9a-fA-F]+[Li]?\\b",r:0},{cN:"number",b:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",r:0},{cN:"number",b:"\\d+\\.(?!\\d)(?:i\\b)?",r:0},{cN:"number",b:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",r:0},{cN:"number",b:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",r:0},{b:"`",e:"`",r:0},{cN:"string",c:[e.BE],v:[{b:'"',e:'"'},{b:"'",e:"'"}]}]}});hljs.registerLanguage("http",function(t){return{aliases:["https"],i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}});hljs.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"(AV|CA|CF|CG|CI|MK|MP|NS|UI)\\w+"},i={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},o=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:i,l:o,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:o,c:[e.UTM]},{cN:"variable",b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("python",function(e){var r={cN:"prompt",b:/^(>>>|\.\.\.) /},b={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[r],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[r],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},a={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},l={cN:"params",b:/\(/,e:/\)/,c:["self",r,a,b]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[r,a,b,e.HCM,{v:[{cN:"function",bK:"def",r:10},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,l]},{cN:"decorator",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("lisp",function(b){var e="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*",c="\\|[^]*?\\|",r="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?",a={cN:"shebang",b:"^#!",e:"$"},i={cN:"literal",b:"\\b(t{1}|nil)\\b"},l={cN:"number",v:[{b:r,r:0},{b:"#(b|B)[0-1]+(/[0-1]+)?"},{b:"#(o|O)[0-7]+(/[0-7]+)?"},{b:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{b:"#(c|C)\\("+r+" +"+r,e:"\\)"}]},t=b.inherit(b.QSM,{i:null}),d=b.C(";","$",{r:0}),n={cN:"variable",b:"\\*",e:"\\*"},u={cN:"keyword",b:"[:&]"+e},N={b:e,r:0},o={b:c},s={b:"\\(",e:"\\)",c:["self",i,t,l,N]},v={cN:"quoted",c:[l,t,n,u,s,N],v:[{b:"['`]\\(",e:"\\)"},{b:"\\(quote ",e:"\\)",k:"quote"},{b:"'"+c}]},f={cN:"quoted",v:[{b:"'"+e},{b:"#'"+e+"(::"+e+")*"}]},g={cN:"list",b:"\\(\\s*",e:"\\)"},q={eW:!0,r:0};return g.c=[{cN:"keyword",v:[{b:e},{b:c}]},q],q.c=[v,f,g,i,l,t,d,n,u,o,N],{i:/\S/,c:[l,a,i,t,d,v,f,g,N]}});hljs.registerLanguage("java",function(e){var a=e.UIR+"(<"+e.UIR+">)?",t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",c="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",r={cN:"number",b:c,r:0};return{aliases:["jsp"],k:t,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+a+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},r,{cN:"annotation",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("smalltalk",function(a){var r="[a-z][a-zA-Z0-9_]*",s={cN:"char",b:"\\$.{1}"},c={cN:"symbol",b:"#"+a.UIR};return{aliases:["st"],k:"self super nil true false thisContext",c:[a.C('"','"'),a.ASM,{cN:"class",b:"\\b[A-Z][A-Za-z0-9_]*",r:0},{cN:"method",b:r+":",r:0},a.CNM,c,s,{cN:"localvars",b:"\\|[ ]*"+r+"([ ]+"+r+")*[ ]*\\|",rB:!0,e:/\|/,i:/\S/,c:[{b:"(\\|[ ]*)?"+r}]},{cN:"array",b:"\\#\\(",e:"\\)",c:[a.ASM,s,a.CNM,c]}]}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{built_in:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{cN:"url",b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"title",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",operator:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"shebang",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,e.NM,s,a,t]}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*]/,c:[{cN:"operator",bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke",e:/;/,eW:!0,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes c cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle d data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration e each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract f failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function g general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http i id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists k keep keep_duplicates key keys kill l language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim m main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex n name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding p package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime t table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage("cpp",function(t){var e={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[t.inherit(t.QSM,{b:'((u8?|U)|L)?"'}),{b:'(u8?|U)?R"',e:'"',c:[t.BE]},{b:"'\\\\?.",e:"'",i:"."}]},s={cN:"number",v:[{b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{b:t.CNR}]},i={cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line pragma ifdef ifndef",c:[{b:/\\\n/,r:0},{bK:"include",e:"$",c:[r,{cN:"string",b:"<",e:">",i:"\\n"}]},r,s,t.CLCM,t.CBCM]},a=t.IR+"\\s*\\(",c={keyword:"int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf",literal:"true false nullptr NULL"};return{aliases:["c","cc","h","c++","h++","hpp"],k:c,i:"",k:c,c:["self",e]},{b:t.IR+"::",k:c},{bK:"new throw return else",r:0},{cN:"function",b:"("+t.IR+"[\\*&\\s]+)+"+a,rB:!0,e:/[{;=]/,eE:!0,k:c,i:/[^\w\s\*&]/,c:[{b:a,rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:c,r:0,c:[t.CLCM,t.CBCM,r,s]},t.CLCM,t.CBCM,i]}]}});hljs.registerLanguage("php",function(e){var c={cN:"variable",b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},a={cN:"preprocessor",b:/<\?(php)?|\?>/},i={cN:"string",c:[e.BE,a],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},t={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.CLCM,e.HCM,e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"},a]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},a,c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,i,t]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},i,t]}});hljs.registerLanguage("vbnet",function(e){return{aliases:["vb"],cI:!0,k:{keyword:"addhandler addressof alias and andalso aggregate ansi as assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass namespace narrowing new next not notinheritable notoverridable of off on operator option optional or order orelse overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim rem removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly xor",built_in:"boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype date decimal directcast double gettype getxmlnamespace iif integer long object sbyte short single string trycast typeof uinteger ulong ushort",literal:"true false nothing"},i:"//|{|}|endif|gosub|variant|wend",c:[e.inherit(e.QSM,{c:[{b:'""'}]}),e.C("'","$",{rB:!0,c:[{cN:"xmlDocTag",b:"'''|",c:[e.PWM]},{cN:"xmlDocTag",b:"",c:[e.PWM]}]}),e.CNM,{cN:"preprocessor",b:"#",e:"$",k:"if else elseif end region externalsource"}]}});hljs.registerLanguage("dart",function(e){var t={cN:"subst",b:"\\$\\{",e:"}",k:"true false null this is new super"},r={cN:"string",v:[{b:"r'''",e:"'''"},{b:'r"""',e:'"""'},{b:"r'",e:"'",i:"\\n"},{b:'r"',e:'"',i:"\\n"},{b:"'''",e:"'''",c:[e.BE,t]},{b:'"""',e:'"""',c:[e.BE,t]},{b:"'",e:"'",i:"\\n",c:[e.BE,t]},{b:'"',e:'"',i:"\\n",c:[e.BE,t]}]};t.c=[e.CNM,r];var n={keyword:"assert break case catch class const continue default do else enum extends false final finally for if in is new null rethrow return super switch this throw true try var void while with",literal:"abstract as dynamic export external factory get implements import library operator part set static typedef",built_in:"print Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set Stopwatch String StringBuffer StringSink Symbol Type Uri bool double int num document window querySelector querySelectorAll Element ElementList"};return{k:n,c:[r,e.C("/\\*\\*","\\*/",{sL:"markdown"}),e.C("///","$",{sL:"markdown"}),e.CLCM,e.CBCM,{cN:"class",bK:"class interface",e:"{",eE:!0,c:[{bK:"extends implements"},e.UTM]},e.CNM,{cN:"annotation",b:"@[A-Za-z]+"},{b:"=>"}]}});hljs.registerLanguage("vbscript",function(e){return{aliases:["vbs"],cI:!0,k:{keyword:"call class const dim do loop erase execute executeglobal exit for each next function if then else on error option explicit new private property let get public randomize redim rem select case set stop sub while wend with end to elseif is or xor and not class_initialize class_terminate default preserve in me byval byref step resume goto",built_in:"lcase month vartype instrrev ubound setlocale getobject rgb getref string weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency conversions csng timevalue second year space abs clng timeserial fixs len asc isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion scriptengine split scriptengineminorversion cint sin datepart ltrim sqr scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw chrw regexp server response request cstr err",literal:"true false null nothing empty"},i:"//",c:[e.inherit(e.QSM,{c:[{b:'""'}]}),e.C(/'/,/$/,{r:0}),e.CNM]}});hljs.registerLanguage("scheme",function(e){var t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",r="(\\-|\\+)?\\d+([./]\\d+)?",i=r+"[+\\-]"+r+"i",a={built_in:"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"},n={cN:"shebang",b:"^#!",e:"$"},c={cN:"literal",b:"(#t|#f|#\\\\"+t+"|#\\\\.)"},l={cN:"number",v:[{b:r,r:0},{b:i,r:0},{b:"#b[0-1]+(/[0-1]+)?"},{b:"#o[0-7]+(/[0-7]+)?"},{b:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},s=e.QSM,o=[e.C(";","$",{r:0}),e.C("#\\|","\\|#")],u={b:t,r:0},p={cN:"variable",b:"'"+t},d={eW:!0,r:0},g={cN:"list",v:[{b:"\\(",e:"\\)"},{b:"\\[",e:"\\]"}],c:[{cN:"keyword",b:t,l:t,k:a},d]};return d.c=[c,l,s,u,p,g].concat(o),{i:/\S/,c:[n,l,s,p,g].concat(o)}});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={cN:"subst",b:/#\{/,e:/}/,k:c},t=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,r]},{b:/"/,e:/"/,c:[e.BE,r]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[r,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{cN:"property",b:"@"+n},{b:"`",e:"`",eB:!0,eE:!0,sL:"javascript"}];r.c=t;var s=e.inherit(e.TM,{b:n}),i="(\\(.*\\))?\\s*\\B[-=]>",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(t)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:t.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+i,e:"[-=]>",rB:!0,c:[s,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:i,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[s]},s]},{cN:"attribute",b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("haml",function(s){return{cI:!0,c:[{cN:"doctype",b:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",r:10},s.C("^\\s*(!=#|=#|-#|/).*$",!1,{r:0}),{b:"^\\s*(-|=|!=)(?!#)",starts:{e:"\\n",sL:"ruby"}},{cN:"tag",b:"^\\s*%",c:[{cN:"title",b:"\\w+"},{cN:"value",b:"[#\\.][\\w-]+"},{b:"{\\s*",e:"\\s*}",eE:!0,c:[{b:":\\w+\\s*=>",e:",\\s+",rB:!0,eW:!0,c:[{cN:"symbol",b:":\\w+"},s.ASM,s.QSM,{b:"\\w+",r:0}]}]},{b:"\\(\\s*",e:"\\s*\\)",eE:!0,c:[{b:"\\w+\\s*=",e:"\\s+",rB:!0,eW:!0,c:[{cN:"attribute",b:"\\w+",r:0},s.ASM,s.QSM,{b:"\\w+",r:0}]}]}]},{cN:"bullet",b:"^\\s*[=~]\\s*",r:0},{b:"#{",starts:{e:"}",sL:"ruby"}}]}});hljs.registerLanguage("javascript",function(e){return{aliases:["js"],k:{keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},c:[{cN:"pi",r:10,b:/^\s*['"]use (strict|asm)['"]/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{b:/\s*[);\]]/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:[e.CLCM,e.CBCM]}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+e.IR,r:0},{bK:"import",e:"[;$]",k:"import from as",c:[e.ASM,e.QSM]},{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]}],i:/#/}});hljs.registerLanguage("erlang",function(e){var r="[a-z'][a-zA-Z0-9_']*",c="("+r+":"+r+"|"+r+")",a={keyword:"after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor",literal:"false true"},n=e.C("%","$"),i={cN:"number",b:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",r:0},b={b:"fun\\s+"+r+"/\\d+"},d={b:c+"\\(",e:"\\)",rB:!0,r:0,c:[{cN:"function_name",b:c,r:0},{b:"\\(",e:"\\)",eW:!0,rE:!0,r:0}]},o={cN:"tuple",b:"{",e:"}",r:0},t={cN:"variable",b:"\\b_([A-Z][A-Za-z0-9_]*)?",r:0},l={cN:"variable",b:"[A-Z][a-zA-Z0-9_]*",r:0},f={b:"#"+e.UIR,r:0,rB:!0,c:[{cN:"record_name",b:"#"+e.UIR,r:0},{b:"{",e:"}",r:0}]},s={bK:"fun receive if try case",e:"end",k:a};s.c=[n,b,e.inherit(e.ASM,{cN:""}),s,d,e.QSM,i,o,t,l,f];var u=[n,b,s,d,e.QSM,i,o,t,l,f];d.c[1].c=u,o.c=u,f.c[1].c=u;var v={cN:"params",b:"\\(",e:"\\)",c:u};return{aliases:["erl"],k:a,i:"(",rB:!0,i:"\\(|#|//|/\\*|\\\\|:|;",c:[v,e.inherit(e.TM,{b:r})],starts:{e:";|\\.",k:a,c:u}},n,{cN:"pp",b:"^-",e:"\\.",r:0,eE:!0,rB:!0,l:"-"+e.IR,k:"-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec",c:[v]},i,e.QSM,f,t,l,o,{b:/\.$/}]}});hljs.registerLanguage("ocaml",function(e){return{aliases:["ml"],k:{keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",literal:"true false"},i:/\/\/|>>/,l:"[a-z_]\\w*!?",c:[{cN:"literal",b:"\\[(\\|\\|)?\\]|\\(\\)",r:0},e.C("\\(\\*","\\*\\)",{c:["self"]}),{cN:"symbol",b:"'[A-Za-z_](?!')[\\w']*"},{cN:"tag",b:"`[A-Z][\\w']*"},{cN:"type",b:"\\b[A-Z][\\w']*",r:0},{b:"[a-z_]\\w*'[\\w']*"},e.inherit(e.ASM,{cN:"char",r:0}),e.inherit(e.QSM,{i:null}),{cN:"number",b:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",r:0},{b:/[-=]>/}]}});hljs.registerLanguage("tcl",function(e){return{aliases:["tk"],k:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while",c:[e.C(";[ \\t]*#","$"),e.C("^[ \\t]*#","$"),{bK:"proc",e:"[\\{]",eE:!0,c:[{cN:"symbol",b:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",e:"[ \\t\\n\\r]",eW:!0,eE:!0}]},{cN:"variable",eE:!0,v:[{b:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)",e:"[^a-zA-Z0-9_\\}\\$]"},{b:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",e:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{cN:"string",c:[e.BE],v:[e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},{cN:"number",v:[e.BNM,e.CNM]}]}});hljs.registerLanguage("stylus",function(t){var e={cN:"variable",b:"\\$"+t.IR},o={cN:"hexcolor",b:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})",r:10},i=["charset","css","debug","extend","font-face","for","import","include","media","mixin","page","warn","while"],r=["after","before","first-letter","first-line","active","first-child","focus","hover","lang","link","visited"],n=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],a="[\\.\\s\\n\\[\\:,]",l=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"],d=["\\{","\\}","\\?","(\\bReturn\\b)","(\\bEnd\\b)","(\\bend\\b)",";","#\\s","\\*\\s","===\\s","\\|","%"];return{aliases:["styl"],cI:!1,i:"("+d.join("|")+")",k:"if else for in",c:[t.QSM,t.ASM,t.CLCM,t.CBCM,o,{b:"\\.[a-zA-Z][a-zA-Z0-9_-]*"+a,rB:!0,c:[{cN:"class",b:"\\.[a-zA-Z][a-zA-Z0-9_-]*"}]},{b:"\\#[a-zA-Z][a-zA-Z0-9_-]*"+a,rB:!0,c:[{cN:"id",b:"\\#[a-zA-Z][a-zA-Z0-9_-]*"}]},{b:"\\b("+n.join("|")+")"+a,rB:!0,c:[{cN:"tag",b:"\\b[a-zA-Z][a-zA-Z0-9_-]*"}]},{cN:"pseudo",b:"&?:?:\\b("+r.join("|")+")"+a},{cN:"at_rule",b:"@("+i.join("|")+")\\b"},e,t.CSSNM,t.NM,{cN:"function",b:"\\b[a-zA-Z][a-zA-Z0-9_-]*\\(.*\\)",i:"[\\n]",rB:!0,c:[{cN:"title",b:"\\b[a-zA-Z][a-zA-Z0-9_-]*"},{cN:"params",b:/\(/,e:/\)/,c:[o,e,t.ASM,t.CSSNM,t.NM,t.QSM]}]},{cN:"attribute",b:"\\b("+l.reverse().join("|")+")\\b"}]}});hljs.registerLanguage("gradle",function(e){return{cI:!0,k:{keyword:"task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine"},c:[e.CLCM,e.CBCM,e.ASM,e.QSM,e.NM,e.RM]}});hljs.registerLanguage("ini",function(e){var c={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"title",b:/^\s*\[+/,e:/\]+/},{cN:"setting",b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",c:[{cN:"value",eW:!0,k:"on off true false yes no",c:[{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},c,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM],r:0}]}]}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"chunk",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"header",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}});hljs.registerLanguage("groovy",function(e){return{k:{typename:"byte short char int long boolean float double void",literal:"true false null",keyword:"def as in assert trait super this abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof"},c:[e.C("/\\*\\*","\\*/",{r:0,c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,{cN:"string",b:'"""',e:'"""'},{cN:"string",b:"'''",e:"'''"},{cN:"string",b:"\\$/",e:"/\\$",r:10},e.ASM,{cN:"regexp",b:/~?\/[^\/\n]+\//,c:[e.BE]},e.QSM,{cN:"shebang",b:"^#!/usr/bin/env",e:"$",i:"\n"},e.BNM,{cN:"class",bK:"class interface trait enum",e:"{",i:":",c:[{bK:"extends implements"},e.UTM]},e.CNM,{cN:"annotation",b:"@[A-Za-z]+"},{cN:"string",b:/[^\?]{0}[A-Za-z0-9_$]+ *:/},{b:/\?/,e:/\:/},{cN:"label",b:"^\\s*[A-Za-z0-9_$]+:",r:0}],i:/#/}});hljs.registerLanguage("elixir",function(e){var n="[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?",r="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",b="and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote",c={cN:"subst",b:"#\\{",e:"}",l:n,k:b},a={cN:"string",c:[e.BE,c],v:[{b:/'/,e:/'/},{b:/"/,e:/"/}]},i={cN:"function",bK:"def defp defmacro",e:/\B\b/,c:[e.inherit(e.TM,{b:n,endsParent:!0})]},s=e.inherit(i,{cN:"class",bK:"defmodule defrecord",e:/\bdo\b|$|;/}),l=[a,e.HCM,s,i,{cN:"constant",b:"(\\b[A-Z_]\\w*(.)?)+",r:0},{cN:"symbol",b:":",c:[a,{b:r}],r:0},{cN:"symbol",b:n+":",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"->"},{b:"("+e.RSR+")\\s*",c:[e.HCM,{cN:"regexp",i:"\\n",c:[e.BE,c],v:[{b:"/",e:"/[a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}],r:0}];return c.c=l,{l:n,k:b,c:l}});hljs.registerLanguage("go",function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer",constant:"true false iota nil",typename:"bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],k:t,i:"1){for(var o="",l=0;n>l;l++)o+=l+1+"\n";var c=document.createElement("code");c.className="hljs hljs-line-numbers",c.style["float"]="left",c.textContent=o,t.insertBefore(c,e)}}}function r(e){if(0===e.length)return 0;var t=/\r\n|\r|\n/g,n=e.match(t);return n=n?n.length:0,e[e.length-1].match(t)||(n+=1),n}"undefined"==typeof e.hljs?console.error("highlight.js not detected!"):(e.hljs.initLineNumbersOnLoad=t,e.hljs.lineNumbersBlock=n)}(window); \ No newline at end of file diff --git a/js/isotope.pkgd.min.js b/js/isotope.pkgd.min.js deleted file mode 100644 index 44a2e364..00000000 --- a/js/isotope.pkgd.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * Isotope PACKAGED v2.2.0 - * - * Licensed GPLv3 for open source use - * or Isotope Commercial License for commercial use - * - * http://isotope.metafizzy.co - * Copyright 2015 Metafizzy - */ - -(function(t){function e(){}function i(t){function i(e){e.prototype.option||(e.prototype.option=function(e){t.isPlainObject(e)&&(this.options=t.extend(!0,this.options,e))})}function n(e,i){t.fn[e]=function(n){if("string"==typeof n){for(var s=o.call(arguments,1),a=0,u=this.length;u>a;a++){var p=this[a],h=t.data(p,e);if(h)if(t.isFunction(h[n])&&"_"!==n.charAt(0)){var f=h[n].apply(h,s);if(void 0!==f)return f}else r("no such method '"+n+"' for "+e+" instance");else r("cannot call methods on "+e+" prior to initialization; "+"attempted to call '"+n+"'")}return this}return this.each(function(){var o=t.data(this,e);o?(o.option(n),o._init()):(o=new i(this,n),t.data(this,e,o))})}}if(t){var r="undefined"==typeof console?e:function(t){console.error(t)};return t.bridget=function(t,e){i(e),n(t,e)},t.bridget}}var o=Array.prototype.slice;"function"==typeof define&&define.amd?define("jquery-bridget/jquery.bridget",["jquery"],i):"object"==typeof exports?i(require("jquery")):i(t.jQuery)})(window),function(t){function e(e){var i=t.event;return i.target=i.target||i.srcElement||e,i}var i=document.documentElement,o=function(){};i.addEventListener?o=function(t,e,i){t.addEventListener(e,i,!1)}:i.attachEvent&&(o=function(t,i,o){t[i+o]=o.handleEvent?function(){var i=e(t);o.handleEvent.call(o,i)}:function(){var i=e(t);o.call(t,i)},t.attachEvent("on"+i,t[i+o])});var n=function(){};i.removeEventListener?n=function(t,e,i){t.removeEventListener(e,i,!1)}:i.detachEvent&&(n=function(t,e,i){t.detachEvent("on"+e,t[e+i]);try{delete t[e+i]}catch(o){t[e+i]=void 0}});var r={bind:o,unbind:n};"function"==typeof define&&define.amd?define("eventie/eventie",r):"object"==typeof exports?module.exports=r:t.eventie=r}(window),function(){function t(){}function e(t,e){for(var i=t.length;i--;)if(t[i].listener===e)return i;return-1}function i(t){return function(){return this[t].apply(this,arguments)}}var o=t.prototype,n=this,r=n.EventEmitter;o.getListeners=function(t){var e,i,o=this._getEvents();if(t instanceof RegExp){e={};for(i in o)o.hasOwnProperty(i)&&t.test(i)&&(e[i]=o[i])}else e=o[t]||(o[t]=[]);return e},o.flattenListeners=function(t){var e,i=[];for(e=0;t.length>e;e+=1)i.push(t[e].listener);return i},o.getListenersAsObject=function(t){var e,i=this.getListeners(t);return i instanceof Array&&(e={},e[t]=i),e||i},o.addListener=function(t,i){var o,n=this.getListenersAsObject(t),r="object"==typeof i;for(o in n)n.hasOwnProperty(o)&&-1===e(n[o],i)&&n[o].push(r?i:{listener:i,once:!1});return this},o.on=i("addListener"),o.addOnceListener=function(t,e){return this.addListener(t,{listener:e,once:!0})},o.once=i("addOnceListener"),o.defineEvent=function(t){return this.getListeners(t),this},o.defineEvents=function(t){for(var e=0;t.length>e;e+=1)this.defineEvent(t[e]);return this},o.removeListener=function(t,i){var o,n,r=this.getListenersAsObject(t);for(n in r)r.hasOwnProperty(n)&&(o=e(r[n],i),-1!==o&&r[n].splice(o,1));return this},o.off=i("removeListener"),o.addListeners=function(t,e){return this.manipulateListeners(!1,t,e)},o.removeListeners=function(t,e){return this.manipulateListeners(!0,t,e)},o.manipulateListeners=function(t,e,i){var o,n,r=t?this.removeListener:this.addListener,s=t?this.removeListeners:this.addListeners;if("object"!=typeof e||e instanceof RegExp)for(o=i.length;o--;)r.call(this,e,i[o]);else for(o in e)e.hasOwnProperty(o)&&(n=e[o])&&("function"==typeof n?r.call(this,o,n):s.call(this,o,n));return this},o.removeEvent=function(t){var e,i=typeof t,o=this._getEvents();if("string"===i)delete o[t];else if(t instanceof RegExp)for(e in o)o.hasOwnProperty(e)&&t.test(e)&&delete o[e];else delete this._events;return this},o.removeAllListeners=i("removeEvent"),o.emitEvent=function(t,e){var i,o,n,r,s=this.getListenersAsObject(t);for(n in s)if(s.hasOwnProperty(n))for(o=s[n].length;o--;)i=s[n][o],i.once===!0&&this.removeListener(t,i.listener),r=i.listener.apply(this,e||[]),r===this._getOnceReturnValue()&&this.removeListener(t,i.listener);return this},o.trigger=i("emitEvent"),o.emit=function(t){var e=Array.prototype.slice.call(arguments,1);return this.emitEvent(t,e)},o.setOnceReturnValue=function(t){return this._onceReturnValue=t,this},o._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},o._getEvents=function(){return this._events||(this._events={})},t.noConflict=function(){return n.EventEmitter=r,t},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return t}):"object"==typeof module&&module.exports?module.exports=t:n.EventEmitter=t}.call(this),function(t){function e(t){if(t){if("string"==typeof o[t])return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e,n=0,r=i.length;r>n;n++)if(e=i[n]+t,"string"==typeof o[e])return e}}var i="Webkit Moz ms Ms O".split(" "),o=document.documentElement.style;"function"==typeof define&&define.amd?define("get-style-property/get-style-property",[],function(){return e}):"object"==typeof exports?module.exports=e:t.getStyleProperty=e}(window),function(t){function e(t){var e=parseFloat(t),i=-1===t.indexOf("%")&&!isNaN(e);return i&&e}function i(){}function o(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0,i=s.length;i>e;e++){var o=s[e];t[o]=0}return t}function n(i){function n(){if(!d){d=!0;var o=t.getComputedStyle;if(p=function(){var t=o?function(t){return o(t,null)}:function(t){return t.currentStyle};return function(e){var i=t(e);return i||r("Style returned "+i+". Are you running this code in a hidden iframe on Firefox? "+"See http://bit.ly/getsizebug1"),i}}(),h=i("boxSizing")){var n=document.createElement("div");n.style.width="200px",n.style.padding="1px 2px 3px 4px",n.style.borderStyle="solid",n.style.borderWidth="1px 2px 3px 4px",n.style[h]="border-box";var s=document.body||document.documentElement;s.appendChild(n);var a=p(n);f=200===e(a.width),s.removeChild(n)}}}function a(t){if(n(),"string"==typeof t&&(t=document.querySelector(t)),t&&"object"==typeof t&&t.nodeType){var i=p(t);if("none"===i.display)return o();var r={};r.width=t.offsetWidth,r.height=t.offsetHeight;for(var a=r.isBorderBox=!(!h||!i[h]||"border-box"!==i[h]),d=0,l=s.length;l>d;d++){var c=s[d],m=i[c];m=u(t,m);var y=parseFloat(m);r[c]=isNaN(y)?0:y}var g=r.paddingLeft+r.paddingRight,v=r.paddingTop+r.paddingBottom,_=r.marginLeft+r.marginRight,I=r.marginTop+r.marginBottom,z=r.borderLeftWidth+r.borderRightWidth,L=r.borderTopWidth+r.borderBottomWidth,x=a&&f,E=e(i.width);E!==!1&&(r.width=E+(x?0:g+z));var b=e(i.height);return b!==!1&&(r.height=b+(x?0:v+L)),r.innerWidth=r.width-(g+z),r.innerHeight=r.height-(v+L),r.outerWidth=r.width+_,r.outerHeight=r.height+I,r}}function u(e,i){if(t.getComputedStyle||-1===i.indexOf("%"))return i;var o=e.style,n=o.left,r=e.runtimeStyle,s=r&&r.left;return s&&(r.left=e.currentStyle.left),o.left=i,i=o.pixelLeft,o.left=n,s&&(r.left=s),i}var p,h,f,d=!1;return a}var r="undefined"==typeof console?i:function(t){console.error(t)},s=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];"function"==typeof define&&define.amd?define("get-size/get-size",["get-style-property/get-style-property"],n):"object"==typeof exports?module.exports=n(require("desandro-get-style-property")):t.getSize=n(t.getStyleProperty)}(window),function(t){function e(t){"function"==typeof t&&(e.isReady?t():s.push(t))}function i(t){var i="readystatechange"===t.type&&"complete"!==r.readyState;e.isReady||i||o()}function o(){e.isReady=!0;for(var t=0,i=s.length;i>t;t++){var o=s[t];o()}}function n(n){return"complete"===r.readyState?o():(n.bind(r,"DOMContentLoaded",i),n.bind(r,"readystatechange",i),n.bind(t,"load",i)),e}var r=t.document,s=[];e.isReady=!1,"function"==typeof define&&define.amd?define("doc-ready/doc-ready",["eventie/eventie"],n):"object"==typeof exports?module.exports=n(require("eventie")):t.docReady=n(t.eventie)}(window),function(t){function e(t,e){return t[s](e)}function i(t){if(!t.parentNode){var e=document.createDocumentFragment();e.appendChild(t)}}function o(t,e){i(t);for(var o=t.parentNode.querySelectorAll(e),n=0,r=o.length;r>n;n++)if(o[n]===t)return!0;return!1}function n(t,o){return i(t),e(t,o)}var r,s=function(){if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0,o=e.length;o>i;i++){var n=e[i],r=n+"MatchesSelector";if(t[r])return r}}();if(s){var a=document.createElement("div"),u=e(a,"div");r=u?e:n}else r=o;"function"==typeof define&&define.amd?define("matches-selector/matches-selector",[],function(){return r}):"object"==typeof exports?module.exports=r:window.matchesSelector=r}(Element.prototype),function(t,e){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["doc-ready/doc-ready","matches-selector/matches-selector"],function(i,o){return e(t,i,o)}):"object"==typeof exports?module.exports=e(t,require("doc-ready"),require("desandro-matches-selector")):t.fizzyUIUtils=e(t,t.docReady,t.matchesSelector)}(window,function(t,e,i){var o={};o.extend=function(t,e){for(var i in e)t[i]=e[i];return t},o.modulo=function(t,e){return(t%e+e)%e};var n=Object.prototype.toString;o.isArray=function(t){return"[object Array]"==n.call(t)},o.makeArray=function(t){var e=[];if(o.isArray(t))e=t;else if(t&&"number"==typeof t.length)for(var i=0,n=t.length;n>i;i++)e.push(t[i]);else e.push(t);return e},o.indexOf=Array.prototype.indexOf?function(t,e){return t.indexOf(e)}:function(t,e){for(var i=0,o=t.length;o>i;i++)if(t[i]===e)return i;return-1},o.removeFrom=function(t,e){var i=o.indexOf(t,e);-1!=i&&t.splice(i,1)},o.isElement="function"==typeof HTMLElement||"object"==typeof HTMLElement?function(t){return t instanceof HTMLElement}:function(t){return t&&"object"==typeof t&&1==t.nodeType&&"string"==typeof t.nodeName},o.setText=function(){function t(t,i){e=e||(void 0!==document.documentElement.textContent?"textContent":"innerText"),t[e]=i}var e;return t}(),o.getParent=function(t,e){for(;t!=document.body;)if(t=t.parentNode,i(t,e))return t},o.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},o.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},o.filterFindElements=function(t,e){t=o.makeArray(t);for(var n=[],r=0,s=t.length;s>r;r++){var a=t[r];if(o.isElement(a))if(e){i(a,e)&&n.push(a);for(var u=a.querySelectorAll(e),p=0,h=u.length;h>p;p++)n.push(u[p])}else n.push(a)}return n},o.debounceMethod=function(t,e,i){var o=t.prototype[e],n=e+"Timeout";t.prototype[e]=function(){var t=this[n];t&&clearTimeout(t);var e=arguments,r=this;this[n]=setTimeout(function(){o.apply(r,e),delete r[n]},i||100)}},o.toDashed=function(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()};var r=t.console;return o.htmlInit=function(i,n){e(function(){for(var e=o.toDashed(n),s=document.querySelectorAll(".js-"+e),a="data-"+e+"-options",u=0,p=s.length;p>u;u++){var h,f=s[u],d=f.getAttribute(a);try{h=d&&JSON.parse(d)}catch(l){r&&r.error("Error parsing "+a+" on "+f.nodeName.toLowerCase()+(f.id?"#"+f.id:"")+": "+l);continue}var c=new i(f,h),m=t.jQuery;m&&m.data(f,n,c)}})},o}),function(t,e){"function"==typeof define&&define.amd?define("outlayer/item",["eventEmitter/EventEmitter","get-size/get-size","get-style-property/get-style-property","fizzy-ui-utils/utils"],function(i,o,n,r){return e(t,i,o,n,r)}):"object"==typeof exports?module.exports=e(t,require("wolfy87-eventemitter"),require("get-size"),require("desandro-get-style-property"),require("fizzy-ui-utils")):(t.Outlayer={},t.Outlayer.Item=e(t,t.EventEmitter,t.getSize,t.getStyleProperty,t.fizzyUIUtils))}(window,function(t,e,i,o,n){function r(t){for(var e in t)return!1;return e=null,!0}function s(t,e){t&&(this.element=t,this.layout=e,this.position={x:0,y:0},this._create())}var a=t.getComputedStyle,u=a?function(t){return a(t,null)}:function(t){return t.currentStyle},p=o("transition"),h=o("transform"),f=p&&h,d=!!o("perspective"),l={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"}[p],c=["transform","transition","transitionDuration","transitionProperty"],m=function(){for(var t={},e=0,i=c.length;i>e;e++){var n=c[e],r=o(n);r&&r!==n&&(t[n]=r)}return t}();n.extend(s.prototype,e.prototype),s.prototype._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},s.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},s.prototype.getSize=function(){this.size=i(this.element)},s.prototype.css=function(t){var e=this.element.style;for(var i in t){var o=m[i]||i;e[o]=t[i]}},s.prototype.getPosition=function(){var t=u(this.element),e=this.layout.options,i=e.isOriginLeft,o=e.isOriginTop,n=parseInt(t[i?"left":"right"],10),r=parseInt(t[o?"top":"bottom"],10);n=isNaN(n)?0:n,r=isNaN(r)?0:r;var s=this.layout.size;n-=i?s.paddingLeft:s.paddingRight,r-=o?s.paddingTop:s.paddingBottom,this.position.x=n,this.position.y=r},s.prototype.layoutPosition=function(){var t=this.layout.size,e=this.layout.options,i={},o=e.isOriginLeft?"paddingLeft":"paddingRight",n=e.isOriginLeft?"left":"right",r=e.isOriginLeft?"right":"left",s=this.position.x+t[o];s=e.percentPosition&&!e.isHorizontal?100*(s/t.width)+"%":s+"px",i[n]=s,i[r]="";var a=e.isOriginTop?"paddingTop":"paddingBottom",u=e.isOriginTop?"top":"bottom",p=e.isOriginTop?"bottom":"top",h=this.position.y+t[a];h=e.percentPosition&&e.isHorizontal?100*(h/t.height)+"%":h+"px",i[u]=h,i[p]="",this.css(i),this.emitEvent("layout",[this])};var y=d?function(t,e){return"translate3d("+t+"px, "+e+"px, 0)"}:function(t,e){return"translate("+t+"px, "+e+"px)"};s.prototype._transitionTo=function(t,e){this.getPosition();var i=this.position.x,o=this.position.y,n=parseInt(t,10),r=parseInt(e,10),s=n===this.position.x&&r===this.position.y;if(this.setPosition(t,e),s&&!this.isTransitioning)return this.layoutPosition(),void 0;var a=t-i,u=e-o,p={},h=this.layout.options;a=h.isOriginLeft?a:-a,u=h.isOriginTop?u:-u,p.transform=y(a,u),this.transition({to:p,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},s.prototype.goTo=function(t,e){this.setPosition(t,e),this.layoutPosition()},s.prototype.moveTo=f?s.prototype._transitionTo:s.prototype.goTo,s.prototype.setPosition=function(t,e){this.position.x=parseInt(t,10),this.position.y=parseInt(e,10)},s.prototype._nonTransition=function(t){this.css(t.to),t.isCleaning&&this._removeStyles(t.to);for(var e in t.onTransitionEnd)t.onTransitionEnd[e].call(this)},s.prototype._transition=function(t){if(!parseFloat(this.layout.options.transitionDuration))return this._nonTransition(t),void 0;var e=this._transn;for(var i in t.onTransitionEnd)e.onEnd[i]=t.onTransitionEnd[i];for(i in t.to)e.ingProperties[i]=!0,t.isCleaning&&(e.clean[i]=!0);if(t.from){this.css(t.from);var o=this.element.offsetHeight;o=null}this.enableTransition(t.to),this.css(t.to),this.isTransitioning=!0};var g=h&&n.toDashed(h)+",opacity";s.prototype.enableTransition=function(){this.isTransitioning||(this.css({transitionProperty:g,transitionDuration:this.layout.options.transitionDuration}),this.element.addEventListener(l,this,!1))},s.prototype.transition=s.prototype[p?"_transition":"_nonTransition"],s.prototype.onwebkitTransitionEnd=function(t){this.ontransitionend(t)},s.prototype.onotransitionend=function(t){this.ontransitionend(t)};var v={"-webkit-transform":"transform","-moz-transform":"transform","-o-transform":"transform"};s.prototype.ontransitionend=function(t){if(t.target===this.element){var e=this._transn,i=v[t.propertyName]||t.propertyName;if(delete e.ingProperties[i],r(e.ingProperties)&&this.disableTransition(),i in e.clean&&(this.element.style[t.propertyName]="",delete e.clean[i]),i in e.onEnd){var o=e.onEnd[i];o.call(this),delete e.onEnd[i]}this.emitEvent("transitionEnd",[this])}},s.prototype.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(l,this,!1),this.isTransitioning=!1},s.prototype._removeStyles=function(t){var e={};for(var i in t)e[i]="";this.css(e)};var _={transitionProperty:"",transitionDuration:""};return s.prototype.removeTransitionStyles=function(){this.css(_)},s.prototype.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},s.prototype.remove=function(){if(!p||!parseFloat(this.layout.options.transitionDuration))return this.removeElem(),void 0;var t=this;this.once("transitionEnd",function(){t.removeElem()}),this.hide()},s.prototype.reveal=function(){delete this.isHidden,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("visibleStyle");e[i]=this.onRevealTransitionEnd,this.transition({from:t.hiddenStyle,to:t.visibleStyle,isCleaning:!0,onTransitionEnd:e})},s.prototype.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},s.prototype.getHideRevealTransitionEndProperty=function(t){var e=this.layout.options[t];if(e.opacity)return"opacity";for(var i in e)return i},s.prototype.hide=function(){this.isHidden=!0,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("hiddenStyle");e[i]=this.onHideTransitionEnd,this.transition({from:t.visibleStyle,to:t.hiddenStyle,isCleaning:!0,onTransitionEnd:e})},s.prototype.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},s.prototype.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},s}),function(t,e){"function"==typeof define&&define.amd?define("outlayer/outlayer",["eventie/eventie","eventEmitter/EventEmitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(i,o,n,r,s){return e(t,i,o,n,r,s)}):"object"==typeof exports?module.exports=e(t,require("eventie"),require("wolfy87-eventemitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):t.Outlayer=e(t,t.eventie,t.EventEmitter,t.getSize,t.fizzyUIUtils,t.Outlayer.Item)}(window,function(t,e,i,o,n,r){function s(t,e){var i=n.getQueryElement(t);if(!i)return a&&a.error("Bad element for "+this.constructor.namespace+": "+(i||t)),void 0;this.element=i,u&&(this.$element=u(this.element)),this.options=n.extend({},this.constructor.defaults),this.option(e);var o=++h;this.element.outlayerGUID=o,f[o]=this,this._create(),this.options.isInitLayout&&this.layout()}var a=t.console,u=t.jQuery,p=function(){},h=0,f={};return s.namespace="outlayer",s.Item=r,s.defaults={containerStyle:{position:"relative"},isInitLayout:!0,isOriginLeft:!0,isOriginTop:!0,isResizeBound:!0,isResizingContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}},n.extend(s.prototype,i.prototype),s.prototype.option=function(t){n.extend(this.options,t)},s.prototype._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),n.extend(this.element.style,this.options.containerStyle),this.options.isResizeBound&&this.bindResize()},s.prototype.reloadItems=function(){this.items=this._itemize(this.element.children)},s.prototype._itemize=function(t){for(var e=this._filterFindItemElements(t),i=this.constructor.Item,o=[],n=0,r=e.length;r>n;n++){var s=e[n],a=new i(s,this);o.push(a)}return o},s.prototype._filterFindItemElements=function(t){return n.filterFindElements(t,this.options.itemSelector)},s.prototype.getItemElements=function(){for(var t=[],e=0,i=this.items.length;i>e;e++)t.push(this.items[e].element);return t},s.prototype.layout=function(){this._resetLayout(),this._manageStamps();var t=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;this.layoutItems(this.items,t),this._isLayoutInited=!0},s.prototype._init=s.prototype.layout,s.prototype._resetLayout=function(){this.getSize()},s.prototype.getSize=function(){this.size=o(this.element)},s.prototype._getMeasurement=function(t,e){var i,r=this.options[t];r?("string"==typeof r?i=this.element.querySelector(r):n.isElement(r)&&(i=r),this[t]=i?o(i)[e]:r):this[t]=0},s.prototype.layoutItems=function(t,e){t=this._getItemsForLayout(t),this._layoutItems(t,e),this._postLayout()},s.prototype._getItemsForLayout=function(t){for(var e=[],i=0,o=t.length;o>i;i++){var n=t[i];n.isIgnored||e.push(n)}return e},s.prototype._layoutItems=function(t,e){if(this._emitCompleteOnItems("layout",t),t&&t.length){for(var i=[],o=0,n=t.length;n>o;o++){var r=t[o],s=this._getItemLayoutPosition(r);s.item=r,s.isInstant=e||r.isLayoutInstant,i.push(s)}this._processLayoutQueue(i)}},s.prototype._getItemLayoutPosition=function(){return{x:0,y:0}},s.prototype._processLayoutQueue=function(t){for(var e=0,i=t.length;i>e;e++){var o=t[e];this._positionItem(o.item,o.x,o.y,o.isInstant)}},s.prototype._positionItem=function(t,e,i,o){o?t.goTo(e,i):t.moveTo(e,i)},s.prototype._postLayout=function(){this.resizeContainer()},s.prototype.resizeContainer=function(){if(this.options.isResizingContainer){var t=this._getContainerSize();t&&(this._setContainerMeasure(t.width,!0),this._setContainerMeasure(t.height,!1))}},s.prototype._getContainerSize=p,s.prototype._setContainerMeasure=function(t,e){if(void 0!==t){var i=this.size;i.isBorderBox&&(t+=e?i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth:i.paddingBottom+i.paddingTop+i.borderTopWidth+i.borderBottomWidth),t=Math.max(t,0),this.element.style[e?"width":"height"]=t+"px"}},s.prototype._emitCompleteOnItems=function(t,e){function i(){n.emitEvent(t+"Complete",[e])}function o(){s++,s===r&&i()}var n=this,r=e.length;if(!e||!r)return i(),void 0;for(var s=0,a=0,u=e.length;u>a;a++){var p=e[a];p.once(t,o)}},s.prototype.ignore=function(t){var e=this.getItem(t);e&&(e.isIgnored=!0)},s.prototype.unignore=function(t){var e=this.getItem(t);e&&delete e.isIgnored},s.prototype.stamp=function(t){if(t=this._find(t)){this.stamps=this.stamps.concat(t);for(var e=0,i=t.length;i>e;e++){var o=t[e];this.ignore(o)}}},s.prototype.unstamp=function(t){if(t=this._find(t))for(var e=0,i=t.length;i>e;e++){var o=t[e];n.removeFrom(this.stamps,o),this.unignore(o)}},s.prototype._find=function(t){return t?("string"==typeof t&&(t=this.element.querySelectorAll(t)),t=n.makeArray(t)):void 0},s.prototype._manageStamps=function(){if(this.stamps&&this.stamps.length){this._getBoundingRect();for(var t=0,e=this.stamps.length;e>t;t++){var i=this.stamps[t];this._manageStamp(i)}}},s.prototype._getBoundingRect=function(){var t=this.element.getBoundingClientRect(),e=this.size;this._boundingRect={left:t.left+e.paddingLeft+e.borderLeftWidth,top:t.top+e.paddingTop+e.borderTopWidth,right:t.right-(e.paddingRight+e.borderRightWidth),bottom:t.bottom-(e.paddingBottom+e.borderBottomWidth)}},s.prototype._manageStamp=p,s.prototype._getElementOffset=function(t){var e=t.getBoundingClientRect(),i=this._boundingRect,n=o(t),r={left:e.left-i.left-n.marginLeft,top:e.top-i.top-n.marginTop,right:i.right-e.right-n.marginRight,bottom:i.bottom-e.bottom-n.marginBottom};return r},s.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},s.prototype.bindResize=function(){this.isResizeBound||(e.bind(t,"resize",this),this.isResizeBound=!0)},s.prototype.unbindResize=function(){this.isResizeBound&&e.unbind(t,"resize",this),this.isResizeBound=!1},s.prototype.onresize=function(){function t(){e.resize(),delete e.resizeTimeout}this.resizeTimeout&&clearTimeout(this.resizeTimeout);var e=this;this.resizeTimeout=setTimeout(t,100)},s.prototype.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},s.prototype.needsResizeLayout=function(){var t=o(this.element),e=this.size&&t;return e&&t.innerWidth!==this.size.innerWidth},s.prototype.addItems=function(t){var e=this._itemize(t);return e.length&&(this.items=this.items.concat(e)),e},s.prototype.appended=function(t){var e=this.addItems(t);e.length&&(this.layoutItems(e,!0),this.reveal(e))},s.prototype.prepended=function(t){var e=this._itemize(t);if(e.length){var i=this.items.slice(0);this.items=e.concat(i),this._resetLayout(),this._manageStamps(),this.layoutItems(e,!0),this.reveal(e),this.layoutItems(i)}},s.prototype.reveal=function(t){this._emitCompleteOnItems("reveal",t);for(var e=t&&t.length,i=0;e&&e>i;i++){var o=t[i];o.reveal()}},s.prototype.hide=function(t){this._emitCompleteOnItems("hide",t);for(var e=t&&t.length,i=0;e&&e>i;i++){var o=t[i];o.hide()}},s.prototype.revealItemElements=function(t){var e=this.getItems(t);this.reveal(e)},s.prototype.hideItemElements=function(t){var e=this.getItems(t);this.hide(e)},s.prototype.getItem=function(t){for(var e=0,i=this.items.length;i>e;e++){var o=this.items[e];if(o.element===t)return o}},s.prototype.getItems=function(t){t=n.makeArray(t);for(var e=[],i=0,o=t.length;o>i;i++){var r=t[i],s=this.getItem(r);s&&e.push(s)}return e},s.prototype.remove=function(t){var e=this.getItems(t);if(this._emitCompleteOnItems("remove",e),e&&e.length)for(var i=0,o=e.length;o>i;i++){var r=e[i];r.remove(),n.removeFrom(this.items,r)}},s.prototype.destroy=function(){var t=this.element.style;t.height="",t.position="",t.width="";for(var e=0,i=this.items.length;i>e;e++){var o=this.items[e];o.destroy()}this.unbindResize();var n=this.element.outlayerGUID;delete f[n],delete this.element.outlayerGUID,u&&u.removeData(this.element,this.constructor.namespace)},s.data=function(t){t=n.getQueryElement(t);var e=t&&t.outlayerGUID;return e&&f[e]},s.create=function(t,e){function i(){s.apply(this,arguments)}return Object.create?i.prototype=Object.create(s.prototype):n.extend(i.prototype,s.prototype),i.prototype.constructor=i,i.defaults=n.extend({},s.defaults),n.extend(i.defaults,e),i.prototype.settings={},i.namespace=t,i.data=s.data,i.Item=function(){r.apply(this,arguments)},i.Item.prototype=new r,n.htmlInit(i,t),u&&u.bridget&&u.bridget(t,i),i},s.Item=r,s}),function(t,e){"function"==typeof define&&define.amd?define("isotope/js/item",["outlayer/outlayer"],e):"object"==typeof exports?module.exports=e(require("outlayer")):(t.Isotope=t.Isotope||{},t.Isotope.Item=e(t.Outlayer))}(window,function(t){function e(){t.Item.apply(this,arguments)}e.prototype=new t.Item,e.prototype._create=function(){this.id=this.layout.itemGUID++,t.Item.prototype._create.call(this),this.sortData={}},e.prototype.updateSortData=function(){if(!this.isIgnored){this.sortData.id=this.id,this.sortData["original-order"]=this.id,this.sortData.random=Math.random();var t=this.layout.options.getSortData,e=this.layout._sorters;for(var i in t){var o=e[i];this.sortData[i]=o(this.element,this)}}};var i=e.prototype.destroy;return e.prototype.destroy=function(){i.apply(this,arguments),this.css({display:""})},e}),function(t,e){"function"==typeof define&&define.amd?define("isotope/js/layout-mode",["get-size/get-size","outlayer/outlayer"],e):"object"==typeof exports?module.exports=e(require("get-size"),require("outlayer")):(t.Isotope=t.Isotope||{},t.Isotope.LayoutMode=e(t.getSize,t.Outlayer))}(window,function(t,e){function i(t){this.isotope=t,t&&(this.options=t.options[this.namespace],this.element=t.element,this.items=t.filteredItems,this.size=t.size)}return function(){function t(t){return function(){return e.prototype[t].apply(this.isotope,arguments)}}for(var o=["_resetLayout","_getItemLayoutPosition","_manageStamp","_getContainerSize","_getElementOffset","needsResizeLayout"],n=0,r=o.length;r>n;n++){var s=o[n];i.prototype[s]=t(s)}}(),i.prototype.needsVerticalResizeLayout=function(){var e=t(this.isotope.element),i=this.isotope.size&&e;return i&&e.innerHeight!=this.isotope.size.innerHeight},i.prototype._getMeasurement=function(){this.isotope._getMeasurement.apply(this,arguments)},i.prototype.getColumnWidth=function(){this.getSegmentSize("column","Width")},i.prototype.getRowHeight=function(){this.getSegmentSize("row","Height")},i.prototype.getSegmentSize=function(t,e){var i=t+e,o="outer"+e;if(this._getMeasurement(i,o),!this[i]){var n=this.getFirstItemSize();this[i]=n&&n[o]||this.isotope.size["inner"+e]}},i.prototype.getFirstItemSize=function(){var e=this.isotope.filteredItems[0];return e&&e.element&&t(e.element)},i.prototype.layout=function(){this.isotope.layout.apply(this.isotope,arguments)},i.prototype.getSize=function(){this.isotope.getSize(),this.size=this.isotope.size},i.modes={},i.create=function(t,e){function o(){i.apply(this,arguments)}return o.prototype=new i,e&&(o.options=e),o.prototype.namespace=t,i.modes[t]=o,o},i}),function(t,e){"function"==typeof define&&define.amd?define("masonry/masonry",["outlayer/outlayer","get-size/get-size","fizzy-ui-utils/utils"],e):"object"==typeof exports?module.exports=e(require("outlayer"),require("get-size"),require("fizzy-ui-utils")):t.Masonry=e(t.Outlayer,t.getSize,t.fizzyUIUtils)}(window,function(t,e,i){var o=t.create("masonry");return o.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns();var t=this.cols;for(this.colYs=[];t--;)this.colYs.push(0);this.maxY=0},o.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var t=this.items[0],i=t&&t.element;this.columnWidth=i&&e(i).outerWidth||this.containerWidth}var o=this.columnWidth+=this.gutter,n=this.containerWidth+this.gutter,r=n/o,s=o-n%o,a=s&&1>s?"round":"floor";r=Math[a](r),this.cols=Math.max(r,1)},o.prototype.getContainerWidth=function(){var t=this.options.isFitWidth?this.element.parentNode:this.element,i=e(t);this.containerWidth=i&&i.innerWidth},o.prototype._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,o=e&&1>e?"round":"ceil",n=Math[o](t.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var r=this._getColGroup(n),s=Math.min.apply(Math,r),a=i.indexOf(r,s),u={x:this.columnWidth*a,y:s},p=s+t.size.outerHeight,h=this.cols+1-r.length,f=0;h>f;f++)this.colYs[a+f]=p;return u},o.prototype._getColGroup=function(t){if(2>t)return this.colYs;for(var e=[],i=this.cols+1-t,o=0;i>o;o++){var n=this.colYs.slice(o,o+t);e[o]=Math.max.apply(Math,n)}return e},o.prototype._manageStamp=function(t){var i=e(t),o=this._getElementOffset(t),n=this.options.isOriginLeft?o.left:o.right,r=n+i.outerWidth,s=Math.floor(n/this.columnWidth);s=Math.max(0,s);var a=Math.floor(r/this.columnWidth);a-=r%this.columnWidth?0:1,a=Math.min(this.cols-1,a);for(var u=(this.options.isOriginTop?o.top:o.bottom)+i.outerHeight,p=s;a>=p;p++)this.colYs[p]=Math.max(u,this.colYs[p])},o.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this.options.isFitWidth&&(t.width=this._getContainerFitWidth()),t},o.prototype._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},o.prototype.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!==this.containerWidth},o}),function(t,e){"function"==typeof define&&define.amd?define("isotope/js/layout-modes/masonry",["../layout-mode","masonry/masonry"],e):"object"==typeof exports?module.exports=e(require("../layout-mode"),require("masonry-layout")):e(t.Isotope.LayoutMode,t.Masonry)}(window,function(t,e){function i(t,e){for(var i in e)t[i]=e[i];return t}var o=t.create("masonry"),n=o.prototype._getElementOffset,r=o.prototype.layout,s=o.prototype._getMeasurement;i(o.prototype,e.prototype),o.prototype._getElementOffset=n,o.prototype.layout=r,o.prototype._getMeasurement=s;var a=o.prototype.measureColumns;o.prototype.measureColumns=function(){this.items=this.isotope.filteredItems,a.call(this)};var u=o.prototype._manageStamp;return o.prototype._manageStamp=function(){this.options.isOriginLeft=this.isotope.options.isOriginLeft,this.options.isOriginTop=this.isotope.options.isOriginTop,u.apply(this,arguments)},o}),function(t,e){"function"==typeof define&&define.amd?define("isotope/js/layout-modes/fit-rows",["../layout-mode"],e):"object"==typeof exports?module.exports=e(require("../layout-mode")):e(t.Isotope.LayoutMode)}(window,function(t){var e=t.create("fitRows");return e.prototype._resetLayout=function(){this.x=0,this.y=0,this.maxY=0,this._getMeasurement("gutter","outerWidth") -},e.prototype._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth+this.gutter,i=this.isotope.size.innerWidth+this.gutter;0!==this.x&&e+this.x>i&&(this.x=0,this.y=this.maxY);var o={x:this.x,y:this.y};return this.maxY=Math.max(this.maxY,this.y+t.size.outerHeight),this.x+=e,o},e.prototype._getContainerSize=function(){return{height:this.maxY}},e}),function(t,e){"function"==typeof define&&define.amd?define("isotope/js/layout-modes/vertical",["../layout-mode"],e):"object"==typeof exports?module.exports=e(require("../layout-mode")):e(t.Isotope.LayoutMode)}(window,function(t){var e=t.create("vertical",{horizontalAlignment:0});return e.prototype._resetLayout=function(){this.y=0},e.prototype._getItemLayoutPosition=function(t){t.getSize();var e=(this.isotope.size.innerWidth-t.size.outerWidth)*this.options.horizontalAlignment,i=this.y;return this.y+=t.size.outerHeight,{x:e,y:i}},e.prototype._getContainerSize=function(){return{height:this.y}},e}),function(t,e){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size","matches-selector/matches-selector","fizzy-ui-utils/utils","isotope/js/item","isotope/js/layout-mode","isotope/js/layout-modes/masonry","isotope/js/layout-modes/fit-rows","isotope/js/layout-modes/vertical"],function(i,o,n,r,s,a){return e(t,i,o,n,r,s,a)}):"object"==typeof exports?module.exports=e(t,require("outlayer"),require("get-size"),require("desandro-matches-selector"),require("fizzy-ui-utils"),require("./item"),require("./layout-mode"),require("./layout-modes/masonry"),require("./layout-modes/fit-rows"),require("./layout-modes/vertical")):t.Isotope=e(t,t.Outlayer,t.getSize,t.matchesSelector,t.fizzyUIUtils,t.Isotope.Item,t.Isotope.LayoutMode)}(window,function(t,e,i,o,n,r,s){function a(t,e){return function(i,o){for(var n=0,r=t.length;r>n;n++){var s=t[n],a=i.sortData[s],u=o.sortData[s];if(a>u||u>a){var p=void 0!==e[s]?e[s]:e,h=p?1:-1;return(a>u?1:-1)*h}}return 0}}var u=t.jQuery,p=String.prototype.trim?function(t){return t.trim()}:function(t){return t.replace(/^\s+|\s+$/g,"")},h=document.documentElement,f=h.textContent?function(t){return t.textContent}:function(t){return t.innerText},d=e.create("isotope",{layoutMode:"masonry",isJQueryFiltering:!0,sortAscending:!0});d.Item=r,d.LayoutMode=s,d.prototype._create=function(){this.itemGUID=0,this._sorters={},this._getSorters(),e.prototype._create.call(this),this.modes={},this.filteredItems=this.items,this.sortHistory=["original-order"];for(var t in s.modes)this._initLayoutMode(t)},d.prototype.reloadItems=function(){this.itemGUID=0,e.prototype.reloadItems.call(this)},d.prototype._itemize=function(){for(var t=e.prototype._itemize.apply(this,arguments),i=0,o=t.length;o>i;i++){var n=t[i];n.id=this.itemGUID++}return this._updateItemsSortData(t),t},d.prototype._initLayoutMode=function(t){var e=s.modes[t],i=this.options[t]||{};this.options[t]=e.options?n.extend(e.options,i):i,this.modes[t]=new e(this)},d.prototype.layout=function(){return!this._isLayoutInited&&this.options.isInitLayout?(this.arrange(),void 0):(this._layout(),void 0)},d.prototype._layout=function(){var t=this._getIsInstant();this._resetLayout(),this._manageStamps(),this.layoutItems(this.filteredItems,t),this._isLayoutInited=!0},d.prototype.arrange=function(t){function e(){o.reveal(i.needReveal),o.hide(i.needHide)}this.option(t),this._getIsInstant();var i=this._filter(this.items);this.filteredItems=i.matches;var o=this;this._bindArrangeComplete(),this._isInstant?this._noTransition(e):e(),this._sort(),this._layout()},d.prototype._init=d.prototype.arrange,d.prototype._getIsInstant=function(){var t=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;return this._isInstant=t,t},d.prototype._bindArrangeComplete=function(){function t(){e&&i&&o&&n.emitEvent("arrangeComplete",[n.filteredItems])}var e,i,o,n=this;this.once("layoutComplete",function(){e=!0,t()}),this.once("hideComplete",function(){i=!0,t()}),this.once("revealComplete",function(){o=!0,t()})},d.prototype._filter=function(t){var e=this.options.filter;e=e||"*";for(var i=[],o=[],n=[],r=this._getFilterTest(e),s=0,a=t.length;a>s;s++){var u=t[s];if(!u.isIgnored){var p=r(u);p&&i.push(u),p&&u.isHidden?o.push(u):p||u.isHidden||n.push(u)}}return{matches:i,needReveal:o,needHide:n}},d.prototype._getFilterTest=function(t){return u&&this.options.isJQueryFiltering?function(e){return u(e.element).is(t)}:"function"==typeof t?function(e){return t(e.element)}:function(e){return o(e.element,t)}},d.prototype.updateSortData=function(t){var e;t?(t=n.makeArray(t),e=this.getItems(t)):e=this.items,this._getSorters(),this._updateItemsSortData(e)},d.prototype._getSorters=function(){var t=this.options.getSortData;for(var e in t){var i=t[e];this._sorters[e]=l(i)}},d.prototype._updateItemsSortData=function(t){for(var e=t&&t.length,i=0;e&&e>i;i++){var o=t[i];o.updateSortData()}};var l=function(){function t(t){if("string"!=typeof t)return t;var i=p(t).split(" "),o=i[0],n=o.match(/^\[(.+)\]$/),r=n&&n[1],s=e(r,o),a=d.sortDataParsers[i[1]];return t=a?function(t){return t&&a(s(t))}:function(t){return t&&s(t)}}function e(t,e){var i;return i=t?function(e){return e.getAttribute(t)}:function(t){var i=t.querySelector(e);return i&&f(i)}}return t}();d.sortDataParsers={parseInt:function(t){return parseInt(t,10)},parseFloat:function(t){return parseFloat(t)}},d.prototype._sort=function(){var t=this.options.sortBy;if(t){var e=[].concat.apply(t,this.sortHistory),i=a(e,this.options.sortAscending);this.filteredItems.sort(i),t!=this.sortHistory[0]&&this.sortHistory.unshift(t)}},d.prototype._mode=function(){var t=this.options.layoutMode,e=this.modes[t];if(!e)throw Error("No layout mode: "+t);return e.options=this.options[t],e},d.prototype._resetLayout=function(){e.prototype._resetLayout.call(this),this._mode()._resetLayout()},d.prototype._getItemLayoutPosition=function(t){return this._mode()._getItemLayoutPosition(t)},d.prototype._manageStamp=function(t){this._mode()._manageStamp(t)},d.prototype._getContainerSize=function(){return this._mode()._getContainerSize()},d.prototype.needsResizeLayout=function(){return this._mode().needsResizeLayout()},d.prototype.appended=function(t){var e=this.addItems(t);if(e.length){var i=this._filterRevealAdded(e);this.filteredItems=this.filteredItems.concat(i)}},d.prototype.prepended=function(t){var e=this._itemize(t);if(e.length){this._resetLayout(),this._manageStamps();var i=this._filterRevealAdded(e);this.layoutItems(this.filteredItems),this.filteredItems=i.concat(this.filteredItems),this.items=e.concat(this.items)}},d.prototype._filterRevealAdded=function(t){var e=this._filter(t);return this.hide(e.needHide),this.reveal(e.matches),this.layoutItems(e.matches,!0),e.matches},d.prototype.insert=function(t){var e=this.addItems(t);if(e.length){var i,o,n=e.length;for(i=0;n>i;i++)o=e[i],this.element.appendChild(o.element);var r=this._filter(e).matches;for(i=0;n>i;i++)e[i].isLayoutInstant=!0;for(this.arrange(),i=0;n>i;i++)delete e[i].isLayoutInstant;this.reveal(r)}};var c=d.prototype.remove;return d.prototype.remove=function(t){t=n.makeArray(t);var e=this.getItems(t);c.call(this,t);var i=e&&e.length;if(i)for(var o=0;i>o;o++){var r=e[o];n.removeFrom(this.filteredItems,r)}},d.prototype.shuffle=function(){for(var t=0,e=this.items.length;e>t;t++){var i=this.items[t];i.sortData.random=Math.random()}this.options.sortBy="random",this._sort(),this._layout()},d.prototype._noTransition=function(t){var e=this.options.transitionDuration;this.options.transitionDuration=0;var i=t.call(this);return this.options.transitionDuration=e,i},d.prototype.getFilteredItemElements=function(){for(var t=[],e=0,i=this.filteredItems.length;i>e;e++)t.push(this.filteredItems[e].element);return t},d}); \ No newline at end of file diff --git a/js/jwt.js b/js/jwt.js deleted file mode 100644 index 2b927555..00000000 --- a/js/jwt.js +++ /dev/null @@ -1,215 +0,0 @@ - -// XXX Hack to prevent hextorstr function used by JWS send a string instead of -// a Word Array. On this way, no string decoding needs to take place and Crypto -// takes care of everything. -// Note that it should not affect the other algorithms as hextorstr is exclusively -// used on Hmac family (that invokes CryptoJS library). -window.hextorstr = function (c) { - return window.CryptoJS.enc.Hex.parse(c); -}; - - -//this is used to parse base64 -function url_base64_decode(str) { - var output = str.replace(/-/g, '+').replace(/_/g, '/'); - switch (output.length % 4) { - case 0: - break; - case 2: - output += '=='; - break; - case 3: - output += '='; - break; - default: - throw 'Illegal base64url string!'; - } - var result = window.atob(output); //polifyll https://github.com/davidchambers/Base64.js - try{ - return decodeURIComponent(escape(result)); - } catch (err) { - return result; - } -} - -window.decode = function (base64json) { - var json = null, error = null; - try { - json = url_base64_decode(base64json); - json = JSON.stringify(JSON.parse(json), undefined, 2); - } catch (e) { - error = e; - } - return {result: json, error: error}; -}; - -window.decodeJWT = function(encoded) { - var result = { - header: {}, - payload: {} - }; - - try { - var split = encoded.split('.'); - result.header = JSON.parse(window.decode(split[0]).result); - result.payload = JSON.parse(window.decode(split[1]).result); - return { result: result, error: null }; - } catch(e) { - return { result: result, error: e }; - } -} - -window.sign = function (algorithm, header, payload, key, isSecretBase64Encoded) { - var value = '', error = null, headerAsJSON, payloadAsJSON; - - try { - headerAsJSON = JSON.stringify(JSON.parse(header)); - } catch (e) { - error = {result: null, error: {cause: e, who: ['header']}}; - } - try { - payloadAsJSON = JSON.stringify(JSON.parse(payload)); - } catch (e) { - if (error) { - error.error.who.push('payload'); - } else { - error = {result: null, error: {cause: e, who: ['payload']}}; - } - } - - if (error) { - return error; - } - - if(algorithm.indexOf('HS') === 0) { - if (isSecretBase64Encoded) { - try { - key = window.b64utob64(key); - key = window.CryptoJS.enc.Base64.parse(key).toString(); - } catch (e) { - return {result: '', error: e}; - } - } else { - key = window.CryptoJS.enc.Latin1.parse(key).toString(); - } - } - - try { - value = KJUR.jws.JWS.sign(algorithm, headerAsJSON, payloadAsJSON, key); - } catch (e) { - error = e; - } - - return {result: value, error: error}; -}; - -window.isValidBase64String = function (s, urlOnly) { - try { - var validChars = urlOnly ? - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=' : - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_+/='; - - var hasPadding = false; - for(var i = 0; i < s.length; ++i) { - hasPadding |= s.charAt(i) === '='; - if(validChars.indexOf(s.charAt(i)) === -1) { - return false; - } - } - - if(hasPadding) { - for(var i = s.indexOf('='); i < s.length; ++i) { - if(s.charAt(i) !== '=') { - return false; - } - } - - return s.length % 4 === 0; - } - - return true; - } catch (e) { - return false; - } -}; - -window.verify = function (algorithm, value, key, isSecretBase64Encoded) { - - var result = '', error = null; - - // HOTFIX: issue #251, 'alg: none' results in valid signature. It should - // always be invalid. This is fixed in KJUR.jws.JWS in later versions. - // When we update libraries to the latest versions, we can remove this. - try { - var header = JSON.parse(window.decode(value.split('.')[0]).result); - if(header.alg === 'none') { - return { result: false, error: null }; - } - } catch(e) { - return { result: false, error: e }; - } - - if(algorithm.indexOf('HS') === 0) { - if (isSecretBase64Encoded) { - try { - key = window.b64utob64(key); - key = window.b64tohex(key); - } catch (e) { - return {result: '', error: e}; - } - } else { - key = window.CryptoJS.enc.Latin1.parse(key).toString(); - } - } - - try { - result = KJUR.jws.JWS.verify(value, key); - } catch (e) { - error = e; - } - - return {result: result, error: error}; -}; - -window.isValidKey = function(key) { - // Four tries: no header, header for cert, header for pub key, - // header for priv key - - var headers = [{ - prologue: '', - epilogue: '' - },{ - prologue: '-----BEGIN CERTIFICATE-----\n', - epilogue: '-----END CERTIFICATE-----\n' - }, { - prologue: '-----BEGIN PUBLIC KEY-----\n', - epilogue: '-----END PUBLIC KEY-----\n' - }, { - prologue: '-----BEGIN PRIVATE KEY-----\n', - epilogue: '-----END PRIVATE KEY-----\n' - }, { - prologue: '-----BEGIN RSA PRIVATE KEY-----\n', - epilogue: '-----END RSA PRIVATE KEY-----\n' - }]; - - for(var i = 0; i < headers.length; ++i) { - var header = headers[i]; - try { - var newKey = header.prologue; - newKey += key + '\n'; - newKey += header.epilogue; - - return { - valid: !!KEYUTIL.getKey(newKey), - key: newKey - }; - } catch(e2) { - // Ignore - } - } - - return { - valid: false, - key: key - }; -}; diff --git a/js/jwt_mode.js b/js/jwt_mode.js deleted file mode 100644 index 16767ffe..00000000 --- a/js/jwt_mode.js +++ /dev/null @@ -1,41 +0,0 @@ -CodeMirror.defineMode('jwt', function () { - - function jwtHeader(stream, state) { - stream.eatWhile(/[^.]/); - state.cur = firstDot; - return 'jwt-header'; - } - - function firstDot(stream, state) { - stream.next(); - state.cur = jwtPayload; - return 'jwt-dot'; - } - - function jwtPayload(stream, state) { - stream.eatWhile(/[^.]/); - state.cur = secondDot; - return 'jwt-payload'; - } - - function secondDot(stream, state) { - stream.next(); - state.cur = jwtSignature; - return 'jwt-dot'; - } - - function jwtSignature(stream) { - stream.skipToEnd(); - return 'jwt-signature'; - } - - return { - token: function (stream, state) { - var cur = state.cur; - return cur(stream, state); - }, - startState: function () { - return {cur: jwtHeader}; - } - }; -}); From 5ddc70f22081bea7572780ba27b0c937e18f48c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 19 Jan 2018 17:04:49 -0300 Subject: [PATCH 091/611] Fix img link in README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ad6aa6d5..d15b4c4d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ##JWT.io - + [![Build Status](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io.png?branch=master)](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io) From 9664827ce4d3773c55ea549f6c72107ebd851d1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 30 Jan 2018 21:39:50 -0300 Subject: [PATCH 092/611] Some tests (and now logging can be disabled). --- Gruntfile.js | 11 ++ package.json | 9 +- src/editor/index.js | 10 +- src/editor/jwt.js | 27 +++- src/utils.js | 5 +- src/website/counter.js | 3 +- src/website/libraries.js | 5 +- src/website/smooth-scrolling.js | 3 +- test/functional/index.js | 1 + test/test.js | 25 ---- test/test_harness.html | 37 ----- test/unit/editor/index.js | 2 + test/unit/editor/jwt.js | 184 ++++++++++++++++++++++++ test/unit/editor/public-key-download.js | 6 + test/unit/index.js | 4 + test/unit/utils.js | 93 ++++++++++++ webpack.website-tests.js | 15 ++ 17 files changed, 364 insertions(+), 76 deletions(-) create mode 100644 test/functional/index.js delete mode 100644 test/test.js delete mode 100644 test/test_harness.html create mode 100644 test/unit/editor/index.js create mode 100644 test/unit/editor/jwt.js create mode 100644 test/unit/editor/public-key-download.js create mode 100644 test/unit/index.js create mode 100644 test/unit/utils.js create mode 100644 webpack.website-tests.js diff --git a/Gruntfile.js b/Gruntfile.js index 8daa4a6a..f3120c6e 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -5,6 +5,7 @@ module.exports = grunt => { grunt.loadNpmTasks('grunt-webpack'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-mocha-test'); grunt.initConfig({ clean: { @@ -99,6 +100,7 @@ module.exports = grunt => { websiteDev: require('./webpack.website-dev.js'), extensionProd: require('./webpack.extension-prod.js'), extensionDev: require('./webpack.extension-dev.js'), + test: require('./webpack.website-tests.js') }, watch: { @@ -150,6 +152,13 @@ module.exports = grunt => { ], tasks: ['build-extension-views'] } + }, + + mochaTest: { + all: { + options: {}, + src: ['dist/test/*.js'] + } } }); @@ -197,6 +206,8 @@ module.exports = grunt => { 'build-website-dev', 'build-extension-dev' ]); + + grunt.registerTask('test', ['webpack:test', 'mochaTest']); grunt.registerTask('default', ['build-dev', 'watch']); }; diff --git a/package.json b/package.json index 37f6c0e1..1a4ae033 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,8 @@ "@babel/preset-env": "^7.0.0-beta.36", "babel-loader": "^8.0.0-beta.0", "bootstrap": "^3.3.7", + "chai": "^4.1.2", + "chai-as-promised": "^7.1.1", "codemirror": "^5.33.0", "flipclock": "^0.7.8", "grunt": "^1.0.1", @@ -21,17 +23,22 @@ "grunt-contrib-pug": "^1.0.0", "grunt-contrib-stylus": "^1.2.0", "grunt-contrib-watch": "^1.0.0", + "grunt-mocha-test": "^0.13.3", "grunt-webpack": "^3.0.2", "highlight.js": "^9.12.0", "isotope-layout": "^3.0.5", "jquery": "^3.2.1", "jsrsasign": "^8.0.4", "jstransformer-markdown-it": "^2.0.0", + "loglevel": "^1.6.1", + "mocha": "^5.0.0", "pug": "^2.0.0-rc.4", + "source-map-support": "^0.5.3", "stylus": "^0.54.5", "uglifyjs-webpack-plugin": "^1.1.6", "webpack": "^3.10.0", - "webpack-merge": "^4.1.1" + "webpack-merge": "^4.1.1", + "xhr-mock": "^2.0.3" }, "scripts": { "test": "echo UNIMPLEMENTED", diff --git a/src/editor/index.js b/src/editor/index.js index 9abe505e..fa6f41ad 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -36,6 +36,8 @@ import { decodedTabElement } from '../dom-elements.js'; +import * as log from 'loglevel'; + // The event manager lets us enable/disable events as needed without // manually tracking them. Events that need to be disabled should be // passed to the event manager. @@ -97,7 +99,7 @@ function selectAlgorithm(algorithm) { algorithmSelect.querySelector(`option[value="${algorithm}"]`); if(!selected) { - console.log(`Invalid algorithm ${algorithm}, ignoring...`); + log.info(`Invalid algorithm ${algorithm}, ignoring...`); return; } @@ -148,7 +150,7 @@ function setAlgorithmInHeader(algorithm) { // errors. if(!(e instanceof SyntaxError)) { // If it's not a SyntaxError, log the error. - console.error('Failed to encode token: ', e); + log.warn('Failed to encode token: ', e); } } @@ -254,7 +256,7 @@ function encodeToken() { saveAsLastToken(); } catch(e) { - console.error('Failed to sign/encode token: ', e); + log.warn('Failed to sign/encode token: ', e); markAsInvalid(); tokenEditor.setValue(''); } @@ -291,7 +293,7 @@ function decodeToken() { verifyToken(); } } catch(e) { - console.error('Failed to decode token: ', e); + log.warn('Failed to decode token: ', e); } }); } diff --git a/src/editor/jwt.js b/src/editor/jwt.js index fbdf3afa..1207e3ac 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -1,3 +1,5 @@ +import { isValidBase64String } from '../utils.js'; + import { jws, KEYUTIL, @@ -6,6 +8,8 @@ import { utf8tohex } from 'jsrsasign'; +import * as log from 'loglevel'; + export function sign(header, payload, secretOrPrivateKeyString, @@ -25,6 +29,10 @@ export function sign(header, } export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { + if(!isToken(jwt)) { + return false; + } + const decoded = decode(jwt); if(!decoded.header.alg) { @@ -41,7 +49,7 @@ export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { return jws.JWS.verify(jwt, secretOrPublicKeyString); } } catch(e) { - console.error('Could not verify token, ' + + log.warn('Could not verify token, ' + 'probably due to bad data in it or the keys: ', e); return false; } @@ -78,7 +86,20 @@ export function decode(jwt) { return result; } -export function isToken(jwt) { +export function isToken(jwt, checkTypClaim = false) { const decoded = decode(jwt); - return !decoded.errors && decoded.header.typ === 'JWT'; + + if(decoded.errors) { + return false; + } + + if(checkTypClaim && decoded.header.typ !== 'JWT') { + return false; + } + + const split = jwt.split('.'); + let valid = true; + split.forEach(s => valid = valid && isValidBase64String(s, true)); + + return valid; } diff --git a/src/utils.js b/src/utils.js index b1a16112..18d7a09a 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,4 +1,5 @@ import { KEYUTIL } from 'jsrsasign'; +import * as log from 'loglevel'; export function httpGet(url, cache = true) { return new Promise((resolve, reject) => { @@ -154,7 +155,7 @@ export function copyTextToClipboard(text) { try { document.execCommand('copy'); } catch (err) { - console.error(err); + log.warn(err); } document.body.removeChild(textArea); @@ -197,7 +198,7 @@ export function safeLocalStorageSetItem(key, value) { try { localStorage.setItem(key, value); } catch (e) { - console.log('Cannot save token to Local Storage ' + + log.info('Cannot save token to Local Storage ' + '(private browsing enabled?), ignoring...', e); // Safari when in private browsing doesn't allow it } diff --git a/src/website/counter.js b/src/website/counter.js index 69e554e2..4e240f75 100644 --- a/src/website/counter.js +++ b/src/website/counter.js @@ -5,6 +5,7 @@ import { httpGet } from '../utils.js'; import $ from 'jquery'; import jQuery from 'jquery'; import 'flipclock/compiled/flipclock.js'; +import * as log from 'loglevel'; const initialCount = 80482701; const pollIntervalWhenVisible = 5000; @@ -24,7 +25,7 @@ function updateCounterFromWebtask() { const parsed = JSON.parse(data); flipCounter.setTime(parsed.logins); }).catch(e => { - console.error('Failed to set count from Webtask: ', e); + log.warn('Failed to set count from Webtask: ', e); }); }); } diff --git a/src/website/libraries.js b/src/website/libraries.js index e015c72a..a5e9e0d1 100644 --- a/src/website/libraries.js +++ b/src/website/libraries.js @@ -7,6 +7,7 @@ import { } from './dom-elements.js'; import Isotope from 'isotope-layout'; +import * as log from 'loglevel'; const librariesGrid = new Isotope(librariesElement, { layoutMode: 'fitRows', @@ -58,7 +59,7 @@ function getStarsForGitHubRepos() { } } catch (e) { // Ignore bad data - console.error('Bad data in stored stars count, ignoring...', e); + log.warn('Bad data in stored stars count, ignoring...', e); } const url = `https://api.github.com/repos/${repo}`; @@ -70,7 +71,7 @@ function getStarsForGitHubRepos() { insertStarCount(element, count); }).catch(e => { - console.error('Failed to get GitHub stars count for repository, ' + + log.warn('Failed to get GitHub stars count for repository, ' + 'is the repository URL OK? ', e); }); }); diff --git a/src/website/smooth-scrolling.js b/src/website/smooth-scrolling.js index c3aca1a5..a3bd0f40 100644 --- a/src/website/smooth-scrolling.js +++ b/src/website/smooth-scrolling.js @@ -2,6 +2,7 @@ import { menuScrollableLinks, navbarElement } from './dom-elements.js'; import { isWideScreen } from '../utils.js'; import $ from 'jquery'; +import * as log from 'loglevel'; // This is the only function that really requires jQuery, other than some // of the dependencies. Consider this when adding code that depends on @@ -30,7 +31,7 @@ export function setupSmoothScrolling() { const start = scrollable.href.indexOf('#'); if (start === -1) { - console.error(' element with .scrollto set and bad link: ', + log.warn(' element with .scrollto set and bad link: ', scrollable.href); return; } diff --git a/test/functional/index.js b/test/functional/index.js new file mode 100644 index 00000000..fcfbfda1 --- /dev/null +++ b/test/functional/index.js @@ -0,0 +1 @@ +import 'source-map-support/register'; diff --git a/test/test.js b/test/test.js deleted file mode 100644 index d50e99d1..00000000 --- a/test/test.js +++ /dev/null @@ -1,25 +0,0 @@ -describe('jwt library wrapper (jwt.js)', function () { - // TODO Add RS256 tests - it('should fail on invalid data', function () { - var result = window.verify('hello', 'bye', false); - expect(result.error).not.to.be(null); - expect(result.result).to.be(''); - }); - it('should verify using ascii secret', function () { - var result = window.verify('HS256', 'eyJhbGciOiJIUzI1NiIsImN0eSI6IkpXVCJ9.eyJhZ2UiOjIxfQ.8nqb61Mdqdama9pZQz07HiIySY6FZC9UjHMKHg6zhjw', 'secret', false); - expect(result.error).to.be.equal(null); - expect(result.result).to.be(true); - }); - it('should verify using bas64 encoded secret', function () { - var jwt = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2F1dGgwLmF1dGgwLmNvbS8iLCJzdWIiOiJhdXRoMHw1MjdhYzIxOWQ1ZWFjYzE4ZDQwMDAwMDUiLCJhdWQiOiJhRkd2RFRvNTVHT3RkRVlyb1Fsa3RBMkFHNU1rVDY2SCIsImV4cCI6MTM5NDY5OTg5MiwiaWF0IjoxMzk0NjYzODkyfQ.kEdt5CChBWdPytkGv10mb3tqe6CEcpCQ_DLnEgq69p8'; - var secret = '3GdpH_8Ty1Sx_laCRwyUaSl7ddb6xfpR-352SZPFdPKdZ1S8KGtDYbiNMG3Wt61X'; - var result = window.verify('HS256', jwt, secret, true); - expect(result.error).to.be.equal(null); - expect(result.result).to.be(true); - }); - it('should decode with two underscores', function () { - var result = window.decode('eyI_IjoiYWE_In0'); - expect(result.error).to.be.equal(null); - expect(result.result).to.be('{\n "?": "aa?"\n}'); - }); -}); diff --git a/test/test_harness.html b/test/test_harness.html deleted file mode 100644 index 8b881f5f..00000000 --- a/test/test_harness.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Mocha Tests - - - -
    - - - - - - - - - - - - - - - - - diff --git a/test/unit/editor/index.js b/test/unit/editor/index.js new file mode 100644 index 00000000..c3feed64 --- /dev/null +++ b/test/unit/editor/index.js @@ -0,0 +1,2 @@ +import './jwt.js'; +import './public-key-download.js'; diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js new file mode 100644 index 00000000..f77ab300 --- /dev/null +++ b/test/unit/editor/jwt.js @@ -0,0 +1,184 @@ +import * as jwt from '../../../src/editor/jwt.js'; +import tokens from '../../../src/editor/default-tokens.js'; + +import { utf8tob64u, b64utob64 } from 'jsrsasign'; + +import * as log from 'loglevel'; + +import { should } from 'chai'; + +should(); + +describe('JWT (logging disabled, enable it for debugging)', function() { + before(function() { + log.disableAll(); + }); + + after(function() { + log.enableAll(); + }); + + it('detects tokens', function() { + jwt.isToken('skdjf9238ujdhkf.asdfasdf2.sdsdffsfsd').should.be.false; + jwt.isToken('skdjf9238ujdhkf.asdfasdf2').should.be.false; + jwt.isToken('skdjf9238ujdhkfdfsai28#390}{+śdf').should.be.false; + + jwt.isToken(tokens.hs256.token).should.be.true; + jwt.isToken(tokens.rs256.token).should.be.true; + }); + + it('detects tokens without a signature', function() { + const split = tokens.hs256.token.split('.'); + const token = `${split[0]}.${split[1]}`; + const token2 = token + '.'; + + jwt.isToken(token).should.be.true; + jwt.isToken(token2).should.be.true; + }); + + it('considers Base64 (not URL) encoded tokens invalid', function() { + const token = b64utob64(tokens.hs256.token); + + jwt.isToken(token).should.be.false; + jwt.verify(token, tokens.hs256.secret).should.be.false; + }); + + it('verifies valid tokens', function() { + jwt.verify(tokens.hs256.token, tokens.hs256.secret).should.be.true; + jwt.verify(tokens.hs384.token, tokens.hs384.secret).should.be.true; + jwt.verify(tokens.hs512.token, tokens.hs512.secret).should.be.true; + + jwt.verify(tokens.rs256.token, tokens.rs256.publicKey).should.be.true; + jwt.verify(tokens.rs384.token, tokens.rs384.publicKey).should.be.true; + jwt.verify(tokens.rs512.token, tokens.rs512.publicKey).should.be.true; + + jwt.verify(tokens.es256.token, tokens.es256.publicKey).should.be.true; + jwt.verify(tokens.es384.token, tokens.es384.publicKey).should.be.true; + + jwt.verify(tokens.ps256.token, tokens.ps256.publicKey).should.be.true; + jwt.verify(tokens.ps384.token, tokens.ps384.publicKey).should.be.true; + }); + + it('fails to verify invalid tokens', function() { + const split = tokens.hs256.token.split('.'); + const token = `${split[0]}.${split[1]}`; + const token2 = token + '.'; + + jwt.verify(token, tokens.hs256.secret).should.be.false; + jwt.verify(token2, tokens.hs256.secret).should.be.false; + + jwt.verify(tokens.hs256.token, tokens.hs256.secret + 'sdfasdf') + .should.be.false; + jwt.verify(tokens.hs256.token, 'sdfsdf' + tokens.hs256.secret) + .should.be.false; + jwt.verify(tokens.hs256.token, 'sdfsdf').should.be.false; + + jwt.verify(tokens.rs256.token, tokens.rs256.publicKey.replace('a','b')) + .should.be.false; + + jwt.verify(tokens.es256.token, tokens.es256.publicKey.replace('a','b')) + .should.be.false; + + jwt.verify(tokens.ps256.token, tokens.ps256.publicKey.replace('a','b')) + .should.be.false; + + const header = { + typ: 'JWT', + alg: 'none' + }; + const payload = { + sub: 'test' + }; + + const token3 = `${utf8tob64u(JSON.stringify(header))}.` + + `${utf8tob64u(JSON.stringify(payload))}`; + + jwt.verify(token3, 'whatever').should.be.false; + jwt.verify(token3 + '.', 'whatever').should.be.false; + jwt.verify(token3 + '.' + split[2], 'whatever').should.be.false; + }); + + it('signs tokens (HS256)', function() { + const header = { + alg: 'HS256' + }; + const payload = { + sub: 'test' + }; + + const token = jwt.sign(header, payload, 'secret'); + token.should.be.a('string'); + + const split = token.split('.'); + split.should.have.lengthOf(3); + + jwt.verify(token, 'secret').should.be.true; + + const decoded = jwt.decode(token); + decoded.header.should.deep.equal(header); + decoded.payload.should.deep.equal(payload); + }); + + it('signs tokens (RS256)', function() { + const header = { + alg: 'RS256' + }; + const payload = { + sub: 'test' + }; + + const token = jwt.sign(header, payload, tokens.rs256.privateKey); + token.should.be.a('string'); + + const split = token.split('.'); + split.should.have.lengthOf(3); + + jwt.verify(token, tokens.rs256.publicKey).should.be.true; + + const decoded = jwt.decode(token); + decoded.header.should.deep.equal(header); + decoded.payload.should.deep.equal(payload); + }); + + it('signs tokens (ES256)', function() { + const header = { + alg: 'ES256' + }; + const payload = { + sub: 'test' + }; + + const token = jwt.sign(header, payload, tokens.es256.privateKey); + token.should.be.a('string'); + + const split = token.split('.'); + split.should.have.lengthOf(3); + + jwt.verify(token, tokens.es256.publicKey).should.be.true; + + const decoded = jwt.decode(token); + decoded.header.should.deep.equal(header); + decoded.payload.should.deep.equal(payload); + }); + + it('signs tokens (PS256)', function() { + const header = { + alg: 'PS256' + }; + const payload = { + sub: 'test' + }; + + const token = jwt.sign(header, payload, tokens.ps256.privateKey); + token.should.be.a('string'); + + const split = token.split('.'); + split.should.have.lengthOf(3); + + jwt.verify(token, tokens.ps256.publicKey).should.be.true; + + const decoded = jwt.decode(token); + decoded.header.should.deep.equal(header); + decoded.payload.should.deep.equal(payload); + }); +}); diff --git a/test/unit/editor/public-key-download.js b/test/unit/editor/public-key-download.js new file mode 100644 index 00000000..9964a72b --- /dev/null +++ b/test/unit/editor/public-key-download.js @@ -0,0 +1,6 @@ +import { should } from 'chai'; + + +should(); + + diff --git a/test/unit/index.js b/test/unit/index.js new file mode 100644 index 00000000..f71ce0d7 --- /dev/null +++ b/test/unit/index.js @@ -0,0 +1,4 @@ +import 'source-map-support/register'; + +import './utils.js'; +import './editor'; diff --git a/test/unit/utils.js b/test/unit/utils.js new file mode 100644 index 00000000..2430ad72 --- /dev/null +++ b/test/unit/utils.js @@ -0,0 +1,93 @@ +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import xhrMock from 'xhr-mock'; + +import { httpGet, isValidBase64String } from '../../src/utils.js'; +import { utf8tob64, utf8tob64u } from 'jsrsasign'; + +import { randomFillSync } from 'crypto'; + +chai.use(chaiAsPromised); +chai.should(); + +describe('Generic utils', function() { + describe('isValidBase64String', function() { + // Generate random data of different sizes. + const data = []; + for(let i = 0; i < 1000; ++i) { + let bytes = new Uint8Array(i); + randomFillSync(bytes); + bytes = String.fromCharCode.apply(null, bytes); + + data.push({ + b64: utf8tob64(bytes), + b64u: utf8tob64u(bytes) + }); + } + + it('detects valid Base64 and Base64URL strings', function() { + data.forEach(d => { + isValidBase64String(d.b64, false).should.be.true; + isValidBase64String(d.b64u, false).should.be.true; + isValidBase64String(d.b64u).should.be.true; + isValidBase64String(d.b64u, true).should.be.true; + }); + }); + + it('fails on invalid Base64 and Base64 URL strings', function() { + data.forEach(d => { + if(d.b64.match(/[\+\/]/)) { + isValidBase64String(d.b64, true).should.be.false; + } + }); + }); + }); + + describe('httpGet', function() { + const url = '/'; + const reply = 'test'; + + beforeEach(() => xhrMock.setup()); + + afterEach(() => xhrMock.teardown()); + + it('fetches data with a GET request', function() { + xhrMock.get(url, { + status: 200, + reason: 'OK', + body: reply + }); + + return httpGet(url).should.eventually.equal(reply); + }); + + it('fetches data with a GET request and no cache', function() { + xhrMock.get(url, (req, res) => { + req.url().path.should.equal(url); + req.method().should.equal('GET'); + req.header('Cache-Control').should.equal('no-cache'); + + return res.status(200).body(reply); + }); + + return httpGet(url, false).should.eventually.equal(reply); + }); + + it('rejects promise on non-200 status codes', function() { + xhrMock.get(url, { + status: 404, + reason: 'Not Found' + }); + + return httpGet(url, false).should.eventually.be.rejected; + }); + + it('rejects promise on connection error', function() { + xhrMock.get(url, () => { + return Promise.reject(); + }); + + return httpGet(url, false).should.eventually.be.rejected; + }); + }); +}); diff --git a/webpack.website-tests.js b/webpack.website-tests.js new file mode 100644 index 00000000..b1dd910e --- /dev/null +++ b/webpack.website-tests.js @@ -0,0 +1,15 @@ +const merge = require('webpack-merge'); + +const common = require('./webpack.common.js'); + +module.exports = merge(common, { + entry: { + 'unit-tests': './test/unit/index.js', + 'functional-tests': './test/functional/index.js' + }, + output: { + filename: '[name].js', + path: __dirname + '/dist/test' + }, + target: 'node' +}); From cbafac0fcfa97aef425efa261e4331f058f0d09c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 31 Jan 2018 18:30:42 -0300 Subject: [PATCH 093/611] More tests. --- package.json | 4 + src/editor/index.js | 2 +- src/editor/jwt.js | 2 +- src/utils.js | 2 +- src/website/counter.js | 2 +- src/website/libraries.js | 2 +- src/website/smooth-scrolling.js | 2 +- test/unit/editor/jwt.js | 91 +++++---- test/unit/editor/public-key-download.js | 257 +++++++++++++++++++++++- webpack.common.js | 2 +- webpack.website-tests.js | 21 +- 11 files changed, 331 insertions(+), 56 deletions(-) diff --git a/package.json b/package.json index 1a4ae033..42a20562 100644 --- a/package.json +++ b/package.json @@ -26,13 +26,17 @@ "grunt-mocha-test": "^0.13.3", "grunt-webpack": "^3.0.2", "highlight.js": "^9.12.0", + "inject-loader": "^3.0.1", "isotope-layout": "^3.0.5", "jquery": "^3.2.1", "jsrsasign": "^8.0.4", "jstransformer-markdown-it": "^2.0.0", + "lodash": "^4.17.4", "loglevel": "^1.6.1", "mocha": "^5.0.0", "pug": "^2.0.0-rc.4", + "sinon": "^4.2.2", + "sinon-chai": "^2.14.0", "source-map-support": "^0.5.3", "stylus": "^0.54.5", "uglifyjs-webpack-plugin": "^1.1.6", diff --git a/src/editor/index.js b/src/editor/index.js index fa6f41ad..a9bdf9fe 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -36,7 +36,7 @@ import { decodedTabElement } from '../dom-elements.js'; -import * as log from 'loglevel'; +import log from 'loglevel'; // The event manager lets us enable/disable events as needed without // manually tracking them. Events that need to be disabled should be diff --git a/src/editor/jwt.js b/src/editor/jwt.js index 1207e3ac..56eb4176 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -8,7 +8,7 @@ import { utf8tohex } from 'jsrsasign'; -import * as log from 'loglevel'; +import log from 'loglevel'; export function sign(header, payload, diff --git a/src/utils.js b/src/utils.js index 18d7a09a..2b908fd6 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,5 +1,5 @@ import { KEYUTIL } from 'jsrsasign'; -import * as log from 'loglevel'; +import log from 'loglevel'; export function httpGet(url, cache = true) { return new Promise((resolve, reject) => { diff --git a/src/website/counter.js b/src/website/counter.js index 4e240f75..58da5802 100644 --- a/src/website/counter.js +++ b/src/website/counter.js @@ -5,7 +5,7 @@ import { httpGet } from '../utils.js'; import $ from 'jquery'; import jQuery from 'jquery'; import 'flipclock/compiled/flipclock.js'; -import * as log from 'loglevel'; +import log from 'loglevel'; const initialCount = 80482701; const pollIntervalWhenVisible = 5000; diff --git a/src/website/libraries.js b/src/website/libraries.js index a5e9e0d1..e1149581 100644 --- a/src/website/libraries.js +++ b/src/website/libraries.js @@ -7,7 +7,7 @@ import { } from './dom-elements.js'; import Isotope from 'isotope-layout'; -import * as log from 'loglevel'; +import log from 'loglevel'; const librariesGrid = new Isotope(librariesElement, { layoutMode: 'fitRows', diff --git a/src/website/smooth-scrolling.js b/src/website/smooth-scrolling.js index a3bd0f40..1cd0758b 100644 --- a/src/website/smooth-scrolling.js +++ b/src/website/smooth-scrolling.js @@ -2,7 +2,7 @@ import { menuScrollableLinks, navbarElement } from './dom-elements.js'; import { isWideScreen } from '../utils.js'; import $ from 'jquery'; -import * as log from 'loglevel'; +import log from 'loglevel'; // This is the only function that really requires jQuery, other than some // of the dependencies. Consider this when adding code that depends on diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index f77ab300..f3b2b8bf 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -3,21 +3,13 @@ import tokens from '../../../src/editor/default-tokens.js'; import { utf8tob64u, b64utob64 } from 'jsrsasign'; -import * as log from 'loglevel'; +import log from 'loglevel'; import { should } from 'chai'; should(); -describe('JWT (logging disabled, enable it for debugging)', function() { - before(function() { - log.disableAll(); - }); - - after(function() { - log.enableAll(); - }); - +describe('JWT', function() { it('detects tokens', function() { jwt.isToken('skdjf9238ujdhkf.asdfasdf2.sdsdffsfsd').should.be.false; jwt.isToken('skdjf9238ujdhkf.asdfasdf2').should.be.false; @@ -59,43 +51,50 @@ describe('JWT (logging disabled, enable it for debugging)', function() { jwt.verify(tokens.ps384.token, tokens.ps384.publicKey).should.be.true; }); - it('fails to verify invalid tokens', function() { - const split = tokens.hs256.token.split('.'); - const token = `${split[0]}.${split[1]}`; - const token2 = token + '.'; - - jwt.verify(token, tokens.hs256.secret).should.be.false; - jwt.verify(token2, tokens.hs256.secret).should.be.false; - - jwt.verify(tokens.hs256.token, tokens.hs256.secret + 'sdfasdf') - .should.be.false; - jwt.verify(tokens.hs256.token, 'sdfsdf' + tokens.hs256.secret) - .should.be.false; - jwt.verify(tokens.hs256.token, 'sdfsdf').should.be.false; - - jwt.verify(tokens.rs256.token, tokens.rs256.publicKey.replace('a','b')) - .should.be.false; - - jwt.verify(tokens.es256.token, tokens.es256.publicKey.replace('a','b')) - .should.be.false; - - jwt.verify(tokens.ps256.token, tokens.ps256.publicKey.replace('a','b')) - .should.be.false; - - const header = { - typ: 'JWT', - alg: 'none' - }; - const payload = { - sub: 'test' - }; + it('fails to verify invalid tokens ' + + '(logging temporarily disabled to hide exceptions)', function() { + log.disableAll(); - const token3 = `${utf8tob64u(JSON.stringify(header))}.` + - `${utf8tob64u(JSON.stringify(payload))}`; - - jwt.verify(token3, 'whatever').should.be.false; - jwt.verify(token3 + '.', 'whatever').should.be.false; - jwt.verify(token3 + '.' + split[2], 'whatever').should.be.false; + try { + const split = tokens.hs256.token.split('.'); + const token = `${split[0]}.${split[1]}`; + const token2 = token + '.'; + + jwt.verify(token, tokens.hs256.secret).should.be.false; + jwt.verify(token2, tokens.hs256.secret).should.be.false; + + jwt.verify(tokens.hs256.token, tokens.hs256.secret + 'sdfasdf') + .should.be.false; + jwt.verify(tokens.hs256.token, 'sdfsdf' + tokens.hs256.secret) + .should.be.false; + jwt.verify(tokens.hs256.token, 'sdfsdf').should.be.false; + + jwt.verify(tokens.rs256.token, tokens.rs256.publicKey.replace('a','b')) + .should.be.false; + + jwt.verify(tokens.es256.token, tokens.es256.publicKey.replace('a','b')) + .should.be.false; + + jwt.verify(tokens.ps256.token, tokens.ps256.publicKey.replace('a','b')) + .should.be.false; + + const header = { + typ: 'JWT', + alg: 'none' + }; + const payload = { + sub: 'test' + }; + + const token3 = `${utf8tob64u(JSON.stringify(header))}.` + + `${utf8tob64u(JSON.stringify(payload))}`; + + jwt.verify(token3, 'whatever').should.be.false; + jwt.verify(token3 + '.', 'whatever').should.be.false; + jwt.verify(token3 + '.' + split[2], 'whatever').should.be.false; + } finally { + log.enableAll(); + } }); it('signs tokens (HS256)', function() { diff --git a/test/unit/editor/public-key-download.js b/test/unit/editor/public-key-download.js index 9964a72b..8b9a453d 100644 --- a/test/unit/editor/public-key-download.js +++ b/test/unit/editor/public-key-download.js @@ -1,6 +1,259 @@ -import { should } from 'chai'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import _ from 'lodash'; +import sinon from 'sinon'; +import sinonChai from 'sinon-chai'; +import publicKeyDownloadInjector from + 'inject-loader!../../../src/editor/public-key-download.js'; -should(); +chai.use(chaiAsPromised); +chai.use(sinonChai); +chai.should(); +describe('Public key downloader', function() { + const baseUrl = '/'; + const decodedBaseToken = { + header: { + typ: 'JWT', + alg: 'RS256' + }, + payload: { + sub: 'test' + } + }; + + const jwks = { + keys: [{ + kid: 1, + x5c: ['test-x5c-key'] + }] + }; + + function httpGetMock(data) { + return (url) => data ? Promise.resolve(data) : Promise.reject(); + } + + it('Finds keys in iss + .well-known URL', function(done) { + const decodedToken = _.defaultsDeep({}, decodedBaseToken, { + header: { + kid: 1 + }, + payload: { + iss: baseUrl + } + }); + + const httpGetStub = sinon.stub().resolves(JSON.stringify(jwks)); + const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ + '../utils.js': { + httpGet: httpGetStub + } + }).downloadPublicKeyIfPossible; + + downloadPublicKeyIfPossible(decodedToken) + .should.eventually.include(jwks.keys[0].x5c[0]) + .then(() => { + httpGetStub.should.have.been + .calledWith(baseUrl + '.well-known/jwks.json'); + }).should.notify(done); + }); + + it('Finds keys in jwk header claim', function(done) { + const decodedToken = _.defaultsDeep({}, decodedBaseToken, { + header: { + kid: 1, + jwk: jwks.keys[0] + } + }); + + const httpGetStub = sinon.stub().rejects('Should not be called'); + const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ + '../utils.js': { + httpGet: httpGetStub + } + }).downloadPublicKeyIfPossible; + + downloadPublicKeyIfPossible(decodedToken) + .should.eventually.include(jwks.keys[0].x5c[0]) + .then(() => { + httpGetStub.should.have.callCount(0); + }).should.notify(done); + }); + + it('Finds keys in jku header claim', function(done) { + const decodedToken = _.defaultsDeep({}, decodedBaseToken, { + header: { + kid: 1, + jku: baseUrl + } + }); + + const httpGetStub = sinon.stub().resolves(JSON.stringify(jwks)); + const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ + '../utils.js': { + httpGet: httpGetStub + } + }).downloadPublicKeyIfPossible; + + downloadPublicKeyIfPossible(decodedToken) + .should.eventually.include(jwks.keys[0].x5c[0]) + .then(() => { + httpGetStub.should.have.been.calledWith(baseUrl); + }).should.notify(done); + }); + + it('Finds keys in x5u header claim', function(done) { + const decodedToken = _.defaultsDeep({}, decodedBaseToken, { + header: { + x5u: baseUrl + } + }); + + const httpGetStub = sinon.stub().resolves(jwks.keys[0].x5c[0]); + const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ + '../utils.js': { + httpGet: httpGetStub + } + }).downloadPublicKeyIfPossible; + + downloadPublicKeyIfPossible(decodedToken) + .should.eventually.include(jwks.keys[0].x5c[0]) + .then(() => { + httpGetStub.should.have.been.calledWith(baseUrl); + }).should.notify(done); + }); + + it('Finds keys in x5c string header claim', function(done) { + const decodedToken = _.defaultsDeep({}, decodedBaseToken, { + header: { + x5c: jwks.keys[0].x5c[0] + } + }); + + const httpGetStub = sinon.stub().rejects('Should not be called'); + const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ + '../utils.js': { + httpGet: httpGetStub + } + }).downloadPublicKeyIfPossible; + + downloadPublicKeyIfPossible(decodedToken) + .should.eventually.include(jwks.keys[0].x5c[0]) + .then(() => { + httpGetStub.should.have.callCount(0); + }).should.notify(done); + }); + + it('Finds keys in x5c array header claim', function(done) { + const decodedToken = _.defaultsDeep({}, decodedBaseToken, { + header: { + x5c: jwks.keys[0].x5c + } + }); + + const httpGetStub = sinon.stub().rejects('Should not be called'); + const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ + '../utils.js': { + httpGet: httpGetStub + } + }).downloadPublicKeyIfPossible; + + downloadPublicKeyIfPossible(decodedToken) + .should.eventually.include(jwks.keys[0].x5c[0]) + .then(() => { + httpGetStub.should.have.callCount(0); + }).should.notify(done); + }); + + it('Rejects the promise when HTTP request fails', function(done) { + const decodedToken = _.defaultsDeep({}, decodedBaseToken, { + header: { + kid: 1, + jku: baseUrl + } + }); + + const httpGetStub = sinon.stub().rejects('Failure'); + const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ + '../utils.js': { + httpGet: httpGetStub + } + }).downloadPublicKeyIfPossible; + + downloadPublicKeyIfPossible(decodedToken) + .should.be.rejected + .then(() => { + httpGetStub.should.have.been.calledWith(baseUrl); + }).should.notify(done); + }); + + describe('Rejects the promise when invalid data ' + + 'is in jku claim URL', function() { + const decodedToken = _.defaultsDeep({}, decodedBaseToken, { + header: { + kid: 1, + jku: baseUrl + } + }); + + let httpGetStub; + const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ + '../utils.js': { + httpGet: url => httpGetStub(url) + } + }).downloadPublicKeyIfPossible; + + it('when the keys object is not an array', function(done) { + httpGetStub = sinon.stub().resolves({ + keys: {} + }); + + downloadPublicKeyIfPossible(decodedToken) + .should.be.rejected + .then(() => { + httpGetStub.should.have.been.calledWith(baseUrl); + }).should.notify(done); + }); + + it('when the keys object does not exist', function(done) { + httpGetStub = sinon.stub().resolves({ + }); + + downloadPublicKeyIfPossible(decodedToken) + .should.be.rejected + .then(() => { + httpGetStub.should.have.been.calledWith(baseUrl); + }).should.notify(done); + }); + + it('when there is no kid', function(done) { + httpGetStub = sinon.stub().resolves({ + keys: [{ + x5c: jwks.keys[0].x5c + }] + }); + + downloadPublicKeyIfPossible(decodedToken) + .should.be.rejected + .then(() => { + httpGetStub.should.have.been.calledWith(baseUrl); + }).should.notify(done); + }); + + it('when there are no x5u or x5c claims', function(done) { + httpGetStub = sinon.stub().resolves({ + keys: [{ + kid: 1 + }] + }); + + downloadPublicKeyIfPossible(decodedToken) + .should.be.rejected + .then(() => { + httpGetStub.should.have.been.calledWith(baseUrl); + }).should.notify(done); + }); + }); +}); diff --git a/webpack.common.js b/webpack.common.js index 44416901..fb58690d 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -27,4 +27,4 @@ module.exports = { jQuery: "jquery" }) ] -}; \ No newline at end of file +}; diff --git a/webpack.website-tests.js b/webpack.website-tests.js index b1dd910e..69715d9a 100644 --- a/webpack.website-tests.js +++ b/webpack.website-tests.js @@ -11,5 +11,24 @@ module.exports = merge(common, { filename: '[name].js', path: __dirname + '/dist/test' }, - target: 'node' + target: 'node', + module: { + rules: [{ + test: /\.js$/, + exclude: /(node_modules|bower_components)/, + use: { + loader: 'babel-loader', + options: { + presets: [[ + '@babel/preset-env', { + targets: { + browsers: ["last 5 versions", "safari >= 7"] + }, + modules: 'commonjs' + } + ]] + } + } + }] + } }); From 5d0384b9839e19ec30186a72917032bc9d45de24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 1 Feb 2018 13:53:23 -0300 Subject: [PATCH 094/611] Some functional tests. --- Gruntfile.js | 36 ++++++++-- package.json | 4 ++ test/functional/editor.js | 0 test/functional/index.js | 1 - test/functional/libraries.js | 69 +++++++++++++++++++ test/functional/utils.js | 42 +++++++++++ ...-tests.js => webpack.website-unit-tests.js | 3 +- 7 files changed, 147 insertions(+), 8 deletions(-) create mode 100644 test/functional/editor.js delete mode 100644 test/functional/index.js create mode 100644 test/functional/libraries.js create mode 100644 test/functional/utils.js rename webpack.website-tests.js => webpack.website-unit-tests.js (87%) diff --git a/Gruntfile.js b/Gruntfile.js index f3120c6e..3bd4bcaf 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -6,6 +6,8 @@ module.exports = grunt => { grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-mocha-test'); + grunt.loadNpmTasks('grunt-contrib-connect'); + grunt.loadNpmTasks('grunt-exec'); grunt.initConfig({ clean: { @@ -100,7 +102,7 @@ module.exports = grunt => { websiteDev: require('./webpack.website-dev.js'), extensionProd: require('./webpack.extension-prod.js'), extensionDev: require('./webpack.extension-dev.js'), - test: require('./webpack.website-tests.js') + unitTests: require('./webpack.website-unit-tests.js') }, watch: { @@ -155,11 +157,27 @@ module.exports = grunt => { }, mochaTest: { - all: { + unit: { options: {}, - src: ['dist/test/*.js'] + src: ['dist/test/unit-tests.js'] + }, + functional: { + options: { + // Higher default timeout to account for some animations + timeout: 10000 + }, + src: ['test/functional/**.js'] + } + }, + + connect: { + functionalTests: { + options: { + hostname: '127.0.0.1', + base: 'dist/website', + } } - } + }, }); grunt.registerTask('build-website-views', [ @@ -207,7 +225,15 @@ module.exports = grunt => { 'build-extension-dev' ]); - grunt.registerTask('test', ['webpack:test', 'mochaTest']); + grunt.registerTask('unit-tests', ['webpack:unitTests', 'mochaTest:unit']); + + grunt.registerTask('functional-tests', [ + 'build-website-dev', + 'connect:functionalTests', + 'mochaTest:functional' + ]); + + grunt.registerTask('test', ['unit-tests', 'functional-tests']); grunt.registerTask('default', ['build-dev', 'watch']); }; diff --git a/package.json b/package.json index 42a20562..01df0d38 100644 --- a/package.json +++ b/package.json @@ -13,16 +13,19 @@ "babel-loader": "^8.0.0-beta.0", "bootstrap": "^3.3.7", "chai": "^4.1.2", + "chai-arrays": "^2.0.0", "chai-as-promised": "^7.1.1", "codemirror": "^5.33.0", "flipclock": "^0.7.8", "grunt": "^1.0.1", "grunt-cli": "^1.2.0", "grunt-contrib-clean": "^1.1.0", + "grunt-contrib-connect": "^1.0.2", "grunt-contrib-copy": "^1.0.0", "grunt-contrib-pug": "^1.0.0", "grunt-contrib-stylus": "^1.2.0", "grunt-contrib-watch": "^1.0.0", + "grunt-exec": "^3.0.0", "grunt-mocha-test": "^0.13.3", "grunt-webpack": "^3.0.2", "highlight.js": "^9.12.0", @@ -35,6 +38,7 @@ "loglevel": "^1.6.1", "mocha": "^5.0.0", "pug": "^2.0.0-rc.4", + "puppeteer": "^1.0.0", "sinon": "^4.2.2", "sinon-chai": "^2.14.0", "source-map-support": "^0.5.3", diff --git a/test/functional/editor.js b/test/functional/editor.js new file mode 100644 index 00000000..e69de29b diff --git a/test/functional/index.js b/test/functional/index.js deleted file mode 100644 index fcfbfda1..00000000 --- a/test/functional/index.js +++ /dev/null @@ -1 +0,0 @@ -import 'source-map-support/register'; diff --git a/test/functional/libraries.js b/test/functional/libraries.js new file mode 100644 index 00000000..294cf855 --- /dev/null +++ b/test/functional/libraries.js @@ -0,0 +1,69 @@ +const chai = require('chai'); +const chaiAsPromised = require('chai-as-promised'); +const chaiArrays = require('chai-arrays'); + +const utils = require('./utils.js'); + +const isVisible = utils.isVisible; + +chai.use(chaiAsPromised); +chai.use(chaiArrays); +const expect = chai.expect; + +describe('Libraries', function() { + before(utils.launchBrowser); + + after(utils.closeBrowser); + + it('Displays libraries when clicking on navbar', async function() { + await this.page.click('a[href="#libraries-io"]'); + // Wait for scroll + await this.page.waitFor(3000); + expect(await this.page.$eval('#libraries-io', isVisible)).to.be.true; + }); + + it('Displays a sorted library filter', async function() { + const libraries = await this.page.$eval('#libraries-select', select => { + const result = []; + + Array.prototype.forEach.call(select.children, element => { + result.push(element.value); + }); + + return result; + }); + + expect(libraries).to.be.sorted; + }); + + it('Hides and displays libraries using filters', async function() { + await this.page.select('#libraries-select', '.php'); + // Wait for animation + await this.page.waitFor(2000); + + expect(await this.page.$eval('.php', isVisible)).to.be.true; + expect(await this.page.$eval('.net', isVisible)).to.be.false; + expect(await this.page.$eval('.python', isVisible)).to.be.false; + + await this.page.waitForSelector('.net', { + hidden: true + }); + await this.page.waitForSelector('.python', { + hidden: true + }); + + await this.page.select('#libraries-select', '*'); + // Wait for animation + await this.page.waitFor(2000); + + await this.page.waitForSelector('.net', { + visible: true + }); + await this.page.waitForSelector('.php', { + visible: true + }); + await this.page.waitForSelector('.python', { + visible: true + }); + }); +}); diff --git a/test/functional/utils.js b/test/functional/utils.js new file mode 100644 index 00000000..c125a470 --- /dev/null +++ b/test/functional/utils.js @@ -0,0 +1,42 @@ +const puppeteer = require('puppeteer'); + +// https://stackoverflow.com/questions/5353934/check-if-element-is-visible-on-screen +function isVisible(elm) { + try { + const rect = elm.getBoundingClientRect(); + const viewHeight = Math.max(document.documentElement.clientHeight, + window.innerHeight); + return !(rect.bottom < 0 || rect.top - viewHeight >= 0) && + rect.width > 0 && + rect.height > 0; + } catch(e) { + return false; + } +} + +async function launchBrowser() { + // Initial navigation may take long due to outside requests. + this.timeout(30000); + + this.browser = await puppeteer.launch({ + //args: ['--no-sandbox'], + headless: false, + executablePath: '/usr/bin/chromium' + }); + this.page = await this.browser.newPage(); + await this.page.setViewport({ + width: 1920, + height: 1080 + }); + await this.page.goto('http://localhost:8000/'); +} + +async function closeBrowser() { + await this.browser.close(); +} + +module.exports = { + isVisible: isVisible, + launchBrowser: launchBrowser, + closeBrowser: closeBrowser +}; diff --git a/webpack.website-tests.js b/webpack.website-unit-tests.js similarity index 87% rename from webpack.website-tests.js rename to webpack.website-unit-tests.js index 69715d9a..6c995164 100644 --- a/webpack.website-tests.js +++ b/webpack.website-unit-tests.js @@ -4,8 +4,7 @@ const common = require('./webpack.common.js'); module.exports = merge(common, { entry: { - 'unit-tests': './test/unit/index.js', - 'functional-tests': './test/functional/index.js' + 'unit-tests': './test/unit/index.js' }, output: { filename: '[name].js', From 94fcb62360f3b226e9fbb452ce216b1eb534695f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 1 Feb 2018 19:10:03 -0300 Subject: [PATCH 095/611] More functional tests. --- test/functional/libraries.js | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/test/functional/libraries.js b/test/functional/libraries.js index 294cf855..afeddc3a 100644 --- a/test/functional/libraries.js +++ b/test/functional/libraries.js @@ -66,4 +66,44 @@ describe('Libraries', function() { visible: true }); }); + + it('Shows a repo link for each library', async function() { + expect(await this.page.$$eval('.repository a', elements => { + return Array.prototype.every.call(elements, e => { + return !!e.href; + }); + })).to.be.true; + }); + + it('Displays libraries stacked on top of each other ' + + 'for small screens', async function() { + try { + await this.page.setViewport({ + width: 375, + height: 1080 + }); + + const libraries = await this.page.$$('article.accordion'); + + let last = await libraries[0].boundingBox(); + const result = await Promise.all(libraries.slice(1).map(async element => { + const box = await element.boundingBox(); + const result = box.x === last.x && box.y > last.y; + last = box; + return result; + })); + + expect(result.every(value => value)).to.be.true; + } finally { + await this.page.setViewport({ + width: 1920, + height: 1080 + }); + } + }); + + it('Sets the right classes when the vulnerability is and ' + + 'is not displayed ', async function() { + + }); }); From 9bf304757f9267707aa2792949d591ee87814aaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 5 Feb 2018 01:58:47 -0300 Subject: [PATCH 096/611] More functional tests. --- test/functional/libraries.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test/functional/libraries.js b/test/functional/libraries.js index afeddc3a..9c9fb4fc 100644 --- a/test/functional/libraries.js +++ b/test/functional/libraries.js @@ -104,6 +104,31 @@ describe('Libraries', function() { it('Sets the right classes when the vulnerability is and ' + 'is not displayed ', async function() { + expect(await this.page.$$eval('.panel-wrap', elements => { + function getLibraryName(panelWrapElement) { + return panelWrapElement.parentNode + .querySelector('h3') + .firstChild + .textContent; + } + const result = []; + + Array.prototype.forEach.call(elements, el => { + const versionPresent = !!el.querySelector('.version'); + const panelBodyElement = el.querySelector('.panel-body'); + const mversionPresent = panelBodyElement.classList.contains('mversion'); + + if((versionPresent && mversionPresent) || + (!versionPresent && !mversionPresent)) { + // All good + return; + } + + result.push(getLibraryName(el)); + }); + + return result; + })).to.be.empty; }); }); From 5ae39e0fcce5c5041fe9ffefeec31209a7c6e0f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 5 Feb 2018 21:25:58 -0300 Subject: [PATCH 097/611] More functional tests. --- src/editor/index.js | 2 +- src/editor/instances.js | 8 +++ test/functional/editor.js | 113 ++++++++++++++++++++++++++++++++++++++ test/functional/utils.js | 10 +++- 4 files changed, 129 insertions(+), 4 deletions(-) diff --git a/src/editor/index.js b/src/editor/index.js index a9bdf9fe..cd8bd296 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -368,7 +368,7 @@ function setupEvents() { // HMAC secret, when changed the encoded token must be updated. eventManager.addDomEvent(secretInput, 'input', encodeToken); // Base64 checkbox, when changes the encoded token must be updated. - eventManager.addDomEvent(secretBase64Checkbox, 'input', encodeToken); + eventManager.addDomEvent(secretBase64Checkbox, 'change', encodeToken); // Private key, when changed the encoded token must be updated. eventManager.addDomEvent(privateKeyTextArea, 'input', encodeToken); // Public key, when changed the encoded token must NOT be updated diff --git a/src/editor/instances.js b/src/editor/instances.js index c88551fc..61c59e5f 100644 --- a/src/editor/instances.js +++ b/src/editor/instances.js @@ -28,3 +28,11 @@ const tokenEditorOptions = Object.assign({}, jsonEditorOptions, { export const headerEditor = new CodeMirror(headerElement, jsonEditorOptions); export const payloadEditor = new CodeMirror(payloadElement, jsonEditorOptions); export const tokenEditor = new CodeMirror(editorElement, tokenEditorOptions); + +// Expose instances as globals for functional tests. +if(!window.test) { + window.test = {}; +} +window.test.headerEditor = headerEditor; +window.test.payloadEditor = payloadEditor; +window.test.tokenEditor = tokenEditor; diff --git a/test/functional/editor.js b/test/functional/editor.js index e69de29b..61bbe0c4 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -0,0 +1,113 @@ +const chai = require('chai'); +const chaiAsPromised = require('chai-as-promised'); +const chaiArrays = require('chai-arrays'); + +const utils = require('./utils.js'); + +const isVisible = utils.isVisible; + +chai.use(chaiAsPromised); +chai.use(chaiArrays); +const expect = chai.expect; + +describe('Editor', function() { + before(utils.launchBrowser); + + after(utils.closeBrowser); + + it('Displays editor when clicking on navbar', async function() { + await this.page.click('a[href="#debugger-io"]'); + // Wait for scroll + await this.page.waitFor(3000); + expect(await this.page.$eval('#debugger-io', isVisible)).to.be.true; + }); + + it('HS256 should be selected by default', async function() { + const selected = await this.page.$eval('#algorithm-select', select => { + return select.options[select.selectedIndex].value; + }); + + expect(selected).to.equal('HS256'); + }); + + it('Should display a tooltip with a human readable ' + + 'date on claim hover', async function() { + await this.page.mouse.move(0, 0); + + expect(await this.page.$eval('#js-payload-tooltip', isVisible)).to.be.false; + + const iatPos = await this.page.evaluate(() => { + return window.test.payloadEditor.charCoords({ + line: 4, + pos: 3 + }, 'window'); + }); + + await this.page.mouse.move(iatPos.left, iatPos.top); + + expect(await this.page.$eval('#js-payload-tooltip', isVisible)).to.be.true; + }); + + it('Displays a valid token by default', async function() { + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + }); + + it('Shows invalid token when a valid token is edited ' + + 'in the left pane', async function() { + await this.page.evaluate(() => { + let token = window.test.tokenEditor.getValue(); + token += 'asdf23'; + window.test.tokenEditor.setValue(token); + }); + + const invalid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('invalid-token') && + status.textContent.indexOf('invalid') !== -1; + }); + + expect(invalid).to.be.true; + }); + + it('Updates the token when the secret changes', async function() { + const oldToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); + + const secretInput = await this.page.$('input[name="secret"]'); + + await secretInput.type('asdfasdf'); + + const newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); + + expect(oldToken).to.not.equal(newToken); + }); + + it('Updates the token when the Base64 checkbox changes', async function() { + const oldToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); + + await this.page.click('#is-base64-encoded'); + + let newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); + + expect(oldToken).to.not.equal(newToken); + + await this.page.click('#is-base64-encoded'); + + newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); + + expect(oldToken).to.equal(newToken); + }); +}); diff --git a/test/functional/utils.js b/test/functional/utils.js index c125a470..e1b428f4 100644 --- a/test/functional/utils.js +++ b/test/functional/utils.js @@ -1,4 +1,5 @@ const puppeteer = require('puppeteer'); +const os = require('os'); // https://stackoverflow.com/questions/5353934/check-if-element-is-visible-on-screen function isVisible(elm) { @@ -18,11 +19,14 @@ async function launchBrowser() { // Initial navigation may take long due to outside requests. this.timeout(30000); - this.browser = await puppeteer.launch({ - //args: ['--no-sandbox'], + const options = os.hostname() === 'i7-4790K-LIN' ? { headless: false, executablePath: '/usr/bin/chromium' - }); + } : { + args: ['--no-sandbox'] + }; + + this.browser = await puppeteer.launch(options); this.page = await this.browser.newPage(); await this.page.setViewport({ width: 1920, From e8b02a4137c93474ac71370fe164da75c64b03b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 6 Feb 2018 20:49:32 -0300 Subject: [PATCH 098/611] More functional tests. --- src/editor/default-tokens.js | 8 +- test/functional/default-tokens.js | 101 +++++++++++++ test/functional/editor.js | 236 +++++++++++++++++++++++++++--- test/functional/tokens.js | 14 ++ test/functional/utils.js | 2 +- views/token-editor-common.pug | 2 +- 6 files changed, 340 insertions(+), 23 deletions(-) create mode 100644 test/functional/default-tokens.js create mode 100644 test/functional/tokens.js diff --git a/src/editor/default-tokens.js b/src/editor/default-tokens.js index 3bf7144d..1b095d5f 100644 --- a/src/editor/default-tokens.js +++ b/src/editor/default-tokens.js @@ -77,11 +77,11 @@ export default { privateKey: ecPrivateKey, publicKey: ecPublicKey }, - es512: { + /*es512: { token: '', privateKey: ecPrivateKey, publicKey: ecPublicKey - }, + },*/ ps256: { token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.P9_X1ctIxnnoUpKSWpYw3rF62e-d8LXe3sETuLn4Lhigw5OQhi-mBBKoBMneHy4kimS84zxnMby0FYo9wKM3I3pEg8Qrz0Q00tNhKCwOnZ7Q-e86sW1luK1z82tufF-sZ9_BY_LGQsym0lQmQaHFzLmEDXnOzWsjUThHGVJTI64', privateKey: rsaPrivateKey, @@ -92,10 +92,10 @@ export default { privateKey: rsaPrivateKey, publicKey: rsaPublicKey }, - ps512: { + /*ps512: { token: '', privateKey: rsaPrivateKey, publicKey: rsaPublicKey - } + }*/ }; diff --git a/test/functional/default-tokens.js b/test/functional/default-tokens.js new file mode 100644 index 00000000..a6aa9666 --- /dev/null +++ b/test/functional/default-tokens.js @@ -0,0 +1,101 @@ +// Yes, all keys here are supposed to be exposed, you can commit +// them safely to GitHub. + +const rsaPrivateKey = +`-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw +33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW ++jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB +AoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS +3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp +uGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE +2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0 +GAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K +Su5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY +6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5 +fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523 +Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP +FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw== +-----END RSA PRIVATE KEY-----`; + +const rsaPublicKey = +`-----BEGIN PUBLIC KEY----- +MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd +UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs +HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D +o2kQ+X5xK9cipRgEKwIDAQAB +-----END PUBLIC KEY-----`; + +const ecPrivateKey = +`-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2 +OF/2NxApJCzGCEDdfSp6VQO30hyhRANCAAQRWz+jn65BtOMvdyHKcvjBeBSDZH2r +1RTwjmYSi9R/zpBnuQ4EiMnCqfMPWiZqB4QdbAd0E7oH50VpuZ1P087G +-----END PRIVATE KEY-----`; + +const ecPublicKey = +`-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVs/o5+uQbTjL3chynL4wXgUg2R9 +q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== +-----END PUBLIC KEY-----`; + +module.exports = { + hs256: { + token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.39jkN-bckg4fbZQEb0xHIxzYL9qI_g4c4WyzEYNHZok', + secret: 'secret' + }, + hs384: { + token: 'eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.np_8QucI7cN6tJo0Fvm3i_eVQEHraSJPRC87yq2UQb77gRWMeeca8zDVIaTlVuZk', + secret: 'secret' + }, + hs512: { + token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.nZU_gPcMXkWpkCUpJceSxS7lSickF0tTImHhAR949Z-Nt69LgW8G6lid-mqd9B579tYM8C4FN2jdhR2VRMsjtA', + secret: 'secret' + }, + rs256: { + token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.TCYt5XsITJX1CxPCT8yAV-TVkIEq_PbChOMqsLfRoPsnsgw5WEuts01mq-pQy7UJiN5mgRxD-WUcX16dUEMGlv50aqzpqh4Qktb3rk-BuQy72IFLOqV0G_zS245-kronKb78cPN25DGlcTwLtjPAYuNzVBAh4vGHSrQyHUdBBPM', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + rs384: { + token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.CN9hqUMdVb5LGo06Geb8ap1qYfbJ4rEZIMqTE9gxA2m6GGmsXkznRxzoFpAzQUey9q5HehRTk_-TxYydN3QtFPfrTbAHep7PLhp3XhdvTJ1ok__UBjv4aP6UWTF-Rflr3qeC18LdlM4nyKL7ZwSGDzytWihGod5vn4GAXErUUE4', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + rs512: { + token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.MejLezWY6hjGgbIXkq6Qbvx_-q5vWaTR6qPiNHphvla-XaZD3up1DN6Ib5AEOVtuB3fC9l-0L36noK4qQA79lhpSK3gozXO6XPIcCp4C8MU_ACzGtYe7IwGnnK3Emr6IHQE0bpGinHX1Ak1pAuwJNawaQ6Nvmz2ozZPsyxmiwoo', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + es256: { + token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA', + privateKey: ecPrivateKey, + publicKey: ecPublicKey + }, + es384: { + token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.bmnmBALgkWpJ_wRTj6gJpmEpq6SzvYlgViuNTTHxJYSLseeRyjkIAXlJHT1s1ygi3UCzh4jfIymjHOlqVFIk1A', + privateKey: ecPrivateKey, + publicKey: ecPublicKey + }, + /*es512: { + token: '', + privateKey: ecPrivateKey, + publicKey: ecPublicKey + },*/ + ps256: { + token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.P9_X1ctIxnnoUpKSWpYw3rF62e-d8LXe3sETuLn4Lhigw5OQhi-mBBKoBMneHy4kimS84zxnMby0FYo9wKM3I3pEg8Qrz0Q00tNhKCwOnZ7Q-e86sW1luK1z82tufF-sZ9_BY_LGQsym0lQmQaHFzLmEDXnOzWsjUThHGVJTI64', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + ps384: { + token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.oywIg-I6w59yw9jiPxewn5n2BhrD7hSifWSmzFKGBMPEMd0qweVNjlyxu2TodunPzlh49OW8QA0ygNRL9VQrWA3GXzb5FubNF4s7Y15QePx52anlvebzihx5-hR0UhKbVC0UODwYNMiY-v0L7iMbT9UvuSj0GAuZMxndo2Y2VFQ', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }, + /*ps512: { + token: '', + privateKey: rsaPrivateKey, + publicKey: rsaPublicKey + }*/ +}; + diff --git a/test/functional/editor.js b/test/functional/editor.js index 61bbe0c4..c9c90722 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -3,6 +3,8 @@ const chaiAsPromised = require('chai-as-promised'); const chaiArrays = require('chai-arrays'); const utils = require('./utils.js'); +const tokens = require('./tokens.js'); +const defaultTokens = require('./default-tokens.js'); const isVisible = utils.isVisible; @@ -10,7 +12,7 @@ chai.use(chaiAsPromised); chai.use(chaiArrays); const expect = chai.expect; -describe('Editor', function() { +describe.only('Editor', function() { before(utils.launchBrowser); after(utils.closeBrowser); @@ -30,6 +32,28 @@ describe('Editor', function() { expect(selected).to.equal('HS256'); }); + it('Should select default tokens when no changes have ' + + 'been made', async function() { + try { + await this.page.select('#algorithm-select', 'HS256'); + + const algs = await this.page.$eval('#algorithm-select', select => { + return Array.prototype.map.call(select.options, opt => opt.value); + }); + + for(const alg of algs) { + await this.page.select('#algorithm-select', alg); + const token = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); + + expect(defaultTokens[alg.toLowerCase()].token).to.equal(token); + } + } finally { + await this.page.select('#algorithm-select', 'HS256'); + } + }); + it('Should display a tooltip with a human readable ' + 'date on claim hover', async function() { await this.page.mouse.move(0, 0); @@ -73,41 +97,219 @@ describe('Editor', function() { expect(invalid).to.be.true; }); - it('Updates the token when the secret changes', async function() { + it('Updates the token when the header is edited', async function() { const oldToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue() }); - - const secretInput = await this.page.$('input[name="secret"]'); - await secretInput.type('asdfasdf'); - + await this.page.click('.js-header'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + + const header = { + alg: 'HS256', + typ: 'JWT', + test: 'test' + }; + await this.page.keyboard.type(JSON.stringify(header, null, 2), { + delay: 5 + }); + const newToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue() }); - expect(oldToken).to.not.equal(newToken); + expect(newToken).to.not.equal(oldToken); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; }); - it('Updates the token when the Base64 checkbox changes', async function() { + it('Updates the token when the payload is edited', async function() { const oldToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue() }); - - await this.page.click('#is-base64-encoded'); - - let newToken = await this.page.evaluate(() => { + + await this.page.click('.js-payload'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + + const payload = { + "sub": "1234567890", + "name": "John Doe", + "admin": true, + "iat": 1516239022, + "test": "test" + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: 5 + }); + + const newToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue() }); - expect(oldToken).to.not.equal(newToken); + expect(newToken).to.not.equal(oldToken); - await this.page.click('#is-base64-encoded'); + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - newToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue() + expect(valid).to.be.true; + }); + + it('Selects algorithm when header is edited', async function() { + const selectedBefore = + await this.page.$eval('#algorithm-select', select => { + return select.options[select.selectedIndex].value; + }); + + await this.page.click('.js-header'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + + const header = { + alg: 'HS384', + typ: 'JWT', + }; + await this.page.keyboard.type(JSON.stringify(header, null, 2), { + delay: 5 + }); + + const selectedAfter = + await this.page.$eval('#algorithm-select', select => { + return select.options[select.selectedIndex].value; + }); + + expect(selectedBefore).to.not.equal(selectedAfter); + expect(selectedAfter).to.equal('HS384'); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; }); - expect(oldToken).to.equal(newToken); + expect(valid).to.be.true; }); + + it('Should never revert to a default token after a non-default token ' + + 'is generated', async function() { + await this.page.select('#algorithm-select', 'HS256'); + + await this.page.click('.js-payload'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + + const payload = { + sub: 'test' + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: 5 + }); + + const algs = await this.page.$eval('#algorithm-select', select => { + return Array.prototype.map.call(select.options, opt => opt.value); + }); + + for(const alg of algs) { + await this.page.select('#algorithm-select', alg); + } + + const payloadInEditor = await this.page.evaluate(() => { + return JSON.parse(window.test.payloadEditor.getValue()); + }); + + expect(payload).to.deep.equal(payloadInEditor); + }); + + describe('HMAC', function() { + before(async function() { + await this.page.select('#algorithm-select', 'HS256'); + }); + + it('Updates the token when the secret changes', async function() { + const oldToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); + + const secretInput = await this.page.$('input[name="secret"]'); + + await secretInput.type('asdfasdf'); + + const newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); + + expect(oldToken).to.not.equal(newToken); + }); + + it('Updates the token when the Base64 checkbox changes', async function() { + const oldToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); + + await this.page.click('#is-base64-encoded'); + + let newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); + + expect(oldToken).to.not.equal(newToken); + + await this.page.click('#is-base64-encoded'); + + newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); + + expect(oldToken).to.equal(newToken); + }); + + describe('Decodes HS256/384/512 tokens', async function() { + const algs = Object.keys(tokens).filter(alg => alg.includes('hs')); + + for(const alg of algs) { + it(alg.toUpperCase(), async function() { + const secretInput = await this.page.$('input[name="secret"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await secretInput.type(tokens[alg].secret, { + delay: 5 + }); + + await this.page.click('.js-input'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(tokens[alg].token, { + delay: 5 + }); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + + const payload = await this.page.evaluate(() => { + return window.test.payloadEditor.getValue(); + }); + + expect(payload).to.include(alg + 'test'); + }); + } + }); + }); }); diff --git a/test/functional/tokens.js b/test/functional/tokens.js new file mode 100644 index 00000000..2f8dcd75 --- /dev/null +++ b/test/functional/tokens.js @@ -0,0 +1,14 @@ +module.exports = { + hs512: { + token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImhzNTEydGVzdCJ9.RVBLQLIZqA6n8prLoVLsxsYb0nGg1-q4j-qUOwN7zjCC9RwS3HlOG2bNUB6cTKS7WBRHScVXnmwCoeHP0gVtDA', + secret: 'secret' + }, + hs384: { + token: 'eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImhzMzg0dGVzdCJ9.xD9kvywowrJYO9Lo-zwXvmydjc6DkGtJHUWAmTjL144xSqExhnhUgoTG_04Lu4Ma', + secret: 'secret' + }, + hs256: { + token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImhzMjU2dGVzdCJ9.mNZ_thfG9tYoIoV7TD_CQG6sQRAfGJqmBdEbU_uf4-0', + secret: 'secret' + } +}; diff --git a/test/functional/utils.js b/test/functional/utils.js index e1b428f4..be499fef 100644 --- a/test/functional/utils.js +++ b/test/functional/utils.js @@ -20,7 +20,7 @@ async function launchBrowser() { this.timeout(30000); const options = os.hostname() === 'i7-4790K-LIN' ? { - headless: false, + //headless: false, executablePath: '/usr/bin/chromium' } : { args: ['--no-sandbox'] diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug index 2c480bf0..a23701ae 100644 --- a/views/token-editor-common.pug +++ b/views/token-editor-common.pug @@ -39,4 +39,4 @@ ) -.validation-status.js-signature \ No newline at end of file +.validation-status.js-signature From 8a19833eb4efe7a852140219b5a2130674ad79cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 6 Feb 2018 20:49:55 -0300 Subject: [PATCH 099/611] Remove '.only()' used for debugging. --- test/functional/editor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/functional/editor.js b/test/functional/editor.js index c9c90722..dca1167f 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -12,7 +12,7 @@ chai.use(chaiAsPromised); chai.use(chaiArrays); const expect = chai.expect; -describe.only('Editor', function() { +describe('Editor', function() { before(utils.launchBrowser); after(utils.closeBrowser); From 0d3b4c6e51c10148d1516b25b78d263935c4d579 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 8 Feb 2018 15:09:42 -0300 Subject: [PATCH 100/611] More functional tests (some failing). --- test/functional/editor.js | 354 +++++++++++++++++++++++++++++++++++++- test/functional/tokens.js | 45 +++++ 2 files changed, 397 insertions(+), 2 deletions(-) diff --git a/test/functional/editor.js b/test/functional/editor.js index dca1167f..8f5be256 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -274,7 +274,7 @@ describe('Editor', function() { expect(oldToken).to.equal(newToken); }); - describe('Decodes HS256/384/512 tokens', async function() { + describe('Decodes HS256/384/512 tokens', function() { const algs = Object.keys(tokens).filter(alg => alg.includes('hs')); for(const alg of algs) { @@ -311,5 +311,355 @@ describe('Editor', function() { }); } }); - }); + + it('Signs tokens with an empty secret', async function() { + const secretInput = await this.page.$('input[name="secret"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.press('Delete'); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + }); + }); + + describe('Public-key', function() { + describe('Decodes RS/ES/PS tokens', function() { + const algs = Object.keys(defaultTokens) + .filter(alg => !alg.includes('hs')); + + for(const alg of algs) { + it(alg.toUpperCase(), async function() { + await this.page.click('.js-input'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(tokens[alg].token, { + delay: 5 + }); + + const secretInput = await this.page.$('textarea[name="public-key"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await secretInput.type(tokens[alg].publicKey, { + delay: 5 + }); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + + const payload = await this.page.evaluate(() => { + return window.test.payloadEditor.getValue(); + }); + + expect(payload).to.include(alg + 'test'); + }); + } + }); + + describe('Encodes RS/ES/PS tokens', function() { + const algs = Object.keys(defaultTokens) + .filter(alg => !alg.includes('hs') && alg !== 'none'); + + for(const alg of algs) { + it(alg.toUpperCase(), async function() { + this.timeout(30000); + + await this.page.select('#algorithm-select', alg.toUpperCase()); + + const oldToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); + + await this.page.click('textarea[name="public-key"]'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(defaultTokens[alg].publicKey, { + delay: 5 + }); + + await this.page.click('textarea[name="private-key"]'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(defaultTokens[alg].privateKey, { + delay: 5 + }); + + await this.page.click('.js-header'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(JSON.stringify({ + alg: alg.toUpperCase(), + typ: 'JWT' + }, null, 2), { + delay: 5 + }); + + await this.page.click('.js-payload'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(JSON.stringify({ + sub: 'test' + }, null, 2), { + delay: 5 + }); + + const newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); + + expect(newToken).to.not.equal(oldToken); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + }); + } + }); + + describe('Should download public-keys when possible', function() { + before(function() { + + }); + + after(function() { + + }); + + it('iss URL + .well-known'); + it('jku'); + }); + + it('Clears the token when the header is edited and there ' + + 'is no private key', async function() { + const secretInput = await this.page.$('textarea[name="private-key"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.press('Delete'); + + await this.page.click('.js-header'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + + const header = { + alg: 'RS256', + typ: 'JWT', + test: 'test' + }; + await this.page.keyboard.type(JSON.stringify(header, null, 2), { + delay: 5 + }); + + const token = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); + + expect(token).to.be.empty; + }); + + it('Clears the token when the payload is edited and there ' + + 'is no private key', async function() { + const secretInput = await this.page.$('textarea[name="private-key"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.press('Delete'); + + await this.page.click('.js-payload'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + + const payload = { + sub: 'test' + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: 5 + }); + + const token = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); + + expect(token).to.be.empty; + }); + + it('Marks token as invalid when there is no public key', async function() { + await this.page.select('#algorithm-select', 'RS256'); + + await this.page.click('.js-input'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(tokens['rs256'].token, { + delay: 5 + }); + + const secretInput = await this.page.$('textarea[name="public-key"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await secretInput.type(tokens['rs256'].publicKey, { + delay: 5 + }); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.press('Delete'); + + const invalid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('invalid-token') && + status.textContent.indexOf('invalid') !== -1; + }); + + expect(invalid).to.be.true; + }); + + it('Marks token as invalid when the public key is wrong', async function() { + await this.page.select('#algorithm-select', 'RS256'); + + await this.page.click('.js-input'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(tokens['rs256'].token, { + delay: 5 + }); + + const secretInput = await this.page.$('textarea[name="public-key"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await secretInput.type(tokens['rs256'].publicKey, { + delay: 5 + }); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + + await secretInput.click(); + await this.page.keyboard.type('sdfasdf389972389', { + delay: 5 + }); + + const invalid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('invalid-token') && + status.textContent.indexOf('invalid') !== -1; + }); + + expect(invalid).to.be.true; + }); + + it('Marks token as valid when the public key is OK and private key is wrong'); + it('Marks token as valid when the public key is OK and private key is missing'); + }); + + it('Updates the header when the token algorithm ' + + 'is changed', async function() { + await this.page.select('#algorithm-select', 'HS256'); + + await this.page.click('.js-input'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(tokens.hs256.token, { + delay: 5 + }); + + await this.page.select('#algorithm-select', 'HS384'); + + const header = await this.page.evaluate(() => { + return JSON.parse(window.test.headerEditor.getValue()); + }); + + expect(header.alg).to.equal('HS384'); + }); + + it('Marks token as invalid when "alg" is "none"', async function() { + await this.page.click('.js-input'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(tokens.none.token, { + delay: 5 + }); + + const invalid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('invalid-token') && + status.textContent.indexOf('invalid') !== -1; + }); + + expect(invalid).to.be.true; + }); + + it('Saves last edited token', async function() { + await this.page.select('#algorithm-select', 'HS256'); + + const secretInput = await this.page.$('input[name="secret"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await secretInput.type('secret-test', { + delay: 5 + }); + + await this.page.click('.js-payload'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + + const payload = { + sub: 'test' + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: 5 + }); + + await this.page.reload(); + + const storedPayload = await this.page.evaluate(() => { + return JSON.parse(window.test.payloadEditor.getValue()); + }); + + expect(storedPayload).to.deep.equal(payload); + }); }); diff --git a/test/functional/tokens.js b/test/functional/tokens.js index 2f8dcd75..80873570 100644 --- a/test/functional/tokens.js +++ b/test/functional/tokens.js @@ -1,4 +1,21 @@ +const rsaPublicKey = +`-----BEGIN PUBLIC KEY----- +MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd +UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs +HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D +o2kQ+X5xK9cipRgEKwIDAQAB +-----END PUBLIC KEY-----`; + +const esPublicKey = +`-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVs/o5+uQbTjL3chynL4wXgUg2R9 +q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== +-----END PUBLIC KEY-----`; + module.exports = { + none: { + token: 'eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.' + }, hs512: { token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImhzNTEydGVzdCJ9.RVBLQLIZqA6n8prLoVLsxsYb0nGg1-q4j-qUOwN7zjCC9RwS3HlOG2bNUB6cTKS7WBRHScVXnmwCoeHP0gVtDA', secret: 'secret' @@ -10,5 +27,33 @@ module.exports = { hs256: { token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImhzMjU2dGVzdCJ9.mNZ_thfG9tYoIoV7TD_CQG6sQRAfGJqmBdEbU_uf4-0', secret: 'secret' + }, + rs256: { + token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzMjU2dGVzdCJ9.qEQ_Gi7jYveN-sg-nRol_y0ULB0rtGIOGdOly0SkMFpc3HUxnj8addm-0UNdrJYLJv3CsFpXj_HnldvgDxpk0XAw8ArbeK-jCoxNFqUGBSITsLXQY5Chs8dh80C4vhKwxFqzo1FVxT2RlZIp_wN9dteKelGG-IVFNAhIlcHsSdw', + publicKey: rsaPublicKey + }, + rs384: { + token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzMzg0dGVzdCJ9.YdJv8eHUfsheBaH8Y2OprzO8ewP4-wfuyCtYjx-vm-KybqPhfKDxaq9QsjYqNWPn7rZVnc843FL0G-0rSl2YDQG5QM0uW44jl20C5-LouloaSQ0Mg88Wj8-0kt8R22bXBeBc1tNuIezlna80pCvxZrZnVkphLGKlWXOu7tSwUVc', + publicKey: rsaPublicKey + }, + rs512: { + token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzNTEydGVzdCJ9.x6PkeyOYFCdmxV-JfsHmeVXad41h3AoyldaQVDaWJbD9SLXnz_hkbQ6KcUJGIzkLnL5KWuRc1IAYfa1lxk3ijWS0p42YKLbqdX3tXBvuaAr7bV8KM-rb_6RqhLqGXjkVJ8jjpCy0uu4VS3Yg0xojbm8sY6Jf-YbggRpFpvF_CxU', + publicKey: rsaPublicKey + }, + es256: { + token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImVzMjU2dGVzdCJ9.Ir41cyW-pc_pM2L0_cl0spnr8Y3GRUYKm7LfLhScI8SaPLfaQn9B7uES8OkYxu1YfudkYfgoFV_Bh1Qvu8lf7g', + publicKey: esPublicKey + }, + es384: { + token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImVzMzg0dGVzdCJ9.xy86p6ogINec1cucUmjEUIPtN2-kkg22lbVqGlLqYY4RRI5AVHv-UndXAfe6wBxpggV1GFH5gyacOs1TWs1uhQ', + publicKey: esPublicKey + }, + ps256: { + token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzMjU2dGVzdCJ9.jVQfrR2D8k3I5FsIBDW2zn1OINhemVA7T1izMSlYb-7MNlw4DrlcifJ0ilQwXHNw1rZI00OkGjeoJBNpArhEROCY8odXLosjvetRvfp0QPyH0mL5IehWcSsSAhJU0jL8FNQ44HBAUnTQ41llG6p1q7w7qIVcHnFmyqaXcFCP5B8', + publicKey: rsaPublicKey + }, + ps384: { + token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzMzg0dGVzdCJ9.yS13poMub8KhYAT3p_Sd7FBIH6DtKLf-aPaxlNnyWwWmYXJm75uxG1XJ6pwTNZ2Sw-nw_YyFALVpO3QyUPtK16ZkyyQ2CrJ6w0nfRL5Bi7uah8OKXZh5ykqK9hq_No83AAPK53O-NPkG5CSreaexHOpCPqdjruV7JWyHysGFA80', + publicKey: rsaPublicKey } }; From 42088713511c0bc44356618f293e482826c62d56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 8 Feb 2018 21:51:47 -0300 Subject: [PATCH 101/611] More functional tests. --- test/functional/editor.js | 254 +++++++++++++++++++++++++++----------- 1 file changed, 181 insertions(+), 73 deletions(-) diff --git a/test/functional/editor.js b/test/functional/editor.js index 8f5be256..5b566c04 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -336,6 +336,8 @@ describe('Editor', function() { for(const alg of algs) { it(alg.toUpperCase(), async function() { + this.timeout(20000); + await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); @@ -369,25 +371,18 @@ describe('Editor', function() { } }); - describe('Encodes RS/ES/PS tokens', function() { - const algs = Object.keys(defaultTokens) - .filter(alg => !alg.includes('hs') && alg !== 'none'); - - for(const alg of algs) { - it(alg.toUpperCase(), async function() { + describe('Encodes RS/ES/PS tokens', function() { + describe('RS/PS', async function() { + before(async function() { this.timeout(30000); - await this.page.select('#algorithm-select', alg.toUpperCase()); - - const oldToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - }); + await this.page.select('#algorithm-select', 'RS256'); await this.page.click('textarea[name="public-key"]'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(defaultTokens[alg].publicKey, { + await this.page.keyboard.type(defaultTokens['rs256'].publicKey, { delay: 5 }); @@ -395,45 +390,67 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(defaultTokens[alg].privateKey, { - delay: 5 - }); - - await this.page.click('.js-header'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(JSON.stringify({ - alg: alg.toUpperCase(), - typ: 'JWT' - }, null, 2), { - delay: 5 - }); - - await this.page.click('.js-payload'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(JSON.stringify({ - sub: 'test' - }, null, 2), { + await this.page.keyboard.type(defaultTokens['rs256'].privateKey, { delay: 5 }); + }); - const newToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - }); + const algs = + Object.keys(defaultTokens) + .filter(alg => alg.includes('rs') || alg.includes('ps')); + + for(const alg of algs) { + it(alg.toUpperCase(), async function() { + this.timeout(30000); + + await this.page.evaluate(token => { + window.test.tokenEditor.setValue(token); + }, defaultTokens[alg].token); + + await this.page.select('#algorithm-select', alg.toUpperCase()); + + const oldToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); + + await this.page.click('.js-header'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(JSON.stringify({ + alg: alg.toUpperCase(), + typ: 'JWT' + }, null, 2), { + delay: 5 + }); + + await this.page.click('.js-payload'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(JSON.stringify({ + sub: 'test' + }, null, 2), { + delay: 5 + }); + + const newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); + + expect(newToken).to.not.be.empty; + expect(newToken).to.not.equal(oldToken); + + const valid = await this.page.$eval('.validation-status', + status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - expect(newToken).to.not.equal(oldToken); - - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; + expect(valid).to.be.true; }); - - expect(valid).to.be.true; - }); - } + } + }); }); describe('Should download public-keys when possible', function() { @@ -450,7 +467,9 @@ describe('Editor', function() { }); it('Clears the token when the header is edited and there ' + - 'is no private key', async function() { + 'is no private key', async function() { + await this.page.select('#algorithm-select', 'RS256'); + const secretInput = await this.page.$('textarea[name="private-key"]'); await secretInput.click(); await this.page.keyboard.down('ControlLeft'); @@ -481,33 +500,37 @@ describe('Editor', function() { it('Clears the token when the payload is edited and there ' + 'is no private key', async function() { - const secretInput = await this.page.$('textarea[name="private-key"]'); - await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.press('Delete'); - - await this.page.click('.js-payload'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); - - const payload = { - sub: 'test' - }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: 5 - }); - - const token = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - }); - - expect(token).to.be.empty; + await this.page.select('#algorithm-select', 'RS256'); + + const secretInput = await this.page.$('textarea[name="private-key"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.press('Delete'); + + await this.page.click('.js-payload'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + + const payload = { + sub: 'test' + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: 5 + }); + + const token = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); + + expect(token).to.be.empty; }); it('Marks token as invalid when there is no public key', async function() { + this.timeout(20000); + await this.page.select('#algorithm-select', 'RS256'); await this.page.click('.js-input'); @@ -588,8 +611,91 @@ describe('Editor', function() { expect(invalid).to.be.true; }); - it('Marks token as valid when the public key is OK and private key is wrong'); - it('Marks token as valid when the public key is OK and private key is missing'); + it('Marks token as valid when the public key is OK and private ' + + 'key is wrong', async function() { + this.timeout(30000); + + await this.page.select('#algorithm-select', 'RS256'); + + const secretInput = await this.page.$('textarea[name="public-key"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await secretInput.type(defaultTokens['rs256'].publicKey, { + delay: 5 + }); + + const privateKeyInput = await this.page.$('textarea[name="private-key"]'); + await privateKeyInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + + const head = defaultTokens['rs256'].privateKey.slice(0, 20); + const tail = defaultTokens['rs256'].privateKey.slice(20); + + await privateKeyInput.type(`${head}sadfasdf${tail}`, { + delay: 5 + }); + + await this.page.click('.js-input'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(defaultTokens['rs256'].token, { + delay: 5 + }); + + await this.page.waitFor(1000); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + }); + + it('Marks token as valid when the public key is OK and private ' + + 'key is missing', async function() { + this.timeout(30000); + + await this.page.select('#algorithm-select', 'RS256'); + + const secretInput = await this.page.$('textarea[name="public-key"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await secretInput.type(tokens['rs256'].publicKey, { + delay: 5 + }); + + const privateKeyInput = await this.page.$('textarea[name="private-key"]'); + await privateKeyInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.press('Delete'); + + await this.page.click('.js-input'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(tokens['rs256'].token, { + delay: 5 + }); + + await this.page.waitFor(1000); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + }); }); it('Updates the header when the token algorithm ' + @@ -614,6 +720,8 @@ describe('Editor', function() { }); it('Marks token as invalid when "alg" is "none"', async function() { + this.timeout(20000); + await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); From c554176cc776b5edbdec7fc720eccdb3ba3a57aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 9 Feb 2018 16:03:22 -0300 Subject: [PATCH 102/611] More functional tests. All passing. --- package.json | 1 + test/functional/editor.js | 131 ++++++++++++++++++++++++++++++++++++-- test/functional/jwks.json | 14 ++++ 3 files changed, 142 insertions(+), 4 deletions(-) create mode 100644 test/functional/jwks.json diff --git a/package.json b/package.json index 01df0d38..f4528d36 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "chai-arrays": "^2.0.0", "chai-as-promised": "^7.1.1", "codemirror": "^5.33.0", + "express": "^4.16.2", "flipclock": "^0.7.8", "grunt": "^1.0.1", "grunt-cli": "^1.2.0", diff --git a/test/functional/editor.js b/test/functional/editor.js index 5b566c04..2d7d5535 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -2,9 +2,13 @@ const chai = require('chai'); const chaiAsPromised = require('chai-as-promised'); const chaiArrays = require('chai-arrays'); +const express = require('express'); +const jsrsasign = require('jsrsasign'); + const utils = require('./utils.js'); const tokens = require('./tokens.js'); const defaultTokens = require('./default-tokens.js'); +const jwks = require('./jwks.json'); const isVisible = utils.isVisible; @@ -454,16 +458,135 @@ describe('Editor', function() { }); describe('Should download public-keys when possible', function() { - before(function() { + before(async function() { + this.app = express(); + + this.app.get('/.well-known/jwks.json', (req, res) => { + res.set('Access-Control-Allow-Origin', '*'); + res.json(jwks); + }); + + this.server = this.app.listen(3000); + await this.page.select('#algorithm-select', 'RS256'); + }); + + beforeEach(async function() { + const publicKeyInput = await this.page.$('textarea[name="public-key"]'); + await publicKeyInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.press('Delete'); }); after(function() { + this.server.close(); + }); + + it('iss URL + .well-known', async function() { + this.timeout(20000); + + const token = jsrsasign.jws.JWS.sign(null, JSON.stringify({ + alg: 'RS256', + typ: 'JWT', + kid: '1' + }), JSON.stringify({ + sub: 'test', + iss: 'http://localhost:3000/' + }), defaultTokens.rs256.privateKey); + + await this.page.click('.js-input'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(token, { + delay: 5 + }); - }); + await this.page.waitFor(2000); + + const publicKey = await this.page.$eval('textarea[name="public-key"]', + publicKeyElement => publicKeyElement.value); + + expect(publicKey).to.include(jwks.keys[0].x5c[0]); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + }); + + it('jku', async function() { + this.timeout(20000); + + const token = jsrsasign.jws.JWS.sign(null, JSON.stringify({ + alg: 'RS256', + typ: 'JWT', + kid: '1', + jku: 'http://localhost:3000/.well-known/jwks.json' + }), JSON.stringify({ + sub: 'test' + }), defaultTokens.rs256.privateKey); + + await this.page.click('.js-input'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(token, { + delay: 5 + }); - it('iss URL + .well-known'); - it('jku'); + await this.page.waitFor(2000); + + const publicKey = await this.page.$eval('textarea[name="public-key"]', + publicKeyElement => publicKeyElement.value); + + expect(publicKey).to.include(jwks.keys[0].x5c[0]); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + }); + + it('x5c', async function() { + this.timeout(35000); + + const token = jsrsasign.jws.JWS.sign(null, JSON.stringify({ + alg: 'RS256', + typ: 'JWT', + x5c: jwks.keys[0].x5c[0] + }), JSON.stringify({ + sub: 'test' + }), defaultTokens.rs256.privateKey); + + await this.page.click('.js-input'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(token, { + delay: 5 + }); + + await this.page.waitFor(2000); + + const publicKey = await this.page.$eval('textarea[name="public-key"]', + publicKeyElement => publicKeyElement.value); + + expect(publicKey).to.include(jwks.keys[0].x5c[0]); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + }); }); it('Clears the token when the header is edited and there ' + diff --git a/test/functional/jwks.json b/test/functional/jwks.json new file mode 100644 index 00000000..6cc07c10 --- /dev/null +++ b/test/functional/jwks.json @@ -0,0 +1,14 @@ +{ + "keys": [ + { + "alg": "RS256", + "kty": "RSA", + "use": "sig", + "x5c": [ + "MIICWzCCAcSgAwIBAgIJANbzPoQsRLVvMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTgwMjA5MTc1NDExWhcNMTgwMzExMTc1NDExWjBFMQswCQYDVQQGEwJVUzETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQABo1MwUTAdBgNVHQ4EFgQUe2Yz57fovxPFVMuLYp8YtPh+b20wHwYDVR0jBBgwFoAUe2Yz57fovxPFVMuLYp8YtPh+b20wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQBdQJdFYpWe05D6uGq4nHROscqiIgNv07VSkVtSZ6GTvaeAAgQMz9In9fh/LQw37bf2pwsusGAvL6m3EicI/XxrkaxagNRkcqMJeYi0lcx1Kw4tmbu7MGn8Az9K7Czi5SM0N1/3FowuVhVvMIPosfUDuC4CBMJ+tiQYk/NPOF2k+Q==" + ], + "kid": "1", + "x5t": "1" + } + ] +} From ec0f562c2208cab0d4126e9bc7f8533ccc985aba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 22 Feb 2018 11:48:39 -0300 Subject: [PATCH 103/611] Use Helvetica in some places as required. --- stylus/website/index.styl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index dcb5fc1c..9572de26 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -322,6 +322,7 @@ body p font-size 20px color white + font-family "Helvetica Neue",Helvetica,Arial,sans-serif +breakpoint("tablet") line-height 1.4 font-size 24px @@ -991,6 +992,7 @@ body p max-width 875px margin 5px auto + font-family "Helvetica Neue",Helvetica,Arial,sans-serif .btn, a.btn transition(background-color 0.2s ease) From a992c550d332530d8f48b1019bce6c0acccfacc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 22 Feb 2018 11:49:02 -0300 Subject: [PATCH 104/611] More functional tests. --- test/functional/editor.js | 79 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/test/functional/editor.js b/test/functional/editor.js index 2d7d5535..c594bef2 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -455,6 +455,85 @@ describe('Editor', function() { }); } }); + + describe('ES', async function() { + before(async function() { + this.timeout(30000); + + await this.page.select('#algorithm-select', 'ES256'); + + await this.page.click('textarea[name="public-key"]'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(defaultTokens['es256'].publicKey, { + delay: 5 + }); + + await this.page.click('textarea[name="private-key"]'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(defaultTokens['es256'].privateKey, { + delay: 5 + }); + }); + + const algs = Object.keys(defaultTokens) + .filter(alg => alg.includes('es')); + + for(const alg of algs) { + it(alg.toUpperCase(), async function() { + this.timeout(30000); + + await this.page.evaluate(token => { + window.test.tokenEditor.setValue(token); + }, defaultTokens[alg].token); + + await this.page.select('#algorithm-select', alg.toUpperCase()); + + const oldToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); + + await this.page.click('.js-header'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(JSON.stringify({ + alg: alg.toUpperCase(), + typ: 'JWT' + }, null, 2), { + delay: 5 + }); + + await this.page.click('.js-payload'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(JSON.stringify({ + sub: 'test' + }, null, 2), { + delay: 5 + }); + + const newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); + + expect(newToken).to.not.be.empty; + expect(newToken).to.not.equal(oldToken); + + const valid = await this.page.$eval('.validation-status', + status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + }); + } + }); }); describe('Should download public-keys when possible', function() { From 442b52c0f5e8985b124febc64f85ff3ff9ba74d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 22 Feb 2018 11:58:22 -0300 Subject: [PATCH 105/611] Revert "Use Helvetica in some places as required." It's not this font that is required. This reverts commit ec0f562c2208cab0d4126e9bc7f8533ccc985aba. --- stylus/website/index.styl | 2 -- 1 file changed, 2 deletions(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 9572de26..dcb5fc1c 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -322,7 +322,6 @@ body p font-size 20px color white - font-family "Helvetica Neue",Helvetica,Arial,sans-serif +breakpoint("tablet") line-height 1.4 font-size 24px @@ -992,7 +991,6 @@ body p max-width 875px margin 5px auto - font-family "Helvetica Neue",Helvetica,Arial,sans-serif .btn, a.btn transition(background-color 0.2s ease) From 28fd6ba29104023ca3fbe02ff70c7b79c4f98bf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 26 Feb 2018 13:25:44 -0300 Subject: [PATCH 106/611] CI changes for new build/test configuration. --- .travis.yml | 6 ++---- package.json | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index f8b6bc91..eb7d1ee6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,11 @@ language: node_js node_js: - - "0.10" + - "latest" before_script: - echo "Host github.com" >> ~/.ssh/config - echo " StrictHostKeyChecking no" >> ~/.ssh/config - echo " CheckHostIP no" >> ~/.ssh/config - - npm install -g bower grunt-cli - - bower install -f + - npm install cache: directories: - node_modules - - vendor diff --git a/package.json b/package.json index f4528d36..0252901f 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "xhr-mock": "^2.0.3" }, "scripts": { - "test": "echo UNIMPLEMENTED", - "start": "echo UNIMPLEMENTED" + "test": "grunt test", + "build": "grunt build" } } From b4711d33b90f70c0ae592c1203c3c38b915ab5ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 26 Feb 2018 13:36:22 -0300 Subject: [PATCH 107/611] Use the right Node version. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index eb7d1ee6..06abbf9e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: - - "latest" + - "stable" before_script: - echo "Host github.com" >> ~/.ssh/config - echo " StrictHostKeyChecking no" >> ~/.ssh/config From 94a2e3fc555f2b21ca7c9e915bb91638f9f8eb72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 26 Feb 2018 13:44:27 -0300 Subject: [PATCH 108/611] Add more time for test that times out. --- test/functional/editor.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/functional/editor.js b/test/functional/editor.js index c594bef2..4e264815 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -774,6 +774,8 @@ describe('Editor', function() { }); it('Marks token as invalid when the public key is wrong', async function() { + this.timeout(20000); + await this.page.select('#algorithm-select', 'RS256'); await this.page.click('.js-input'); From 61e56d5f0a07bf06d0c39f55d8a36c2ff26cd9ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 27 Feb 2018 19:18:44 -0300 Subject: [PATCH 109/611] Fix extension popup screen size. Support creating Chrome extension package. --- Gruntfile.js | 11 ++++++++++- package.json | 1 + src/editor/default-tokens.js | 2 +- test/functional/default-tokens.js | 2 +- test/functional/editor.js | 2 ++ test/unit/editor/jwt.js | 4 ++-- 6 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 3bd4bcaf..c30317b0 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -8,6 +8,7 @@ module.exports = grunt => { grunt.loadNpmTasks('grunt-mocha-test'); grunt.loadNpmTasks('grunt-contrib-connect'); grunt.loadNpmTasks('grunt-exec'); + grunt.loadNpmTasks('grunt-crx'); grunt.initConfig({ clean: { @@ -69,6 +70,13 @@ module.exports = grunt => { } }, + crx: { + pack: { + src: "dist/extension/**/*", + dest: "dist/jwt-debugger-extension.zip" + } + }, + stylus: { website: { files: { @@ -208,7 +216,8 @@ module.exports = grunt => { 'clean:extension', 'copy:extension', 'build-extension-views', - 'webpack:extensionProd' + 'webpack:extensionProd', + 'crx:pack' ]); grunt.registerTask('build-extension-dev', [ diff --git a/package.json b/package.json index 0252901f..f233259b 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "grunt-contrib-pug": "^1.0.0", "grunt-contrib-stylus": "^1.2.0", "grunt-contrib-watch": "^1.0.0", + "grunt-crx": "^1.0.5", "grunt-exec": "^3.0.0", "grunt-mocha-test": "^0.13.3", "grunt-webpack": "^3.0.2", diff --git a/src/editor/default-tokens.js b/src/editor/default-tokens.js index 1b095d5f..288aee60 100644 --- a/src/editor/default-tokens.js +++ b/src/editor/default-tokens.js @@ -41,7 +41,7 @@ q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== export default { hs256: { - token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.39jkN-bckg4fbZQEb0xHIxzYL9qI_g4c4WyzEYNHZok', + token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.XbPfbIHMI6arZ3Y922BhjWgQzWXcXNrz0ogtVhfEd2o', secret: 'secret' }, hs384: { diff --git a/test/functional/default-tokens.js b/test/functional/default-tokens.js index a6aa9666..ad748280 100644 --- a/test/functional/default-tokens.js +++ b/test/functional/default-tokens.js @@ -41,7 +41,7 @@ q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== module.exports = { hs256: { - token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.39jkN-bckg4fbZQEb0xHIxzYL9qI_g4c4WyzEYNHZok', + token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.XbPfbIHMI6arZ3Y922BhjWgQzWXcXNrz0ogtVhfEd2o', secret: 'secret' }, hs384: { diff --git a/test/functional/editor.js b/test/functional/editor.js index 4e264815..bbc24429 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -60,6 +60,8 @@ describe('Editor', function() { it('Should display a tooltip with a human readable ' + 'date on claim hover', async function() { + await this.page.select('#algorithm-select', 'HS384'); + await this.page.mouse.move(0, 0); expect(await this.page.$eval('#js-payload-tooltip', isVisible)).to.be.false; diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index f3b2b8bf..1e656d98 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -29,10 +29,10 @@ describe('JWT', function() { }); it('considers Base64 (not URL) encoded tokens invalid', function() { - const token = b64utob64(tokens.hs256.token); + const token = b64utob64(tokens.hs384.token); jwt.isToken(token).should.be.false; - jwt.verify(token, tokens.hs256.secret).should.be.false; + jwt.verify(token, tokens.hs384.secret).should.be.false; }); it('verifies valid tokens', function() { From 741ffd9bfd1d4ae2639361fb1486cc113c916ee3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 27 Feb 2018 20:11:33 -0300 Subject: [PATCH 110/611] =?UTF-8?q?Start=20removing=20uses=20of=20CSS=20zo?= =?UTF-8?q?om=20(=F0=9F=98=A8)=20in=20the=20extension.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings.js | 2 +- stylus/extension/index.styl | 18 ++++++++++-------- views/extension/index.pug | 4 ++-- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/strings.js b/src/strings.js index a93db560..7b174b1f 100644 --- a/src/strings.js +++ b/src/strings.js @@ -3,7 +3,7 @@ export default { alreadyInstalled: 'Already installed', addToChrome: 'Add to Chrome', shareThisJwt: 'Share this JWT', - jwtIoUrlCopied: 'JWT.io URL copied', + jwtIoUrlCopied: 'Copied', noJwtsFound: 'No JWTs found', saveBackTo: 'Save back to ' }, diff --git a/stylus/extension/index.styl b/stylus/extension/index.styl index e066622c..84069814 100644 --- a/stylus/extension/index.styl +++ b/stylus/extension/index.styl @@ -15,9 +15,9 @@ font-size 12px letter-spacing .5px position relative - line-height 28px + line-height 20px padding-right 40px - width 190px + width 170px text-align center &:hover @@ -25,7 +25,7 @@ img position absolute - top 7px + top 5px right 7px .h-block @@ -66,8 +66,7 @@ color currentColor .top-section - margin-bottom 18px - zoom .8 + margin-bottom 10px a outline none @@ -129,7 +128,7 @@ &:before content "" background white - height 34px + height 28px width 23px display block position absolute @@ -144,7 +143,7 @@ content '' display inline-block position absolute - top 16px + top 13px right 10px pointer-events none @@ -156,10 +155,13 @@ span font-weight bold text-transform uppercase - font-size 12px + font-size 10px vertical-align middle .custom-select margin-left 10px + + select + height 30px section padding 15px 0 0 0 diff --git a/views/extension/index.pug b/views/extension/index.pug index 48e36c6f..71961259 100644 --- a/views/extension/index.pug +++ b/views/extension/index.pug @@ -9,7 +9,7 @@ block content .pull-left .jwt-logo.h-block - img(src="http://github.com/img/debugger-logo.svg" height="33" alt="Share this jwt") + img(src="http://github.com/img/debugger-logo.svg" height="25" alt="Share this jwt") .pull-right .select-field.h-block @@ -29,7 +29,7 @@ block content .share-this-jwt.h-block a.jwt-clipboard-btn(href="#") span#share-this-jwt-text Share this JWT - img(src="http://github.com/img/icon-chromeless.svg" height="25" alt="Share this jwt") + img(src="http://github.com/img/icon-chromeless.svg" height="22" alt="Share this jwt") include ../token-editor-common.pug From eed7841c11783910c0ff26f4b31c6181d02a4e36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 27 Feb 2018 21:32:06 -0300 Subject: [PATCH 111/611] Completely remove use of CSS zoom from extension stylesheets. --- stylus/extension/index.styl | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/stylus/extension/index.styl b/stylus/extension/index.styl index 84069814..141735b3 100644 --- a/stylus/extension/index.styl +++ b/stylus/extension/index.styl @@ -34,9 +34,6 @@ & + .h-block margin-left: 15px; -.tab-link small - zoom .8 - .jwt-playground padding-top 12px @@ -44,14 +41,14 @@ color #0094c1 margin-left 15px - .colophon, - .validation-status - zoom .8 - .colophon margin-top 12px margin-bottom 12px position relative + font-size 12px + + img + height 14px .share-callouts margin-left 20px @@ -81,7 +78,13 @@ text-align right .validation-status - margin-top 20px + margin-top 10px + padding 5px 0 + font-size 20px + + i + line-height 22px + font-size 20px .algorithm-code margin-top 0px @@ -89,7 +92,7 @@ .tab-content .jwt-explained .text-line - zoom .8 + font-size 9px pre font-size 11px line-height 1.5 @@ -150,13 +153,18 @@ .select-field + .select-field margin-right 15px +.algorithm span + font-size 10px !important + .select-field - text-align center + text-align center span font-weight bold - text-transform uppercase - font-size 10px + text-transform uppercase vertical-align middle + font-size 10px + position relative + top 2px .custom-select margin-left 10px From 9f3e89fc4e3f75f27d79bbb1dad390f71a9d6ea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 27 Feb 2018 22:08:07 -0300 Subject: [PATCH 112/611] Generate Firefox extension package. --- Gruntfile.js | 11 ++++++++++- package.json | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Gruntfile.js b/Gruntfile.js index c30317b0..f1c45cf7 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -77,6 +77,14 @@ module.exports = grunt => { } }, + exec: { + firefoxExtensionPack: { + command: 'node_modules/web-ext/bin/web-ext build ' + + '--source-dir=dist/extension --artifacts-dir=dist ' + + '--overwrite-dest' + } + }, + stylus: { website: { files: { @@ -217,7 +225,8 @@ module.exports = grunt => { 'copy:extension', 'build-extension-views', 'webpack:extensionProd', - 'crx:pack' + 'crx:pack', + 'exec:firefoxExtensionPack' ]); grunt.registerTask('build-extension-dev', [ diff --git a/package.json b/package.json index f233259b..87b46a9b 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "source-map-support": "^0.5.3", "stylus": "^0.54.5", "uglifyjs-webpack-plugin": "^1.1.6", + "web-ext": "^2.4.0", "webpack": "^3.10.0", "webpack-merge": "^4.1.1", "xhr-mock": "^2.0.3" From f28399913f66398a367672311225c3967bf348de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 28 Feb 2018 22:42:28 -0300 Subject: [PATCH 113/611] Fix Google analytics. --- manifest.json | 4 +++- views/extension/layout.pug | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 3a978123..c2cb0926 100644 --- a/manifest.json +++ b/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "JWT Debugger", - "description": "The JWT.io debugger as a Chrome extension", + "description": "The JWT.io debugger as a Web Extension", "version": "2.0.0", "browser_action": { @@ -32,6 +32,8 @@ } }, + "content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'", + "permissions": [ "activeTab", "", diff --git a/views/extension/layout.pug b/views/extension/layout.pug index 6bb79645..8dea998d 100644 --- a/views/extension/layout.pug +++ b/views/extension/layout.pug @@ -7,3 +7,17 @@ html(lang='en') body block content + script. + //Google Analytics + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-37952868-23']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = 'https://ssl.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); + })(); From 84b263280f149c7bf73a929a3912450a3fcb35c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 28 Feb 2018 22:54:27 -0300 Subject: [PATCH 114/611] Fix installed extension detection in jwt.io. --- manifest.json | 5 +++++ src/extension/content-scripts/check-install.js | 4 ++++ webpack.extension-dev.js | 3 ++- 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 src/extension/content-scripts/check-install.js diff --git a/manifest.json b/manifest.json index c2cb0926..082e0faf 100644 --- a/manifest.json +++ b/manifest.json @@ -14,6 +14,11 @@ "page": "bg.html" }, + "content_scripts": [{ + "matches": ["https://jwt.io/*"], + "js": ["js/check-install.js"] + }], + "icons": { "16": "img/favicon/favicon-16x16.png", "32": "img/favicon/favicon-32x32.png", diff --git a/src/extension/content-scripts/check-install.js b/src/extension/content-scripts/check-install.js new file mode 100644 index 00000000..5310028b --- /dev/null +++ b/src/extension/content-scripts/check-install.js @@ -0,0 +1,4 @@ +const e = document.getElementById('extension-button'); +if(e) { + e.classList.add('is-installed'); +} diff --git a/webpack.extension-dev.js b/webpack.extension-dev.js index 1b11a4fc..32e80843 100644 --- a/webpack.extension-dev.js +++ b/webpack.extension-dev.js @@ -5,7 +5,8 @@ const common = require('./webpack.common.js'); module.exports = merge(common, { entry: { index: './src/extension/index.js', - webstorage: './src/extension/injected/webstorage.js' + webstorage: './src/extension/injected/webstorage.js', + 'check-install': './src/extension/content-scripts/check-install.js' }, output: { filename: '[name].js', From 9c812dbe7f1ae027eb08ccf2d7fcabd4d0dd5302 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 28 Feb 2018 22:55:58 -0300 Subject: [PATCH 115/611] Set extension version 2.0.1. --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 082e0faf..0eb29a2c 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "JWT Debugger", "description": "The JWT.io debugger as a Web Extension", - "version": "2.0.0", + "version": "2.0.1", "browser_action": { "default_icon": "img/favicon/favicon-96x96.png", From 2d95977934b5e4d8b118c00b9593147adffa69c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 28 Feb 2018 23:12:07 -0300 Subject: [PATCH 116/611] Use right filenames when building extension packages. --- Gruntfile.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index f1c45cf7..9f25c5b9 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,3 +1,5 @@ +const extensionManifest = require('./manifest.json'); + module.exports = grunt => { grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-stylus'); @@ -73,7 +75,8 @@ module.exports = grunt => { crx: { pack: { src: "dist/extension/**/*", - dest: "dist/jwt-debugger-extension.zip" + dest: 'dist/chrome-jwt-debugger-extension-v' + + `${extensionManifest.version}.zip` } }, @@ -82,6 +85,11 @@ module.exports = grunt => { command: 'node_modules/web-ext/bin/web-ext build ' + '--source-dir=dist/extension --artifacts-dir=dist ' + '--overwrite-dest' + }, + renameFirefoxExtension: { + command: `mv dist/jwt_debugger-${extensionManifest.version}.zip ` + + 'dist/firefox-jwt-debugger-extension-' + + `v${extensionManifest.version}.zip` } }, @@ -226,7 +234,8 @@ module.exports = grunt => { 'build-extension-views', 'webpack:extensionProd', 'crx:pack', - 'exec:firefoxExtensionPack' + 'exec:firefoxExtensionPack', + 'exec:renameFirefoxExtension' ]); grunt.registerTask('build-extension-dev', [ From 8cad6d7f865e4a7332ec49ef775235dad2e789a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 28 Feb 2018 23:20:30 -0300 Subject: [PATCH 117/611] Bump version number due to mistake during upload to Mozilla Addons (doh!). --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 0eb29a2c..e26a9f8d 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "JWT Debugger", "description": "The JWT.io debugger as a Web Extension", - "version": "2.0.1", + "version": "2.0.2", "browser_action": { "default_icon": "img/favicon/favicon-96x96.png", From b365d0dc8fa12a759e59781752665e24b471e4e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 2 Mar 2018 20:13:37 -0300 Subject: [PATCH 118/611] Heroku deployment requirements. --- .gitignore | 1 - package-lock.json | 11632 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 8 +- server.js | 18 + 4 files changed, 11656 insertions(+), 3 deletions(-) create mode 100644 package-lock.json create mode 100644 server.js diff --git a/.gitignore b/.gitignore index 863ab278..df917eb7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,3 @@ dist .tmp .DS_Store npm-debug.log -package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..abbc3da7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11632 @@ +{ + "name": "jwt.io", + "version": "2.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz", + "integrity": "sha512-eVXQSbu/RimU6OKcK2/gDJVTFcxXJI4sHbIqw2mhwMZeQ2as/8AhS9DGkEDoHMBBNJZ5B0US63lF56x+KDcxiA==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.40" + } + }, + "@babel/core": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.40.tgz", + "integrity": "sha512-jJMjn/EMg89xDGv7uq4BoFg+fHEchSeqNc9YUMnGuAi/FWKBkSsDbhh2y5euw4qaGOFD2jw1le0rvCu5gPUc6Q==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.40", + "@babel/generator": "7.0.0-beta.40", + "@babel/helpers": "7.0.0-beta.40", + "@babel/template": "7.0.0-beta.40", + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40", + "babylon": "7.0.0-beta.40", + "convert-source-map": "1.5.1", + "debug": "3.1.0", + "json5": "0.5.1", + "lodash": "4.17.5", + "micromatch": "2.3.11", + "resolve": "1.5.0", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@babel/generator": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.40.tgz", + "integrity": "sha512-c91BQcXyTq/5aFV4afgOionxZS1dxWt8OghEx5Q52SKssdGRFSiMKnk9tGkev1pYULPJBqjSDZU2Pcuc58ffZw==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.40", + "jsesc": "2.5.1", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.40.tgz", + "integrity": "sha512-bJd92d70QTlcqCO9WiE8C94r7NwVzJx1V6Yz7rYi4IQ53P0jbh9jjKL2zl8YoU2S8M/KX1jpu+yIgXbx+LOruQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.40.tgz", + "integrity": "sha512-rMfjqkQrfHsA3ppMc2MsICoMqXH1b0BD77fTr4Kf+aUzEt5GSx5ZP5aNYlCqaPzhafg3znEEg/LVeq2EyGY8JQ==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-call-delegate": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.40.tgz", + "integrity": "sha512-kfLlTpTayyCwj3/Rq4zDaK85GVPzRIR433QLhuNb0qjJfMQgLit2UEfBHUPPMRvKlb0FelrlXGTxXfsHLmfgzw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "7.0.0-beta.40", + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-define-map": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.40.tgz", + "integrity": "sha512-hDg3sFSAxYQ/CSXzIBzGeNRD4yp89MkC3wkwvGBH80LXobL6csEdQpzCPhwpL0K8RNB07awRnck1OtPqjeCpgA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40", + "lodash": "4.17.5" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.40.tgz", + "integrity": "sha512-EUbu+uVNtHVp9emICjYO5wYodqWnSTx/s4Hfk++7IdnPTQi7UA9F/tPXf1GS8BLazlWc9tDwQ2aHFQLheHEXHw==", + "dev": true, + "requires": { + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.40.tgz", + "integrity": "sha512-cK9BVLtOfisSISTTHXKGvBc2OBh65tjEk4PgXhsSnnH0i8RP2v+5RCxoSlh2y/i+l2fxQqKqv++Qo5RMiwmRCA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.40", + "@babel/template": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.40.tgz", + "integrity": "sha512-MwquaPznI4cUoZEgHC/XGkddOXtqKqD4DvZDOyJK2LR9Qi6TbMbAhc6IaFoRX7CRTFCmtGeu8gdXW2dBotBBTA==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.40.tgz", + "integrity": "sha512-ghnJxUUEmqK8mssF7Y7R5jNzF5xDu4hmWQ1aZghZtLNJSymmj3HrXCLl5m1dBYpq9gGk7TlZK8stIvIJsCGmTQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.40.tgz", + "integrity": "sha512-QFOskAKWbqJSBbGIl/Y1igJI4mW0A+wD5NFqsgDJj85KSvj/dHM4wNGIeqCi85nN9aMa4DgTBBrzUK4zSMsN2Q==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.40", + "lodash": "4.17.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.40.tgz", + "integrity": "sha512-1H7cBk7kUWJpTepPH77TIRGwKILRGpu1yXmz1OjOruR6y2z0qfbp7ZzzZ3/xg6NlLDENLArEyO2+J0mO+VyQsg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0-beta.40", + "@babel/helper-simple-access": "7.0.0-beta.40", + "@babel/template": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40", + "lodash": "4.17.5" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.40.tgz", + "integrity": "sha512-2f4ZKEkvdnKiTUA/Nhju+oEoRcyHcpf6lFuQI5cxbo1Toxqa8E9HBO5tiOWwlIwuak7RZPYSnxnrJQy/0d4YUw==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-regex": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.40.tgz", + "integrity": "sha512-75zi8hZSdWLT7upmEyAemfN0hJ7522svItPGbIj4Pi2T/C5vbgNFXLy8o/iOCX4FzB+yVKhz0zWC3SzN9hyigA==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.40.tgz", + "integrity": "sha512-RISz7EebAqaf4ofdG9LdVNfeqhK+JlFYJxvqCGMcS+Pyz84dA41MxgtjrRQdT85be1lZLI2OArvD7zDrj1psag==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0-beta.40", + "@babel/helper-wrap-function": "7.0.0-beta.40", + "@babel/template": "7.0.0-beta.40", + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-replace-supers": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.40.tgz", + "integrity": "sha512-Nu/5wpUV3rG35RzOq/upZlm61cP0lSAtmNkJLFfO5k2zOGCiHRczD1Y/xKqYOMl5f2iZmYw9fANi1jE4odMIIQ==", + "dev": true, + "requires": { + "@babel/helper-optimise-call-expression": "7.0.0-beta.40", + "@babel/template": "7.0.0-beta.40", + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-simple-access": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.40.tgz", + "integrity": "sha512-hEKOIXUZFOiyqUPiGydGc+Jr0s8mVCFrD1OtAw2BDkXf1BaR+PxVEVcBAWcJVLOjqrr7oVZL9SENjR4B/Y+yEw==", + "dev": true, + "requires": { + "@babel/template": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40", + "lodash": "4.17.5" + } + }, + "@babel/helper-wrap-function": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.40.tgz", + "integrity": "sha512-VBXE/uGQuZC9IaYufa3eCoT5ZqcCPv21Uhs/vo4ZqNRDX5QemYEkgDj5SmV2p73bhC66jDwUHaQHKQIiW7ExxA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0-beta.40", + "@babel/template": "7.0.0-beta.40", + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helpers": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.40.tgz", + "integrity": "sha512-NK/mM/I16inThgXmKPxoqrg+N6OCLt+e9Zsmy8TJ93/zMx4Eddd679I231YwDP2J1Z12UgkfWCLbbvauU5TLlQ==", + "dev": true, + "requires": { + "@babel/template": "7.0.0-beta.40", + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.40.tgz", + "integrity": "sha512-mOhhTrzieV6VO7odgzFGFapiwRK0ei8RZRhfzHhb6cpX3QM8XXuCLXWjN8qBB7JReDdUR80V3LFfFrGUYevhNg==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.40.tgz", + "integrity": "sha512-DU9JstbqQRAPhbW3Pk0yrEJA8GIiIDdylrnIuPI9x01jAwijxJfRwi6FbUAZUbS+3mzAAM5ALXUJkF1i1R5qbQ==", + "dev": true, + "requires": { + "@babel/helper-remap-async-to-generator": "7.0.0-beta.40", + "@babel/plugin-syntax-async-generators": "7.0.0-beta.40" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.40.tgz", + "integrity": "sha512-nsQEWEvBgDcxYPBhmeIHqIXVVkPLQJBTD/bAdCMFhVe0vQdOR/px5E+rMsbP+9CywqV3AJ7PngYadnPgiuu4sg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.40" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.40.tgz", + "integrity": "sha512-GKKY7LDS3Z2iAVsM0KP745LAML8jKUdFqD+rGLa6F4Q9pEqDh3pjbL8eqiWLv/g/phpuCdvjaj+4wmUHi/E5eg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.40" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.40.tgz", + "integrity": "sha512-BJlgIZcqodpkgNLOsKtkprA3zeXhg0O9Hru+IIaDVhcrZnkIIMVsdIG6gY5cKCAnpKFVN4kloQRTB61qYdKueA==", + "dev": true, + "requires": { + "@babel/helper-regex": "7.0.0-beta.40", + "regexpu-core": "4.1.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.40.tgz", + "integrity": "sha512-UczObsgk1A4DaSMqTj59iETtmtuiXdBMs/1WBpy6LvLtf8AdjO/bZ2IbvrwKR5gEp8xJxBgzNq2sfK8RUsQBsQ==", + "dev": true + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.40.tgz", + "integrity": "sha512-LY96LEXC+qxuiOcoqrkrsyEUaD95gS7AQE7nZJ/lZBGG14h4cJhc+T0FYdJpVKqhqNuEqVHsJV9xfCYHI4Ksug==", + "dev": true + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.40.tgz", + "integrity": "sha512-YP2Zqhi6r5mnp6LALz19pvF7szhEzBFybw4KqGFj6OwGmfF1nrvCG3h6cOTRhIKSwkfM7IlqGZm+GBhbYRYxGA==", + "dev": true + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.40.tgz", + "integrity": "sha512-B6wh62BErLWS3XInOUHhLcqBSK1QGdBph8E2K82EEFgJdQvphy30QXb0vwLUr8YU1efYyZXTsRA0JZ12jcm30Q==", + "dev": true + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.40.tgz", + "integrity": "sha512-4yTmjiZQw0S6dpnJqj0os0hom2czOAFKPhAuPplDay2zyqzDjbNt3zHFadIRTU4ekTonMb6ghTbMO1vlKcLMiQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0-beta.40", + "@babel/helper-remap-async-to-generator": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.40.tgz", + "integrity": "sha512-GC64FqQfGJ5Wt3i0zSMcwRxmnZwgrx8fVLCeONNNm3BlK7Ui5Usuc7WubygM3bDq47UiHfeKo8ih54pr/POsFw==", + "dev": true + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.40.tgz", + "integrity": "sha512-8QpOK9lXdzrq1QIrP3Hfx/BmGPaCKjBORd2QSjdghPNNRlQFZmO2l3kb0I6yC7w75U1M5q26KvUbAcPrE68E4w==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.40.tgz", + "integrity": "sha512-yjViyoOYJtt2vLDai8jluxl9quOtq/Xq4GTjT9uzy+mOfUTE77dcJySMGkWHE52Mu3n0TSI09ENBFYykpvXXDw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0-beta.40", + "@babel/helper-define-map": "7.0.0-beta.40", + "@babel/helper-function-name": "7.0.0-beta.40", + "@babel/helper-optimise-call-expression": "7.0.0-beta.40", + "@babel/helper-replace-supers": "7.0.0-beta.40", + "globals": "11.3.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.40.tgz", + "integrity": "sha512-1VBpE+6YN4bj72MtbQoIwXZxoI5VfPLutQ5uhOx/tIrjf1KbLKsFR0epPPGx4nZ13u++lUR8CjUFUHGJ6RJirA==", + "dev": true + }, + "@babel/plugin-transform-destructuring": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.40.tgz", + "integrity": "sha512-/FJq+WUAw4R5kg+2XWkmk0rDJqVs76rNNSIPpxeE0SiJvp8tvou7y8u0D1IhoO29ZgC+53jbdL+MkVN7mrH/iQ==", + "dev": true + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.40.tgz", + "integrity": "sha512-5npi7X6QGNWWfXxVBMQl+fEAn0LceNNFT139yaGRkyWZtUXmueFLgXKsa9dY2DhuEis29KuZrwGcmGSQWnEmtg==", + "dev": true, + "requires": { + "@babel/helper-regex": "7.0.0-beta.40", + "regexpu-core": "4.1.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.40.tgz", + "integrity": "sha512-rxEyRbU/iEGR99oBMoer5QeGWLMhT3Kq4a8B03DFLCBpGLv3XirpSGC/Ys1YhUKAmEio4jIcVVI8dRBbcVeyDw==", + "dev": true + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.40.tgz", + "integrity": "sha512-nh9qIA4P1wQczihazVOvTpkl2EBfoSMfkM6/21p8NBY4GxZJcEwT1O1nke/+RLludUekHqXHGH+9ekfEfLwKRQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.40.tgz", + "integrity": "sha512-ArDbLAGMzI++G5Ut8HIbLvnAxZNOC5tFzMXiud51JJTHRaeFB7AwX+duY9x/Hu/KypISXjels3BYVYCV/EH+ow==", + "dev": true + }, + "@babel/plugin-transform-function-name": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.40.tgz", + "integrity": "sha512-wvpswFciLQ2eAnHAs6/NSWymPg88LhHH87BljjXDxNnyGBzckip/iEa051Dz6lDumVUUjXLukw3D2fv5NBitVA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.40.tgz", + "integrity": "sha512-p7VlTod2r7srx0uKVrKqMJR1f6iyvDAnlLdTEDGrLHpP9pXXvIc/bP8xZTxVPn+IziSFh6FvOzHXXLMtnRKnow==", + "dev": true + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.40.tgz", + "integrity": "sha512-o/XTve9C+M9203MVxGRBOXNx4f9DZGiPLbwPPeDobdtw3NKHUCymFNbh9xxMJy0MPMEe8JldxbVwGy2f8DY/3w==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.40.tgz", + "integrity": "sha512-1kRhaQP3K9kRiJhhLpP7J5NsMV+SiKWSsli6TUR6uxbuHHNAleRtlsZ76JgCRMaufBgPMLxq5pp7yibUhwTn8w==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0-beta.40", + "@babel/helper-simple-access": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.40.tgz", + "integrity": "sha512-q5IpFXNlzrK2ObpHkH5jzTCqRVzoNzmH8RoE8ZHQvLLiaIT346u8ynNv/BH1ltA49SPUPWyYpA+Z7OqCM4d3NA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.40.tgz", + "integrity": "sha512-LHKqJFwo7x/CeEwjLyUE99SlG/kbTl8LS1DQ26fWctVnW5JuPt3hwYrggnmo1L/g/dal7EP2IL56+UezDMpJUQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.40.tgz", + "integrity": "sha512-t4ivwZVGrVf1bhLgHcgaLhFH4loZhV5WmEKKNPEe7QnGikJBibrLmggOM1w5s6BMsHj03+j0rxUmcKLmGlC/fg==", + "dev": true + }, + "@babel/plugin-transform-object-super": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.40.tgz", + "integrity": "sha512-a9kXy4amuvAz7eFuntXiyjg0eKXej1FH++xQg37ugh24zozD0cmfr3pvRbYOGlmbmOeZWJnlq+O6X8BSfLSycw==", + "dev": true, + "requires": { + "@babel/helper-replace-supers": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.40.tgz", + "integrity": "sha512-JShFDeKEzwwTB+pHcUuLdX9zPi98sRekvtdCEOt8UoF5pzW02k1XdsVOckp/PzcEdoGAgZiiI1PFkJZ+xanfPg==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "7.0.0-beta.40", + "@babel/helper-get-function-arity": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.40.tgz", + "integrity": "sha512-hFj52wAXbEpXwwfKsMol5Y967D3L8tz46Jin9n/gYPgcNWugvsw6d7g+HknBJ8FzaUESrDruFRkGPXgD+FyjvQ==", + "dev": true, + "requires": { + "regenerator-transform": "0.12.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.40.tgz", + "integrity": "sha512-1leHn9ST0PKFHwH7klJqGA76YPoqs3cR5zeJK6YGZETeX89YiAVtR+5JTSGhfI/1RR0Vcg9Tl1LnPpf7LmYlng==", + "dev": true + }, + "@babel/plugin-transform-spread": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.40.tgz", + "integrity": "sha512-RPrIpV+h8OqoqyMic7CNeM8TdSDk7ec+T6jM97vMb9XQQrRInAUWlwWvG6d36v72xobFtHoPA28VN/0aVsbQDg==", + "dev": true + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.40.tgz", + "integrity": "sha512-dJPUaV2D5SwSXypaDFRJd+LIhabeaWhZ3McmNo0COn+lBINJ9iL7mYuPxnqwhM/KoBNv+vYIoFFZzT/I27K6AQ==", + "dev": true, + "requires": { + "@babel/helper-regex": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.40.tgz", + "integrity": "sha512-ScGHntym1y5FweT751OJxGW4rydxdLA9BwkHfJ5o6RcCoq+LRubDeGu2HeuX4SMEvAw0MnZeSk8vw5TwIOzEIQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.40.tgz", + "integrity": "sha512-y+mXC0tIlTZj04ZD9326grEIvFjI/IeLSIVVKMIf8nSodLDCgipuM6zXhxqXVvjcTrvvUKuxPrvPeSuht0eeMg==", + "dev": true + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.40.tgz", + "integrity": "sha512-+eProDq93qiYnXOy+LDSMoKF2lEQVQ+r6DF3ZZXJV5QJ3f2+vwpSqGIQy61sSkVMEaoNtYL/Jy+G8HrWFw9p3w==", + "dev": true, + "requires": { + "@babel/helper-regex": "7.0.0-beta.40", + "regexpu-core": "4.1.3" + } + }, + "@babel/polyfill": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0-beta.40.tgz", + "integrity": "sha512-aUO+KHYJDFAnyRU/g3sBofp9WVKI0ROriGpeKXBTq8DsMYnvbZkNQaEwrzKi6TzmVuRDBNpVAkArZQ9qbQrqRA==", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "@babel/preset-env": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.40.tgz", + "integrity": "sha512-IBnkVmaM/K2pHB8RR0tC5oHrPdS4y0RZXrGc+lmfDuj4tgyCAmDBuQ1EWVaLOpWw8fXPwXfX70Vdp65L2df+RQ==", + "dev": true, + "requires": { + "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.40", + "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.40", + "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.40", + "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.40", + "@babel/plugin-syntax-async-generators": "7.0.0-beta.40", + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.40", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.40", + "@babel/plugin-transform-arrow-functions": "7.0.0-beta.40", + "@babel/plugin-transform-async-to-generator": "7.0.0-beta.40", + "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.40", + "@babel/plugin-transform-block-scoping": "7.0.0-beta.40", + "@babel/plugin-transform-classes": "7.0.0-beta.40", + "@babel/plugin-transform-computed-properties": "7.0.0-beta.40", + "@babel/plugin-transform-destructuring": "7.0.0-beta.40", + "@babel/plugin-transform-dotall-regex": "7.0.0-beta.40", + "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.40", + "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.40", + "@babel/plugin-transform-for-of": "7.0.0-beta.40", + "@babel/plugin-transform-function-name": "7.0.0-beta.40", + "@babel/plugin-transform-literals": "7.0.0-beta.40", + "@babel/plugin-transform-modules-amd": "7.0.0-beta.40", + "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.40", + "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.40", + "@babel/plugin-transform-modules-umd": "7.0.0-beta.40", + "@babel/plugin-transform-new-target": "7.0.0-beta.40", + "@babel/plugin-transform-object-super": "7.0.0-beta.40", + "@babel/plugin-transform-parameters": "7.0.0-beta.40", + "@babel/plugin-transform-regenerator": "7.0.0-beta.40", + "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.40", + "@babel/plugin-transform-spread": "7.0.0-beta.40", + "@babel/plugin-transform-sticky-regex": "7.0.0-beta.40", + "@babel/plugin-transform-template-literals": "7.0.0-beta.40", + "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.40", + "@babel/plugin-transform-unicode-regex": "7.0.0-beta.40", + "browserslist": "3.1.1", + "invariant": "2.2.3", + "semver": "5.5.0" + } + }, + "@babel/template": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.40.tgz", + "integrity": "sha512-RlQiVB7eL7fxsKN6JvnCCwEwEL28CBYalXSgWWULuFlEHjtMoXBqQanSie3bNyhrANJx67sb+Sd/vuGivoMwLQ==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40", + "babylon": "7.0.0-beta.40", + "lodash": "4.17.5" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.40.tgz", + "integrity": "sha512-h96SQorjvdSuxQ6hHFIuAa3oxnad1TA5bU1Zz88+XqzwmM5QM0/k2D+heXGGy/76gT5ajl7xYLKGiPA/KTyVhQ==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.40", + "@babel/generator": "7.0.0-beta.40", + "@babel/helper-function-name": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40", + "babylon": "7.0.0-beta.40", + "debug": "3.1.0", + "globals": "11.3.0", + "invariant": "2.2.3", + "lodash": "4.17.5" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@babel/types": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.40.tgz", + "integrity": "sha512-uXCGCzTgMZxcSUzutCPtZmXbVC+cvENgS2e0tRuhn+Y1hZnMb8IHP0Trq7Q2MB/eFmG5pKrAeTIUfQIe5kA4Tg==", + "dev": true, + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "2.0.0" + } + }, + "@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "dev": true, + "requires": { + "samsam": "1.3.0" + } + }, + "@types/babel-types": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.1.tgz", + "integrity": "sha512-EkcOk09rjhivbovP8WreGRbXW20YRfe/qdgXOGq3it3u3aAOWDRNsQhL/XPAWFF7zhZZ+uR+nT+3b+TCkIap1w==", + "dev": true + }, + "@types/babylon": { + "version": "6.16.2", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.2.tgz", + "integrity": "sha512-+Jty46mPaWe1VAyZbfvgJM4BAdklLWxrT5tc/RjvCgLrtk6gzRY6AOnoWFv4p6hVxhJshDdr2hGVn56alBp97Q==", + "dev": true, + "requires": { + "@types/babel-types": "7.0.1" + } + }, + "@types/node": { + "version": "9.4.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.4.6.tgz", + "integrity": "sha512-CTUtLb6WqCCgp6P59QintjHWqzf4VL1uPA27bipLAPxFqrtK1gEYllePzTICGqQ8rYsCbpnsNypXjjDzGAAjEQ==", + "dev": true + }, + "JSONSelect": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.2.1.tgz", + "integrity": "sha1-QVQYpSbTP+MddLTe+jyDbUhewgM=", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + } + }, + "adbkit": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/adbkit/-/adbkit-2.11.0.tgz", + "integrity": "sha512-j2vUhEeZmCiqBP+p77CpPWQTcT20rOmSmRHFUTZUwUpxzeCd3fXop4NAGYztSY9/FNU4bT/qqvYQ4EZKuCXhfA==", + "dev": true, + "requires": { + "adbkit-logcat": "1.1.0", + "adbkit-monkey": "1.0.1", + "bluebird": "2.9.34", + "commander": "2.8.1", + "debug": "2.6.9", + "node-forge": "0.7.2", + "split": "0.3.3" + }, + "dependencies": { + "bluebird": { + "version": "2.9.34", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", + "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g=", + "dev": true + } + } + }, + "adbkit-logcat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz", + "integrity": "sha1-Adf5sM75CTowvLOwB+//MBUIli8=", + "dev": true + }, + "adbkit-monkey": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz", + "integrity": "sha1-8pG+cBou/FZ6Y/x6pq/N7TFDC+E=", + "dev": true, + "requires": { + "async": "0.2.10" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + } + } + }, + "addons-linter": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-0.35.0.tgz", + "integrity": "sha1-hYcszliYP/M5ztKX2/9IbALs0zY=", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-merge-patch": "3.0.0", + "babel-register": "6.26.0", + "chalk": "2.3.0", + "cheerio": "1.0.0-rc.2", + "columnify": "1.5.4", + "common-tags": "1.7.2", + "crx-parser": "0.1.2", + "dispensary": "0.12.0", + "doctoc": "1.3.0", + "es6-promisify": "5.0.0", + "eslint": "4.15.0", + "eslint-plugin-no-unsafe-innerhtml": "1.0.16", + "esprima": "3.1.3", + "extract-text-webpack-plugin": "3.0.2", + "first-chunk-stream": "2.0.0", + "fluent": "0.4.1", + "glob": "7.1.2", + "jed": "1.1.1", + "pino": "4.10.3", + "po2json": "0.4.5", + "postcss": "6.0.14", + "probe-image-size": "3.2.0", + "relaxed-json": "1.0.1", + "semver": "5.5.0", + "shelljs": "0.8.1", + "source-map-support": "0.5.1", + "strip-bom-stream": "3.0.0", + "tosource": "1.0.0", + "upath": "1.0.2", + "webpack": "3.10.0", + "whatwg-url": "6.3.0", + "xmldom": "0.1.27", + "yargs": "10.0.3", + "yauzl": "2.9.1" + }, + "dependencies": { + "acorn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.0.tgz", + "integrity": "sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g==", + "dev": true + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.1.tgz", + "integrity": "sha512-EZNecLNrsdRk9fcdOcjjy+Z/id7cr68sdmsYtR1gA45oQ81Ccea0UvM7DdSRblO0Ie5zWX31bvJTC7Y3QZVujg==", + "dev": true, + "requires": { + "source-map": "0.6.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "webpack": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", + "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", + "dev": true, + "requires": { + "acorn": "5.5.0", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + } + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.1.0" + }, + "dependencies": { + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + }, + "yauzl": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz", + "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13", + "fd-slicer": "1.0.1" + } + } + } + }, + "adm-zip": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", + "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", + "dev": true + }, + "agent-base": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz", + "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", + "dev": true, + "requires": { + "es6-promisify": "5.0.0" + } + }, + "ajv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.0.tgz", + "integrity": "sha1-r6wpW7qgFSRJ5SJ0LkVHwa6TKNI=", + "dev": true, + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", + "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", + "dev": true + }, + "ajv-merge-patch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ajv-merge-patch/-/ajv-merge-patch-3.0.0.tgz", + "integrity": "sha1-dvBx45H0Gf6f4/6n6SChrYJLK2E=", + "dev": true, + "requires": { + "fast-json-patch": "1.2.2", + "json-merge-patch": "0.2.3" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "anchor-markdown-header": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", + "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", + "dev": true, + "requires": { + "emoji-regex": "6.1.3" + } + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archiver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "dev": true, + "requires": { + "archiver-utils": "1.3.0", + "async": "2.6.0", + "buffer-crc32": "0.2.13", + "glob": "7.0.6", + "lodash": "4.17.5", + "readable-stream": "2.3.4", + "tar-stream": "1.5.5", + "walkdir": "0.0.11", + "zip-stream": "1.2.0" + }, + "dependencies": { + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + } + } + }, + "archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "dev": true, + "requires": { + "glob": "7.0.6", + "graceful-fs": "4.1.11", + "lazystream": "1.0.0", + "lodash": "4.17.5", + "normalize-path": "2.1.1", + "readable-stream": "2.3.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + } + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "dev": true + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-loader": { + "version": "8.0.0-beta.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.0-beta.2.tgz", + "integrity": "sha512-P1zch1DvQy3RGmp/1CH78uPg5gTPQQ01S9r6ipCOWVamO0UIC8gnrx7m7LsUsXa470yB6IOZxhtEEwIUclRLNw==", + "dev": true, + "requires": { + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.5" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + } + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.3", + "lodash": "4.17.5" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.40.tgz", + "integrity": "sha512-AVxF2EcxvGD5hhOuLTOLAXBb0VhwWpEX0HyHdAI2zU+AAP4qEwtQj8voz1JR3uclGai0rfcE+dCTHnNMOnimFg==", + "dev": true + }, + "bail": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.2.tgz", + "integrity": "sha1-99bBcxYwqfnw1NNe0fli4gdKF2Q=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-js": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", + "dev": true + }, + "base64url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", + "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=", + "dev": true + }, + "basic-auth": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", + "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "dev": true, + "requires": { + "readable-stream": "2.3.4" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.16" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + }, + "bootstrap": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz", + "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=", + "dev": true + }, + "boundary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", + "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", + "dev": true + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.2", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, + "browserslist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.1.1.tgz", + "integrity": "sha512-zHGaPnTt70ywm+glR7uMJFZSl+ADGO67SgD2ae20L+Y3KJUeH4fVa89OkTqKCqAnXFE9mO4LTHBKBqKRlr7VNw==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000810", + "electron-to-chromium": "1.3.34" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.2.3", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bunyan": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", + "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", + "dev": true, + "requires": { + "dtrace-provider": "0.8.6", + "moment": "2.21.0", + "mv": "2.1.1", + "safe-json-stringify": "1.1.0" + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.2.4", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + } + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "caniuse-lite": { + "version": "1.0.30000810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000810.tgz", + "integrity": "sha512-/0Q00Oie9C72P8zQHtFvzmkrMC3oOFUnMWjCy5F2+BE8lzICm91hQPhh0+XIsAFPKOe2Dh3pKgbRmU3EKxfldA==", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "ccount": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.2.tgz", + "integrity": "sha1-U7ai+BW7d7nChx97mnLDol8djok=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chai": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", + "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "dev": true, + "requires": { + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.8" + } + }, + "chai-arrays": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.0.0.tgz", + "integrity": "sha512-jWAvZu1BV8tL3pj0iosBECzzHEg+XB1zSnMjJGX83bGi/1GlGdDO7J/A0sbBBS6KJT0FVqZIzZW9C6WLiMkHpQ==", + "dev": true + }, + "chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "requires": { + "check-error": "1.0.2" + } + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + }, + "character-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.1.tgz", + "integrity": "sha1-92hxvl72bdt/j440eOzDdMJ9bco=", + "dev": true + }, + "character-entities-html4": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.1.tgz", + "integrity": "sha1-NZoqSg9+KdPcKsmb2+Ie45Q46lA=", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz", + "integrity": "sha1-9Ad53xoQGHK7UQo9KV4fzPFHIC8=", + "dev": true + }, + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "dev": true, + "requires": { + "is-regex": "1.0.4" + } + }, + "character-reference-invalid": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz", + "integrity": "sha1-lCg191Dk7GGjCOYMLvjMEBEgLvw=", + "dev": true + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash": "4.17.5", + "parse5": "3.0.3" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "clean-css": { + "version": "3.4.28", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "dev": true, + "requires": { + "commander": "2.8.1", + "source-map": "0.4.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codemirror": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.35.0.tgz", + "integrity": "sha512-8HQICjZlDfe1ai7bvU6m2uHxuZuFgsUCdDRU9OHVB+2RTRd+FftN1ezVCqbquG0Fyq+wETqyadKhUX46DswSUQ==", + "dev": true + }, + "coffeescript": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", + "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=", + "dev": true + }, + "collapse-white-space": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.3.tgz", + "integrity": "sha1-S5BvZw5aljqHt2sOFolkM0G2Ajw=", + "dev": true + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "columnify": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", + "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "dev": true, + "requires": { + "strip-ansi": "3.0.1", + "wcwidth": "1.0.1" + } + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "common-tags": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.7.2.tgz", + "integrity": "sha512-joj9ZlUOjCrwdbmiLqafeUSgkUM74NqhLsZtSqDmhKudaIY197zTrb8JMl31fMnCUuxwFT23eC/oWvrZzDLRJQ==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13", + "crc32-stream": "2.0.0", + "normalize-path": "2.1.1", + "readable-stream": "2.3.4" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "typedarray": "0.0.6" + } + }, + "configstore": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", + "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "dev": true, + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.2.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" + } + }, + "connect-livereload": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", + "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "constantinople": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", + "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", + "dev": true, + "requires": { + "@types/babel-types": "7.0.1", + "@types/babylon": "6.16.2", + "babel-types": "6.26.0", + "babylon": "6.18.0" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + } + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.0.6" + } + } + } + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "crc": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz", + "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=", + "dev": true + }, + "crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "dev": true, + "requires": { + "crc": "3.5.0", + "readable-stream": "2.3.4" + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.10" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.2.14" + } + }, + "crx": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/crx/-/crx-3.2.1.tgz", + "integrity": "sha1-Fyk+51790IxtHIs+F0nS1XV89Cs=", + "dev": true, + "requires": { + "archiver": "1.3.0", + "commander": "2.8.1", + "es6-promise": "3.3.1", + "node-rsa": "0.2.30" + } + }, + "crx-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/crx-parser/-/crx-parser-0.1.2.tgz", + "integrity": "sha1-fu7tnt3JXiLBiTguNGJARKiaWm0=", + "dev": true + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.6", + "randomfill": "1.0.4" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.39" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "3.7.0" + } + }, + "debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.1.0.tgz", + "integrity": "sha512-ZQVKfRVlwRfD150ndzEK8M90ABT+Y/JQKs4Y7U4MXdpuoUkkrr4DwKbVux3YjylA5bUMUj0Nc3pMxPJX6N2QQQ==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "deep-for-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/deep-for-each/-/deep-for-each-1.0.6.tgz", + "integrity": "sha1-r6DOJJxYSSqXIFOUeKGNN+GxC64=", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepcopy": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-0.6.3.tgz", + "integrity": "sha1-Y0eA8vhlardxr4+oQx7RzO5Vx7A=", + "dev": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "1.0.3" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.2.8" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "desandro-matches-selector": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", + "integrity": "sha1-cXvu1NwT59jzdi9wem1YpndCGOE=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diff": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" + } + }, + "dispensary": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.12.0.tgz", + "integrity": "sha1-zEkbu/pmpXQUyVjGhYKkyHA/8Vk=", + "dev": true, + "requires": { + "array-from": "2.1.1", + "async": "2.6.0", + "natural-compare-lite": "1.4.0", + "pino": "4.10.3", + "request": "2.83.0", + "semver": "5.4.1", + "sha.js": "2.4.10", + "source-map-support": "0.5.0", + "yargs": "10.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "cliui": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", + "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", + "dev": true, + "requires": { + "source-map": "0.6.1" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", + "dev": true, + "requires": { + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.1.0" + } + } + } + }, + "doctoc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.3.0.tgz", + "integrity": "sha1-fwg5hR3VjICKLK5V2VBOAS0I7jA=", + "dev": true, + "requires": { + "anchor-markdown-header": "0.5.7", + "htmlparser2": "3.9.2", + "markdown-to-ast": "3.4.0", + "minimist": "1.2.0", + "underscore": "1.8.3", + "update-section": "0.3.3" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", + "dev": true + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "dtrace-provider": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.6.tgz", + "integrity": "sha1-QooiOv4DQl0s1tY0f99AxmkDVj0=", + "dev": true, + "optional": true, + "requires": { + "nan": "2.9.2" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", + "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "stream-shift": "1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", + "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", + "dev": true, + "requires": { + "base64url": "2.0.0", + "safe-buffer": "5.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.34", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz", + "integrity": "sha1-2TSY9AORuwwWpgPYJBuZUUBBV+0=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emoji-regex": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", + "integrity": "sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es5-ext": { + "version": "0.10.39", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.39.tgz", + "integrity": "sha512-AlaXZhPHl0po/uxMx1tyrlt1O86M6D5iVaDH8UgLfgek4kXTX6vzsRfJQWC2Ku+aG8pkw1XWzh9eTkwfVrsD5g==", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.39", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.39", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", + "dev": true + } + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.39", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.39" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.39", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.15.0.tgz", + "integrity": "sha512-zEO/Z1ZUxIQ+MhDVKkVTUYpIPDTEJLXGMrkID+5v1NeQHtCz6FZikWuFRgxE1Q/RV2V4zVl1u3xmpPADHhMZ6A==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.2", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.3", + "esquery": "1.0.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.3.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.5.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.3", + "text-table": "0.2.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "eslint-plugin-no-unsafe-innerhtml": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsafe-innerhtml/-/eslint-plugin-no-unsafe-innerhtml-1.0.16.tgz", + "integrity": "sha1-fQKHjI6b95FriINtWsEitC8VGTI=", + "dev": true, + "requires": { + "eslint": "3.19.0" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.9", + "doctrine": "2.1.0", + "escope": "3.6.0", + "espree": "3.5.3", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "glob": "7.0.6", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "0.12.0", + "is-my-json-valid": "2.17.2", + "is-resolvable": "1.1.0", + "js-yaml": "3.5.5", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "1.2.1", + "progress": "1.1.8", + "require-uncached": "1.0.3", + "shelljs": "0.7.8", + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1", + "table": "3.8.3", + "text-table": "0.2.0", + "user-home": "2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.2.0", + "figures": "1.7.0", + "lodash": "4.17.5", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "7.0.6", + "interpret": "1.1.0", + "rechoir": "0.6.2" + } + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.5", + "slice-ansi": "0.0.4", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + } + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.3.tgz", + "integrity": "sha512-Zy3tAJDORxQZLl2baguiRU1syPERAIg0L+JB2MWorORgTu/CplzvxS9WWA7Xh4+Q+eOQihNs/1o1Xep8cvCxWQ==", + "dev": true, + "requires": { + "acorn": "5.5.0", + "acorn-jsx": "3.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.0.tgz", + "integrity": "sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g==", + "dev": true + } + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.39" + } + }, + "event-to-promise": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz", + "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=", + "dev": true + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "requires": { + "accepts": "1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.3", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.16", + "utils-merge": "1.0.1", + "vary": "1.1.2" + } + }, + "express-sslify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/express-sslify/-/express-sslify-1.2.0.tgz", + "integrity": "sha1-MOhLzu0VV+sYdnK74UMKCioQDZw=" + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "dev": true, + "requires": { + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.1.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.5.2" + } + } + } + }, + "extract-zip": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", + "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "debug": "2.6.9", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-parse": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", + "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", + "dev": true + }, + "fast-json-patch": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-1.2.2.tgz", + "integrity": "sha1-03fZfGkR290qHIC/rNoEik+Du/k=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-safe-stringify": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz", + "integrity": "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.2.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "requires": { + "glob": "5.0.15" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "firefox-client": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/firefox-client/-/firefox-client-0.3.0.tgz", + "integrity": "sha1-N5RGD262r89BN2rdy8dGLiSkzYs=", + "dev": true, + "requires": { + "colors": "0.5.1", + "js-select": "0.6.0" + }, + "dependencies": { + "colors": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", + "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", + "dev": true + } + } + }, + "firefox-profile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-1.1.0.tgz", + "integrity": "sha512-wUIE4QeAjwoHvFbomWmXgKyYtV4/oZxDcJG4znxtGGa/0BhKkd3HzeOf3tAsMWPq1ExARZxCRRiNw1BL3FuPqA==", + "dev": true, + "requires": { + "adm-zip": "0.4.7", + "archiver": "2.1.1", + "async": "2.5.0", + "fs-extra": "4.0.3", + "ini": "1.3.5", + "jetpack-id": "1.0.0", + "lazystream": "1.0.0", + "lodash": "4.17.5", + "minimist": "1.2.0", + "uuid": "3.2.1", + "xml2js": "0.4.19" + }, + "dependencies": { + "archiver": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", + "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", + "dev": true, + "requires": { + "archiver-utils": "1.3.0", + "async": "2.5.0", + "buffer-crc32": "0.2.13", + "glob": "7.0.6", + "lodash": "4.17.5", + "readable-stream": "2.3.4", + "tar-stream": "1.5.5", + "zip-stream": "1.2.0" + } + }, + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "2.3.4" + } + }, + "fizzy-ui-utils": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz", + "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", + "dev": true, + "requires": { + "desandro-matches-selector": "2.0.2" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "flatstr": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.5.tgz", + "integrity": "sha1-W0UbCMvUji6sVKK74L9GFlqhS+M=", + "dev": true + }, + "flipclock": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/flipclock/-/flipclock-0.7.8.tgz", + "integrity": "sha1-838ffKkETZAsH+4fGuf0vR7vGlQ=", + "dev": true, + "requires": { + "jquery": "3.3.1" + } + }, + "fluent": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/fluent/-/fluent-0.4.1.tgz", + "integrity": "sha512-vatFe36jVjXclCYPRopLVB6oR5ceuKWnn6oVLIuLCnkdCb49RGuTznPdd51xATo+S83N9zLD1xsYf1Ma4s2VoQ==", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.4" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.9.2", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "fx-runner": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.0.8.tgz", + "integrity": "sha1-XO07BKjVHWNN4g0UgPDcXdgyXew=", + "dev": true, + "requires": { + "commander": "2.9.0", + "lodash": "3.10.1", + "shell-quote": "1.6.1", + "spawn-sync": "1.0.15", + "when": "3.7.7", + "which": "1.2.4", + "winreg": "0.0.12" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "isexe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", + "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", + "dev": true + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "which": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", + "integrity": "sha1-FVf5YIBgTlsRs1meufRbUKnv1yI=", + "dev": true, + "requires": { + "is-absolute": "0.1.7", + "isexe": "1.1.2" + } + } + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-size": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.2.tgz", + "integrity": "sha1-VV6pirhzLgwCHp4j4iGa3L45jpg=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "gettext-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.0.tgz", + "integrity": "sha1-LFpmONiTk0ubVQN9CtgstwBLJnk=", + "dev": true, + "requires": { + "encoding": "0.1.12" + } + }, + "git-rev-sync": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/git-rev-sync/-/git-rev-sync-1.9.1.tgz", + "integrity": "sha1-oMLj3TkqvPa3aWLif8dfsyI0Sc4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "graceful-fs": "4.1.11", + "shelljs": "0.7.7" + }, + "dependencies": { + "shelljs": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", + "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", + "dev": true, + "requires": { + "glob": "7.0.6", + "interpret": "1.1.0", + "rechoir": "0.6.2" + } + } + } + }, + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "dev": true, + "requires": { + "min-document": "2.19.0", + "process": "0.5.2" + }, + "dependencies": { + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + } + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "1.3.5" + } + }, + "globals": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", + "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.0.6", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.5", + "minimatch": "3.0.4" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "grunt": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.2.tgz", + "integrity": "sha1-TmpeaVtwRy/VME9fqeNCNoNqc7w=", + "dev": true, + "requires": { + "coffeescript": "1.10.0", + "dateformat": "1.0.12", + "eventemitter2": "0.4.14", + "exit": "0.1.2", + "findup-sync": "0.3.0", + "glob": "7.0.6", + "grunt-cli": "1.2.0", + "grunt-known-options": "1.1.0", + "grunt-legacy-log": "1.0.1", + "grunt-legacy-util": "1.0.0", + "iconv-lite": "0.4.19", + "js-yaml": "3.5.5", + "minimatch": "3.0.4", + "nopt": "3.0.6", + "path-is-absolute": "1.0.1", + "rimraf": "2.2.8" + } + }, + "grunt-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "dev": true, + "requires": { + "findup-sync": "0.3.0", + "grunt-known-options": "1.1.0", + "nopt": "3.0.6", + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "grunt-contrib-clean": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz", + "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=", + "dev": true, + "requires": { + "async": "1.5.2", + "rimraf": "2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.0.6" + } + } + } + }, + "grunt-contrib-connect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz", + "integrity": "sha1-XPkzuRpnOGBEJzwLJERgPNmIebo=", + "dev": true, + "requires": { + "async": "1.5.2", + "connect": "3.6.6", + "connect-livereload": "0.5.4", + "http2": "3.3.7", + "morgan": "1.9.0", + "opn": "4.0.2", + "portscanner": "1.2.0", + "serve-index": "1.9.1", + "serve-static": "1.13.1" + } + }, + "grunt-contrib-copy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", + "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "file-sync-cmp": "0.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "grunt-contrib-pug": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-pug/-/grunt-contrib-pug-1.0.0.tgz", + "integrity": "sha1-tSWlwK/wRiL3Vw4x+SQQbxb4G0Y=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "pug": "2.0.0-rc.4" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "grunt-contrib-stylus": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-stylus/-/grunt-contrib-stylus-1.2.0.tgz", + "integrity": "sha1-R9RG7wVESW7/naQY0A9XdFQ0crs=", + "dev": true, + "requires": { + "async": "1.5.2", + "chalk": "1.1.3", + "lodash": "4.17.5", + "nib": "1.1.2", + "stylus": "0.54.5" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "grunt-contrib-watch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz", + "integrity": "sha1-hKGnodar0m7VaEE0lscxM+mQAY8=", + "dev": true, + "requires": { + "async": "1.5.2", + "gaze": "1.1.2", + "lodash": "3.10.1", + "tiny-lr": "0.2.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "grunt-crx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/grunt-crx/-/grunt-crx-1.0.5.tgz", + "integrity": "sha1-nU5QHO8WtyF3KmBBxNQdH5KFirU=", + "dev": true, + "requires": { + "crx": "3.2.1", + "es6-promise": "3.3.1", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "xtend": "4.0.1" + } + }, + "grunt-exec": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz", + "integrity": "sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg==", + "dev": true + }, + "grunt-known-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", + "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=", + "dev": true + }, + "grunt-legacy-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.1.tgz", + "integrity": "sha512-rwuyqNKlI0IPz0DvxzJjcEiQEBaBNVeb1LFoZKxSmHLETFUwhwUrqOsPIxURTKSwNZHZ4ht1YLBYmVU0YZAzHQ==", + "dev": true, + "requires": { + "colors": "1.1.2", + "grunt-legacy-log-utils": "1.0.0", + "hooker": "0.2.3", + "lodash": "4.17.5", + "underscore.string": "3.3.4" + } + }, + "grunt-legacy-log-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", + "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "lodash": "4.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "lodash": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", + "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "grunt-legacy-util": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", + "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", + "dev": true, + "requires": { + "async": "1.5.2", + "exit": "0.1.2", + "getobject": "0.1.0", + "hooker": "0.2.3", + "lodash": "4.3.0", + "underscore.string": "3.2.3", + "which": "1.2.14" + }, + "dependencies": { + "lodash": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", + "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", + "dev": true + }, + "underscore.string": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", + "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=", + "dev": true + } + } + }, + "grunt-mocha-test": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.13.3.tgz", + "integrity": "sha512-zQGEsi3d+ViPPi7/4jcj78afKKAKiAA5n61pknQYi25Ugik+aNOuRmiOkmb8mN2CeG8YxT+YdT1H1Q7B/eNkoQ==", + "dev": true, + "requires": { + "hooker": "0.2.3", + "mkdirp": "0.5.1" + } + }, + "grunt-webpack": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/grunt-webpack/-/grunt-webpack-3.0.2.tgz", + "integrity": "sha512-ghSkdCdvbF1SpI46qDT9FYqw5ZP5sSYbEQU/DwzoJE1K42xizAZ5Rv3kzpaRdJT4yvu8/6fO5+wne3/y0n74QA==", + "dev": true, + "requires": { + "deep-for-each": "1.0.6", + "lodash": "4.17.5" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "http2": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.7.tgz", + "integrity": "sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ==", + "dev": true + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.1.1.tgz", + "integrity": "sha512-LK6tQUR/VOkTI6ygAfWUKKP95I+e6M1h7N3PncGu1CATHCnex+CAv9ttR0lbHu1Uk2PXm/WoAHFo6JCGwMjVMw==", + "dev": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inject-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/inject-loader/-/inject-loader-3.0.1.tgz", + "integrity": "sha512-0Kd4NqMJUhknG4ECiJ/mgyHJBpfBBWZ3IKHl2BLNQiFtMO7/xiv9mmHl7mGvE0iKrBeQAZdMcQP3sMXZN0cqeg==", + "dev": true, + "requires": { + "babel-core": "6.26.0" + } + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.2", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.5", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invariant": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ipaddr.js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", + "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" + }, + "is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "dev": true, + "requires": { + "is-relative": "0.1.3" + } + }, + "is-alphabetical": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.1.tgz", + "integrity": "sha1-x3B5zJHU76x3W+EDS/LSQ/lebwg=", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz", + "integrity": "sha1-37SqTRCF4zvbYcLe6cgOnGwZ9Ts=", + "dev": true, + "requires": { + "is-alphabetical": "1.0.1", + "is-decimal": "1.0.1" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-decimal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.1.tgz", + "integrity": "sha1-9ftqlJlq2ejjdh+/vQkfH8qMToI=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", + "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", + "dev": true, + "requires": { + "acorn": "4.0.13", + "object-assign": "4.1.1" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-hexadecimal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz", + "integrity": "sha1-bghLvJIGH7sJcexYts5tQE4k2mk=", + "dev": true + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" + } + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", + "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", + "dev": true + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isemail": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", + "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isotope-layout": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/isotope-layout/-/isotope-layout-3.0.5.tgz", + "integrity": "sha512-qyZXlTaBilCJu5gxATAYskiZVa1LUCpWfs3hJLq/kFeOElLMH7RPMUk3u/+gGAl8QOgERU7zpzBM9jwrg+uEjg==", + "dev": true, + "requires": { + "desandro-matches-selector": "2.0.2", + "fizzy-ui-utils": "2.0.7", + "get-size": "2.0.2", + "masonry-layout": "4.2.1", + "outlayer": "2.1.1" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jed": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", + "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=", + "dev": true + }, + "jetpack-id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jetpack-id/-/jetpack-id-1.0.0.tgz", + "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", + "dev": true + }, + "joi": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", + "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", + "dev": true, + "requires": { + "hoek": "2.16.3", + "isemail": "1.2.0", + "moment": "2.21.0", + "topo": "1.1.0" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + } + } + }, + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", + "dev": true + }, + "js-select": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/js-select/-/js-select-0.6.0.tgz", + "integrity": "sha1-woTiKCTVknrsli3N8kcXSu+w0ZA=", + "dev": true, + "requires": { + "JSONSelect": "0.2.1", + "traverse": "0.4.6" + }, + "dependencies": { + "traverse": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.4.6.tgz", + "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=", + "dev": true + } + } + }, + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", + "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "2.7.3" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "json-merge-patch": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-0.2.3.tgz", + "integrity": "sha1-+ixrWvh9p3uuKWalidUuI+2B/kA=", + "dev": true, + "requires": { + "deep-equal": "1.0.1" + } + }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsonwebtoken": { + "version": "7.1.9", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.1.9.tgz", + "integrity": "sha1-hHgE5SWL7FqUmajcSl56O64I1Yo=", + "dev": true, + "requires": { + "joi": "6.10.1", + "jws": "3.1.4", + "lodash.once": "4.1.1", + "ms": "0.7.3", + "xtend": "4.0.1" + }, + "dependencies": { + "ms": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", + "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=", + "dev": true + } + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsrsasign": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-8.0.6.tgz", + "integrity": "sha1-RYbwCCPjAuWZokSke+IMYardD88=", + "dev": true + }, + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "dev": true, + "requires": { + "is-promise": "2.1.0", + "promise": "7.3.1" + } + }, + "jstransformer-markdown-it": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.0.0.tgz", + "integrity": "sha1-i0Su28lGXck10oC+kDObZxwWzrg=", + "dev": true, + "requires": { + "markdown-it": "8.4.1" + } + }, + "jszip": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", + "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, + "just-extend": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", + "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", + "dev": true + }, + "jwa": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz", + "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=", + "dev": true, + "requires": { + "base64url": "2.0.0", + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.9", + "safe-buffer": "5.1.1" + } + }, + "jws": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", + "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=", + "dev": true, + "requires": { + "base64url": "2.0.0", + "jwa": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "4.0.1" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "2.3.4" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "linkify-it": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz", + "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", + "dev": true, + "requires": { + "uc.micro": "1.0.5" + } + }, + "livereload-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz", + "integrity": "sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg==", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "lodash.endswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", + "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.startswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", + "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=", + "dev": true + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "lolex": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.2.tgz", + "integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "longest-streak": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-1.0.0.tgz", + "integrity": "sha1-0GWXxNTDG1LMsfXY+P5xSOr9aWU=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-dir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "markdown-it": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.1.tgz", + "integrity": "sha512-CzzqSSNkFRUf9vlWvhK1awpJreMRqdCrBvZ8DIoDWTOkESMIF741UPAhuAmbyWmdiFPA6WARNhnu2M6Nrhwa+A==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "entities": "1.1.1", + "linkify-it": "2.0.3", + "mdurl": "1.0.1", + "uc.micro": "1.0.5" + } + }, + "markdown-table": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.4.0.tgz", + "integrity": "sha1-iQwsGzv+g/sA5BKbjkz+ZFJw+dE=", + "dev": true + }, + "markdown-to-ast": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/markdown-to-ast/-/markdown-to-ast-3.4.0.tgz", + "integrity": "sha1-Diy6gTkLBUmpFT7DsNkVthwWS+c=", + "dev": true, + "requires": { + "debug": "2.6.9", + "remark": "5.1.0", + "structured-source": "3.0.2", + "traverse": "0.6.6" + } + }, + "masonry-layout": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.1.tgz", + "integrity": "sha512-ngJmxszn+JSKreNnrwkjks9OUuwVL2JR8T4iVeE3+g+sJjyoxTLdUNRbYONA25y+nWZn+WZI2GvThRAV+z5Duw==", + "dev": true, + "requires": { + "get-size": "2.0.2", + "outlayer": "2.1.1" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.7", + "readable-stream": "2.3.4" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "0.1.1" + } + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.4", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.1.tgz", + "integrity": "sha512-SpwyojlnE/WRBNGtvJSNfllfm5PqEDFxcWluSIgLeSBJtXG4DmoX2NNAeEA7rP5kK+79VgtVq8nG6HskaL1ykg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.3.1", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "0.5.1", + "supports-color": "4.4.0" + }, + "dependencies": { + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "moment": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.21.0.tgz", + "integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ==", + "dev": true + }, + "morgan": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", + "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "dev": true, + "requires": { + "basic-auth": "2.0.0", + "debug": "2.6.9", + "depd": "1.1.2", + "on-finished": "2.3.0", + "on-headers": "1.0.1" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.0.6" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "ncp": "2.0.0", + "rimraf": "2.4.5" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "optional": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "dev": true, + "optional": true, + "requires": { + "glob": "6.0.4" + } + } + } + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "1.3.0", + "object-assign": "4.1.1", + "thenify-all": "1.6.0" + } + }, + "nan": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.9.2.tgz", + "integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw==", + "dev": true, + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q=", + "dev": true + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true, + "optional": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nib": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", + "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", + "dev": true, + "requires": { + "stylus": "0.54.5" + } + }, + "nise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.0.tgz", + "integrity": "sha512-U+Krdzhsw4losPP/Rij5UGTLQgS9gaWmXdRIbZQIQWVsUGDBo+N0m9mrY9CCEnmwssgswwydxLJUZtFfouC0gA==", + "dev": true, + "requires": { + "@sinonjs/formatio": "2.0.0", + "just-extend": "1.1.27", + "lolex": "2.3.2", + "path-to-regexp": "1.7.0", + "text-encoding": "0.6.4" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "node-firefox-connect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-firefox-connect/-/node-firefox-connect-1.2.0.tgz", + "integrity": "sha1-QkA4SDEyQMmFFO8UszAoFv47hOE=", + "dev": true, + "requires": { + "es6-promise": "2.3.0", + "firefox-client": "0.3.0" + }, + "dependencies": { + "es6-promise": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", + "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=", + "dev": true + } + } + }, + "node-forge": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.2.tgz", + "integrity": "sha512-XTBoBY8NoeGAqQywTM8BjBz/Ro37eTmVF657yf6JumfOhxW9eET43Hve5+6L4+lo3hTDx7kTbC1WfasTHinDpg==", + "dev": true + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.4", + "stream-browserify": "2.0.1", + "stream-http": "2.8.0", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.6", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + } + }, + "node-notifier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", + "dev": true, + "requires": { + "growly": "1.3.0", + "semver": "5.5.0", + "shellwords": "0.1.1", + "which": "1.3.0" + }, + "dependencies": { + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + } + } + }, + "node-rsa": { + "version": "0.2.30", + "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-0.2.30.tgz", + "integrity": "sha1-iRLiw7G2TM5sp4PKsa8oKzAK3uY=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "lodash": "3.3.0" + }, + "dependencies": { + "lodash": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.3.0.tgz", + "integrity": "sha1-ARzlLQGxTmDq7qdqy5uLpCxwWBs=", + "dev": true + } + } + }, + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "dev": true, + "requires": { + "chalk": "0.4.0", + "underscore": "1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "open": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", + "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", + "dev": true + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "outlayer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", + "integrity": "sha1-KYY7beEOpdrf/8rfoNcokHOH6aI=", + "dev": true, + "requires": { + "ev-emitter": "1.1.1", + "fizzy-ui-utils": "2.0.7", + "get-size": "2.0.2" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.5.0" + } + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.10.1", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.1.tgz", + "integrity": "sha1-gRLYhHExnyerrk1klksSL+ThuJA=", + "dev": true, + "requires": { + "character-entities": "1.2.1", + "character-entities-legacy": "1.1.1", + "character-reference-invalid": "1.1.1", + "is-alphanumerical": "1.0.1", + "is-decimal": "1.0.1", + "is-hexadecimal": "1.0.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "9.4.6" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pino": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/pino/-/pino-4.10.3.tgz", + "integrity": "sha512-IKXK0dcFQYITgOJBEvy1RCI5gUz+VVERXMhIvk5Ie+k9zzrbwXDs38M3H6JhoCHR58exyNpNcEKBrW4JC2P0pg==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "fast-json-parse": "1.0.3", + "fast-safe-stringify": "1.2.3", + "flatstr": "1.0.5", + "pump": "2.0.1", + "quick-format-unescaped": "1.1.2", + "split2": "2.2.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "po2json": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/po2json/-/po2json-0.4.5.tgz", + "integrity": "sha1-R7spUtoy1Yob4vJWpZjuvAt0URg=", + "dev": true, + "requires": { + "gettext-parser": "1.1.0", + "nomnom": "1.8.1" + } + }, + "portscanner": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz", + "integrity": "sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI=", + "dev": true, + "requires": { + "async": "1.5.2" + } + }, + "postcss": { + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "source-map": "0.6.1", + "supports-color": "4.5.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "probe-image-size": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-3.2.0.tgz", + "integrity": "sha512-LE7mIvfDoEeOgIH9TbMNv5txJh+K0/UVandiXHk+Hm4VKqNV5qxoeDzdW3QiMIlqXsIEm3K+SzeAedT6fZKjtQ==", + "dev": true, + "requires": { + "any-promise": "1.3.0", + "deepmerge": "1.5.2", + "got": "6.7.1", + "inherits": "2.0.3", + "next-tick": "1.0.0", + "stream-parser": "0.3.1" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", + "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.6.0" + } + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.6" + } + }, + "pug": { + "version": "2.0.0-rc.4", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.0-rc.4.tgz", + "integrity": "sha512-SL7xovj6E2Loq9N0UgV6ynjMLW4urTFY/L/Fprhvz13Xc5vjzkjZjI1QHKq31200+6PSD8PyU6MqrtCTJj6/XA==", + "dev": true, + "requires": { + "pug-code-gen": "2.0.0", + "pug-filters": "2.1.5", + "pug-lexer": "3.1.0", + "pug-linker": "3.0.3", + "pug-load": "2.0.9", + "pug-parser": "4.0.0", + "pug-runtime": "2.0.3", + "pug-strip-comments": "1.0.2" + } + }, + "pug-attrs": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.2.tgz", + "integrity": "sha1-i+KyIlVo/6ddG4Zpgr/59BEa/8s=", + "dev": true, + "requires": { + "constantinople": "3.1.2", + "js-stringify": "1.0.2", + "pug-runtime": "2.0.3" + } + }, + "pug-code-gen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.0.tgz", + "integrity": "sha512-E4oiJT+Jn5tyEIloj8dIJQognbiNNp0i0cAJmYtQTFS0soJ917nlIuFtqVss3IXMEyQKUew3F4gIkBpn18KbVg==", + "dev": true, + "requires": { + "constantinople": "3.1.2", + "doctypes": "1.1.0", + "js-stringify": "1.0.2", + "pug-attrs": "2.0.2", + "pug-error": "1.3.2", + "pug-runtime": "2.0.3", + "void-elements": "2.0.1", + "with": "5.1.1" + } + }, + "pug-error": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz", + "integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY=", + "dev": true + }, + "pug-filters": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-2.1.5.tgz", + "integrity": "sha512-xkw71KtrC4sxleKiq+cUlQzsiLn8pM5+vCgkChW2E6oNOzaqTSIBKIQ5cl4oheuDzvJYCTSYzRaVinMUrV4YLQ==", + "dev": true, + "requires": { + "clean-css": "3.4.28", + "constantinople": "3.1.2", + "jstransformer": "1.0.0", + "pug-error": "1.3.2", + "pug-walk": "1.1.5", + "resolve": "1.5.0", + "uglify-js": "2.8.29" + } + }, + "pug-lexer": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-3.1.0.tgz", + "integrity": "sha1-/QhzdtSmdbT1n4/vQiiDQ06VgaI=", + "dev": true, + "requires": { + "character-parser": "2.2.0", + "is-expression": "3.0.0", + "pug-error": "1.3.2" + } + }, + "pug-linker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.3.tgz", + "integrity": "sha512-DCKczglCXOzJ1lr4xUj/lVHYvS+lGmR2+KTCjZjtIpdwaN7lNOoX2SW6KFX5X4ElvW+6ThwB+acSUg08UJFN5A==", + "dev": true, + "requires": { + "pug-error": "1.3.2", + "pug-walk": "1.1.5" + } + }, + "pug-load": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.9.tgz", + "integrity": "sha512-BDdZOCru4mg+1MiZwRQZh25+NTRo/R6/qArrdWIf308rHtWA5N9kpoUskRe4H6FslaQujC+DigH9LqlBA4gf6Q==", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "pug-walk": "1.1.5" + } + }, + "pug-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-4.0.0.tgz", + "integrity": "sha512-ocEUFPdLG9awwFj0sqi1uiZLNvfoodCMULZzkRqILryIWc/UUlDlxqrKhKjAIIGPX/1SNsvxy63+ayEGocGhQg==", + "dev": true, + "requires": { + "pug-error": "1.3.2", + "token-stream": "0.0.1" + } + }, + "pug-runtime": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.3.tgz", + "integrity": "sha1-mBYmB7D86eJU1CfzOYelrucWi9o=", + "dev": true + }, + "pug-strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.2.tgz", + "integrity": "sha1-0xOvoBvMN0mA4TmeI+vy65vchRM=", + "dev": true, + "requires": { + "pug-error": "1.3.2" + } + }, + "pug-walk": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.5.tgz", + "integrity": "sha512-rJlH1lXerCIAtImXBze3dtKq/ykZMA4rpO9FnPcIgsWcxZLOvd8zltaoeOVFyBSSqCkhhJWbEbTMga8UxWUUSA==", + "dev": true + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", + "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "dev": true, + "requires": { + "duplexify": "3.5.4", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "puppeteer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.1.1.tgz", + "integrity": "sha1-rb8l5J9e8DRDwQq44JqVTKDHv+4=", + "dev": true, + "requires": { + "debug": "2.6.9", + "extract-zip": "1.6.6", + "https-proxy-agent": "2.1.1", + "mime": "1.4.1", + "progress": "2.0.0", + "proxy-from-env": "1.0.0", + "rimraf": "2.6.2", + "ws": "3.3.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.0.6" + } + } + } + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "quick-format-unescaped": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-1.1.2.tgz", + "integrity": "sha1-DKWB3jF0vs7yWsPC6JVjQjgdtpg=", + "dev": true, + "requires": { + "fast-safe-stringify": "1.2.3" + } + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "2.0.6", + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.5.tgz", + "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "readable-stream": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.4", + "set-immediate-shim": "1.0.1" + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "mute-stream": "0.0.5" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.5.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-5.1.3.tgz", + "integrity": "sha512-Yjy6t7jFQczDhYE+WVm7pg6gWYE258q4sUkk9qDErwXJIqx7jU9jGrMFHutJK/SRfcg7MEkXjGaYiVlOZyev/A==", + "dev": true, + "requires": { + "regenerate": "1.3.3" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.12.3.tgz", + "integrity": "sha512-y2uxO/6u+tVmtEDIKo+tLCtI0GcbQr0OreosKgCd7HP4VypGjtTrw79DezuwT+W5QX0YWuvpeBOgumrepwM1kA==", + "dev": true, + "requires": { + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regexpu-core": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.3.tgz", + "integrity": "sha512-mB+njEzO7oezA57IbQxxd6fVPOeWKDmnGvJ485CwmfNchjHe5jWwqKepapmzUEj41yxIAqOg+C4LbXuJlkiO8A==", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regenerate-unicode-properties": "5.1.3", + "regjsgen": "0.3.0", + "regjsparser": "0.2.1", + "unicode-match-property-ecmascript": "1.0.3", + "unicode-match-property-value-ecmascript": "1.0.1" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "1.2.5", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.5" + } + }, + "regjsgen": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.3.0.tgz", + "integrity": "sha1-DuSj6SdkMM2iXx54nqbBW4ewy0M=", + "dev": true + }, + "regjsparser": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.2.1.tgz", + "integrity": "sha1-w3h1U/rwTndcMCEC7zRtmVAA7Bw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relaxed-json": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/relaxed-json/-/relaxed-json-1.0.1.tgz", + "integrity": "sha1-fI1KovCVcEzQIOMugJm8rhA/C9Q=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.8.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "remark": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-5.1.0.tgz", + "integrity": "sha1-y0Y709vLS5l5STXu4c9x16jjBow=", + "dev": true, + "requires": { + "remark-parse": "1.1.0", + "remark-stringify": "1.1.0", + "unified": "4.2.1" + } + }, + "remark-parse": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-1.1.0.tgz", + "integrity": "sha1-w8oQ+ajaBGFcKPCapOMEUQUm7CE=", + "dev": true, + "requires": { + "collapse-white-space": "1.0.3", + "extend": "3.0.1", + "parse-entities": "1.1.1", + "repeat-string": "1.6.1", + "trim": "0.0.1", + "trim-trailing-lines": "1.1.0", + "unherit": "1.1.0", + "unist-util-remove-position": "1.1.1", + "vfile-location": "2.0.2" + } + }, + "remark-stringify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-1.1.0.tgz", + "integrity": "sha1-pxBeJbnuK/mkm3XSxCPxGwauIJI=", + "dev": true, + "requires": { + "ccount": "1.0.2", + "extend": "3.0.1", + "longest-streak": "1.0.0", + "markdown-table": "0.4.0", + "parse-entities": "1.1.1", + "repeat-string": "1.6.1", + "stringify-entities": "1.3.1", + "unherit": "1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "safe-json-stringify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.1.0.tgz", + "integrity": "sha512-EzBtUaFH9bHYPc69wqjp0efJI/DPNHdFbGE3uIMn4sVbO0zx8vZ8cG4WKxQfOpUOKsQyGBiT2mTqnCw+6nLswA==", + "dev": true, + "optional": true + }, + "samsam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", + "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", + "dev": true + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "dev": true, + "requires": { + "ajv": "6.2.0", + "ajv-keywords": "3.1.0" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + } + }, + "serialize-javascript": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", + "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "1.3.5", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.18", + "parseurl": "1.3.2" + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "sha.js": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, + "shelljs": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.1.tgz", + "integrity": "sha512-YA/iYtZpzFe5HyWVGrb02FjPxc4EMCfpoU/Phg9fQoyMC72u9598OUBrsU8IrtwAKG0tO8IYaqbaLIw+k3IRGA==", + "dev": true, + "requires": { + "glob": "7.0.6", + "interpret": "1.1.0", + "rechoir": "0.6.2" + } + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "sign-addon": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-0.2.2.tgz", + "integrity": "sha512-f6EzJaysErGx7a4jmccspkpM37j6bfTS+6aeo/i0F3GmS9ruv1m3CgERn3VMBQgz69kNbzE63toVFmhcbvta9g==", + "dev": true, + "requires": { + "babel-polyfill": "6.16.0", + "deepcopy": "0.6.3", + "es6-error": "4.0.0", + "es6-promisify": "5.0.0", + "jsonwebtoken": "7.1.9", + "mz": "2.5.0", + "request": "2.79.0", + "source-map-support": "0.4.6", + "stream-to-promise": "2.2.0", + "when": "3.7.7" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "babel-polyfill": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", + "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "regenerator-runtime": "0.9.6" + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "commander": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "es6-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.0.tgz", + "integrity": "sha1-8JTHBB9mJZm7EnINoFnWucf/D0A=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.14.1", + "is-my-json-valid": "2.17.2", + "pinkie-promise": "2.0.1" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "mz": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.5.0.tgz", + "integrity": "sha1-KFkCXfA9RrV7sxcXSxlkd85kzsE=", + "dev": true, + "requires": { + "any-promise": "1.3.0", + "object-assign": "4.1.1", + "thenify-all": "1.6.0" + } + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", + "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.4.3", + "uuid": "3.2.1" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "source-map-support": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.6.tgz", + "integrity": "sha1-MlUqpktFg5KoXqs7C17mFScWeus=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + } + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "sinon": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.4.2.tgz", + "integrity": "sha512-cpOHpnRyY3Dk9dTHBYMfVBB0HUCSKIpxW07X6OGW2NiYPovs4AkcL8Q8MzecbAROjbfRA9esJCmlZgikxDz7DA==", + "dev": true, + "requires": { + "@sinonjs/formatio": "2.0.0", + "diff": "3.3.1", + "lodash.get": "4.4.2", + "lolex": "2.3.2", + "nise": "1.3.0", + "supports-color": "5.3.0", + "type-detect": "4.0.8" + } + }, + "sinon-chai": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", + "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", + "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", + "dev": true, + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "os-shim": "0.1.3" + } + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "requires": { + "through2": "2.0.3" + } + }, + "sprintf-js": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", + "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "ssri": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.2.4.tgz", + "integrity": "sha512-UnEAgMZa15973iH7cUi0AHjJn1ACDIkaMyZILoqwN6yzt+4P81I8tBc5Hl+qwi5auMplZtPQsHrPBR5vJLcQtQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, + "stream-http": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", + "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "dev": true, + "requires": { + "debug": "2.6.9" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "stream-to-array": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", + "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=", + "dev": true, + "requires": { + "any-promise": "1.3.0" + } + }, + "stream-to-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-2.2.0.tgz", + "integrity": "sha1-se2y4cjLESidG1A8CNPyrvUeZQ8=", + "dev": true, + "requires": { + "any-promise": "1.3.0", + "end-of-stream": "1.1.0", + "stream-to-array": "2.3.0" + }, + "dependencies": { + "end-of-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", + "integrity": "sha1-6TUyWLqpEIll78QcsO+K3i88+wc=", + "dev": true, + "requires": { + "once": "1.3.3" + } + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringify-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.1.tgz", + "integrity": "sha1-sVDsLXKsTBtfMktR+2soyc3/BYw=", + "dev": true, + "requires": { + "character-entities-html4": "1.1.1", + "character-entities-legacy": "1.1.1", + "is-alphanumerical": "1.0.1", + "is-hexadecimal": "1.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-bom-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz", + "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", + "dev": true, + "requires": { + "first-chunk-stream": "2.0.0", + "strip-bom-buf": "1.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "structured-source": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-3.0.2.tgz", + "integrity": "sha1-3YAkJeD1PcSm56yjdSkBoczaevU=", + "dev": true, + "requires": { + "boundary": "1.0.1" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.0", + "debug": "2.6.9", + "glob": "7.0.6", + "mkdirp": "0.5.1", + "sax": "0.5.8", + "source-map": "0.1.43" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "table": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "dev": true, + "requires": { + "ajv": "6.2.0", + "ajv-keywords": "3.1.0", + "chalk": "2.3.2", + "lodash": "4.17.5", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", + "dev": true + }, + "tar-stream": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", + "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "dev": true, + "requires": { + "bl": "1.2.1", + "end-of-stream": "1.4.1", + "readable-stream": "2.3.4", + "xtend": "4.0.1" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "0.7.0" + } + }, + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "dev": true, + "requires": { + "any-promise": "1.3.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": "3.3.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "tiny-lr": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz", + "integrity": "sha1-s/26gC5dVqM8L28QeUsy5Hescp0=", + "dev": true, + "requires": { + "body-parser": "1.14.2", + "debug": "2.2.0", + "faye-websocket": "0.10.0", + "livereload-js": "2.3.0", + "parseurl": "1.3.2", + "qs": "5.1.0" + }, + "dependencies": { + "body-parser": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz", + "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=", + "dev": true, + "requires": { + "bytes": "2.2.0", + "content-type": "1.0.4", + "debug": "2.2.0", + "depd": "1.1.2", + "http-errors": "1.3.1", + "iconv-lite": "0.4.13", + "on-finished": "2.3.0", + "qs": "5.2.0", + "raw-body": "2.1.7", + "type-is": "1.6.16" + }, + "dependencies": { + "qs": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", + "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=", + "dev": true + } + } + }, + "bytes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz", + "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "statuses": "1.3.1" + } + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "qs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", + "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=", + "dev": true + }, + "raw-body": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "dev": true, + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.13", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", + "dev": true + } + } + } + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "token-stream": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", + "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", + "dev": true + }, + "topo": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", + "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", + "dev": true, + "requires": { + "hoek": "2.16.3" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + } + } + }, + "tosource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", + "integrity": "sha1-QtiN0RZhi88A1hBt1URvNCeQL/E=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + } + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "dev": true + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "trim-trailing-lines": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.0.tgz", + "integrity": "sha1-eu+7eAjfnWafbaLkOMrIxGradoQ=", + "dev": true + }, + "trough": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.1.tgz", + "integrity": "sha1-qf2LA5Swro//guBjOgo2zK1bX4Y=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uc.micro": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz", + "integrity": "sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz", + "integrity": "sha512-CG/NvzXfemUAm5Y4Guh5eEaJYHtkG7kKNpXEJHp9QpxsFVB5/qKvYWoMaq4sa99ccZ0hM3MK8vQV9XPZB4357A==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.5", + "serialize-javascript": "1.4.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.1.0", + "worker-farm": "1.5.4" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + } + } + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": true + }, + "underscore.string": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz", + "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=", + "dev": true, + "requires": { + "sprintf-js": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "unherit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.0.tgz", + "integrity": "sha1-a5qu379z3xdWrZ4xbdmBiFhAzX0=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "xtend": "4.0.1" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.3.tgz", + "integrity": "sha512-iG/2t0F2LAU8aZYPkX5gi7ebukHnr3sWFESpb+zPQeeaQwOkfoO6ZW17YX7MdRPNG9pCy+tjzGill+Ah0Em0HA==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.3.tgz", + "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "1.0.3", + "unicode-property-aliases-ecmascript": "1.0.3" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.1.tgz", + "integrity": "sha512-lM8B0FDZQh9yYGgiabRQcyWicB27VLOolSBRIxsO7FeQPtg+79Oe7sC8Mzr8BObDs+G9CeYmC/shHo6OggNEog==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.3.tgz", + "integrity": "sha512-TdDmDOTxEf2ad1g3ZBpM6cqKIb2nJpVlz1Q++casDryKz18tpeMBhSng9hjC1CTQCkOV9Rw2knlSB6iRo7ad1w==", + "dev": true + }, + "unified": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/unified/-/unified-4.2.1.tgz", + "integrity": "sha1-dv9Dqo2kMPbn5KVchOusKtLPzS4=", + "dev": true, + "requires": { + "bail": "1.0.2", + "extend": "3.0.1", + "has": "1.0.1", + "once": "1.4.0", + "trough": "1.0.1", + "vfile": "1.4.0" + } + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "unist-util-is": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.1.tgz", + "integrity": "sha1-DDEmKeP5YMZukx6BLT2A53AQlHs=", + "dev": true + }, + "unist-util-remove-position": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.1.tgz", + "integrity": "sha1-WoXBVV/BugwQG4ZwfRXlD6TIcbs=", + "dev": true, + "requires": { + "unist-util-visit": "1.3.0" + } + }, + "unist-util-visit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.3.0.tgz", + "integrity": "sha512-9ntYcxPFtl44gnwXrQKZ5bMqXMY0ZHzUpqMFiU4zcc8mmf/jzYm8GhYgezuUlX4cJIM1zIDYaO6fG/fI+L6iiQ==", + "dev": true, + "requires": { + "unist-util-is": "2.1.1" + } + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "upath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.2.tgz", + "integrity": "sha512-fCmij7T5LnwUme3dbnVSejvOHHlARjB3ikJFwgZfz386pHmf/gueuTLRFU94FZEaeCLlbQrweiUU700gG41tUw==", + "dev": true, + "requires": { + "lodash.endswith": "4.2.1", + "lodash.isfunction": "3.0.9", + "lodash.isstring": "4.0.1", + "lodash.startswith": "4.2.1" + } + }, + "update-notifier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", + "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "dev": true, + "requires": { + "boxen": "1.3.0", + "chalk": "2.3.2", + "configstore": "3.1.1", + "import-lazy": "2.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + } + }, + "update-section": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", + "integrity": "sha1-RY8Xgg03gg3GDiC4bZQ5GwASMVg=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "vfile": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-1.4.0.tgz", + "integrity": "sha1-wP1vpIT43r23cfaMMe112I2pf+c=", + "dev": true + }, + "vfile-location": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.2.tgz", + "integrity": "sha1-02dcWch3SY5JK0dW/2Xkrxp1IlU=", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "walkdir": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "dev": true + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "dev": true, + "requires": { + "async": "2.6.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + }, + "dependencies": { + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + } + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "1.0.3" + } + }, + "web-ext": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-2.4.0.tgz", + "integrity": "sha1-QQPnNxlusqn+gwh3UjV9Hf5hgpQ=", + "dev": true, + "requires": { + "adbkit": "2.11.0", + "addons-linter": "0.35.0", + "babel-polyfill": "6.26.0", + "babel-runtime": "6.26.0", + "bunyan": "1.8.12", + "camelcase": "4.1.0", + "debounce": "1.1.0", + "decamelize": "2.0.0", + "es6-error": "4.1.1", + "es6-promisify": "5.0.0", + "event-to-promise": "0.8.0", + "firefox-profile": "1.1.0", + "fx-runner": "1.0.8", + "git-rev-sync": "1.9.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "mz": "2.7.0", + "node-firefox-connect": "1.2.0", + "node-notifier": "5.2.1", + "open": "0.0.5", + "parse-json": "4.0.0", + "regenerator-runtime": "0.11.1", + "require-uncached": "1.0.3", + "sign-addon": "0.2.2", + "source-map-support": "0.5.3", + "stream-to-promise": "2.2.0", + "tmp": "0.0.33", + "update-notifier": "2.3.0", + "watchpack": "1.4.0", + "yargs": "6.6.0", + "zip-dir": "1.0.2" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + } + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.11.0.tgz", + "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", + "dev": true, + "requires": { + "acorn": "5.5.0", + "acorn-dynamic-import": "2.0.2", + "ajv": "6.2.0", + "ajv-keywords": "3.1.0", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" + }, + "dependencies": { + "acorn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.0.tgz", + "integrity": "sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g==", + "dev": true + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "webpack-merge": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.2.tgz", + "integrity": "sha512-/0QYwW/H1N/CdXYA2PNPVbsxO3u2Fpz34vs72xm03SRfg6bMNGfMJIQEpQjKRvkG2JvT6oRJFpDtSrwbX8Jzvw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.4.10", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whatwg-url": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.3.0.tgz", + "integrity": "sha512-rM+hE5iYKGPAOu05mIdJR47pYSR2vDzfrTEFRc/S8D3L60yW8BuXmUJ7Kog7x/DrokFN7JNaHKadpzjouKRRAw==", + "dev": true, + "requires": { + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" + } + }, + "when": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz", + "integrity": "sha1-q6A/w7tzbWyIsJHQE9io5ZDYRxg=", + "dev": true + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "winreg": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz", + "integrity": "sha1-BxBVVLoanQiXklHRKUdb/64wBrc=", + "dev": true + }, + "with": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", + "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", + "dev": true, + "requires": { + "acorn": "3.3.0", + "acorn-globals": "3.1.0" + } + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "worker-farm": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.4.tgz", + "integrity": "sha512-ITyClEvcfv0ozqJl1vmWFWhvI+OIrkbInYqkEPE50wFPXj8J9Gd3FYf8+CkZJXJJsQBYe+2DvmoK9Zhx5w8W+w==", + "dev": true, + "requires": { + "errno": "0.1.7", + "xtend": "4.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1", + "ultron": "1.1.1" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "xhr-mock": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xhr-mock/-/xhr-mock-2.2.0.tgz", + "integrity": "sha1-TfIzjszRSRT62wHP4ieo+FrXvjU=", + "dev": true, + "requires": { + "global": "4.3.2", + "url": "0.11.0" + } + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": "1.2.4", + "xmlbuilder": "9.0.7" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } + }, + "zip-dir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-1.0.2.tgz", + "integrity": "sha1-JT+QeurWKiGs2HIdi4gDKyQRwFE=", + "dev": true, + "requires": { + "async": "1.5.2", + "jszip": "2.6.1" + } + }, + "zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "dev": true, + "requires": { + "archiver-utils": "1.3.0", + "compress-commons": "1.2.2", + "lodash": "4.17.5", + "readable-stream": "2.3.4" + } + } + } +} diff --git a/package.json b/package.json index 87b46a9b..37b07163 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,10 @@ "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" }, - "dependencies": {}, + "dependencies": { + "express": "^4.16.2", + "express-sslify": "^1.2.0" + }, "devDependencies": { "@babel/core": "^7.0.0-beta.36", "@babel/polyfill": "^7.0.0-beta.37", @@ -16,7 +19,6 @@ "chai-arrays": "^2.0.0", "chai-as-promised": "^7.1.1", "codemirror": "^5.33.0", - "express": "^4.16.2", "flipclock": "^0.7.8", "grunt": "^1.0.1", "grunt-cli": "^1.2.0", @@ -52,6 +54,8 @@ "xhr-mock": "^2.0.3" }, "scripts": { + "postinstall": "grunt build-website", + "start": "node server.js", "test": "grunt test", "build": "grunt build" } diff --git a/server.js b/server.js new file mode 100644 index 00000000..a8406200 --- /dev/null +++ b/server.js @@ -0,0 +1,18 @@ +const express = require('express'); +const enforce = require('express-sslify'); + +const app = express(); + +if(process.env.NODE_ENV === 'production') { + console.log('Redirecting to TLS endpoint.'); + app.use(enforce.HTTPS({ + // Required for proper use under a reverse proxy (Heroku, etc.). + trustProtoHeader: true + })); +} + +app.use('/', express.static('dist/website')); + +app.listen(process.env.PORT || 3000, function() { + console.log('Started.'); +}); From 51affd75d58d5e9ae11d2582e0a1d9f540775f7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 2 Mar 2018 20:45:42 -0300 Subject: [PATCH 119/611] Fix HTTP use inside HTTPS. --- css/google-roboto-mono.css | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/css/google-roboto-mono.css b/css/google-roboto-mono.css index 9fe85925..d38c3d16 100644 --- a/css/google-roboto-mono.css +++ b/css/google-roboto-mono.css @@ -3,7 +3,7 @@ font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; - src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpYzTOQ_MqJVwkKsUn0wKzc2I.woff2) format('woff2'); + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpYzTOQ_MqJVwkKsUn0wKzc2I.woff2) format('woff2'); unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; } /* cyrillic */ @@ -11,7 +11,7 @@ font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; - src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpYzUj_cnvWIuuBMVgbX098Mw.woff2) format('woff2'); + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpYzUj_cnvWIuuBMVgbX098Mw.woff2) format('woff2'); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } /* greek-ext */ @@ -19,7 +19,7 @@ font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; - src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpY0bcKLIaa1LC45dFaAfauRA.woff2) format('woff2'); + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpY0bcKLIaa1LC45dFaAfauRA.woff2) format('woff2'); unicode-range: U+1F00-1FFF; } /* greek */ @@ -27,7 +27,7 @@ font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; - src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpY2o_sUJ8uO4YLWRInS22T3Y.woff2) format('woff2'); + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpY2o_sUJ8uO4YLWRInS22T3Y.woff2) format('woff2'); unicode-range: U+0370-03FF; } /* vietnamese */ @@ -35,7 +35,7 @@ font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; - src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpY76up8jxqWt8HVA3mDhkV_0.woff2) format('woff2'); + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpY76up8jxqWt8HVA3mDhkV_0.woff2) format('woff2'); unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; } /* latin-ext */ @@ -43,7 +43,7 @@ font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; - src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpYyYE0-AqJ3nfInTTiDXDjU4.woff2) format('woff2'); + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpYyYE0-AqJ3nfInTTiDXDjU4.woff2) format('woff2'); unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; } /* latin */ @@ -51,6 +51,6 @@ font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; - src: local('Roboto Mono'), local('RobotoMono-Regular'), url(http://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpY44P5ICox8Kq3LLUNMylGO4.woff2) format('woff2'); + src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v5/hMqPNLsu_dywMa4C_DEpY44P5ICox8Kq3LLUNMylGO4.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2212, U+2215; } From 96dad35e0d46667879efdb32cd25fffa6479563c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 2 Mar 2018 20:46:00 -0300 Subject: [PATCH 120/611] Fix extension button. --- src/strings.js | 2 +- src/website/extension.js | 20 +++++++++++--------- views/website/extension.pug | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/strings.js b/src/strings.js index 7b174b1f..79873546 100644 --- a/src/strings.js +++ b/src/strings.js @@ -1,7 +1,7 @@ export default { extension: { alreadyInstalled: 'Already installed', - addToChrome: 'Add to Chrome', + addToBrowser: 'Add to Browser', shareThisJwt: 'Share this JWT', jwtIoUrlCopied: 'Copied', noJwtsFound: 'No JWTs found', diff --git a/src/website/extension.js b/src/website/extension.js index 9084ea11..d4e89f8a 100644 --- a/src/website/extension.js +++ b/src/website/extension.js @@ -45,33 +45,35 @@ export function setupExtensionButton() { // chrome.webstore.install can only be called from standard event handlers. extensionButton.addEventListener('click', () => { - const url = 'https://chrome.google.com/webstore/detail/' + - 'jwt-debugger/ppmmlchacdbknfphdeafcbmklcghghmd'; + const chromeUrl = 'https://chrome.google.com/webstore/detail/' + + 'jwt-debugger/ppmmlchacdbknfphdeafcbmklcghghmd'; + const firefoxUrl = 'https://addons.mozilla.org/en-US/firefox' + + '/addon/jwtio-debugger/'; - if (button.classList.contains('is-installed')) { + if (extensionButton.classList.contains('is-installed')) { return; } - function notInstalled() { + function notInstalled(url) { extensionButton.classList.remove('is-installed'); extensionButtonText.firstChild.textContent = - strings.extension.addToChrome; + strings.extension.addToBrowser; window.open(url); } if(isChrome()) { try { - chrome.webstore.install(url, () => { + chrome.webstore.install(chromeUrl, () => { button.classList.add('is-installed'); setInstalledText(); }, () => { - notInstalled(); + notInstalled(chromeUrl); }); } catch (e) { - notInstalled(); + notInstalled(chromeUrl); } } else { - notInstalled(); + notInstalled(firefoxUrl); } }); } diff --git a/views/website/extension.pug b/views/website/extension.pug index 87f7b922..56bc863e 100644 --- a/views/website/extension.pug +++ b/views/website/extension.pug @@ -14,4 +14,4 @@ section.update-site use(fill='black', fill-opacity='1', filter='url(#filter-2)', xlink:href='#path-1') use(fill='#FFFFFF', fill-rule='evenodd', xlink:href='#path-1') - span.button-text Add to chrome \ No newline at end of file + span.button-text Add to Browser \ No newline at end of file From f7b6d067508928303274003d38db6d5c46a709b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 2 Mar 2018 21:17:56 -0300 Subject: [PATCH 121/611] Fix browser detection for the extension button. --- src/website/extension.js | 29 +---------------------------- src/website/index.js | 3 ++- src/website/utils.js | 10 ++++++++++ views/website/ebook.pug | 2 +- views/website/extension.pug | 2 +- 5 files changed, 15 insertions(+), 31 deletions(-) diff --git a/src/website/extension.js b/src/website/extension.js index d4e89f8a..c9843e17 100644 --- a/src/website/extension.js +++ b/src/website/extension.js @@ -1,34 +1,7 @@ import { extensionButton, extensionButtonText } from './dom-elements.js'; +import { isChrome } from './utils.js'; import strings from '../strings.js'; -// https://stackoverflow.com/questions/4565112/javascript-how-to-find-out-if-the-user-browser-is-chrome -function isChrome() { - // please note, - // that IE11 now returns undefined again for window.chrome - // and new Opera 30 outputs true for window.chrome - // and new IE Edge outputs to true now for window.chrome - // and if not iOS Chrome check - // so use the below updated condition - const isChromium = window.chrome, - winNav = window.navigator, - vendorName = winNav.vendor, - isOpera = winNav.userAgent.indexOf("OPR") > -1, - isIEedge = winNav.userAgent.indexOf("Edge") > -1, - isIOSChrome = winNav.userAgent.match("CriOS"); - - if (isIOSChrome) { - return false; - } else if (isChromium !== null && - isChromium !== undefined && - vendorName === "Google Inc." && - isOpera == false && - isIEedge == false) { - return true; - } else { - return false; - } -} - function setInstalledText() { if (extensionButton.classList.contains('is-installed')) { extensionButtonText.firstChild.textContent = diff --git a/src/website/index.js b/src/website/index.js index 3784752e..5e8db490 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -6,6 +6,7 @@ import { setupJwtCounter } from './counter.js'; import { setupSmoothScrolling } from './smooth-scrolling.js'; import { setupHighlighting } from './highlighting.js'; import { getParameterByName } from '../utils.js'; +import { isChrome, isFirefox } from './utils.js'; import { publicKeyTextArea, codeElements, @@ -41,7 +42,7 @@ function parseLocationQuery() { } function pickEbookOrExtensionBanner() { - if(Math.random() >= 0.5) { + if((isChrome() || isFirefox()) && (Math.random() >= 0.5)) { extensionSection.style.display = 'block'; } else { ebookSection.style.display = 'block'; diff --git a/src/website/utils.js b/src/website/utils.js index 9bf5b3a2..cfb243b0 100644 --- a/src/website/utils.js +++ b/src/website/utils.js @@ -19,3 +19,13 @@ export function isInViewport(elem) { bounding.right <= (window.innerWidth || document.documentElement.clientWidth) ); }; + +//From: +// https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser +export function isChrome() { + return !!window.chrome && !!window.chrome.webstore; +} + +export function isFirefox() { + return typeof InstallTrigger !== 'undefined'; +} diff --git a/views/website/ebook.pug b/views/website/ebook.pug index 6e49ddc4..0c7ead59 100644 --- a/views/website/ebook.pug +++ b/views/website/ebook.pug @@ -1,5 +1,5 @@ section.jtw-ebook-banner span strong Get the JWT Handbook for free! - | Spread the word and download it now. + |  Spread the word and download it now. a.btn.btn-download-ebook(href='https://auth0.com/e-books/jwt-handbook?utm_source=jwtio&utm_medium=sc&utm_campaign=rotating_banner', target='_blank') Download Ebook diff --git a/views/website/extension.pug b/views/website/extension.pug index 56bc863e..bf8185b1 100644 --- a/views/website/extension.pug +++ b/views/website/extension.pug @@ -1,7 +1,7 @@ section.update-site span strong Love JWT.IO? - | Bring the debugger to your favorite browser with our new chrome extension. + | Bring the debugger to your favorite browser with our new browser extension. a#extension-button.extension-button svg(width='14px', height='13px', viewbox='24 11 14 13', version='1.1', xmlns='http://www.w3.org/2000/svg', xmlns:xlink='http://www.w3.org/1999/xlink') defs From e19af3f90782b125c6b2201c5092b11b9b06eef0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 5 Mar 2018 16:39:25 -0300 Subject: [PATCH 122/611] Fix CPP library broken in merge. --- img/{ => website}/26.svg | 0 views/website/libraries.pug | 2 ++ views/{libraries/cpp.jade => website/libraries/cpp.pug} | 0 3 files changed, 2 insertions(+) rename img/{ => website}/26.svg (100%) rename views/{libraries/cpp.jade => website/libraries/cpp.pug} (100%) diff --git a/img/26.svg b/img/website/26.svg similarity index 100% rename from img/26.svg rename to img/website/26.svg diff --git a/views/website/libraries.pug b/views/website/libraries.pug index b9c68cb2..35a9f8ea 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -11,6 +11,7 @@ section#libraries-io.libraries-jwt option(value='*', selected='') All option(value='._1c') 1c option(value='.c') C + option(value='.cpp') C++ option(value='.clojure') Clojure option(value='.crystal') Crystal option(value='.d') D @@ -98,6 +99,7 @@ section#libraries-io.libraries-jwt include libraries/swift2.pug include libraries/c.pug include libraries/c2.pug + include libraries/cpp.pug include libraries/q.pug include libraries/delphi.pug include libraries/delphi2.pug diff --git a/views/libraries/cpp.jade b/views/website/libraries/cpp.pug similarity index 100% rename from views/libraries/cpp.jade rename to views/website/libraries/cpp.pug From 8504110130daeab6fbad34e5ab68b0f0e203af18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 5 Mar 2018 18:10:32 -0300 Subject: [PATCH 123/611] New test: all libraries should have valid images. --- package-lock.json | 26 ++++++++++++++++++++++++++ package.json | 1 + test/functional/libraries.js | 17 +++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/package-lock.json b/package-lock.json index abbc3da7..f3f010f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9217,6 +9217,26 @@ "uuid": "3.2.1" } }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "dev": true, + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.4" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -9907,6 +9927,12 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, "stream-browserify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", diff --git a/package.json b/package.json index 37b07163..cf865a31 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "mocha": "^5.0.0", "pug": "^2.0.0-rc.4", "puppeteer": "^1.0.0", + "request-promise-native": "^1.0.5", "sinon": "^4.2.2", "sinon-chai": "^2.14.0", "source-map-support": "^0.5.3", diff --git a/test/functional/libraries.js b/test/functional/libraries.js index 9c9fb4fc..f600f4ab 100644 --- a/test/functional/libraries.js +++ b/test/functional/libraries.js @@ -2,6 +2,8 @@ const chai = require('chai'); const chaiAsPromised = require('chai-as-promised'); const chaiArrays = require('chai-arrays'); +const request = require('request-promise-native'); + const utils = require('./utils.js'); const isVisible = utils.isVisible; @@ -36,6 +38,21 @@ describe('Libraries', function() { expect(libraries).to.be.sorted; }); + it('Should all have a valid logo', async function() { + const imgs = await this.page.$$eval('.panel-heading img', imgs => { + return Array.prototype.map.call(imgs, img => img.src); + }); + + const uniqueImgs = new Set(imgs); + + const promises = []; + for(src of uniqueImgs) { + promises.push(request(src)); + } + + return expect(Promise.all(promises)).to.be.fulfilled; + }); + it('Hides and displays libraries using filters', async function() { await this.page.select('#libraries-select', '.php'); // Wait for animation From ae9d347338652c81f370db0951c8a439c74908b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 5 Mar 2018 18:55:29 -0300 Subject: [PATCH 124/611] Update to Webpack 4. --- package-lock.json | 1606 +++++++++++++++++++++++++++++---- package.json | 2 +- webpack.common.js | 2 +- webpack.extension-dev.js | 1 + webpack.extension-prod.js | 2 + webpack.website-dev.js | 1 + webpack.website-prod.js | 2 + webpack.website-unit-tests.js | 1 + 8 files changed, 1458 insertions(+), 159 deletions(-) diff --git a/package-lock.json b/package-lock.json index f3f010f9..02e422ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1338,6 +1338,12 @@ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", @@ -1444,6 +1450,12 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", @@ -1468,6 +1480,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -1752,6 +1770,38 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "base64-js": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", @@ -2106,6 +2156,31 @@ } } }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -2293,6 +2368,12 @@ "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", "dev": true }, + "chrome-trace-event": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.2.tgz", + "integrity": "sha1-kPNohdU0WlBiEzLwcXtZWIPV2YI=", + "dev": true + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -2309,6 +2390,92 @@ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "clean-css": { "version": "3.4.28", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", @@ -2398,6 +2565,16 @@ "integrity": "sha1-S5BvZw5aljqHt2sOFolkM0G2Ajw=", "dev": true }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", @@ -2462,6 +2639,12 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, "compress-commons": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", @@ -2609,6 +2792,12 @@ } } }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, "core-js": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", @@ -2849,6 +3038,12 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", @@ -2906,6 +3101,24 @@ "clone": "1.0.3" } }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "del": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", @@ -4061,6 +4274,27 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "external-editor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", @@ -4478,6 +4712,15 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -5540,6 +5783,12 @@ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, "getobject": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", @@ -6152,6 +6401,66 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "hash-base": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", @@ -6475,6 +6784,23 @@ "is-relative": "0.1.3" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "is-alphabetical": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.1.tgz", @@ -6521,12 +6847,48 @@ "builtin-modules": "1.1.1" } }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "is-decimal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.1.tgz", "integrity": "sha1-9ftqlJlq2ejjdh+/vQkfH8qMToI=", "dev": true }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -6652,6 +7014,23 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -6768,6 +7147,12 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -7313,12 +7698,27 @@ "pify": "3.0.0" } }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, "markdown-it": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.1.tgz", @@ -7557,14 +7957,35 @@ "through2": "2.0.3" } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { - "minimist": "0.0.8" - } + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "mocha": { "version": "5.0.1", @@ -7741,6 +8162,46 @@ "dev": true, "optional": true }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -7765,6 +8226,12 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, + "neo-async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", + "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==", + "dev": true + }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -8013,6 +8480,82 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -8023,6 +8566,23 @@ "is-extendable": "0.1.1" } }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -8260,12 +8820,24 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, "path-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", "dev": true }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -8421,6 +8993,12 @@ "async": "1.5.2" } }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, "postcss": { "version": "6.0.14", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", @@ -9023,6 +9601,16 @@ "is-equal-shallow": "0.1.3" } }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, "regexpu-core": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.3.tgz", @@ -9274,6 +9862,12 @@ "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", "dev": true }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -9284,6 +9878,12 @@ "signal-exit": "3.0.2" } }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -9354,6 +9954,15 @@ "dev": true, "optional": true }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, "samsam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", @@ -9449,12 +10058,44 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "dev": true, + "requires": { + "to-object-path": "0.3.0" + } + }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -9793,6 +10434,136 @@ "is-fullwidth-code-point": "2.0.0" } }, + "snapdragon": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", + "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, "sntp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", @@ -9814,6 +10585,19 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, "source-map-support": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", @@ -9831,6 +10615,12 @@ } } }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, "spawn-sync": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", @@ -9882,6 +10672,15 @@ "through": "2.3.8" } }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, "split2": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", @@ -9922,34 +10721,112 @@ "safe-buffer": "5.1.1" } }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.4" - } - }, - "stream-each": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", - "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { - "end-of-stream": "1.4.1", + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", "stream-shift": "1.0.0" } }, @@ -10403,6 +11280,48 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, "token-stream": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", @@ -10684,6 +11603,41 @@ "vfile": "1.4.0" } }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, "unique-filename": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", @@ -10746,6 +11700,52 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", @@ -10787,6 +11787,12 @@ "integrity": "sha1-RY8Xgg03gg3GDiC4bZQ5GwASMVg=", "dev": true }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -10814,6 +11820,100 @@ "prepend-http": "1.0.4" } }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "dev": true, + "requires": { + "set-getter": "0.1.0" + } + } + } + }, "user-home": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", @@ -11124,33 +12224,30 @@ "dev": true }, "webpack": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.11.0.tgz", - "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.1.0.tgz", + "integrity": "sha512-ZFYcAZ44kOT+xsS5MS2H1fQr0PJkwQdYem/d17wacDkkupzsAkBJ3hDShWHdPVvWluFs6pfhHWw/dVso1m0rsA==", "dev": true, "requires": { "acorn": "5.5.0", - "acorn-dynamic-import": "2.0.2", + "acorn-dynamic-import": "3.0.0", "ajv": "6.2.0", "ajv-keywords": "3.1.0", - "async": "2.6.0", - "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.1.0", - "json-loader": "0.5.7", - "json5": "0.5.1", + "chrome-trace-event": "0.1.2", + "enhanced-resolve": "4.0.0", + "eslint-scope": "3.7.1", "loader-runner": "2.3.0", "loader-utils": "1.1.0", "memory-fs": "0.4.1", + "micromatch": "3.1.9", "mkdirp": "0.5.1", + "neo-async": "2.5.0", "node-libs-browser": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.5.0", - "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.4.0", - "webpack-sources": "1.1.0", - "yargs": "8.0.2" + "schema-utils": "0.4.5", + "tapable": "1.0.0", + "uglifyjs-webpack-plugin": "1.2.2", + "watchpack": "1.5.0", + "webpack-sources": "1.1.0" }, "dependencies": { "acorn": { @@ -11159,168 +12256,363 @@ "integrity": "sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g==", "dev": true }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", "dev": true, "requires": { - "lodash": "4.17.5" + "acorn": "5.5.0" } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "micromatch": "3.1.9", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" } } } }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "chokidar": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", + "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.1", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.2" } }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "enhanced-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", + "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", "dev": true, "requires": { "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "memory-fs": "0.4.1", + "tapable": "1.0.0" } }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "pify": "2.3.0" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "has-flag": "2.0.0" + "is-extglob": "2.1.1" } }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.1.0" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "dev": true, "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" } }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "tapable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", + "dev": true + }, + "watchpack": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", "dev": true, "requires": { - "camelcase": "4.1.0" + "chokidar": "2.0.2", + "graceful-fs": "4.1.11", + "neo-async": "2.5.0" } } } diff --git a/package.json b/package.json index cf865a31..6f52ea45 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "stylus": "^0.54.5", "uglifyjs-webpack-plugin": "^1.1.6", "web-ext": "^2.4.0", - "webpack": "^3.10.0", + "webpack": "^4.1.0", "webpack-merge": "^4.1.1", "xhr-mock": "^2.0.3" }, diff --git a/webpack.common.js b/webpack.common.js index fb58690d..e9bd0487 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -1,7 +1,7 @@ const webpack = require('webpack'); module.exports = { - devtool: 'source-map', + devtool: 'source-map', module: { rules: [{ test: /\.js$/, diff --git a/webpack.extension-dev.js b/webpack.extension-dev.js index 32e80843..a8caad52 100644 --- a/webpack.extension-dev.js +++ b/webpack.extension-dev.js @@ -3,6 +3,7 @@ const merge = require('webpack-merge'); const common = require('./webpack.common.js'); module.exports = merge(common, { + mode: 'development', entry: { index: './src/extension/index.js', webstorage: './src/extension/injected/webstorage.js', diff --git a/webpack.extension-prod.js b/webpack.extension-prod.js index a9c4eefb..f0c77bd0 100644 --- a/webpack.extension-prod.js +++ b/webpack.extension-prod.js @@ -4,6 +4,8 @@ const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); const devConfig = require('./webpack.extension-dev.js'); module.exports = merge(devConfig, { + mode: 'production', + devtool: false, plugins: [ new UglifyJsPlugin() ] diff --git a/webpack.website-dev.js b/webpack.website-dev.js index a43c6992..cc203b47 100644 --- a/webpack.website-dev.js +++ b/webpack.website-dev.js @@ -3,6 +3,7 @@ const merge = require('webpack-merge'); const common = require('./webpack.common.js'); module.exports = merge(common, { + mode: 'development', entry: { index: './src/website/index.js', introduction: './src/website/introduction/index.js' diff --git a/webpack.website-prod.js b/webpack.website-prod.js index 945d4122..18f412a0 100644 --- a/webpack.website-prod.js +++ b/webpack.website-prod.js @@ -4,6 +4,8 @@ const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); const devConfig = require('./webpack.website-dev.js'); module.exports = merge(devConfig, { + mode: 'production', + devtool: false, plugins: [ new UglifyJsPlugin() ] diff --git a/webpack.website-unit-tests.js b/webpack.website-unit-tests.js index 6c995164..b3e85a39 100644 --- a/webpack.website-unit-tests.js +++ b/webpack.website-unit-tests.js @@ -3,6 +3,7 @@ const merge = require('webpack-merge'); const common = require('./webpack.common.js'); module.exports = merge(common, { + mode: 'development', entry: { 'unit-tests': './test/unit/index.js' }, From 490e886c736ea90c6550ebef26f95eb8c2272285 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 6 Mar 2018 14:10:01 -0300 Subject: [PATCH 125/611] Use static web server for development (default Grunt task). --- Gruntfile.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 9f25c5b9..5d69e8c9 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -195,7 +195,7 @@ module.exports = grunt => { }, connect: { - functionalTests: { + website: { options: { hostname: '127.0.0.1', base: 'dist/website', @@ -256,11 +256,11 @@ module.exports = grunt => { grunt.registerTask('functional-tests', [ 'build-website-dev', - 'connect:functionalTests', + 'connect:website', 'mochaTest:functional' ]); grunt.registerTask('test', ['unit-tests', 'functional-tests']); - grunt.registerTask('default', ['build-dev', 'watch']); + grunt.registerTask('default', ['build-dev', 'connect:website', 'watch']); }; From d9726c28e31ee7f524db322d641b21f55408663b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 6 Mar 2018 16:01:51 -0300 Subject: [PATCH 126/611] Remove failing counter endpoint and use an estimated number for the login counter. --- src/website/counter.js | 41 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/src/website/counter.js b/src/website/counter.js index 58da5802..6ce1502f 100644 --- a/src/website/counter.js +++ b/src/website/counter.js @@ -7,44 +7,35 @@ import jQuery from 'jquery'; import 'flipclock/compiled/flipclock.js'; import log from 'loglevel'; -const initialCount = 80482701; -const pollIntervalWhenVisible = 5000; -const pollIntervalWhenHidden = 1000*1000; -const url = 'https://webtask.it.auth0.com/api/run/' + - 'wt-matiasw-gmail_com-0/proxy?' + - 'url=http://metrics.it.auth0.com/counters'; +const baselineDate = new Date(2018, 3 - 1, 6); +// We should try to get a real number for this. +// Set on 2018-03-06 +const baselineCount = 53919517299; +const secondsPerDay = 60 * 60 * 24; +const loginsPerDay = 50000000; +const loginsPerSecond = loginsPerDay / secondsPerDay; + +const intervalMs = 1000; + +const initialCount = getLoginCount(); const flipCounter = $(counterElement).FlipClock(initialCount, { clockFace: 'Counter', minimumDigits: initialCount.toString().length }); -function updateCounterFromWebtask() { - return new Promise((resolve, reject) => { - httpGet(url, false).then(data => { - const parsed = JSON.parse(data); - flipCounter.setTime(parsed.logins); - }).catch(e => { - log.warn('Failed to set count from Webtask: ', e); - }); - }); +function getLoginCount() { + return baselineCount + + Math.round((new Date() - baselineDate) / 1000 * loginsPerSecond); } -let elapsed = pollIntervalWhenHidden; function updateCounter() { - elapsed += pollIntervalWhenVisible; - if(isInViewport(counterElement)) { - updateCounterFromWebtask(); - } else { - if(elapsed >= pollIntervalWhenHidden) { - elapsed = 0; - updateCounterFromWebtask(); - } + flipCounter.setTime(getLoginCount()); } } export function setupJwtCounter() { updateCounter(); - setInterval(updateCounter, pollIntervalWhenVisible); + setInterval(updateCounter, intervalMs); } From 3e24576e2e3a234ad8cefffa3552040f9da60d88 Mon Sep 17 00:00:00 2001 From: Gabriel Sanches Date: Wed, 7 Mar 2018 14:10:12 -0300 Subject: [PATCH 127/611] Add "gbrlsnchs/jwt" to Go libraries --- views/website/libraries/go9.pug | 84 +++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 views/website/libraries/go9.pug diff --git a/views/website/libraries/go9.pug b/views/website/libraries/go9.pug new file mode 100644 index 00000000..9b61401d --- /dev/null +++ b/views/website/libraries/go9.pug @@ -0,0 +1,84 @@ +// Go gbrlsnchs/jwt +article.jwt-go.go.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/8.svg') + h3 Go + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-500 + code iss + | check + p + i.icon-budicon-500 + code sub + | check + p + i.icon-budicon-500 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-500 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-500 + | ES256 + p + i.icon-budicon-500 + | ES384 + p + i.icon-budicon-500 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/gbrlsnchs') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | gbrlsnchs + span.stars(data-repo='gbrlsnchs/jwt', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/gbrlsnchs/jwt') View Repo + + .panel-footer + code go get github.com/gbrlsnchs/jwt From 3f8baf6c6dd638c3b9ce9d64d3f822c7b47e1c0e Mon Sep 17 00:00:00 2001 From: Gabriel Sanches Date: Wed, 7 Mar 2018 14:24:57 -0300 Subject: [PATCH 128/611] Include "gbrlsnchs/jwt" to libraries list --- views/website/libraries.pug | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 35a9f8ea..cb42ff32 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -79,6 +79,7 @@ section#libraries-io.libraries-jwt include libraries/go6.pug include libraries/go7.pug include libraries/go8.pug + include libraries/go9.pug include libraries/groovy.pug include libraries/haskell.pug include libraries/haskell2.pug @@ -113,4 +114,4 @@ section#libraries-io.libraries-jwt include libraries/crystal.pug include libraries/1c.pug include libraries/postgresql.pug - \ No newline at end of file + From 341babcff8a219b17057f4fe9afbcd9efb3e8b27 Mon Sep 17 00:00:00 2001 From: Shuo Wang Date: Thu, 8 Mar 2018 20:32:33 +0800 Subject: [PATCH 129/611] Add SwiftyJWT to JWT library list --- views/website/libraries.pug | 1 + views/website/libraries/swift3.pug | 84 ++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 views/website/libraries/swift3.pug diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 35a9f8ea..372ddce5 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -97,6 +97,7 @@ section#libraries-io.libraries-jwt include libraries/objective-c.pug include libraries/swift.pug include libraries/swift2.pug + include libraries/swift3.pug include libraries/c.pug include libraries/c2.pug include libraries/cpp.pug diff --git a/views/website/libraries/swift3.pug b/views/website/libraries/swift3.pug new file mode 100644 index 00000000..738c5d99 --- /dev/null +++ b/views/website/libraries/swift3.pug @@ -0,0 +1,84 @@ +// Swift Wstunes/SwiftyJWT +article.jwt-scala.swift.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/15.svg') + h3 Swift + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-500 + code iss + | check + p + i.icon-budicon-500 + code sub + | check + p + i.icon-budicon-500 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-500 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-501 + | ES256 + p + i.icon-budicon-501 + | ES384 + p + i.icon-budicon-501 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/Wstunes') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Wstunes + span.stars(data-repo='Wstunes/SwiftyJWT', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/Wstunes/SwiftyJWT') View Repo + + .panel-footer + code pod 'SwiftyJWT' From 75bd726a875b0e0cbc90f7a1faff8a5001d763c7 Mon Sep 17 00:00:00 2001 From: Luciano Balmaceda Date: Thu, 8 Mar 2018 17:38:02 -0300 Subject: [PATCH 130/611] fix md syntax for title on README.md file --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d15b4c4d..3d664e08 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -##JWT.io +## JWT.io From c44394727fa2044f175d5c815bf0802b2db5e524 Mon Sep 17 00:00:00 2001 From: Anthony Drogon Date: Tue, 13 Mar 2018 14:13:16 +0000 Subject: [PATCH 131/611] Update java-jwt --- views/website/libraries/java.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/java.pug b/views/website/libraries/java.pug index 5463942b..602330ce 100644 --- a/views/website/libraries/java.pug +++ b/views/website/libraries/java.pug @@ -81,4 +81,4 @@ article.jwt-java.java.accordion(data-accordion) a(href='https://github.com/auth0/java-jwt') View Repo .panel-footer - code maven: com.auth0 / java-jwt / 3.0.1 + code maven: com.auth0 / java-jwt / 3.3.0 From a51222cd7997a74a365f91447728105d7bd796fb Mon Sep 17 00:00:00 2001 From: Anthony Drogon Date: Tue, 13 Mar 2018 14:13:50 +0000 Subject: [PATCH 132/611] Update jose4j --- views/website/libraries/java2.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/java2.pug b/views/website/libraries/java2.pug index 19bba3e3..24ef1309 100644 --- a/views/website/libraries/java2.pug +++ b/views/website/libraries/java2.pug @@ -79,4 +79,4 @@ article.jwt-java.java.accordion(data-accordion) a(href='https://bitbucket.org/b_c/jose4j') View Repo .panel-footer - code maven: org.bitbucket.b_c / jose4j / 0.6.2 + code maven: org.bitbucket.b_c / jose4j / 0.6.3 From a9ec3ff0230cacbba3b2a3307bd79b17afdd4056 Mon Sep 17 00:00:00 2001 From: Anthony Drogon Date: Tue, 13 Mar 2018 14:14:21 +0000 Subject: [PATCH 133/611] Update nimbus-jose-jwt --- views/website/libraries/java3.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/java3.pug b/views/website/libraries/java3.pug index 3ed00de4..a54458a2 100644 --- a/views/website/libraries/java3.pug +++ b/views/website/libraries/java3.pug @@ -79,4 +79,4 @@ article.jwt-java.java.accordion(data-accordion) a(href='https://bitbucket.org/connect2id/nimbus-jose-jwt') View Repo .panel-footer - code maven: com.nimbusds / nimbus-jose-jwt / 4.11 + code maven: com.nimbusds / nimbus-jose-jwt / 5.7 From 3774a15a6b8c5572a6343715ba668c85a673aa2e Mon Sep 17 00:00:00 2001 From: Anthony Drogon Date: Tue, 13 Mar 2018 14:14:50 +0000 Subject: [PATCH 134/611] Update jjwt --- views/website/libraries/java4.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/java4.pug b/views/website/libraries/java4.pug index 64e72ca8..dfd65826 100644 --- a/views/website/libraries/java4.pug +++ b/views/website/libraries/java4.pug @@ -79,4 +79,4 @@ article.jwt-java.java.accordion(data-accordion) a(href='https://github.com/jwtk/jjwt') View Repo .panel-footer - code maven: io.jsonwebtoken / jjwt / 0.6.0 + code maven: io.jsonwebtoken / jjwt / 0.9.0 From 0351704d3ccf8001ee4bf63d2488627b0397f57b Mon Sep 17 00:00:00 2001 From: Anthony Drogon Date: Tue, 13 Mar 2018 14:15:12 +0000 Subject: [PATCH 135/611] Update prime-jwt --- views/website/libraries/java5.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/java5.pug b/views/website/libraries/java5.pug index 9947a3a9..1aba7013 100644 --- a/views/website/libraries/java5.pug +++ b/views/website/libraries/java5.pug @@ -79,4 +79,4 @@ article.jwt-java.java.accordion(data-accordion) a(href='https://github.com/inversoft/prime-jwt') View Repo .panel-footer - code maven: com.inversoft / prime-jwt / 1.1.0 + code maven: com.inversoft / prime-jwt / 1.3.0 From 215274103b8f47a41c190b53be77e8dba3b8691e Mon Sep 17 00:00:00 2001 From: Anthony Drogon Date: Tue, 13 Mar 2018 14:15:38 +0000 Subject: [PATCH 136/611] Update vertx-auth-jwt --- views/website/libraries/java6.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/java6.pug b/views/website/libraries/java6.pug index b6e5de23..e2d943f8 100644 --- a/views/website/libraries/java6.pug +++ b/views/website/libraries/java6.pug @@ -81,4 +81,4 @@ article.jwt-java.java.accordion(data-accordion) a(href='https://github.com/vert-x3/vertx-auth') View Repo .panel-footer - code maven: io.vertx / vertx-auth-jwt / 3.4.1 + code maven: io.vertx / vertx-auth-jwt / 3.5.1 From 798205eaa357bd07d8277fe658c7d51620536f16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 19 Mar 2018 17:59:05 -0300 Subject: [PATCH 137/611] Change default HMAC secrets to something that talks about minimum length. --- src/editor/default-tokens.js | 12 ++--- test/functional/default-tokens.js | 12 ++--- test/functional/editor.js | 79 +++++++++++++++++-------------- test/unit/editor/jwt.js | 4 +- 4 files changed, 58 insertions(+), 49 deletions(-) diff --git a/src/editor/default-tokens.js b/src/editor/default-tokens.js index 288aee60..8d582165 100644 --- a/src/editor/default-tokens.js +++ b/src/editor/default-tokens.js @@ -41,16 +41,16 @@ q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== export default { hs256: { - token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.XbPfbIHMI6arZ3Y922BhjWgQzWXcXNrz0ogtVhfEd2o', - secret: 'secret' + token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c', + secret: 'your-256-bit-secret' }, hs384: { - token: 'eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.np_8QucI7cN6tJo0Fvm3i_eVQEHraSJPRC87yq2UQb77gRWMeeca8zDVIaTlVuZk', - secret: 'secret' + token: 'eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.bQTnz6AuMJvmXXQsVPrxeQNvzDkimo7VNXxHeSBfClLufmCVZRUuyTwJF311JHuh', + secret: 'your-384-bit-secret' }, hs512: { - token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.nZU_gPcMXkWpkCUpJceSxS7lSickF0tTImHhAR949Z-Nt69LgW8G6lid-mqd9B579tYM8C4FN2jdhR2VRMsjtA', - secret: 'secret' + token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.VFb0qJ1LRg_4ujbZoRMXnVkUgiuKq5KxWqNdbKq_G9Vvz-S1zZa9LPxtHWKa64zDl2ofkT8F6jBt_K4riU-fPg', + secret: 'your-512-bit-secret' }, rs256: { token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.TCYt5XsITJX1CxPCT8yAV-TVkIEq_PbChOMqsLfRoPsnsgw5WEuts01mq-pQy7UJiN5mgRxD-WUcX16dUEMGlv50aqzpqh4Qktb3rk-BuQy72IFLOqV0G_zS245-kronKb78cPN25DGlcTwLtjPAYuNzVBAh4vGHSrQyHUdBBPM', diff --git a/test/functional/default-tokens.js b/test/functional/default-tokens.js index ad748280..98803a8d 100644 --- a/test/functional/default-tokens.js +++ b/test/functional/default-tokens.js @@ -41,16 +41,16 @@ q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== module.exports = { hs256: { - token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.XbPfbIHMI6arZ3Y922BhjWgQzWXcXNrz0ogtVhfEd2o', - secret: 'secret' + token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c', + secret: 'your-256-bit-secret' }, hs384: { - token: 'eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.np_8QucI7cN6tJo0Fvm3i_eVQEHraSJPRC87yq2UQb77gRWMeeca8zDVIaTlVuZk', - secret: 'secret' + token: 'eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.bQTnz6AuMJvmXXQsVPrxeQNvzDkimo7VNXxHeSBfClLufmCVZRUuyTwJF311JHuh', + secret: 'your-384-bit-secret' }, hs512: { - token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.nZU_gPcMXkWpkCUpJceSxS7lSickF0tTImHhAR949Z-Nt69LgW8G6lid-mqd9B579tYM8C4FN2jdhR2VRMsjtA', - secret: 'secret' + token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.VFb0qJ1LRg_4ujbZoRMXnVkUgiuKq5KxWqNdbKq_G9Vvz-S1zZa9LPxtHWKa64zDl2ofkT8F6jBt_K4riU-fPg', + secret: 'your-512-bit-secret' }, rs256: { token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.TCYt5XsITJX1CxPCT8yAV-TVkIEq_PbChOMqsLfRoPsnsgw5WEuts01mq-pQy7UJiN5mgRxD-WUcX16dUEMGlv50aqzpqh4Qktb3rk-BuQy72IFLOqV0G_zS245-kronKb78cPN25DGlcTwLtjPAYuNzVBAh4vGHSrQyHUdBBPM', diff --git a/test/functional/editor.js b/test/functional/editor.js index bbc24429..e405502d 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -16,6 +16,8 @@ chai.use(chaiAsPromised); chai.use(chaiArrays); const expect = chai.expect; +const typingDelay = 0; + describe('Editor', function() { before(utils.launchBrowser); @@ -36,6 +38,13 @@ describe('Editor', function() { expect(selected).to.equal('HS256'); }); + it('Default selected token should say something ' + + 'about secret length', async function() { + const secret = this.page.$eval('input[name="secret"]', + secretInput => secretInput.value); + return expect(secret).to.eventually.include('256'); + }); + it('Should select default tokens when no changes have ' + 'been made', async function() { try { @@ -119,7 +128,7 @@ describe('Editor', function() { test: 'test' }; await this.page.keyboard.type(JSON.stringify(header, null, 2), { - delay: 5 + delay: typingDelay }); const newToken = await this.page.evaluate(() => { @@ -154,7 +163,7 @@ describe('Editor', function() { "test": "test" }; await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: 5 + delay: typingDelay }); const newToken = await this.page.evaluate(() => { @@ -187,7 +196,7 @@ describe('Editor', function() { typ: 'JWT', }; await this.page.keyboard.type(JSON.stringify(header, null, 2), { - delay: 5 + delay: typingDelay }); const selectedAfter = @@ -219,7 +228,7 @@ describe('Editor', function() { sub: 'test' }; await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: 5 + delay: typingDelay }); const algs = await this.page.$eval('#algorithm-select', select => { @@ -291,7 +300,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await secretInput.type(tokens[alg].secret, { - delay: 5 + delay: typingDelay }); await this.page.click('.js-input'); @@ -299,7 +308,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(tokens[alg].token, { - delay: 5 + delay: typingDelay }); const valid = await this.page.$eval('.validation-status', status => { @@ -349,7 +358,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(tokens[alg].token, { - delay: 5 + delay: typingDelay }); const secretInput = await this.page.$('textarea[name="public-key"]'); @@ -358,7 +367,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await secretInput.type(tokens[alg].publicKey, { - delay: 5 + delay: typingDelay }); const valid = await this.page.$eval('.validation-status', status => { @@ -389,7 +398,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(defaultTokens['rs256'].publicKey, { - delay: 5 + delay: typingDelay }); await this.page.click('textarea[name="private-key"]'); @@ -397,7 +406,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(defaultTokens['rs256'].privateKey, { - delay: 5 + delay: typingDelay }); }); @@ -427,7 +436,7 @@ describe('Editor', function() { alg: alg.toUpperCase(), typ: 'JWT' }, null, 2), { - delay: 5 + delay: typingDelay }); await this.page.click('.js-payload'); @@ -437,7 +446,7 @@ describe('Editor', function() { await this.page.keyboard.type(JSON.stringify({ sub: 'test' }, null, 2), { - delay: 5 + delay: typingDelay }); const newToken = await this.page.evaluate(() => { @@ -469,7 +478,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(defaultTokens['es256'].publicKey, { - delay: 5 + delay: typingDelay }); await this.page.click('textarea[name="private-key"]'); @@ -477,7 +486,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(defaultTokens['es256'].privateKey, { - delay: 5 + delay: typingDelay }); }); @@ -506,7 +515,7 @@ describe('Editor', function() { alg: alg.toUpperCase(), typ: 'JWT' }, null, 2), { - delay: 5 + delay: typingDelay }); await this.page.click('.js-payload'); @@ -516,7 +525,7 @@ describe('Editor', function() { await this.page.keyboard.type(JSON.stringify({ sub: 'test' }, null, 2), { - delay: 5 + delay: typingDelay }); const newToken = await this.page.evaluate(() => { @@ -582,7 +591,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(token, { - delay: 5 + delay: typingDelay }); await this.page.waitFor(2000); @@ -617,7 +626,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(token, { - delay: 5 + delay: typingDelay }); await this.page.waitFor(2000); @@ -651,7 +660,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(token, { - delay: 5 + delay: typingDelay }); await this.page.waitFor(2000); @@ -692,7 +701,7 @@ describe('Editor', function() { test: 'test' }; await this.page.keyboard.type(JSON.stringify(header, null, 2), { - delay: 5 + delay: typingDelay }); const token = await this.page.evaluate(() => { @@ -722,7 +731,7 @@ describe('Editor', function() { sub: 'test' }; await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: 5 + delay: typingDelay }); const token = await this.page.evaluate(() => { @@ -742,7 +751,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(tokens['rs256'].token, { - delay: 5 + delay: typingDelay }); const secretInput = await this.page.$('textarea[name="public-key"]'); @@ -751,7 +760,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await secretInput.type(tokens['rs256'].publicKey, { - delay: 5 + delay: typingDelay }); const valid = await this.page.$eval('.validation-status', status => { @@ -785,7 +794,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(tokens['rs256'].token, { - delay: 5 + delay: typingDelay }); const secretInput = await this.page.$('textarea[name="public-key"]'); @@ -794,7 +803,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await secretInput.type(tokens['rs256'].publicKey, { - delay: 5 + delay: typingDelay }); const valid = await this.page.$eval('.validation-status', status => { @@ -806,7 +815,7 @@ describe('Editor', function() { await secretInput.click(); await this.page.keyboard.type('sdfasdf389972389', { - delay: 5 + delay: typingDelay }); const invalid = await this.page.$eval('.validation-status', status => { @@ -829,7 +838,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await secretInput.type(defaultTokens['rs256'].publicKey, { - delay: 5 + delay: typingDelay }); const privateKeyInput = await this.page.$('textarea[name="private-key"]'); @@ -842,7 +851,7 @@ describe('Editor', function() { const tail = defaultTokens['rs256'].privateKey.slice(20); await privateKeyInput.type(`${head}sadfasdf${tail}`, { - delay: 5 + delay: typingDelay }); await this.page.click('.js-input'); @@ -850,7 +859,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(defaultTokens['rs256'].token, { - delay: 5 + delay: typingDelay }); await this.page.waitFor(1000); @@ -875,7 +884,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await secretInput.type(tokens['rs256'].publicKey, { - delay: 5 + delay: typingDelay }); const privateKeyInput = await this.page.$('textarea[name="private-key"]'); @@ -890,7 +899,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(tokens['rs256'].token, { - delay: 5 + delay: typingDelay }); await this.page.waitFor(1000); @@ -913,7 +922,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(tokens.hs256.token, { - delay: 5 + delay: typingDelay }); await this.page.select('#algorithm-select', 'HS384'); @@ -933,7 +942,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(tokens.none.token, { - delay: 5 + delay: typingDelay }); const invalid = await this.page.$eval('.validation-status', status => { @@ -953,7 +962,7 @@ describe('Editor', function() { await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); await secretInput.type('secret-test', { - delay: 5 + delay: typingDelay }); await this.page.click('.js-payload'); @@ -965,7 +974,7 @@ describe('Editor', function() { sub: 'test' }; await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: 5 + delay: typingDelay }); await this.page.reload(); diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index 1e656d98..f3b2b8bf 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -29,10 +29,10 @@ describe('JWT', function() { }); it('considers Base64 (not URL) encoded tokens invalid', function() { - const token = b64utob64(tokens.hs384.token); + const token = b64utob64(tokens.hs256.token); jwt.isToken(token).should.be.false; - jwt.verify(token, tokens.hs384.secret).should.be.false; + jwt.verify(token, tokens.hs256.secret).should.be.false; }); it('verifies valid tokens', function() { From 708e5308e95f466ffb17606b18433777646ff42e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 19 Mar 2018 19:22:01 -0300 Subject: [PATCH 138/611] Add info about running tests in the README file. --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index d15b4c4d..3293f2d2 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,14 @@ grunt You will find the generated files in the `dist` directory. For the website, you can run a server at its root. For example: `http-server dist/website`. +To run tests, execute: + +``` +grunt test +``` + +Look at the end of the `Gruntfile` for other common tasks. + ### Happy hacking! From 94b72d5c069b67ca0f34b53a90d9a2099726882b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 19 Mar 2018 19:22:47 -0300 Subject: [PATCH 139/611] Rename current tooltip code to "time-tooltip" in preparation for other types of tooltips. --- src/editor/index.js | 4 ++-- src/editor/{tooltip.js => time-tooltip.js} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/editor/{tooltip.js => time-tooltip.js} (94%) diff --git a/src/editor/index.js b/src/editor/index.js index cd8bd296..a3c513c2 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -4,7 +4,7 @@ import { copyTokenLink } from '../utils.js'; import { downloadPublicKeyIfPossible } from './public-key-download.js'; -import { tooltipHandler } from './tooltip.js'; +import { timeTooltipHandler } from './time-tooltip.js'; import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; import { getTrimmedValue, @@ -379,7 +379,7 @@ function setupEvents() { // through the event manager for them. // Human readable timestamp tooltips - payloadElement.addEventListener('mousemove', tooltipHandler); + payloadElement.addEventListener('mousemove', timeTooltipHandler); // Temporary (share button not ready yet) signatureStatusElement.addEventListener('click', copyTokenHandler); diff --git a/src/editor/tooltip.js b/src/editor/time-tooltip.js similarity index 94% rename from src/editor/tooltip.js rename to src/editor/time-tooltip.js index ef820b40..6211fd44 100644 --- a/src/editor/tooltip.js +++ b/src/editor/time-tooltip.js @@ -1,7 +1,7 @@ import { payloadEditor } from './instances.js'; import { payloadTooltipElement } from '../dom-elements.js'; -export function tooltipHandler(event) { +export function timeTooltipHandler(event) { const result = payloadEditor.coordsChar({ left: event.pageX, top: event.pageY From 2a43e7cb9b683c9c2db820b49f35e191c9e95939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 19 Mar 2018 22:27:52 -0300 Subject: [PATCH 140/611] Implemented HMAC weak secret tooltip. --- package-lock.json | 15 +++++++++ package.json | 1 + src/editor/index.js | 17 ++++++---- src/editor/secret-length-tooltip.js | 40 ++++++++++++++++++++++ src/editor/utils.js | 5 +++ test/functional/editor.js | 52 +++++++++++++++++++++++++++-- views/token-editor-common.pug | 2 +- 7 files changed, 121 insertions(+), 11 deletions(-) create mode 100644 src/editor/secret-length-tooltip.js diff --git a/package-lock.json b/package-lock.json index 02e422ae..f6aa49a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8984,6 +8984,12 @@ "nomnom": "1.8.1" } }, + "popper.js": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.1.tgz", + "integrity": "sha1-uIFeXNpvYvwgQuR2GGSfdYZuZ1M=", + "dev": true + }, "portscanner": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz", @@ -11259,6 +11265,15 @@ } } }, + "tippy.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-2.3.0.tgz", + "integrity": "sha512-F1frIYVNJlXcl5M4dJrsonTqB19rXP8jj3CB/2K6EIKYszLtYAczGQNTtinNlCvZnS2/wiGo6zv9ex46KibrGA==", + "dev": true, + "requires": { + "popper.js": "1.14.1" + } + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 6f52ea45..b7dbbf11 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "sinon-chai": "^2.14.0", "source-map-support": "^0.5.3", "stylus": "^0.54.5", + "tippy.js": "^2.3.0", "uglifyjs-webpack-plugin": "^1.1.6", "web-ext": "^2.4.0", "webpack": "^4.1.0", diff --git a/src/editor/index.js b/src/editor/index.js index a3c513c2..e4ce07a8 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -9,12 +9,17 @@ import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; import { getTrimmedValue, stringify, - fixEditorHeight + fixEditorHeight, + getSelectedAlgorithm } from './utils.js'; import { sign, verify, decode } from './jwt.js'; import EventManager from './event-manager.js'; import strings from '../strings.js'; import defaultTokens from './default-tokens.js'; +import { + minSecretLengthCheck, + setupSecretLengthTooltip +} from './secret-length-tooltip.js'; import { algorithmSelect, signatureStatusElement, @@ -163,11 +168,6 @@ function setAlgorithmInHeader(algorithm) { }); } -function getSelectedAlgorithm() { - const selected = algorithmSelect.options[algorithmSelect.selectedIndex]; - return selected.value; -} - function algorithmChangeHandler() { const algorithm = getSelectedAlgorithm(); @@ -365,8 +365,10 @@ function setupEvents() { eventManager.addCodeMirrorEvent(headerEditor, 'change', encodeToken); eventManager.addCodeMirrorEvent(payloadEditor, 'change', encodeToken); + // HMAC secret, show tooltip if secret is too short. + eventManager.addDomEvent(secretInput, 'input', minSecretLengthCheck); // HMAC secret, when changed the encoded token must be updated. - eventManager.addDomEvent(secretInput, 'input', encodeToken); + eventManager.addDomEvent(secretInput, 'input', encodeToken); // Base64 checkbox, when changes the encoded token must be updated. eventManager.addDomEvent(secretBase64Checkbox, 'change', encodeToken); // Private key, when changed the encoded token must be updated. @@ -404,4 +406,5 @@ export function setupTokenEditor() { selectAlgorithm('HS256'); loadToken(); fixEditorHeight(); + setupSecretLengthTooltip(); } diff --git a/src/editor/secret-length-tooltip.js b/src/editor/secret-length-tooltip.js new file mode 100644 index 00000000..ad8444f3 --- /dev/null +++ b/src/editor/secret-length-tooltip.js @@ -0,0 +1,40 @@ +import { getSelectedAlgorithm } from './utils.js'; +import { + secretInput, + secretBase64Checkbox, +} from '../dom-elements.js'; + +import log from 'loglevel'; +import tippy from 'tippy.js'; +import { b64utohex, utf8tohex } from 'jsrsasign'; + +export function minSecretLengthCheck(event) { + const alg = getSelectedAlgorithm(); + if(alg.indexOf('HS') !== 0) { + log.error(`Secret input tooltip handler for wrong algorithm: ${alg}`); + return; + } + + const algBits = parseInt(alg.substr(2)); + const inputBits = secretBase64Checkbox.checked ? + b64utohex(secretInput.value).length / 2 * 8 : + utf8tohex(secretInput.value).length / 2 * 8; + + console.log(utf8tohex(secretInput.value)); + + if(inputBits < algBits) { + secretInput._tippy.show(); + } else { + secretInput._tippy.hide(); + } +} + +export function setupSecretLengthTooltip() { + tippy(secretInput, { + trigger: 'manual', + placement: 'right', + arrow: true, + arrowTransform: 'scale(0.75)', + size: 'large' + }); +} diff --git a/src/editor/utils.js b/src/editor/utils.js index 63c28fba..403f1c1d 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -25,3 +25,8 @@ export function fixEditorHeight() { export function stringify(object) { return JSON.stringify(object, null, 2); } + +export function getSelectedAlgorithm() { + const selected = algorithmSelect.options[algorithmSelect.selectedIndex]; + return selected.value; +} diff --git a/test/functional/editor.js b/test/functional/editor.js index e405502d..f32b519a 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -5,6 +5,8 @@ const chaiArrays = require('chai-arrays'); const express = require('express'); const jsrsasign = require('jsrsasign'); +const _ = require('lodash'); + const utils = require('./utils.js'); const tokens = require('./tokens.js'); const defaultTokens = require('./default-tokens.js'); @@ -289,11 +291,11 @@ describe('Editor', function() { expect(oldToken).to.equal(newToken); }); - describe('Decodes HS256/384/512 tokens', function() { + describe('HS256/384/512', function() { const algs = Object.keys(tokens).filter(alg => alg.includes('hs')); for(const alg of algs) { - it(alg.toUpperCase(), async function() { + it(`Decodes ${alg.toUpperCase()} tokens`, async function() { const secretInput = await this.page.$('input[name="secret"]'); await secretInput.click(); await this.page.keyboard.down('ControlLeft'); @@ -323,7 +325,51 @@ describe('Editor', function() { }); expect(payload).to.include(alg + 'test'); - }); + }); + + const bits = parseInt(alg.substr(2)); + it(`Considers less-than-${bits}-bit secrets weak`, + async function() { + let secret = _.pad('', (bits / 8) - 1, 'test'); + + const secretInput = await this.page.$('input[name="secret"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await secretInput.type(secret, { + delay: typingDelay + }); + + // Wait for animations + await this.page.waitFor(500); + + let tooltipVisible = + await this.page.$eval('input[name="secret"]', input => { + return input._tippy.state.visible; + }); + + expect(tooltipVisible).to.be.true; + + secret += 'test'; + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await secretInput.type(secret, { + delay: typingDelay + }); + + // Wait for animations + await this.page.waitFor(500); + + tooltipVisible = + await this.page.$eval('input[name="secret"]', input => { + return input._tippy.state.visible; + }); + + expect(tooltipVisible).to.be.false; + }); } }); diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug index a23701ae..57c35cd9 100644 --- a/views/token-editor-common.pug +++ b/views/token-editor-common.pug @@ -29,7 +29,7 @@ HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), - + ) pre.pre-encode.RS256. RSASHA256( From e72c8f58e7b8abe4ba415787db2ea8dc5a579cc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 20 Mar 2018 17:05:10 -0300 Subject: [PATCH 141/611] Change missing font to Fakt. --- stylus/website/fonts.styl | 28 ++++++++++++++++++++++++++++ stylus/website/index.styl | 3 ++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 stylus/website/fonts.styl diff --git a/stylus/website/fonts.styl b/stylus/website/fonts.styl new file mode 100644 index 00000000..2c1bedd5 --- /dev/null +++ b/stylus/website/fonts.styl @@ -0,0 +1,28 @@ +// Fakt + +@font-face { + font-family: 'fakt-web'; + src: url("https://cdn.auth0.com/styleguide/core/2.0.4/fonts/fakt/FaktPro-Blond.woff2") format("woff2"), + url("https://cdn.auth0.com/styleguide/core/2.0.4/fonts/fakt/FaktPro-Blond.woff") format("woff"), + url("https://cdn.auth0.com/styleguide/core/2.0.4/fonts/fakt/FaktPro-Blond.ttf") format("truetype") + font-weight: 300; + font-style: normal; +} + +@font-face { + font-family: 'fakt-web'; + src: url("https://cdn.auth0.com/styleguide/core/2.0.4/fonts/fakt/FaktPro-Normal.woff2") format("woff2"), + url("https://cdn.auth0.com/styleguide/core/2.0.4/fonts/fakt/FaktPro-Normal.woff") format("woff"), + url("https://cdn.auth0.com/styleguide/core/2.0.4/fonts/fakt/FaktPro-Normal.ttf") format("truetype") + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family: 'fakt-web'; + src: url("https://cdn.auth0.com/styleguide/core/2.0.4/fonts/fakt/FaktPro-Medium.woff2") format("woff2"), + url("https://cdn.auth0.com/styleguide/core/2.0.4/fonts/fakt/FaktPro-Medium.woff") format("woff"), + url("https://cdn.auth0.com/styleguide/core/2.0.4/fonts/fakt/FaktPro-Medium.ttf") format("truetype") + font-weight: 500; + font-style: normal; +} diff --git a/stylus/website/index.styl b/stylus/website/index.styl index def1db44..c9e0be37 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -4,6 +4,7 @@ @import 'http://github.com/highlight' @import 'http://github.com/nib' @import 'http://github.com/nib/gradients' +@import 'http://github.com/fonts' /* * Webfont @@ -39,7 +40,7 @@ html -moz-font-smoothing antialiased body - font-family: 'Whitney SSm A', 'Whitney SSm B', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-family: 'fakt-web', "Helvetica Neue", Helvetica, Arial, sans-serif; pre, code From ee275b8b1b0d7f33c81a72994d6c77f00b41708f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 21 Mar 2018 17:44:50 -0300 Subject: [PATCH 142/611] Add share button to website (design by design team). --- Gruntfile.js | 3 +++ src/extension/index.js | 23 ++--------------------- src/share-button.js | 23 +++++++++++++++++++++++ src/strings.js | 8 +++++--- src/website/dom-elements.js | 3 +++ src/website/index.js | 6 +++++- stylus/extension/index.styl | 10 ++++++++++ stylus/website/index.styl | 22 ++++++++++++++++++---- views/extension/index.pug | 3 ++- views/token-editor-common.pug | 4 +--- views/token-editor-validation.pug | 1 + views/website/token-editor.pug | 7 +++++++ 12 files changed, 80 insertions(+), 33 deletions(-) create mode 100644 src/share-button.js create mode 100644 views/token-editor-validation.pug diff --git a/Gruntfile.js b/Gruntfile.js index 5d69e8c9..d8c505a0 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -173,6 +173,9 @@ module.exports = grunt => { files: [ 'stylus/*.styl', 'stylus/extension/**', + // Yes, we still share styles with the website, it's really hard + // to refactor them out without breaking stuff + 'stylus/website/**', 'views/*.pug', 'views/extension/**' ], diff --git a/src/extension/index.js b/src/extension/index.js index 37917f2e..30732430 100644 --- a/src/extension/index.js +++ b/src/extension/index.js @@ -5,29 +5,10 @@ import { } from '../editor'; import { setupTokenPageInspector } from './page-inspector.js'; import { shareJwtLink, shareJwtTextElement } from './dom-elements.js'; -import { copyTokenLink } from '../utils.js'; import { getTokenFromClipboardIfPossible } from './utils.js'; +import { setupShareJwtButton } from '../share-button.js'; import strings from '../strings.js'; -function setupShareJwtButton() { - shareJwtLink.addEventListener('click', event => { - event.preventDefault(); - - const value = getTokenEditorValue(); - if(value.token) { - // If the selected algorithm does not use public keys, publicKey will be - // undefined. - copyTokenLink(value.token, value.publicKey); - } - - const shareJwtTextNode = shareJwtTextElement.firstChild; - shareJwtTextNode.textContent = strings.extension.jwtIoUrlCopied; - setTimeout(() => { - shareJwtTextNode.textContent = strings.extension.shareThisJwt; - }, 2000); - }); -} - function loadFromClipboardIfPossible() { const token = getTokenFromClipboardIfPossible(); if(token) { @@ -39,4 +20,4 @@ function loadFromClipboardIfPossible() { setupTokenEditor(); loadFromClipboardIfPossible(); setupTokenPageInspector(); -setupShareJwtButton(); +setupShareJwtButton(shareJwtLink, shareJwtTextElement); diff --git a/src/share-button.js b/src/share-button.js new file mode 100644 index 00000000..bda90844 --- /dev/null +++ b/src/share-button.js @@ -0,0 +1,23 @@ +import { copyTokenLink } from './utils.js'; +import { getTokenEditorValue } from './editor'; + +import strings from './strings.js'; + +export function setupShareJwtButton(shareJwtElement, shareJwtTextElement) { + shareJwtElement.addEventListener('click', event => { + event.preventDefault(); + + const value = getTokenEditorValue(); + if(value.token) { + // If the selected algorithm does not use public keys, publicKey will be + // undefined. + copyTokenLink(value.token, value.publicKey); + } + + const shareJwtTextNode = shareJwtTextElement.firstChild; + shareJwtTextNode.textContent = strings.common.jwtIoUrlCopied; + setTimeout(() => { + shareJwtTextNode.textContent = strings.common.shareThisJwt; + }, 2000); + }); +} diff --git a/src/strings.js b/src/strings.js index 79873546..113a2457 100644 --- a/src/strings.js +++ b/src/strings.js @@ -1,9 +1,11 @@ export default { + common: { + shareThisJwt: 'Share JWT', + jwtIoUrlCopied: 'Copied', + }, extension: { alreadyInstalled: 'Already installed', - addToBrowser: 'Add to Browser', - shareThisJwt: 'Share this JWT', - jwtIoUrlCopied: 'Copied', + addToBrowser: 'Add to Browser', noJwtsFound: 'No JWTs found', saveBackTo: 'Save back to ' }, diff --git a/src/website/dom-elements.js b/src/website/dom-elements.js index 53929903..15092a82 100644 --- a/src/website/dom-elements.js +++ b/src/website/dom-elements.js @@ -20,6 +20,9 @@ export const codeElements = document.querySelectorAll('.plain-text pre code'); export const debuggerSection = document.getElementById('debugger-io'); +export const shareJwtButton = document.querySelector('.website-share button'); +export const shareJwtTextElement = shareJwtButton.querySelector('span'); + export const starsElements = document.getElementsByClassName('stars'); export const librariesElement = document.querySelector('.libraries-sv'); export const librariesSelect = document.getElementById('libraries-select'); diff --git a/src/website/index.js b/src/website/index.js index 5e8db490..ec767c99 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -7,12 +7,15 @@ import { setupSmoothScrolling } from './smooth-scrolling.js'; import { setupHighlighting } from './highlighting.js'; import { getParameterByName } from '../utils.js'; import { isChrome, isFirefox } from './utils.js'; +import { setupShareJwtButton } from '../share-button.js'; import { publicKeyTextArea, codeElements, debuggerSection, extensionSection, - ebookSection + ebookSection, + shareJwtButton, + shareJwtTextElement } from './dom-elements.js'; /* For initialization, look at the end of this file */ @@ -59,3 +62,4 @@ parseLocationQuery(); setupHighlighting(); setupJwtCounter(); pickEbookOrExtensionBanner(); +setupShareJwtButton(shareJwtButton, shareJwtTextElement); diff --git a/stylus/extension/index.styl b/stylus/extension/index.styl index 141735b3..768153a4 100644 --- a/stylus/extension/index.styl +++ b/stylus/extension/index.styl @@ -23,6 +23,9 @@ &:hover opacity: 0.85 + span + padding-left 15px + img position absolute top 5px @@ -81,6 +84,13 @@ margin-top 10px padding 5px 0 font-size 20px + text-align center + &.valid-token + background-color #00B9F1 + color white + &.invalid-token + background-color red + color white i line-height 22px diff --git a/stylus/website/index.styl b/stylus/website/index.styl index c9e0be37..5550bbec 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -583,8 +583,8 @@ body .validation-status text-transform capitalize - color white - text-align center + background-color white + text-align left border-radius 3px padding 10px 0 margin-top 30px @@ -592,9 +592,9 @@ body +breakpoint("tablet") font-size 30px &.valid-token - background-color #00B9F1 + color #00B9F1 &.invalid-token - background-color red + color red i font-size 18px vertical-align bottom @@ -603,6 +603,20 @@ body +breakpoint("tablet") font-size 24px + .debugger-footer + font-size 30px + .website-validation + padding-left 0 + .website-share + padding-right 0 + button + width 100%; + background-color #00b9f1; + color white; + font-weight 400; + border-color #00b9f1; + + // libraries-jwt diff --git a/views/extension/index.pug b/views/extension/index.pug index 71961259..a4969582 100644 --- a/views/extension/index.pug +++ b/views/extension/index.pug @@ -28,10 +28,11 @@ block content .share-this-jwt.h-block a.jwt-clipboard-btn(href="#") - span#share-this-jwt-text Share this JWT + span#share-this-jwt-text Share JWT img(src="http://github.com/img/icon-chromeless.svg" height="22" alt="Share this jwt") include ../token-editor-common.pug + include ../token-editor-validation.pug .colophon.clearfix .pull-left diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug index 57c35cd9..4402ea2c 100644 --- a/views/token-editor-common.pug +++ b/views/token-editor-common.pug @@ -29,7 +29,7 @@ HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), - + ) pre.pre-encode.RS256. RSASHA256( @@ -38,5 +38,3 @@ , ) - -.validation-status.js-signature diff --git a/views/token-editor-validation.pug b/views/token-editor-validation.pug new file mode 100644 index 00000000..ffb4ff2d --- /dev/null +++ b/views/token-editor-validation.pug @@ -0,0 +1 @@ +.validation-status.js-signature diff --git a/views/website/token-editor.pug b/views/website/token-editor.pug index 0010233c..7fac2c59 100644 --- a/views/website/token-editor.pug +++ b/views/website/token-editor.pug @@ -11,3 +11,10 @@ section#debugger-io.debugger-jwt include ../token-editor-algorithms.pug include ../token-editor-common.pug + .debugger-footer.container + .row + .col-xs-6.website-validation + include ../token-editor-validation.pug + .col-xs-6.website-share + button.btn + span SHARE JWT From 96322fe634d43eb96c354370388845d761429b16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 21 Mar 2018 21:45:55 -0300 Subject: [PATCH 143/611] Share button functional test. --- src/share-button.js | 10 +++- src/utils.js | 1 + test/functional/editor.js | 120 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 130 insertions(+), 1 deletion(-) diff --git a/src/share-button.js b/src/share-button.js index bda90844..a98dac24 100644 --- a/src/share-button.js +++ b/src/share-button.js @@ -11,7 +11,15 @@ export function setupShareJwtButton(shareJwtElement, shareJwtTextElement) { if(value.token) { // If the selected algorithm does not use public keys, publicKey will be // undefined. - copyTokenLink(value.token, value.publicKey); + const copiedUrl = copyTokenLink(value.token, value.publicKey); + + // We cannot read the clipboard in headless Chrome, + // so we use this to let functional tests see the URL. See: + // https://github.com/GoogleChrome/puppeteer/issues/2147 + if(!window.test) { + window.test = {}; + } + window.test.shareJwtCopiedUrl = copiedUrl; } const shareJwtTextNode = shareJwtTextElement.firstChild; diff --git a/src/utils.js b/src/utils.js index 2b908fd6..a848c8ca 100644 --- a/src/utils.js +++ b/src/utils.js @@ -168,6 +168,7 @@ export function copyTokenLink(token, publicKeyOptional) { } copyTextToClipboard(url); + return url; } // https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript diff --git a/test/functional/editor.js b/test/functional/editor.js index f32b519a..c112a8da 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -1031,4 +1031,124 @@ describe('Editor', function() { expect(storedPayload).to.deep.equal(payload); }); + + describe('JWT share button', function() { + it('Copies an HMAC token to the clipboard (no secret)', async function() { + await this.page.select('#algorithm-select', 'HS256'); + + const secretInput = await this.page.$('input[name="secret"]'); + await secretInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await secretInput.type('secret-test', { + delay: typingDelay + }); + + await this.page.click('.js-payload'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + + const payload = { + sub: 'test' + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay + }); + + const shareJwtButton = await this.page.$('.website-share button'); + await shareJwtButton.click(); + + const srcToken = await this.page.evaluate(() => + window.test.tokenEditor.getValue()); + + // We cannot read the clipboard in headless Chrome, so we have a special + // harness in the code that stores this value. See: + // https://github.com/GoogleChrome/puppeteer/issues/2147 + const copiedUrl = await this.page.evaluate(() => + window.test.shareJwtCopiedUrl); + + const newPage = await this.browser.newPage(); + await newPage.goto(copiedUrl); + + const destToken = await newPage.evaluate(() => + window.test.tokenEditor.getValue()); + const destSecret = await newPage.$eval('input[name="secret"]', input => + input.value); + + expect(srcToken).to.equal(destToken); + expect(destSecret).to.not.equal('secret-test'); + }); + + it('Copies an RSA token to the clipboard (with public-key)', + async function() { + this.timeout(30000); + + await this.page.select('#algorithm-select', 'RS256'); + + await this.page.click('.js-input'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.type(defaultTokens['rs256'].token, { + delay: typingDelay + }); + + const pubKeyInput = await this.page.$('textarea[name="public-key"]'); + await pubKeyInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await pubKeyInput.type(defaultTokens['rs256'].publicKey, { + delay: typingDelay + }); + + const privateKeyInput = + await this.page.$('textarea[name="private-key"]'); + await privateKeyInput.click(); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + await privateKeyInput.type(defaultTokens['rs256'].privateKey, { + delay: typingDelay + }); + + await this.page.click('.js-payload'); + await this.page.keyboard.down('ControlLeft'); + await this.page.keyboard.press('KeyA'); + await this.page.keyboard.up('ControlLeft'); + + const payload = { + sub: 'test' + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay + }); + + const shareJwtButton = await this.page.$('.website-share button'); + await shareJwtButton.click(); + + const srcToken = await this.page.evaluate(() => + window.test.tokenEditor.getValue()); + + // We cannot read the clipboard in headless Chrome, so we have a + // special harness in the code that stores this value. See: + // https://github.com/GoogleChrome/puppeteer/issues/2147 + const copiedUrl = await this.page.evaluate(() => + window.test.shareJwtCopiedUrl); + + const newPage = await this.browser.newPage(); + await newPage.goto(copiedUrl); + + const destToken = await newPage.evaluate(() => + window.test.tokenEditor.getValue()); + const destPubKey = await newPage.$eval('textarea[name="public-key"]', + input => input.value); + + expect(srcToken).to.equal(destToken); + expect(destPubKey).to.equal(defaultTokens['rs256'].publicKey); + } + ); + }); }); From b0efa11f1683f81cbbf1cab1b46de34768f7dc40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 22 Mar 2018 15:05:11 -0300 Subject: [PATCH 144/611] Fixed share button on mobile. --- package-lock.json | 17 ++++++++++++++ package.json | 1 + src/utils.js | 58 ++--------------------------------------------- 3 files changed, 20 insertions(+), 56 deletions(-) diff --git a/package-lock.json b/package-lock.json index f6aa49a0..85cac261 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2518,6 +2518,23 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, + "clipboard-polyfill": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/clipboard-polyfill/-/clipboard-polyfill-2.4.6.tgz", + "integrity": "sha1-n88q2eCjoOdsJWGCsVneDmebJwk=", + "dev": true, + "requires": { + "es6-promise": "4.1.1" + }, + "dependencies": { + "es6-promise": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", + "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==", + "dev": true + } + } + }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", diff --git a/package.json b/package.json index b7dbbf11..0bb6b20c 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "chai": "^4.1.2", "chai-arrays": "^2.0.0", "chai-as-promised": "^7.1.1", + "clipboard-polyfill": "^2.4.6", "codemirror": "^5.33.0", "flipclock": "^0.7.8", "grunt": "^1.0.1", diff --git a/src/utils.js b/src/utils.js index a848c8ca..4a4d952b 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,5 +1,6 @@ import { KEYUTIL } from 'jsrsasign'; import log from 'loglevel'; +import clipboard from 'clipboard-polyfill'; export function httpGet(url, cache = true) { return new Promise((resolve, reject) => { @@ -106,68 +107,13 @@ export function deferToNextLoop(func) { setTimeout(func, 1); } -// https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript -export function copyTextToClipboard(text) { - var textArea = document.createElement("textarea"); - - // - // *** This styling is an extra step which is likely not required. *** - // - // Why is it here? To ensure: - // 1. the element is able to have focus and selection. - // 2. if element was to flash render it has minimal visual impact. - // 3. less flakyness with selection and copying which **might** occur if - // the textarea element is not visible. - // - // The likelihood is the element won't even render, not even a flash, - // so some of these are just precautions. However in IE the element - // is visible whilst the popup box asking the user for permission for - // the web page to copy to the clipboard. - // - - // Place in top-left corner of screen regardless of scroll position. - textArea.style.position = 'fixed'; - textArea.style.top = 0; - textArea.style.left = 0; - - // Ensure it has a small width and height. Setting to 1px / 1em - // doesn't work as this gives a negative w/h on some browsers. - textArea.style.width = '2em'; - textArea.style.height = '2em'; - - // We don't need padding, reducing the size if it does flash render. - textArea.style.padding = 0; - - // Clean up any borders. - textArea.style.border = 'none'; - textArea.style.outline = 'none'; - textArea.style.boxShadow = 'none'; - - // Avoid flash of white box if rendered for any reason. - textArea.style.background = 'transparent'; - - textArea.value = text; - - document.body.appendChild(textArea); - - textArea.select(); - - try { - document.execCommand('copy'); - } catch (err) { - log.warn(err); - } - - document.body.removeChild(textArea); -} - export function copyTokenLink(token, publicKeyOptional) { let url = `https://jwt.io/#debugger-io?token=${encodeURIComponent(token)}`; if(publicKeyOptional) { url += `&publicKey=${encodeURIComponent(publicKeyOptional)}`; } - copyTextToClipboard(url); + clipboard.writeText(url); return url; } From 097947789a5c656bc6fe9c805e96af6f37154d04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 22 Mar 2018 15:57:53 -0300 Subject: [PATCH 145/611] Make things look better on mobile. --- stylus/website/index.styl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 5550bbec..d0eeada3 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -584,13 +584,15 @@ body .validation-status text-transform capitalize background-color white - text-align left + text-align center border-radius 3px - padding 10px 0 + padding 0 margin-top 30px font-size 20px +breakpoint("tablet") font-size 30px + padding 10px 0 + text-align left &.valid-token color #00B9F1 &.invalid-token From 3889e425e0e8e1f187257fcdad2d329965d4b31b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 22 Mar 2018 16:42:52 -0300 Subject: [PATCH 146/611] Minor positioning fix for Base64 checkbox. --- stylus/website/index.styl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index d0eeada3..4f6f65bb 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -580,6 +580,10 @@ body width 100% max-width 266px resize none + input[type="checkbox"] + margin-right 5px + position relative + top 2px .validation-status text-transform capitalize From b1cc033034859c04b3c73b3945f760a53106354a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 22 Mar 2018 17:48:32 -0300 Subject: [PATCH 147/611] Manual merge of PR #290. --- views/website/libraries/delphi.pug | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/views/website/libraries/delphi.pug b/views/website/libraries/delphi.pug index 63344c6b..8c2100c2 100644 --- a/views/website/libraries/delphi.pug +++ b/views/website/libraries/delphi.pug @@ -13,15 +13,15 @@ article.jwt-delphi.delphi.accordion(data-accordion) i.icon-budicon-500 | Verify p - i.icon-budicon-501 + i.icon-budicon-500 code iss | check p - i.icon-budicon-501 + i.icon-budicon-500 code sub | check p - i.icon-budicon-501 + i.icon-budicon-500 code aud | check p @@ -37,7 +37,7 @@ article.jwt-delphi.delphi.accordion(data-accordion) code iat | check p - i.icon-budicon-501 + i.icon-budicon-500 code jti | check .column @@ -51,13 +51,13 @@ article.jwt-delphi.delphi.accordion(data-accordion) i.icon-budicon-500 | HS512 p - i.icon-budicon-501 + i.icon-budicon-500 | RS256 p - i.icon-budicon-501 + i.icon-budicon-500 | RS384 p - i.icon-budicon-501 + i.icon-budicon-500 | RS512 p i.icon-budicon-501 From 2ccdeaf3ec2ed3442deeb6528a23bc97bb1f3bbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 22 Mar 2018 17:51:35 -0300 Subject: [PATCH 148/611] Manual merge of PR #207. --- views/website/libraries/js.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/js.pug b/views/website/libraries/js.pug index 48accd45..7f94a30b 100644 --- a/views/website/libraries/js.pug +++ b/views/website/libraries/js.pug @@ -85,4 +85,4 @@ article.jwt-js.js.accordion(data-accordion) a(href='https://github.com/kjur/jsrsasign') View Repo .panel-footer - code bower install jsrsasign + code npm install jsrsasign From 33cb198ccfc5198a83c19fb6eed5ebd55d458af0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 22 Mar 2018 17:53:26 -0300 Subject: [PATCH 149/611] Manual merge of PR #289. --- views/website/libraries/crystal.pug | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/crystal.pug b/views/website/libraries/crystal.pug index f182d96e..e4789fba 100644 --- a/views/website/libraries/crystal.pug +++ b/views/website/libraries/crystal.pug @@ -74,11 +74,11 @@ article.jwt-crystal.crystal.accordion(data-accordion) a(href='https://github.com/greyblake') i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') | Sergey Potapov - span.stars(data-repo='greyblake/crystal-jwt', style='display: inline;') + span.stars(data-repo='crystal-community/jwt', style='display: inline;') i.icon-budicon-466 .repository i.icon-1392070209-icon-social-github - a(href='https://github.com/greyblake/crystal-jwt') View Repo + a(href='https://github.com/crystal-community/jwt') View Repo .panel-footer - code git clone https://github.com/greyblake/crystal-jwt.git + code git clone https://github.com/crystal-community/jwt.git From c60fcc8c78b4f71575c9b3ff4f09f19956dd4fcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 22 Mar 2018 17:56:25 -0300 Subject: [PATCH 150/611] Manual merge of PR #288 --- views/website/libraries/scala2.pug | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/scala2.pug b/views/website/libraries/scala2.pug index 332155d8..a1c0ae47 100644 --- a/views/website/libraries/scala2.pug +++ b/views/website/libraries/scala2.pug @@ -17,7 +17,7 @@ article.jwt-scala.scala.accordion(data-accordion) code iss | check p - i.icon-budicon-501 + i.icon-budicon-500 code sub | check p @@ -33,11 +33,11 @@ article.jwt-scala.scala.accordion(data-accordion) code nbf | check p - i.icon-budicon-501 + i.icon-budicon-500 code iat | check p - i.icon-budicon-501 + i.icon-budicon-500 code jti | check .column From 89fc3a09fc5293e122e9a0b1209c88ffe837615f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 23 Mar 2018 19:20:50 -0300 Subject: [PATCH 151/611] Manual merge of PR #292. --- views/website/libraries.pug | 1 + views/website/libraries/php9.pug | 84 ++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 views/website/libraries/php9.pug diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 9e3b0668..05f0a4a1 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -112,6 +112,7 @@ section#libraries-io.libraries-jwt include libraries/php6.pug include libraries/php7.pug include libraries/php8.pug + include libraries/php9.pug include libraries/crystal.pug include libraries/1c.pug include libraries/postgresql.pug diff --git a/views/website/libraries/php9.pug b/views/website/libraries/php9.pug new file mode 100644 index 00000000..9e77bf9a --- /dev/null +++ b/views/website/libraries/php9.pug @@ -0,0 +1,84 @@ +// PHP lindelius/php-jwt +article.jwt-php.php.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/5.svg') + h3 PHP + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-501 + | ES256 + p + i.icon-budicon-501 + | ES384 + p + i.icon-budicon-501 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/lindelius') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Tom Lindelius + span.stars(data-repo='lindelius/php-jwt', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/lindelius/php-jwt') View Repo + + .panel-footer + code composer require lindelius/php-jwt From 5e39b138a35884bc0dec080ff28f79ccafd6a6cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 23 Mar 2018 19:26:39 -0300 Subject: [PATCH 152/611] Manual merge of PR #287. --- views/website/libraries.pug | 1 + views/website/libraries/cpp2.pug | 84 ++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 views/website/libraries/cpp2.pug diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 05f0a4a1..1b49f39f 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -102,6 +102,7 @@ section#libraries-io.libraries-jwt include libraries/c.pug include libraries/c2.pug include libraries/cpp.pug + include libraries/cpp2.pug include libraries/q.pug include libraries/delphi.pug include libraries/delphi2.pug diff --git a/views/website/libraries/cpp2.pug b/views/website/libraries/cpp2.pug new file mode 100644 index 00000000..9485429d --- /dev/null +++ b/views/website/libraries/cpp2.pug @@ -0,0 +1,84 @@ +// C++ Thalhammer/jwt-cpp +article.jwt-cpp.cpp.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/26.svg') + h3 C++ + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-500 + code iss + | check + p + i.icon-budicon-500 + code sub + | check + p + i.icon-budicon-500 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-500 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-500 + | ES256 + p + i.icon-budicon-500 + | ES384 + p + i.icon-budicon-500 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/Thalhammer') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Dominik Thalhammer + span.stars(data-repo='Thalhammer/jwt-cpp', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/Thalhammer/jwt-cpp') View Repo + + .panel-footer + code git clone https://github.com/Thalhammer/jwt-cpp From 536d3c65971919344182a5ea04fa28c5aef3d002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 23 Mar 2018 19:31:20 -0300 Subject: [PATCH 153/611] Manual merge of PR #285 --- views/website/libraries.pug | 1 + views/website/libraries/cpp3.pug | 84 ++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 views/website/libraries/cpp3.pug diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 1b49f39f..0746a469 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -103,6 +103,7 @@ section#libraries-io.libraries-jwt include libraries/c2.pug include libraries/cpp.pug include libraries/cpp2.pug + include libraries/cpp3.pug include libraries/q.pug include libraries/delphi.pug include libraries/delphi2.pug diff --git a/views/website/libraries/cpp3.pug b/views/website/libraries/cpp3.pug new file mode 100644 index 00000000..108caa3f --- /dev/null +++ b/views/website/libraries/cpp3.pug @@ -0,0 +1,84 @@ +// C++ arun11299/cpp-jwt +article.cpp-jwt.cpp.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/26.svg') + h3 C++ + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-500 + code iss + | check + p + i.icon-budicon-500 + code sub + | check + p + i.icon-budicon-500 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-500 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-500 + | ES256 + p + i.icon-budicon-500 + | ES384 + p + i.icon-budicon-500 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/arun11299') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Arun Muralidharan + span.stars(data-repo='arun11299/cpp-jwt', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/arun11299/cpp-jwt') View Repo + + .panel-footer + code git clone https://github.com/arun11299/cpp-jwt From be1e194eb5588deee6e547e808c9dcbc7bab7db6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 23 Mar 2018 19:32:46 -0300 Subject: [PATCH 154/611] Fix library header for cpp3 library. --- views/website/libraries/cpp3.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/cpp3.pug b/views/website/libraries/cpp3.pug index 108caa3f..4331bd59 100644 --- a/views/website/libraries/cpp3.pug +++ b/views/website/libraries/cpp3.pug @@ -1,5 +1,5 @@ // C++ arun11299/cpp-jwt -article.cpp-jwt.cpp.accordion(data-accordion) +article.jwt-cpp.cpp.accordion(data-accordion) .panel-heading(data-control) img(src='http://github.com/img/26.svg') h3 C++ From 8feb311bcc18a4eb163c1305d6f141a1134c5129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 23 Mar 2018 19:51:09 -0300 Subject: [PATCH 155/611] Manual merge of PR #193 + fixed logo. --- img/website/27.svg | 38 ++++++++++++++ stylus/website/index.styl | 5 +- views/website/libraries.pug | 2 + views/website/libraries/erlang.pug | 84 ++++++++++++++++++++++++++++++ 4 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 img/website/27.svg create mode 100644 views/website/libraries/erlang.pug diff --git a/img/website/27.svg b/img/website/27.svg new file mode 100644 index 00000000..30404ae3 --- /dev/null +++ b/img/website/27.svg @@ -0,0 +1,38 @@ + +image/svg+xml \ No newline at end of file diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 4f6f65bb..234fbaa9 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -740,9 +740,12 @@ body &.jwt-ruby .panel-heading h3 background-color #AA1100 - &.jwt-elixir + &.jwt-elixir .panel-heading h3 background-color #4E2A8E + &.jwt-erlang + .panel-heading h3 + background-color #A90533 &.jwt-go .panel-heading h3 background-color #47B6C4 diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 0746a469..b24d5ac0 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -17,6 +17,7 @@ section#libraries-io.libraries-jwt option(value='.d') D option(value='.delphi') Delphi option(value='.elixir') Elixir + option(value='.erlang') Erlang option(value='.go') Go option(value='.groovy') Groovy option(value='.haskell') Haskell @@ -71,6 +72,7 @@ section#libraries-io.libraries-jwt include libraries/elixir.pug include libraries/elixir2.pug include libraries/elixir3.pug + include libraries/erlang.pug include libraries/go.pug include libraries/go2.pug include libraries/go3.pug diff --git a/views/website/libraries/erlang.pug b/views/website/libraries/erlang.pug new file mode 100644 index 00000000..751969b3 --- /dev/null +++ b/views/website/libraries/erlang.pug @@ -0,0 +1,84 @@ +// Erlang emedia-project/jwerl +article.jwt-erlang.erlang.accordion(data-accordion) + .panel-heading(data-control) + img(src='http://github.com/img/27.svg') + h3 Erlang + .panel-wrap(data-content) + .panel-body + .column + p + i.icon-budicon-500 + | Sign + p + i.icon-budicon-500 + | Verify + p + i.icon-budicon-501 + code iss + | check + p + i.icon-budicon-501 + code sub + | check + p + i.icon-budicon-501 + code aud + | check + p + i.icon-budicon-500 + code exp + | check + p + i.icon-budicon-500 + code nbf + | check + p + i.icon-budicon-500 + code iat + | check + p + i.icon-budicon-501 + code jti + | check + .column + p + i.icon-budicon-500 + | HS256 + p + i.icon-budicon-500 + | HS384 + p + i.icon-budicon-500 + | HS512 + p + i.icon-budicon-500 + | RS256 + p + i.icon-budicon-500 + | RS384 + p + i.icon-budicon-500 + | RS512 + p + i.icon-budicon-500 + | ES256 + p + i.icon-budicon-500 + | ES384 + p + i.icon-budicon-500 + | ES512 + + .author-info + .maintainer + a(href='https://github.com/glejeune') + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | Gregoire Lejeune + span.stars(data-repo='emedia-project/jwerl', style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href='https://github.com/emedia-project/jwerl') View Repo + + .panel-footer + code git clone https://github.com/emedia-project/jwerl.git From 6307be0cee386349f0f22ac8b08192854be4e4aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 23 Mar 2018 21:33:22 -0300 Subject: [PATCH 156/611] Fixes #284: missing star counts --- test/functional/libraries.js | 24 ++++++++++++++++++++++++ views/website/libraries/1c.pug | 2 ++ views/website/libraries/java4.pug | 2 ++ views/website/libraries/java5.pug | 2 ++ views/website/libraries/netrt.pug | 2 ++ 5 files changed, 32 insertions(+) diff --git a/test/functional/libraries.js b/test/functional/libraries.js index f600f4ab..7ca00ab4 100644 --- a/test/functional/libraries.js +++ b/test/functional/libraries.js @@ -92,6 +92,30 @@ describe('Libraries', function() { })).to.be.true; }); + it('Has a data-repo attribute for star counts if repo ' + + 'is in GitHub', async function() { + const repos = await this.page.$$eval('.panel-wrap', bodies => { + const result = []; + for(let i = 0; i < bodies.length; ++i) { + const spanStars = bodies[i].querySelector('span.stars'); + const repoUrl = bodies[i].querySelector('.repository a').href; + + if(repoUrl.indexOf('github') !== -1) { + result.push({ + url: repoUrl, + dataRepo: spanStars ? spanStars.getAttribute('data-repo') : null + }); + } + } + + return result; + }); + + for(const repo of repos) { + expect(repo.dataRepo, repo.url).to.exist.and.not.be.empty; + } + }); + it('Displays libraries stacked on top of each other ' + 'for small screens', async function() { try { diff --git a/views/website/libraries/1c.pug b/views/website/libraries/1c.pug index 2f60a593..b4c1de48 100644 --- a/views/website/libraries/1c.pug +++ b/views/website/libraries/1c.pug @@ -74,6 +74,8 @@ article.jwt-1c._1c.accordion(data-accordion) a(href='https://github.com/pintov') i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') | Vasily Pintov + span.stars(data-repo='pintov/1c-jwt', style='display: inline;') + i.icon-budicon-466 .repository i.icon-1392070209-icon-social-github a(href='https://github.com/pintov/1c-jwt') View Repo diff --git a/views/website/libraries/java4.pug b/views/website/libraries/java4.pug index dfd65826..7bb45d99 100644 --- a/views/website/libraries/java4.pug +++ b/views/website/libraries/java4.pug @@ -74,6 +74,8 @@ article.jwt-java.java.accordion(data-accordion) a(href='https://twitter.com/lhazlewood') i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') | Les Hazlewood + span.stars(data-repo='jwtk/jjwt', style='display: inline;') + i.icon-budicon-466 .repository i.icon-1392070209-icon-social-github a(href='https://github.com/jwtk/jjwt') View Repo diff --git a/views/website/libraries/java5.pug b/views/website/libraries/java5.pug index 1aba7013..16f69f79 100644 --- a/views/website/libraries/java5.pug +++ b/views/website/libraries/java5.pug @@ -74,6 +74,8 @@ article.jwt-java.java.accordion(data-accordion) a(href='https://github.com/inversoft') i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') | Inversoft + span.stars(data-repo='inversoft/prime-jwt', style='display: inline;') + i.icon-budicon-466 .repository i.icon-1392070209-icon-social-github a(href='https://github.com/inversoft/prime-jwt') View Repo diff --git a/views/website/libraries/netrt.pug b/views/website/libraries/netrt.pug index c600e371..961bd587 100644 --- a/views/website/libraries/netrt.pug +++ b/views/website/libraries/netrt.pug @@ -74,6 +74,8 @@ article.jwt-net.net.accordion(data-accordion) a(href='https://github.com/dvsekhvalnov/jose-rt') i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') | DV + span.stars(data-repo='dvsekhvalnov/jose-rt', style='display: inline;') + i.icon-budicon-466 .repository i.icon-1392070209-icon-social-github a(href='https://github.com/dvsekhvalnov/jose-rt') View Repo From aae97aacde01368b11a498c75b79428c2f7e48cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 26 Mar 2018 22:26:00 -0300 Subject: [PATCH 157/611] Ignore VS Code config folder. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index df917eb7..2be5df3e 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ dist .tmp .DS_Store npm-debug.log +.vscode From 375c9e18702331ca38e1f057038a7fa08ba59b17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 26 Mar 2018 22:26:19 -0300 Subject: [PATCH 158/611] Fixes #272: we now support plain RSA public keys without the X.509 SubjectPublicKeyInfo header. --- src/editor/jwt.js | 47 ++++++++++++++++++++++++++++++++++++++--- test/unit/editor/jwt.js | 28 ++++++++++++++++++++---- 2 files changed, 68 insertions(+), 7 deletions(-) diff --git a/src/editor/jwt.js b/src/editor/jwt.js index 56eb4176..ebc78697 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -5,7 +5,9 @@ import { KEYUTIL, b64utoutf8, b64utohex, - utf8tohex + utf8tohex, + b64tohex, + ASN1HEX } from 'jsrsasign'; import log from 'loglevel'; @@ -28,6 +30,44 @@ export function sign(header, } } +/** + * This function takes a PEM string with a public key and returns a + * jsrsasign key object (RSAKey, KJUR.crypto.DSA, KJUR.crypto.ECDSA). It also + * handles plain RSA keys not wrapped in a X.509 SubjectPublicKeyInfo + * structure. + * See: https://stackoverflow.com/questions/18039401/how-can-i-transform-between-the-two-styles-of-public-key-format-one-begin-rsa + * @param {String} publicKey The public key as a PEM string. + * @returns {Object} The public key as a jsrsasign key object. + */ +function getPublicKeyObject(publicKey) { + try { + const startTag = '-----BEGIN RSA PUBLIC KEY-----'; + const endTag = '-----END RSA PUBLIC KEY-----'; + const startTagPos = publicKey.indexOf(startTag); + const endTagPos = publicKey.indexOf(endTag); + + if(startTagPos !== -1 && endTagPos !== -1) { + const plainDataBase64 = + publicKey.substr(0, endTagPos) + .substr(startTagPos + startTag.length); + + const plainDataDER = b64tohex(plainDataBase64); + + const barePublicKey = { + n: ASN1HEX.getVbyList(plainDataDER, 0, [0], '02'), + e: ASN1HEX.getVbyList(plainDataDER, 0, [1], '02') + }; + + return KEYUTIL.getKey(barePublicKey); + } + } catch(e) { + log.error('Failed to make public key into X.509 ' + + 'SubjectPublicKeyInfo key:', e); + } + + return KEYUTIL.getKey(publicKey); +} + export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { if(!isToken(jwt)) { return false; @@ -46,11 +86,12 @@ export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { b64utohex(secretOrPublicKeyString) : utf8tohex(secretOrPublicKeyString)); } else { - return jws.JWS.verify(jwt, secretOrPublicKeyString); + const publicKeyObject = getPublicKeyObject(secretOrPublicKeyString); + return jws.JWS.verify(jwt, publicKeyObject); } } catch(e) { log.warn('Could not verify token, ' + - 'probably due to bad data in it or the keys: ', e); + 'probably due to bad data in it or the keys: ', e); return false; } } diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index f3b2b8bf..73f9afca 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -9,6 +9,13 @@ import { should } from 'chai'; should(); +const publicKeyPlainRSA = +`-----BEGIN RSA PUBLIC KEY----- +MIGJAoGBAN2Vq1GNGOiCjdaiOAYcUdgu6B1RYBj2JHd/LhqtY0DUqhLyRXDfdwmJ +tevxu/BQBSlqsLCW91sfp28Q5+i7T+AIVCwdR9CtIO/4y5JQwB7yPMoTipb6Mr7F +BT1rTcZScoeSSV75DSlf+DqNdnuvX/EArkOjaRD5fnEr1yKlGAQrAgMBAAE= +-----END RSA PUBLIC KEY-----`; + describe('JWT', function() { it('detects tokens', function() { jwt.isToken('skdjf9238ujdhkf.asdfasdf2.sdsdffsfsd').should.be.false; @@ -97,7 +104,7 @@ describe('JWT', function() { } }); - it('signs tokens (HS256)', function() { + it('signs/verifies tokens (HS256)', function() { const header = { alg: 'HS256' }; @@ -118,7 +125,7 @@ describe('JWT', function() { decoded.payload.should.deep.equal(payload); }); - it('signs tokens (RS256)', function() { + it('signs/verifies tokens (RS256)', function() { const header = { alg: 'RS256' }; @@ -139,7 +146,7 @@ describe('JWT', function() { decoded.payload.should.deep.equal(payload); }); - it('signs tokens (ES256)', function() { + it('signs/verifies tokens (ES256)', function() { const header = { alg: 'ES256' }; @@ -160,7 +167,7 @@ describe('JWT', function() { decoded.payload.should.deep.equal(payload); }); - it('signs tokens (PS256)', function() { + it('signs/verifies tokens (PS256)', function() { const header = { alg: 'PS256' }; @@ -180,4 +187,17 @@ describe('JWT', function() { decoded.header.should.deep.equal(header); decoded.payload.should.deep.equal(payload); }); + + it('verifies tokens (RS256) using a plain RSA public key', function() { + const header = { + alg: 'RS256' + }; + const payload = { + sub: 'test' + }; + + const token = jwt.sign(header, payload, tokens.rs256.privateKey); + + jwt.verify(token, publicKeyPlainRSA).should.be.true; + }); }); From 556998bdbb5a741d3919d58537c440dcec074972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 27 Mar 2018 22:58:58 -0300 Subject: [PATCH 159/611] Fixes #141: adding/removing/editing libraries is now as simple as editing a JSON file. --- Gruntfile.js | 6 + stylus/website/index.styl | 84 - views/website/libraries.pug | 107 +- views/website/libraries/1c.pug | 84 - views/website/libraries/c.pug | 84 - views/website/libraries/c2.pug | 84 - views/website/libraries/clojure.pug | 84 - views/website/libraries/cpp.pug | 84 - views/website/libraries/cpp2.pug | 84 - views/website/libraries/cpp3.pug | 84 - views/website/libraries/crystal.pug | 84 - views/website/libraries/d.pug | 84 - views/website/libraries/d2.pug | 84 - views/website/libraries/data.json | 2186 +++++++++++++++++ views/website/libraries/delphi.pug | 84 - views/website/libraries/delphi2.pug | 84 - views/website/libraries/elixir.pug | 83 - views/website/libraries/elixir2.pug | 83 - views/website/libraries/elixir3.pug | 83 - views/website/libraries/erlang.pug | 84 - views/website/libraries/go.pug | 84 - views/website/libraries/go2.pug | 84 - views/website/libraries/go3.pug | 86 - views/website/libraries/go4.pug | 84 - views/website/libraries/go5.pug | 84 - views/website/libraries/go6.pug | 84 - views/website/libraries/go7.pug | 84 - views/website/libraries/go8.pug | 84 - views/website/libraries/go9.pug | 84 - views/website/libraries/groovy.pug | 84 - views/website/libraries/haskell.pug | 82 - views/website/libraries/haskell2.pug | 84 - views/website/libraries/haxe.pug | 84 - views/website/libraries/java.pug | 84 - views/website/libraries/java2.pug | 82 - views/website/libraries/java3.pug | 82 - views/website/libraries/java4.pug | 84 - views/website/libraries/java5.pug | 84 - views/website/libraries/java6.pug | 84 - views/website/libraries/js.pug | 88 - views/website/libraries/js2.pug | 84 - views/website/libraries/lua.pug | 84 - views/website/libraries/net.pug | 86 - views/website/libraries/net2.pug | 87 - views/website/libraries/netrt.pug | 87 - views/website/libraries/node.pug | 88 - views/website/libraries/objective-c.pug | 83 - views/website/libraries/perl5.pug | 84 - views/website/libraries/php.pug | 88 - views/website/libraries/php3.pug | 88 - views/website/libraries/php4.pug | 84 - views/website/libraries/php5.pug | 84 - views/website/libraries/php6.pug | 84 - views/website/libraries/php7.pug | 84 - views/website/libraries/php8.pug | 84 - views/website/libraries/php9.pug | 84 - views/website/libraries/postgresql.pug | 84 - views/website/libraries/python.pug | 88 - views/website/libraries/python2.pug | 84 - views/website/libraries/python3.pug | 84 - views/website/libraries/q.pug | 85 - views/website/libraries/ruby.pug | 83 - views/website/libraries/ruby2.pug | 83 - views/website/libraries/ruby3.pug | 84 - views/website/libraries/ruby4.pug | 84 - views/website/libraries/rust.pug | 84 - views/website/libraries/rust2.pug | 84 - views/website/libraries/rust3.pug | 84 - views/website/libraries/scala.pug | 84 - views/website/libraries/scala2.pug | 84 - views/website/libraries/scala3.pug | 84 - views/website/libraries/scala4.pug | 85 - .../website/libraries/support/getLibsData.js | 88 + views/website/libraries/swift.pug | 84 - views/website/libraries/swift2.pug | 84 - views/website/libraries/swift3.pug | 84 - views/website/libraries/template.pug | 93 + 77 files changed, 2379 insertions(+), 6169 deletions(-) delete mode 100644 views/website/libraries/1c.pug delete mode 100644 views/website/libraries/c.pug delete mode 100644 views/website/libraries/c2.pug delete mode 100644 views/website/libraries/clojure.pug delete mode 100644 views/website/libraries/cpp.pug delete mode 100644 views/website/libraries/cpp2.pug delete mode 100644 views/website/libraries/cpp3.pug delete mode 100644 views/website/libraries/crystal.pug delete mode 100644 views/website/libraries/d.pug delete mode 100644 views/website/libraries/d2.pug create mode 100644 views/website/libraries/data.json delete mode 100644 views/website/libraries/delphi.pug delete mode 100644 views/website/libraries/delphi2.pug delete mode 100644 views/website/libraries/elixir.pug delete mode 100644 views/website/libraries/elixir2.pug delete mode 100644 views/website/libraries/elixir3.pug delete mode 100644 views/website/libraries/erlang.pug delete mode 100644 views/website/libraries/go.pug delete mode 100644 views/website/libraries/go2.pug delete mode 100644 views/website/libraries/go3.pug delete mode 100644 views/website/libraries/go4.pug delete mode 100644 views/website/libraries/go5.pug delete mode 100644 views/website/libraries/go6.pug delete mode 100644 views/website/libraries/go7.pug delete mode 100644 views/website/libraries/go8.pug delete mode 100644 views/website/libraries/go9.pug delete mode 100644 views/website/libraries/groovy.pug delete mode 100644 views/website/libraries/haskell.pug delete mode 100644 views/website/libraries/haskell2.pug delete mode 100644 views/website/libraries/haxe.pug delete mode 100644 views/website/libraries/java.pug delete mode 100644 views/website/libraries/java2.pug delete mode 100644 views/website/libraries/java3.pug delete mode 100644 views/website/libraries/java4.pug delete mode 100644 views/website/libraries/java5.pug delete mode 100644 views/website/libraries/java6.pug delete mode 100644 views/website/libraries/js.pug delete mode 100644 views/website/libraries/js2.pug delete mode 100644 views/website/libraries/lua.pug delete mode 100644 views/website/libraries/net.pug delete mode 100644 views/website/libraries/net2.pug delete mode 100644 views/website/libraries/netrt.pug delete mode 100644 views/website/libraries/node.pug delete mode 100644 views/website/libraries/objective-c.pug delete mode 100644 views/website/libraries/perl5.pug delete mode 100644 views/website/libraries/php.pug delete mode 100644 views/website/libraries/php3.pug delete mode 100644 views/website/libraries/php4.pug delete mode 100644 views/website/libraries/php5.pug delete mode 100644 views/website/libraries/php6.pug delete mode 100644 views/website/libraries/php7.pug delete mode 100644 views/website/libraries/php8.pug delete mode 100644 views/website/libraries/php9.pug delete mode 100644 views/website/libraries/postgresql.pug delete mode 100644 views/website/libraries/python.pug delete mode 100644 views/website/libraries/python2.pug delete mode 100644 views/website/libraries/python3.pug delete mode 100644 views/website/libraries/q.pug delete mode 100644 views/website/libraries/ruby.pug delete mode 100644 views/website/libraries/ruby2.pug delete mode 100644 views/website/libraries/ruby3.pug delete mode 100644 views/website/libraries/ruby4.pug delete mode 100644 views/website/libraries/rust.pug delete mode 100644 views/website/libraries/rust2.pug delete mode 100644 views/website/libraries/rust3.pug delete mode 100644 views/website/libraries/scala.pug delete mode 100644 views/website/libraries/scala2.pug delete mode 100644 views/website/libraries/scala3.pug delete mode 100644 views/website/libraries/scala4.pug create mode 100644 views/website/libraries/support/getLibsData.js delete mode 100644 views/website/libraries/swift.pug delete mode 100644 views/website/libraries/swift2.pug delete mode 100644 views/website/libraries/swift3.pug create mode 100644 views/website/libraries/template.pug diff --git a/Gruntfile.js b/Gruntfile.js index d8c505a0..21e8347a 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -108,6 +108,12 @@ module.exports = grunt => { pug: { website: { + options: { + //pretty: true, + data: { + languages: require('./views/website/libraries/data.json') + } + }, files: { 'dist/website/index.html': 'views/website/index.pug', 'dist/website/introduction/index.html': diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 234fbaa9..37094a1b 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -713,90 +713,6 @@ body &:nth-child(3n+1) clear both - &.jwt-net - .panel-heading h3 - background-color #2AA8E5 - &.jwt-python - .panel-heading h3 - background-color #377EF0 - &.jwt-clojure - .panel-heading h3 - background-color #5881d8 - &.jwt-node - .panel-heading h3 - background-color #8AC244 - &.jwt-java - .panel-heading h3 - background-color #E76F00 - &.jwt-js - .panel-heading h3 - background-color #EFC825 - &.jwt-php - .panel-heading h3 - background-color #777BB4 - &.jwt-postgresql - .panel-heading h3 - background-color #336791 - &.jwt-ruby - .panel-heading h3 - background-color #AA1100 - &.jwt-elixir - .panel-heading h3 - background-color #4E2A8E - &.jwt-erlang - .panel-heading h3 - background-color #A90533 - &.jwt-go - .panel-heading h3 - background-color #47B6C4 - &.jwt-groovy - .panel-heading h3 - background-color #6398aa - &.jwt-haskell - .panel-heading h3 - background-color #666 - &.jwt-haxe - .panel-heading h3 - background-color #EA8220 - &.jwt-rust - .panel-heading h3 - background-color #814626 - &.jwt-lua - .panel-heading h3 - background-color #000080 - &.jwt-scala - .panel-heading h3 - background-color #EA2D2E - &.jwt-d - .panel-heading h3 - background-color #B44137 - &.jwt-q - .panel-heading h3 - background-color #666 - &.jwt-c - .panel-heading h3 - background-color #5180D2 - &.jwt-cpp - .panel-heading h3 - background-color #00599c - &.jwt-objective-c - .panel-heading h3 - background linear-gradient(top, #AAAAAA, #767676) - - &.jwt-delphi - .panel-heading h3 - background-color #E31C23 - &.jwt-perl - .panel-heading h3 - background-color #3B477A - &.jwt-crystal - .panel-heading h3 - background-color #B0B0B0 - &.jwt-1c - .panel-heading h3 - background-color #fbc53d - - .panel-heading padding 0 border-bottom 0 diff --git a/views/website/libraries.pug b/views/website/libraries.pug index b24d5ac0..76ef6002 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -7,36 +7,10 @@ section#libraries-io.libraries-jwt span Filter by .jwt-select select#libraries-select - // Languages must be in alphabetic order option(value='*', selected='') All - option(value='._1c') 1c - option(value='.c') C - option(value='.cpp') C++ - option(value='.clojure') Clojure - option(value='.crystal') Crystal - option(value='.d') D - option(value='.delphi') Delphi - option(value='.elixir') Elixir - option(value='.erlang') Erlang - option(value='.go') Go - option(value='.groovy') Groovy - option(value='.haskell') Haskell - option(value='.haxe') Haxe - option(value='.java') Java - option(value='.js') JavaScript - option(value='.lua') Lua - option(value='.net') .NET - option(value='.node') Node.js - option(value='.objective-c') Objective-c - option(value='.perl') Perl - option(value='.php') PHP - option(value='.postgresql') PostgreSQL - option(value='.python') Python - option(value='.q') Q - option(value='.ruby') Ruby - option(value='.rust') Rust - option(value='.scala') Scala - option(value='.swift') Swift + // Languages must be in alphabetic order + each lang in Object.keys(languages).sort() + option(value=`.${languages[lang].uniqueClass}`) #{lang} .warning b Warning: @@ -49,75 +23,6 @@ section#libraries-io.libraries-jwt path(d='M16 10v28l22-14z') .libraries-sv(data-accordion-group) - include libraries/net.pug - include libraries/net2.pug - include libraries/netrt.pug - include libraries/python.pug - include libraries/python2.pug - include libraries/python3.pug - include libraries/node.pug - include libraries/java.pug - include libraries/java2.pug - include libraries/java3.pug - include libraries/java4.pug - include libraries/java5.pug - include libraries/java6.pug - include libraries/js.pug - include libraries/js2.pug - include libraries/perl5.pug - include libraries/ruby.pug - include libraries/ruby2.pug - include libraries/ruby3.pug - include libraries/ruby4.pug - include libraries/elixir.pug - include libraries/elixir2.pug - include libraries/elixir3.pug - include libraries/erlang.pug - include libraries/go.pug - include libraries/go2.pug - include libraries/go3.pug - include libraries/go4.pug - include libraries/go5.pug - include libraries/go6.pug - include libraries/go7.pug - include libraries/go8.pug - include libraries/go9.pug - include libraries/groovy.pug - include libraries/haskell.pug - include libraries/haskell2.pug - include libraries/haxe.pug - include libraries/rust.pug - include libraries/rust2.pug - include libraries/rust3.pug - include libraries/lua.pug - include libraries/scala.pug - include libraries/scala2.pug - include libraries/scala3.pug - include libraries/scala4.pug - include libraries/d.pug - include libraries/d2.pug - include libraries/clojure.pug - include libraries/objective-c.pug - include libraries/swift.pug - include libraries/swift2.pug - include libraries/swift3.pug - include libraries/c.pug - include libraries/c2.pug - include libraries/cpp.pug - include libraries/cpp2.pug - include libraries/cpp3.pug - include libraries/q.pug - include libraries/delphi.pug - include libraries/delphi2.pug - include libraries/php.pug - include libraries/php3.pug - include libraries/php4.pug - include libraries/php5.pug - include libraries/php6.pug - include libraries/php7.pug - include libraries/php8.pug - include libraries/php9.pug - include libraries/crystal.pug - include libraries/1c.pug - include libraries/postgresql.pug - + each lang, langName in languages + each lib in lang.libs + include libraries/template.pug diff --git a/views/website/libraries/1c.pug b/views/website/libraries/1c.pug deleted file mode 100644 index b4c1de48..00000000 --- a/views/website/libraries/1c.pug +++ /dev/null @@ -1,84 +0,0 @@ -// 1C pintov/1c-jwt -article.jwt-1c._1c.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/22.svg') - h3 1C - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-501 - | HS384 - p - i.icon-budicon-501 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/pintov') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Vasily Pintov - span.stars(data-repo='pintov/1c-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/pintov/1c-jwt') View Repo - - .panel-footer - code git clone https://github.com/pintov/1c-jwt diff --git a/views/website/libraries/c.pug b/views/website/libraries/c.pug deleted file mode 100644 index 8417abe4..00000000 --- a/views/website/libraries/c.pug +++ /dev/null @@ -1,84 +0,0 @@ -// C benmcollins/libjwt -article.jwt-c.c.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/16.svg') - h3 C - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/benmcollins') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | benmcollins - span.stars(data-repo='benmcollins/libjwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/benmcollins/libjwt') View Repo - - .panel-footer - code add-apt-repository ppa:ben-collins/libjwt diff --git a/views/website/libraries/c2.pug b/views/website/libraries/c2.pug deleted file mode 100644 index 7577385e..00000000 --- a/views/website/libraries/c2.pug +++ /dev/null @@ -1,84 +0,0 @@ -// C cisco/cjose -article.jwt-c.c.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/16.svg') - h3 C - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/cisco/cjose') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | linuxwolf - span.stars(data-repo='cisco/cjose', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/cisco/cjose') View Repo - - .panel-footer - code go get github.com/cisco/cjose diff --git a/views/website/libraries/clojure.pug b/views/website/libraries/clojure.pug deleted file mode 100644 index 1872f9f4..00000000 --- a/views/website/libraries/clojure.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Clojure funcool/buddy -article.jwt-clojure.clojure.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/13.svg') - h3 Clojure - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/niwinz') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Andrey Antukh - span.stars(data-repo='funcool/buddy', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/funcool/buddy/') View Repo - - .panel-footer - code lein: [funcool/buddy "0.6.0"] diff --git a/views/website/libraries/cpp.pug b/views/website/libraries/cpp.pug deleted file mode 100644 index 4350605a..00000000 --- a/views/website/libraries/cpp.pug +++ /dev/null @@ -1,84 +0,0 @@ -// C++ troian/jwtpp -article.jwt-cpp.cpp.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/26.svg') - h3 C++ - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/troian') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Artur Troian - span.stars(data-repo='troian/josepp', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/troian/josepp') View Repo - - .panel-footer - code git clone https://github.com/troian/josepp diff --git a/views/website/libraries/cpp2.pug b/views/website/libraries/cpp2.pug deleted file mode 100644 index 9485429d..00000000 --- a/views/website/libraries/cpp2.pug +++ /dev/null @@ -1,84 +0,0 @@ -// C++ Thalhammer/jwt-cpp -article.jwt-cpp.cpp.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/26.svg') - h3 C++ - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/Thalhammer') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Dominik Thalhammer - span.stars(data-repo='Thalhammer/jwt-cpp', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/Thalhammer/jwt-cpp') View Repo - - .panel-footer - code git clone https://github.com/Thalhammer/jwt-cpp diff --git a/views/website/libraries/cpp3.pug b/views/website/libraries/cpp3.pug deleted file mode 100644 index 4331bd59..00000000 --- a/views/website/libraries/cpp3.pug +++ /dev/null @@ -1,84 +0,0 @@ -// C++ arun11299/cpp-jwt -article.jwt-cpp.cpp.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/26.svg') - h3 C++ - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/arun11299') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Arun Muralidharan - span.stars(data-repo='arun11299/cpp-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/arun11299/cpp-jwt') View Repo - - .panel-footer - code git clone https://github.com/arun11299/cpp-jwt diff --git a/views/website/libraries/crystal.pug b/views/website/libraries/crystal.pug deleted file mode 100644 index e4789fba..00000000 --- a/views/website/libraries/crystal.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Crystal greyblake/crystal-jwt -article.jwt-crystal.crystal.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/21.svg') - h3 Crystal - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/greyblake') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Sergey Potapov - span.stars(data-repo='crystal-community/jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/crystal-community/jwt') View Repo - - .panel-footer - code git clone https://github.com/crystal-community/jwt.git diff --git a/views/website/libraries/d.pug b/views/website/libraries/d.pug deleted file mode 100644 index 178e9bd1..00000000 --- a/views/website/libraries/d.pug +++ /dev/null @@ -1,84 +0,0 @@ -// D olehlong/jwtd -article.jwt-d.d.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/14.svg') - h3 D - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/olehlong') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | olehlong - span.stars(data-repo='olehlong/jwtd', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/olehlong/jwtd') View Repo - - .panel-footer - code dub fetch jwtd diff --git a/views/website/libraries/d2.pug b/views/website/libraries/d2.pug deleted file mode 100644 index bac887a7..00000000 --- a/views/website/libraries/d2.pug +++ /dev/null @@ -1,84 +0,0 @@ -// D zolamk/jwt -article.jwt-d.d.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/14.svg') - h3 D - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/zolamk') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | zolamk - span.stars(data-repo='zolamk/jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/zolamk/jwt') View Repo - - .panel-footer - code dub fetch jwt diff --git a/views/website/libraries/data.json b/views/website/libraries/data.json new file mode 100644 index 00000000..38ad1fe5 --- /dev/null +++ b/views/website/libraries/data.json @@ -0,0 +1,2186 @@ +{ + ".NET": { + "uniqueClass": "net", + "image": "/img/1.svg", + "bgColor": "rgb(42, 168, 229)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": null, + "authorName": "Microsoft", + "gitHubRepoPath": "AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet", + "repoUrl": "https://github.com/MSOpenTech/azure-activedirectory-identitymodel-extensions-for-dotnet", + "installCommandHtml": "Install-Package
    System.IdentityModel.Tokens.Jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/dvsekhvalnov/jose-jwt", + "authorName": "DV", + "gitHubRepoPath": "dvsekhvalnov/jose-jwt", + "repoUrl": "https://github.com/dvsekhvalnov/jose-jwt", + "installCommandHtml": "Install-Package
    jose-jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/dvsekhvalnov/jose-rt", + "authorName": "DV", + "gitHubRepoPath": "dvsekhvalnov/jose-rt", + "repoUrl": "https://github.com/dvsekhvalnov/jose-rt", + "installCommandHtml": "Install-Package
    jose-rt" + } + ] + }, + "Python": { + "uniqueClass": "python", + "image": "/img/4.svg", + "bgColor": "rgb(55, 126, 240)", + "libs": [ + { + "minimumVersion": "1.0.1", + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/jpadilla", + "authorName": "José Padilla", + "gitHubRepoPath": "jpadilla/pyjwt", + "repoUrl": "https://github.com/jpadilla/pyjwt/", + "installCommandHtml": "pip install pyjwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/mpdavis", + "authorName": "Michael Davis", + "gitHubRepoPath": "mpdavis/python-jose", + "repoUrl": "https://github.com/mpdavis/python-jose/", + "installCommandHtml": "pip install python-jose" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/simo5", + "authorName": "Simo Sorce", + "gitHubRepoPath": "latchset/jwcrypto", + "repoUrl": "https://github.com/latchset/jwcrypto/", + "installCommandHtml": "pip install jwcrypto" + } + ] + }, + "Node.js": { + "uniqueClass": "node", + "image": "/img/2.svg", + "bgColor": "rgb(138, 194, 68)", + "libs": [ + { + "minimumVersion": "4.2.2", + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": true, + "exp": true, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/auth0", + "authorName": "Auth0", + "gitHubRepoPath": "auth0/node-jsonwebtoken", + "repoUrl": "https://github.com/auth0/node-jsonwebtoken", + "installCommandHtml": "npm install jsonwebtoken" + } + ] + }, + "Java": { + "uniqueClass": "java", + "image": "/img/3.svg", + "bgColor": "rgb(231, 111, 0)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/auth0", + "authorName": "Auth0", + "gitHubRepoPath": "auth0/java-jwt", + "repoUrl": "https://github.com/auth0/java-jwt", + "installCommandHtml": "maven: com.auth0 / java-jwt / 3.3.0" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://twitter.com/__b_c", + "authorName": "Brian Campbell", + "gitHubRepoPath": null, + "repoUrl": "https://bitbucket.org/b_c/jose4j", + "installCommandHtml": "maven: org.bitbucket.b_c / jose4j / 0.6.3" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/connect2id", + "authorName": "connect2id", + "gitHubRepoPath": null, + "repoUrl": "https://bitbucket.org/connect2id/nimbus-jose-jwt", + "installCommandHtml": "maven: com.nimbusds / nimbus-jose-jwt / 5.7" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://twitter.com/lhazlewood", + "authorName": "Les Hazlewood", + "gitHubRepoPath": "jwtk/jjwt", + "repoUrl": "https://github.com/jwtk/jjwt", + "installCommandHtml": "maven: io.jsonwebtoken / jjwt / 0.9.0" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/inversoft", + "authorName": "Inversoft", + "gitHubRepoPath": "inversoft/prime-jwt", + "repoUrl": "https://github.com/inversoft/prime-jwt", + "installCommandHtml": "maven: com.inversoft / prime-jwt / 1.3.0" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/vert-x3", + "authorName": "Vert.x", + "gitHubRepoPath": "vert-x3/vertx-auth", + "repoUrl": "https://github.com/vert-x3/vertx-auth", + "installCommandHtml": "maven: io.vertx / vertx-auth-jwt / 3.5.1" + } + ] + }, + "JavaScript": { + "uniqueClass": "js", + "image": "/img/6.svg", + "bgColor": "rgb(239, 200, 37)", + "libs": [ + { + "minimumVersion": "3.2.0", + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": false + }, + "authorUrl": "https://github.com/kjur", + "authorName": "Kenji Urushima", + "gitHubRepoPath": "kjur/jsrsasign", + "repoUrl": "https://github.com/kjur/jsrsasign", + "installCommandHtml": "npm install jsrsasign" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/square", + "authorName": "Square, Inc.", + "gitHubRepoPath": "square/js-jose", + "repoUrl": "https://github.com/square/js-jose", + "installCommandHtml": "npm install jose-jwe-jws" + } + ] + }, + "Perl": { + "uniqueClass": "perl", + "image": "/img/19.svg", + "bgColor": "rgb(59, 71, 122)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/DCIT", + "authorName": "Karel Miko", + "gitHubRepoPath": "DCIT/perl-Crypt-JWT", + "repoUrl": "https://github.com/DCIT/perl-Crypt-JWT", + "installCommandHtml": "cpanm Crypt::JWT" + } + ] + }, + "Ruby": { + "uniqueClass": "ruby", + "image": "/img/7.svg", + "bgColor": "rgb(170, 17, 0)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": null, + "authorName": "Lindsay & Rudat", + "gitHubRepoPath": "progrium/ruby-jwt", + "repoUrl": "https://github.com/progrium/ruby-jwt", + "installCommandHtml": "gem install jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": null, + "authorName": "Fleshman", + "gitHubRepoPath": "garyf/json_web_token", + "repoUrl": "https://github.com/garyf/json_web_token", + "installCommandHtml": "gem install json_web_token" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/nov", + "authorName": "Nov Matake", + "gitHubRepoPath": "nov/json-jwt", + "repoUrl": "https://github.com/nov/json-jwt", + "installCommandHtml": "gem install json-jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/potatosalad", + "authorName": "Andrew Bennett", + "gitHubRepoPath": "potatosalad/ruby-jose", + "repoUrl": "https://github.com/potatosalad/ruby-jose", + "installCommandHtml": "gem install jose" + } + ] + }, + "Elixir": { + "uniqueClass": "elixir", + "image": "/img/18.svg", + "bgColor": "rgb(78, 42, 142)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": null, + "authorName": "Fleshman", + "gitHubRepoPath": "garyf/json_web_token_ex", + "repoUrl": "https://github.com/garyf/json_web_token_ex", + "installCommandHtml": "defp deps, do: [{:json_web_token, \"~> 0.2.5\"}]" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": null, + "authorName": "bryanjos", + "gitHubRepoPath": "bryanjos/joken", + "repoUrl": "https://github.com/bryanjos/joken", + "installCommandHtml": "defp deps, do: [{:joken, \"~> 1.2\"}]" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": null, + "authorName": "hassox", + "gitHubRepoPath": "ueberauth/guardian", + "repoUrl": "https://github.com/ueberauth/guardian", + "installCommandHtml": "defp deps, do: [{:guardian, \"~> 0.11.1\"}]" + } + ] + }, + "Erlang": { + "uniqueClass": "erlang", + "image": "/img/27.svg", + "bgColor": "rgb(169, 5, 51)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/glejeune", + "authorName": "Gregoire Lejeune", + "gitHubRepoPath": "emedia-project/jwerl", + "repoUrl": "https://github.com/emedia-project/jwerl", + "installCommandHtml": "git clone https://github.com/emedia-project/jwerl.git" + } + ] + }, + "Go": { + "uniqueClass": "go", + "image": "/img/8.svg", + "bgColor": "rgb(71, 182, 196)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/dgrijalva", + "authorName": "dgrijalva", + "gitHubRepoPath": "dgrijalva/jwt-go", + "repoUrl": "https://github.com/dgrijalva/jwt-go", + "installCommandHtml": "go get github.com/dgrijalva/jwt-go" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/dvsekhvalnov/jose2go", + "authorName": "DV", + "gitHubRepoPath": "dvsekhvalnov/jose2go", + "repoUrl": "https://github.com/dvsekhvalnov/jose2go", + "installCommandHtml": "go get github.com/dvsekhvalnov/jose2go" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/SermoDigital/jose", + "authorName": "SermoDigital", + "gitHubRepoPath": "SermoDigital/jose", + "repoUrl": "https://github.com/SermoDigital/jose", + "installCommandHtml": "go get github.com/SermoDigital/jose" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/robbert229", + "authorName": "robbert229", + "gitHubRepoPath": "robbert229/jwt", + "repoUrl": "https://github.com/robbert229/jwt", + "installCommandHtml": "go get github.com/robbert229/jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/square", + "authorName": "DV", + "gitHubRepoPath": "square/go-jose", + "repoUrl": "https://github.com/square/go-jose", + "installCommandHtml": "go get github.com/square/go-jose" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/lestrrat", + "authorName": "lestrrat", + "gitHubRepoPath": "lestrrat/go-jwx", + "repoUrl": "https://github.com/lestrrat/go-jwx", + "installCommandHtml": "go get github.com/lestrrat/go-jwx" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": false, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/adam-hanna", + "authorName": "adam-hanna", + "gitHubRepoPath": "adam-hanna/jwt-auth", + "repoUrl": "https://github.com/adam-hanna/jwt-auth", + "installCommandHtml": "go get github.com/adam-hanna/jwt-auth" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/nickvellios", + "authorName": "nickvellios", + "gitHubRepoPath": "nickvellios/gojwt", + "repoUrl": "https://github.com/nickvellios/gojwt", + "installCommandHtml": "go get github.com/nickvellios/gojwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/gbrlsnchs", + "authorName": "gbrlsnchs", + "gitHubRepoPath": "gbrlsnchs/jwt", + "repoUrl": "https://github.com/gbrlsnchs/jwt", + "installCommandHtml": "go get github.com/gbrlsnchs/jwt" + } + ] + }, + "Groovy": { + "uniqueClass": "groovy", + "image": "/img/24.svg", + "bgColor": "rgb(99, 152, 170)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/kaleidos", + "authorName": "Kaleidos", + "gitHubRepoPath": "kaleidos/grails-security-stateless", + "repoUrl": "https://github.com/kaleidos/grails-security-stateless", + "installCommandHtml": "compile \"org.grails.plugins:security-stateless:0.0.9\"" + } + ] + }, + "Haskell": { + "uniqueClass": "haskell", + "image": "/img/9.svg", + "bgColor": "rgb(102, 102, 102)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://bitbucket.org/ssaasen", + "authorName": "Stefan Saasen", + "gitHubRepoPath": null, + "repoUrl": "https://bitbucket.org/ssaasen/haskell-jwt", + "installCommandHtml": "cabal install jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/frasertweedale", + "authorName": "Fraser Tweedale", + "gitHubRepoPath": "frasertweedale/hs-jose", + "repoUrl": "https://github.com/frasertweedale/hs-jose", + "installCommandHtml": "cabal install jose" + } + ] + }, + "Haxe": { + "uniqueClass": "haxe", + "image": "/img/23.svg", + "bgColor": "rgb(234, 130, 32)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/kevinresol", + "authorName": "Kevin Leung", + "gitHubRepoPath": "kevinresol/jsonwebtoken", + "repoUrl": "https://github.com/kevinresol/jsonwebtoken", + "installCommandHtml": "haxelib install jsonwebtoken" + } + ] + }, + "Rust": { + "uniqueClass": "rust", + "image": "/img/10.svg", + "bgColor": "rgb(129, 70, 38)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/GildedHonour", + "authorName": "GildedHonour", + "gitHubRepoPath": "GildedHonour/rust-jwt", + "repoUrl": "https://github.com/GildedHonour/rust-jwt", + "installCommandHtml": "cargo: name = \"frank_jwt\" version = \"*\"" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/Keats", + "authorName": "Keats", + "gitHubRepoPath": "Keats/jsonwebtoken", + "repoUrl": "https://github.com/Keats/jsonwebtoken", + "installCommandHtml": "cargo: name = \"jsonwebtoken\" version = \"*\"" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/lawliet89", + "authorName": "Yong Wen Chua", + "gitHubRepoPath": "lawliet89/biscuit", + "repoUrl": "https://github.com/lawliet89/biscuit", + "installCommandHtml": "Cargo.toml: biscuit = \"*\"" + } + ] + }, + "Lua": { + "uniqueClass": "lua", + "image": "/img/11.svg", + "bgColor": "rgb(0, 0, 128)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": true, + "rs256": true, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/SkyLothar", + "authorName": "SkyLothar", + "gitHubRepoPath": "SkyLothar/lua-resty-jwt", + "repoUrl": "https://github.com/SkyLothar/lua-resty-jwt", + "installCommandHtml": "git clone https://github.com/SkyLothar/lua-resty-jwt.git" + } + ] + }, + "Scala": { + "uniqueClass": "scala", + "image": "/img/12.svg", + "bgColor": "rgb(234, 45, 46)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/jasongoodwin", + "authorName": "jasongoodwin", + "gitHubRepoPath": "jasongoodwin/authentikat-jwt", + "repoUrl": "https://github.com/jasongoodwin/authentikat-jwt", + "installCommandHtml": "sbt: \"com.jason-goodwin\" %% \"authentikat-jwt\" % \"0.4.5\"" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/pauldijou", + "authorName": "pauldijou", + "gitHubRepoPath": "pauldijou/jwt-scala", + "repoUrl": "https://github.com/pauldijou/jwt-scala", + "installCommandHtml": "sbt: \"pdi\" %% \"jwt-core\" % \"0.14.1\"" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/iain-logan", + "authorName": "iain-logan", + "gitHubRepoPath": "iain-logan/jwt", + "repoUrl": "https://github.com/iain-logan/jwt", + "installCommandHtml": "libraryDependencies += \"io.igl\" %% \"jwt\" % \"1.2.2\"" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": false, + "exp": false, + "nbf": false, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/janjaali", + "authorName": "janjaali", + "gitHubRepoPath": "janjaali/spray-jwt", + "repoUrl": "https://github.com/janjaali/spray-jwt", + "installCommandHtml": "libraryDependencies += \"com.github.janjaali\" %% \"spray-jwt\" % \"1.0.0\"" + } + ] + }, + "D": { + "uniqueClass": "d", + "image": "/img/14.svg", + "bgColor": "rgb(180, 65, 55)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/olehlong", + "authorName": "olehlong", + "gitHubRepoPath": "olehlong/jwtd", + "repoUrl": "https://github.com/olehlong/jwtd", + "installCommandHtml": "dub fetch jwtd" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/zolamk", + "authorName": "zolamk", + "gitHubRepoPath": "zolamk/jwt", + "repoUrl": "https://github.com/zolamk/jwt", + "installCommandHtml": "dub fetch jwt" + } + ] + }, + "Clojure": { + "uniqueClass": "clojure", + "image": "/img/13.svg", + "bgColor": "rgb(88, 129, 216)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/niwinz", + "authorName": "Andrey Antukh", + "gitHubRepoPath": "funcool/buddy", + "repoUrl": "https://github.com/funcool/buddy/", + "installCommandHtml": "lein: [funcool/buddy \"0.6.0\"]" + } + ] + }, + "Objective-C": { + "uniqueClass": "objective-c", + "image": "/img/20.svg", + "bgColor": "rgba(0, 0, 0, 0)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": null, + "authorName": "yourkarma & lolgear", + "gitHubRepoPath": "yourkarma/JWT", + "repoUrl": "https://github.com/yourkarma/JWT", + "installCommandHtml": "pod 'JWT'" + } + ] + }, + "Swift": { + "uniqueClass": "swift", + "image": "/img/15.svg", + "bgColor": "rgb(234, 45, 46)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/kylef", + "authorName": "Kyle Fuller", + "gitHubRepoPath": "kylef/JSONWebToken.swift", + "repoUrl": "https://github.com/kylef/JSONWebToken.swift", + "installCommandHtml": "pod 'JSONWebToken'" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/siemensikkema", + "authorName": "Siemen Sikkema", + "gitHubRepoPath": "vapor/jwt", + "repoUrl": "https://github.com/vapor/jwt", + "installCommandHtml": ".Package(url:\"https://github.com/vapor/jwt.git/", majorVersion: 1)" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/Wstunes", + "authorName": "Wstunes", + "gitHubRepoPath": "Wstunes/SwiftyJWT", + "repoUrl": "https://github.com/Wstunes/SwiftyJWT", + "installCommandHtml": "pod 'SwiftyJWT'" + } + ] + }, + "C": { + "uniqueClass": "c", + "image": "/img/16.svg", + "bgColor": "rgb(81, 128, 210)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/benmcollins", + "authorName": "benmcollins", + "gitHubRepoPath": "benmcollins/libjwt", + "repoUrl": "https://github.com/benmcollins/libjwt", + "installCommandHtml": "add-apt-repository ppa:ben-collins/libjwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/cisco/cjose", + "authorName": "linuxwolf", + "gitHubRepoPath": "cisco/cjose", + "repoUrl": "https://github.com/cisco/cjose", + "installCommandHtml": "go get github.com/cisco/cjose" + } + ] + }, + "C++": { + "uniqueClass": "cpp", + "image": "/img/26.svg", + "bgColor": "rgb(0, 89, 156)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/troian", + "authorName": "Artur Troian", + "gitHubRepoPath": "troian/josepp", + "repoUrl": "https://github.com/troian/josepp", + "installCommandHtml": "git clone https://github.com/troian/josepp" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/Thalhammer", + "authorName": "Dominik Thalhammer", + "gitHubRepoPath": "Thalhammer/jwt-cpp", + "repoUrl": "https://github.com/Thalhammer/jwt-cpp", + "installCommandHtml": "git clone https://github.com/Thalhammer/jwt-cpp" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/arun11299", + "authorName": "Arun Muralidharan", + "gitHubRepoPath": "arun11299/cpp-jwt", + "repoUrl": "https://github.com/arun11299/cpp-jwt", + "installCommandHtml": "git clone https://github.com/arun11299/cpp-jwt" + } + ] + }, + "kdb+/Q": { + "uniqueClass": "q", + "image": "/img/q.svg", + "bgColor": "rgb(102, 102, 102)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/tjcelaya", + "authorName": "tjcelaya", + "gitHubRepoPath": "tjcelaya/jwt.q", + "repoUrl": "https://github.com/tjcelaya/jwt.q", + "installCommandHtml": "git clone https://github.com/tjcelaya/jwt.q" + } + ] + }, + "Delphi": { + "uniqueClass": "delphi", + "image": "/img/17.svg", + "bgColor": "rgb(227, 28, 35)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/paolo-rossi", + "authorName": "Paolo Rossi", + "gitHubRepoPath": "paolo-rossi/delphi-jose-jwt", + "repoUrl": "https://github.com/paolo-rossi/delphi-jose-jwt", + "installCommandHtml": "git clone https://github.com/paolo-rossi/delphi-jose-jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": true, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/synopse", + "authorName": "Synopse", + "gitHubRepoPath": "synopse/mORMot", + "repoUrl": "https://github.com/synopse/mORMot", + "installCommandHtml": "git clone https://github.com/synopse/mORMot" + } + ] + }, + "PHP": { + "uniqueClass": "php", + "image": "/img/5.svg", + "bgColor": "rgb(119, 123, 180)", + "libs": [ + { + "minimumVersion": "2.0.0", + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/firebase", + "authorName": "Firebase", + "gitHubRepoPath": "firebase/php-jwt", + "repoUrl": "https://github.com/firebase/php-jwt", + "installCommandHtml": "composer require firebase/php-jwt" + }, + { + "minimumVersion": "3.0.0", + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/lcobucci", + "authorName": "Luís Cobucci", + "gitHubRepoPath": "lcobucci/jwt", + "repoUrl": "https://github.com/lcobucci/jwt", + "installCommandHtml": "composer require lcobucci/jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/emarref", + "authorName": "Emarref", + "gitHubRepoPath": "emarref/jwt", + "repoUrl": "https://github.com/emarref/jwt", + "installCommandHtml": "composer require emarref/jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/Spomky-Labs/jose", + "authorName": "Spomky", + "gitHubRepoPath": "Spomky-Labs/jose", + "repoUrl": "https://github.com/Spomky-Labs/jose", + "installCommandHtml": "composer require spomky-labs/jose" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/nov", + "authorName": "Nov Matake", + "gitHubRepoPath": "nov/jose-php", + "repoUrl": "https://github.com/nov/jose-php", + "installCommandHtml": "composer require gree/jose" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/Spomky", + "authorName": "Spomky", + "gitHubRepoPath": "web-token/jwt-framework", + "repoUrl": "https://github.com/web-token/jwt-framework", + "installCommandHtml": "composer require web-token/jwt-framework" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/vaibhavpandeyvpz", + "authorName": "Vaibhav Pandey", + "gitHubRepoPath": "vaibhavpandeyvpz/jweety", + "repoUrl": "https://github.com/vaibhavpandeyvpz/jweety", + "installCommandHtml": "composer require vaibhavpandeyvpz/jweety" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/lindelius", + "authorName": "Tom Lindelius", + "gitHubRepoPath": "lindelius/php-jwt", + "repoUrl": "https://github.com/lindelius/php-jwt", + "installCommandHtml": "composer require lindelius/php-jwt" + } + ] + }, + "Crystal": { + "uniqueClass": "crystal", + "image": "/img/21.svg", + "bgColor": "rgb(176, 176, 176)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/greyblake", + "authorName": "Sergey Potapov", + "gitHubRepoPath": "crystal-community/jwt", + "repoUrl": "https://github.com/crystal-community/jwt", + "installCommandHtml": "git clone https://github.com/crystal-community/jwt.git" + } + ] + }, + "1C": { + "uniqueClass": "_1c", + "image": "/img/22.svg", + "bgColor": "rgb(251, 197, 61)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/pintov", + "authorName": "Vasily Pintov", + "gitHubRepoPath": "pintov/1c-jwt", + "repoUrl": "https://github.com/pintov/1c-jwt", + "installCommandHtml": "git clone https://github.com/pintov/1c-jwt" + } + ] + }, + "PostgreSQL": { + "uniqueClass": "postgresql", + "image": "/img/25.svg", + "bgColor": "rgb(51, 103, 145)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/michelp", + "authorName": "Michel Pelletier", + "gitHubRepoPath": "michelp/pgjwt", + "repoUrl": "https://github.com/michelp/pgjwt", + "installCommandHtml": "CREATE EXTENSION pgjwt;" + } + ] + } +} \ No newline at end of file diff --git a/views/website/libraries/delphi.pug b/views/website/libraries/delphi.pug deleted file mode 100644 index 8c2100c2..00000000 --- a/views/website/libraries/delphi.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Delphi paolo-rossi/delphi-jose-jwt -article.jwt-delphi.delphi.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/17.svg') - h3 Delphi - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/paolo-rossi') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Paolo Rossi - span.stars(data-repo='paolo-rossi/delphi-jose-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/paolo-rossi/delphi-jose-jwt') View Repo - - .panel-footer - code git clone https://github.com/paolo-rossi/delphi-jose-jwt diff --git a/views/website/libraries/delphi2.pug b/views/website/libraries/delphi2.pug deleted file mode 100644 index 8bbfd5fb..00000000 --- a/views/website/libraries/delphi2.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Delphi https://github.com/synopse/mORMot -article.jwt-delphi.delphi.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/17.svg') - h3 Delphi - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-501 - | HS384 - p - i.icon-budicon-501 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/synopse') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Synopse - span.stars(data-repo='synopse/mORMot', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/synopse/mORMot') View Repo - - .panel-footer - code git clone https://github.com/synopse/mORMot diff --git a/views/website/libraries/elixir.pug b/views/website/libraries/elixir.pug deleted file mode 100644 index 13c7f0b6..00000000 --- a/views/website/libraries/elixir.pug +++ /dev/null @@ -1,83 +0,0 @@ -// Elixir garyf/json_web_token_ex -article.jwt-elixir.elixir.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/18.svg') - h3 Elixir - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Fleshman - span.stars(data-repo='garyf/json_web_token_ex', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/garyf/json_web_token_ex') View Repo - - .panel-footer - code defp deps, do: [{:json_web_token, "~> 0.2.5"}] diff --git a/views/website/libraries/elixir2.pug b/views/website/libraries/elixir2.pug deleted file mode 100644 index 2d00985c..00000000 --- a/views/website/libraries/elixir2.pug +++ /dev/null @@ -1,83 +0,0 @@ -// Elixir bryanjos/joken -article.jwt-elixir.elixir.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/18.svg') - h3 Elixir - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | bryanjos - span.stars(data-repo='bryanjos/joken', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/bryanjos/joken') View Repo - - .panel-footer - code defp deps, do: [{:joken, "~> 1.2"}] diff --git a/views/website/libraries/elixir3.pug b/views/website/libraries/elixir3.pug deleted file mode 100644 index 7d44fa9b..00000000 --- a/views/website/libraries/elixir3.pug +++ /dev/null @@ -1,83 +0,0 @@ -// Elixir hassox/guardian -article.jwt-elixir.elixir.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/18.svg') - h3 Elixir - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | hassox - span.stars(data-repo='ueberauth/guardian', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/ueberauth/guardian') View Repo - - .panel-footer - code defp deps, do: [{:guardian, "~> 0.11.1"}] diff --git a/views/website/libraries/erlang.pug b/views/website/libraries/erlang.pug deleted file mode 100644 index 751969b3..00000000 --- a/views/website/libraries/erlang.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Erlang emedia-project/jwerl -article.jwt-erlang.erlang.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/27.svg') - h3 Erlang - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/glejeune') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Gregoire Lejeune - span.stars(data-repo='emedia-project/jwerl', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/emedia-project/jwerl') View Repo - - .panel-footer - code git clone https://github.com/emedia-project/jwerl.git diff --git a/views/website/libraries/go.pug b/views/website/libraries/go.pug deleted file mode 100644 index 7d3c5007..00000000 --- a/views/website/libraries/go.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Go dgrijalva/jwt-go -article.jwt-go.go.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/8.svg') - h3 Go - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/dgrijalva') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | dgrijalva - span.stars(data-repo='dgrijalva/jwt-go', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/dgrijalva/jwt-go') View Repo - - .panel-footer - code go get github.com/dgrijalva/jwt-go diff --git a/views/website/libraries/go2.pug b/views/website/libraries/go2.pug deleted file mode 100644 index 070148c7..00000000 --- a/views/website/libraries/go2.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Go dvsekhvalnov/jose2go -article.jwt-go.go.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/8.svg') - h3 Go - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/dvsekhvalnov/jose2go') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | DV - span.stars(data-repo='dvsekhvalnov/jose2go', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/dvsekhvalnov/jose2go') View Repo - - .panel-footer - code go get github.com/dvsekhvalnov/jose2go diff --git a/views/website/libraries/go3.pug b/views/website/libraries/go3.pug deleted file mode 100644 index 8ba4f0d8..00000000 --- a/views/website/libraries/go3.pug +++ /dev/null @@ -1,86 +0,0 @@ -// Go SermoDigital/jose -article.jwt-go.go.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/8.svg') - h3 Go - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/SermoDigital/jose') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | SermoDigital - span.stars(data-repo='SermoDigital/jose', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/SermoDigital/jose') View Repo - - .panel-footer - code - | go get - a(href='https://github.com/SermoDigital/jose') github.com/SermoDigital/jose diff --git a/views/website/libraries/go4.pug b/views/website/libraries/go4.pug deleted file mode 100644 index 4b04b3e1..00000000 --- a/views/website/libraries/go4.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Go robbert229/jwt -article.jwt-go.go.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/8.svg') - h3 Go - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-501 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/robbert229') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | robbert229 - span.stars(data-repo='robbert229/jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/robbert229/jwt') View Repo - - .panel-footer - code go get github.com/robbert229/jwt diff --git a/views/website/libraries/go5.pug b/views/website/libraries/go5.pug deleted file mode 100644 index f9aec680..00000000 --- a/views/website/libraries/go5.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Go square/go-jose -article.jwt-go.go.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/8.svg') - h3 Go - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/square') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | DV - span.stars(data-repo='square/go-jose', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/square/go-jose') View Repo - - .panel-footer - code go get github.com/square/go-jose diff --git a/views/website/libraries/go6.pug b/views/website/libraries/go6.pug deleted file mode 100644 index d248a9b3..00000000 --- a/views/website/libraries/go6.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Go lestrrat/go-jwx -article.jwt-go.go.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/8.svg') - h3 Go - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/lestrrat') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | lestrrat - span.stars(data-repo='lestrrat/go-jwx', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/lestrrat/go-jwx') View Repo - - .panel-footer - code go get github.com/lestrrat/go-jwx diff --git a/views/website/libraries/go7.pug b/views/website/libraries/go7.pug deleted file mode 100644 index 37b40657..00000000 --- a/views/website/libraries/go7.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Go adam-hanna/jwt-auth -article.jwt-go.go.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/8.svg') - h3 Go - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/adam-hanna') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | adam-hanna - span.stars(data-repo='adam-hanna/jwt-auth', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/adam-hanna/jwt-auth') View Repo - - .panel-footer - code go get github.com/adam-hanna/jwt-auth diff --git a/views/website/libraries/go8.pug b/views/website/libraries/go8.pug deleted file mode 100644 index 13f7806d..00000000 --- a/views/website/libraries/go8.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Go nickvellios/gojwt -article.jwt-go.go.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/8.svg') - h3 Go - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-501 - | HS384 - p - i.icon-budicon-501 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/nickvellios') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | nickvellios - span.stars(data-repo='nickvellios/gojwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/nickvellios/gojwt') View Repo - - .panel-footer - code go get github.com/nickvellios/gojwt diff --git a/views/website/libraries/go9.pug b/views/website/libraries/go9.pug deleted file mode 100644 index 9b61401d..00000000 --- a/views/website/libraries/go9.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Go gbrlsnchs/jwt -article.jwt-go.go.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/8.svg') - h3 Go - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/gbrlsnchs') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | gbrlsnchs - span.stars(data-repo='gbrlsnchs/jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/gbrlsnchs/jwt') View Repo - - .panel-footer - code go get github.com/gbrlsnchs/jwt diff --git a/views/website/libraries/groovy.pug b/views/website/libraries/groovy.pug deleted file mode 100644 index cb641961..00000000 --- a/views/website/libraries/groovy.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Groovy kaleidos/grails-security-stateless -article.jwt-groovy.groovy.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/24.svg') - h3 Groovy - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-501 - | HS384 - p - i.icon-budicon-501 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/kaleidos') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Kaleidos - span.stars(data-repo='kaleidos/grails-security-stateless', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/kaleidos/grails-security-stateless') View Repo - - .panel-footer - code compile "org.grails.plugins:security-stateless:0.0.9" diff --git a/views/website/libraries/haskell.pug b/views/website/libraries/haskell.pug deleted file mode 100644 index 60cd5705..00000000 --- a/views/website/libraries/haskell.pug +++ /dev/null @@ -1,82 +0,0 @@ -// Haskell ssaasen/haskell-jwt -article.jwt-haskell.haskell.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/9.svg') - h3 Haskell - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-501 - | HS384 - p - i.icon-budicon-501 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://bitbucket.org/ssaasen') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Stefan Saasen - .repository - i.icon-1392070209-icon-social-github - a(href='https://bitbucket.org/ssaasen/haskell-jwt') View Repo - - .panel-footer - code cabal install jwt \ No newline at end of file diff --git a/views/website/libraries/haskell2.pug b/views/website/libraries/haskell2.pug deleted file mode 100644 index df9ea762..00000000 --- a/views/website/libraries/haskell2.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Haskell frasertweedale/hs-jose -article.jwt-haskell.haskell.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/9.svg') - h3 Haskell - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/frasertweedale') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Fraser Tweedale - span.stars(data-repo='frasertweedale/hs-jose', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/frasertweedale/hs-jose') View Repo - - .panel-footer - code cabal install jose diff --git a/views/website/libraries/haxe.pug b/views/website/libraries/haxe.pug deleted file mode 100644 index 7d1fcf7d..00000000 --- a/views/website/libraries/haxe.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Haxe kevinresol/jsonwebtoken -article.jwt-haxe.haxe.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/23.svg') - h3 Haxe - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-501 - | HS384 - p - i.icon-budicon-501 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/kevinresol') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Kevin Leung - span.stars(data-repo='kevinresol/jsonwebtoken', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/kevinresol/jsonwebtoken') View Repo - - .panel-footer - code haxelib install jsonwebtoken diff --git a/views/website/libraries/java.pug b/views/website/libraries/java.pug deleted file mode 100644 index 602330ce..00000000 --- a/views/website/libraries/java.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Java Auth0 -article.jwt-java.java.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/3.svg') - h3 Java - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/auth0') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Auth0 - span.stars(data-repo='auth0/java-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/auth0/java-jwt') View Repo - - .panel-footer - code maven: com.auth0 / java-jwt / 3.3.0 diff --git a/views/website/libraries/java2.pug b/views/website/libraries/java2.pug deleted file mode 100644 index 24ef1309..00000000 --- a/views/website/libraries/java2.pug +++ /dev/null @@ -1,82 +0,0 @@ -// Java jose4j -article.jwt-java.java.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/3.svg') - h3 Java - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://twitter.com/__b_c') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Brian Campbell - .repository - i.icon-1392070209-icon-social-github - a(href='https://bitbucket.org/b_c/jose4j') View Repo - - .panel-footer - code maven: org.bitbucket.b_c / jose4j / 0.6.3 diff --git a/views/website/libraries/java3.pug b/views/website/libraries/java3.pug deleted file mode 100644 index a54458a2..00000000 --- a/views/website/libraries/java3.pug +++ /dev/null @@ -1,82 +0,0 @@ -// Java connect2id -article.jwt-java.java.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/3.svg') - h3 Java - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/connect2id') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | connect2id - .repository - i.icon-1392070209-icon-social-github - a(href='https://bitbucket.org/connect2id/nimbus-jose-jwt') View Repo - - .panel-footer - code maven: com.nimbusds / nimbus-jose-jwt / 5.7 diff --git a/views/website/libraries/java4.pug b/views/website/libraries/java4.pug deleted file mode 100644 index 7bb45d99..00000000 --- a/views/website/libraries/java4.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Java JJWT -article.jwt-java.java.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/3.svg') - h3 Java - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://twitter.com/lhazlewood') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Les Hazlewood - span.stars(data-repo='jwtk/jjwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/jwtk/jjwt') View Repo - - .panel-footer - code maven: io.jsonwebtoken / jjwt / 0.9.0 diff --git a/views/website/libraries/java5.pug b/views/website/libraries/java5.pug deleted file mode 100644 index 16f69f79..00000000 --- a/views/website/libraries/java5.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Java connect2id -article.jwt-java.java.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/3.svg') - h3 Java - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/inversoft') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Inversoft - span.stars(data-repo='inversoft/prime-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/inversoft/prime-jwt') View Repo - - .panel-footer - code maven: com.inversoft / prime-jwt / 1.3.0 diff --git a/views/website/libraries/java6.pug b/views/website/libraries/java6.pug deleted file mode 100644 index e2d943f8..00000000 --- a/views/website/libraries/java6.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Java Vert.x -article.jwt-java.java.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/3.svg') - h3 Java - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/vert-x3') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Vert.x - span.stars(data-repo='vert-x3/vertx-auth', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/vert-x3/vertx-auth') View Repo - - .panel-footer - code maven: io.vertx / vertx-auth-jwt / 3.5.1 diff --git a/views/website/libraries/js.pug b/views/website/libraries/js.pug deleted file mode 100644 index 7f94a30b..00000000 --- a/views/website/libraries/js.pug +++ /dev/null @@ -1,88 +0,0 @@ -// Javascript kjur/jsjws -article.jwt-js.js.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/6.svg') - h3 JavaScript - .panel-wrap(data-content) - .version - p Minimum Version 3.2.0 - a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/', target='_blank') - img(src='http://github.com/img/ico_question.svg') - .panel-body.mversion - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/kjur') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Kenji Urushima - span.stars(data-repo='kjur/jsrsasign', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/kjur/jsrsasign') View Repo - - .panel-footer - code npm install jsrsasign diff --git a/views/website/libraries/js2.pug b/views/website/libraries/js2.pug deleted file mode 100644 index cb15aeeb..00000000 --- a/views/website/libraries/js2.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Javascript square/js-jose -article.jwt-js.js.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/6.svg') - h3 JavaScript - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/square') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Square, Inc. - span.stars(data-repo='square/js-jose', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/square/js-jose') View Repo - - .panel-footer - code npm install jose-jwe-jws diff --git a/views/website/libraries/lua.pug b/views/website/libraries/lua.pug deleted file mode 100644 index 97d66a9d..00000000 --- a/views/website/libraries/lua.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Lua (openresty) SkyLothar/lua-resty-jwt -article.jwt-lua.lua.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/11.svg') - h3 Lua - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-501 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/SkyLothar') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | SkyLothar - span.stars(data-repo='SkyLothar/lua-resty-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/SkyLothar/lua-resty-jwt') View Repo - - .panel-footer - code git clone https://github.com/SkyLothar/lua-resty-jwt.git diff --git a/views/website/libraries/net.pug b/views/website/libraries/net.pug deleted file mode 100644 index 34e4d7e5..00000000 --- a/views/website/libraries/net.pug +++ /dev/null @@ -1,86 +0,0 @@ -// .NET System.IdentityModel.Tokens.Jwt -article.jwt-net.net.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/1.svg') - h3 .NET - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Microsoft - span.stars(data-repo='AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/MSOpenTech/azure-activedirectory-identitymodel-extensions-for-dotnet') View Repo - - .panel-footer - code - | Install-Package - br - a(href='https://www.nuget.org/packages/System.IdentityModel.Tokens.Jwt/') System.IdentityModel.Tokens.Jwt diff --git a/views/website/libraries/net2.pug b/views/website/libraries/net2.pug deleted file mode 100644 index 3839d098..00000000 --- a/views/website/libraries/net2.pug +++ /dev/null @@ -1,87 +0,0 @@ -// .NET json-jwt -article.jwt-net.net.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/1.svg') - h3 .NET - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/dvsekhvalnov/jose-jwt') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | DV - span.stars(data-repo='dvsekhvalnov/jose-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/dvsekhvalnov/jose-jwt') View Repo - - .panel-footer - code - | Install-Package - br - a(href='http://www.nuget.org/packages/jose-jwt/') jose-jwt \ No newline at end of file diff --git a/views/website/libraries/netrt.pug b/views/website/libraries/netrt.pug deleted file mode 100644 index 961bd587..00000000 --- a/views/website/libraries/netrt.pug +++ /dev/null @@ -1,87 +0,0 @@ -// .NET json-jwt -article.jwt-net.net.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/1.svg') - h3 .NET (RT) - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/dvsekhvalnov/jose-rt') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | DV - span.stars(data-repo='dvsekhvalnov/jose-rt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/dvsekhvalnov/jose-rt') View Repo - - .panel-footer - code - | Install-Package - br - a(href='http://www.nuget.org/packages/jose-rt/') jose-rt \ No newline at end of file diff --git a/views/website/libraries/node.pug b/views/website/libraries/node.pug deleted file mode 100644 index ecc7872e..00000000 --- a/views/website/libraries/node.pug +++ /dev/null @@ -1,88 +0,0 @@ -// Node.js jsonwebtoken -article.jwt-node.node.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/2.svg') - h3 Node.js - .panel-wrap(data-content) - .version - p Minimum Version 4.2.2 - a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/', target='_blank') - img(src='http://github.com/img/ico_question.svg') - .panel-body.mversion - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/auth0') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Auth0 - span.stars(data-repo='auth0/node-jsonwebtoken', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/auth0/node-jsonwebtoken') View Repo - - .panel-footer - code npm install jsonwebtoken diff --git a/views/website/libraries/objective-c.pug b/views/website/libraries/objective-c.pug deleted file mode 100644 index 2f32b404..00000000 --- a/views/website/libraries/objective-c.pug +++ /dev/null @@ -1,83 +0,0 @@ -// Objective-C yourkarma/jwt -article.jwt-objective-c.objective-c.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/20.svg') - h3 Objective-C - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | yourkarma & lolgear - span.stars(data-repo='yourkarma/JWT', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/yourkarma/JWT') View Repo - - .panel-footer - code pod 'JWT' diff --git a/views/website/libraries/perl5.pug b/views/website/libraries/perl5.pug deleted file mode 100644 index 070fb5a4..00000000 --- a/views/website/libraries/perl5.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Perl DCIT/perl-Crypt-JWT -article.jwt-perl.perl.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/19.svg') - h3 Perl - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/DCIT') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Karel Miko - span.stars(data-repo='DCIT/perl-Crypt-JWT', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/DCIT/perl-Crypt-JWT') View Repo - - .panel-footer - code cpanm Crypt::JWT diff --git a/views/website/libraries/php.pug b/views/website/libraries/php.pug deleted file mode 100644 index 249788cd..00000000 --- a/views/website/libraries/php.pug +++ /dev/null @@ -1,88 +0,0 @@ -// PHP firebase/php-jwt -article.jwt-php.php.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/5.svg') - h3 PHP - .panel-wrap(data-content) - .version - p Minimum Version 2.0.0 - a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/', target='_blank') - img(src='http://github.com/img/ico_question.svg') - .panel-body.mversion - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/firebase') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Firebase - span.stars(data-repo='firebase/php-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/firebase/php-jwt') View Repo - - .panel-footer - code composer require firebase/php-jwt diff --git a/views/website/libraries/php3.pug b/views/website/libraries/php3.pug deleted file mode 100644 index 7d8a2848..00000000 --- a/views/website/libraries/php3.pug +++ /dev/null @@ -1,88 +0,0 @@ -// PHP lcobucci/jwt -article.jwt-php.php.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/5.svg') - h3 PHP - .panel-wrap(data-content) - .version - p Minimum Version 3.0.0 - a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/', target='_blank') - img(src='http://github.com/img/ico_question.svg') - .panel-body.mversion - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/lcobucci') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Luís Cobucci - span.stars(data-repo='lcobucci/jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/lcobucci/jwt') View Repo - - .panel-footer - code composer require lcobucci/jwt diff --git a/views/website/libraries/php4.pug b/views/website/libraries/php4.pug deleted file mode 100644 index 4741eebd..00000000 --- a/views/website/libraries/php4.pug +++ /dev/null @@ -1,84 +0,0 @@ -// PHP emarref/jwt -article.jwt-php.php.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/5.svg') - h3 PHP - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/emarref') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Emarref - span.stars(data-repo='emarref/jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/emarref/jwt') View Repo - - .panel-footer - code composer require emarref/jwt diff --git a/views/website/libraries/php5.pug b/views/website/libraries/php5.pug deleted file mode 100644 index ec91005c..00000000 --- a/views/website/libraries/php5.pug +++ /dev/null @@ -1,84 +0,0 @@ -// PHP spomky-labs/jose -article.jwt-php.php.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/5.svg') - h3 PHP - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/Spomky-Labs/jose') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Spomky - span.stars(data-repo='Spomky-Labs/jose', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/Spomky-Labs/jose') View Repo - - .panel-footer - code composer require spomky-labs/jose diff --git a/views/website/libraries/php6.pug b/views/website/libraries/php6.pug deleted file mode 100644 index 05c77960..00000000 --- a/views/website/libraries/php6.pug +++ /dev/null @@ -1,84 +0,0 @@ -// PHP gree/jose -article.jwt-php.php.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/5.svg') - h3 PHP - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/nov') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Nov Matake - span.stars(data-repo='nov/jose-php', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/nov/jose-php') View Repo - - .panel-footer - code composer require gree/jose diff --git a/views/website/libraries/php7.pug b/views/website/libraries/php7.pug deleted file mode 100644 index da11c6c8..00000000 --- a/views/website/libraries/php7.pug +++ /dev/null @@ -1,84 +0,0 @@ -// PHP web-token/jwt-framework -article.jwt-php.php.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/5.svg') - h3 PHP - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/Spomky') - i.icon-budicon-333(data-toggle='tooltip', title='Spomky', data-original-title='Maintainer') - | Spomky - span.stars(data-repo='web-token/jwt-framework', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/web-token/jwt-framework') View Repo - - .panel-footer - code composer require web-token/jwt-framework diff --git a/views/website/libraries/php8.pug b/views/website/libraries/php8.pug deleted file mode 100644 index d0e0842e..00000000 --- a/views/website/libraries/php8.pug +++ /dev/null @@ -1,84 +0,0 @@ -// PHP vaibhavpandeyvpz/jweety -article.jwt-php.php.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/5.svg') - h3 PHP - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/vaibhavpandeyvpz') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Vaibhav Pandey - span.stars(data-repo='vaibhavpandeyvpz/jweety', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/vaibhavpandeyvpz/jweety') View Repo - - .panel-footer - code composer require vaibhavpandeyvpz/jweety diff --git a/views/website/libraries/php9.pug b/views/website/libraries/php9.pug deleted file mode 100644 index 9e77bf9a..00000000 --- a/views/website/libraries/php9.pug +++ /dev/null @@ -1,84 +0,0 @@ -// PHP lindelius/php-jwt -article.jwt-php.php.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/5.svg') - h3 PHP - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/lindelius') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Tom Lindelius - span.stars(data-repo='lindelius/php-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/lindelius/php-jwt') View Repo - - .panel-footer - code composer require lindelius/php-jwt diff --git a/views/website/libraries/postgresql.pug b/views/website/libraries/postgresql.pug deleted file mode 100644 index a570d162..00000000 --- a/views/website/libraries/postgresql.pug +++ /dev/null @@ -1,84 +0,0 @@ -// PostgreSQL michelp/pgjwt -article.jwt-postgresql.postgresql.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/25.svg') - h3 PostgreSQL - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/michelp') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Michel Pelletier - span.stars(data-repo='michelp/pgjwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/michelp/pgjwt') View Repo - - .panel-footer - code CREATE EXTENSION pgjwt; diff --git a/views/website/libraries/python.pug b/views/website/libraries/python.pug deleted file mode 100644 index a9469c28..00000000 --- a/views/website/libraries/python.pug +++ /dev/null @@ -1,88 +0,0 @@ -// Python jpadilla/pyjwt -article.jwt-python.python.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/4.svg') - h3 Python - .panel-wrap(data-content) - .version - p Minimum Version 1.0.1 - a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/', target='_blank') - img(src='http://github.com/img/ico_question.svg') - .panel-body.mversion - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/jpadilla') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | José Padilla - span.stars(data-repo='jpadilla/pyjwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/jpadilla/pyjwt/') View Repo - - .panel-footer - code pip install pyjwt diff --git a/views/website/libraries/python2.pug b/views/website/libraries/python2.pug deleted file mode 100644 index d7dbba54..00000000 --- a/views/website/libraries/python2.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Python mpdavis/python-jose -article.jwt-python.python.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/4.svg') - h3 Python - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/mpdavis') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Michael Davis - span.stars(data-repo='mpdavis/python-jose', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/mpdavis/python-jose/') View Repo - - .panel-footer - code pip install python-jose diff --git a/views/website/libraries/python3.pug b/views/website/libraries/python3.pug deleted file mode 100644 index 25fb15c3..00000000 --- a/views/website/libraries/python3.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Python latchset/jwcrypto -article.jwt-python.python.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/4.svg') - h3 Python - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/simo5') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Simo Sorce - span.stars(data-repo='latchset/jwcrypto', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/latchset/jwcrypto/') View Repo - - .panel-footer - code pip install jwcrypto diff --git a/views/website/libraries/q.pug b/views/website/libraries/q.pug deleted file mode 100644 index 758639f5..00000000 --- a/views/website/libraries/q.pug +++ /dev/null @@ -1,85 +0,0 @@ -// kdb+/Q -article.jwt-q.q.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/q.svg') - h3 kdb+/Q - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/tjcelaya') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | tjcelaya - span.stars(data-repo='tjcelaya/jwt.q', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/tjcelaya/jwt.q') View Repo - - - .panel-footer - code git clone https://github.com/tjcelaya/jwt.q diff --git a/views/website/libraries/ruby.pug b/views/website/libraries/ruby.pug deleted file mode 100644 index 930b0eba..00000000 --- a/views/website/libraries/ruby.pug +++ /dev/null @@ -1,83 +0,0 @@ -// Ruby progrium/ruby-jwt -article.jwt-ruby.ruby.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/7.svg') - h3 Ruby - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Lindsay & Rudat - span.stars(data-repo='progrium/ruby-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/progrium/ruby-jwt') View Repo - - .panel-footer - code gem install jwt diff --git a/views/website/libraries/ruby2.pug b/views/website/libraries/ruby2.pug deleted file mode 100644 index e201e4df..00000000 --- a/views/website/libraries/ruby2.pug +++ /dev/null @@ -1,83 +0,0 @@ -// Ruby garyf/json_web_token -article.jwt-ruby.ruby.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/7.svg') - h3 Ruby - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Fleshman - span.stars(data-repo='garyf/json_web_token', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/garyf/json_web_token') View Repo - - .panel-footer - code gem install json_web_token diff --git a/views/website/libraries/ruby3.pug b/views/website/libraries/ruby3.pug deleted file mode 100644 index b21c61c9..00000000 --- a/views/website/libraries/ruby3.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Ruby nov/json-jwt -article.jwt-ruby.ruby.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/7.svg') - h3 Ruby - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/nov') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Nov Matake - span.stars(data-repo='nov/json-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/nov/json-jwt') View Repo - - .panel-footer - code gem install json-jwt diff --git a/views/website/libraries/ruby4.pug b/views/website/libraries/ruby4.pug deleted file mode 100644 index 9e878861..00000000 --- a/views/website/libraries/ruby4.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Ruby nov/json-jwt -article.jwt-ruby.ruby.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/7.svg') - h3 Ruby - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/potatosalad') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Andrew Bennett - span.stars(data-repo='potatosalad/ruby-jose', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/potatosalad/ruby-jose') View Repo - - .panel-footer - code gem install jose diff --git a/views/website/libraries/rust.pug b/views/website/libraries/rust.pug deleted file mode 100644 index 647c7671..00000000 --- a/views/website/libraries/rust.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Rust GildedHonour/rust-jwt -article.jwt-rust.rust.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/10.svg') - h3 Rust - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/GildedHonour') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | GildedHonour - span.stars(data-repo='GildedHonour/rust-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/GildedHonour/rust-jwt') View Repo - - .panel-footer - code cargo: name = "frank_jwt" version = "*" diff --git a/views/website/libraries/rust2.pug b/views/website/libraries/rust2.pug deleted file mode 100644 index 2f379767..00000000 --- a/views/website/libraries/rust2.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Rust Keats/rust-jwt -article.jwt-rust.rust.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/10.svg') - h3 Rust - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/Keats') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Keats - span.stars(data-repo='Keats/jsonwebtoken', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/Keats/jsonwebtoken') View Repo - - .panel-footer - code cargo: name = "jsonwebtoken" version = "*" diff --git a/views/website/libraries/rust3.pug b/views/website/libraries/rust3.pug deleted file mode 100644 index de26a5b1..00000000 --- a/views/website/libraries/rust3.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Rust lawliet89/biscuit -article.jwt-rust.rust.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/10.svg') - h3 Rust - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/lawliet89') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Yong Wen Chua - span.stars(data-repo='lawliet89/biscuit', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/lawliet89/biscuit') View Repo - - .panel-footer - code Cargo.toml: biscuit = "*" diff --git a/views/website/libraries/scala.pug b/views/website/libraries/scala.pug deleted file mode 100644 index 1299fe5e..00000000 --- a/views/website/libraries/scala.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Scala jasongoodwin/authentikat-jwt -article.jwt-scala.scala.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/12.svg') - h3 Scala - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-501 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-501 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/jasongoodwin') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | jasongoodwin - span.stars(data-repo='jasongoodwin/authentikat-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/jasongoodwin/authentikat-jwt') View Repo - - .panel-footer - code sbt: "com.jason-goodwin" %% "authentikat-jwt" % "0.4.5" diff --git a/views/website/libraries/scala2.pug b/views/website/libraries/scala2.pug deleted file mode 100644 index a1c0ae47..00000000 --- a/views/website/libraries/scala2.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Scala pauldijou/jwt-scala -article.jwt-scala.scala.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/12.svg') - h3 Scala - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/pauldijou') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | pauldijou - span.stars(data-repo='pauldijou/jwt-scala', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/pauldijou/jwt-scala') View Repo - - .panel-footer - code sbt: "pdi" %% "jwt-core" % "0.14.1" diff --git a/views/website/libraries/scala3.pug b/views/website/libraries/scala3.pug deleted file mode 100644 index 740b964c..00000000 --- a/views/website/libraries/scala3.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Scala iain-logan/jwt -article.jwt-scala.scala.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/12.svg') - h3 Scala - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/iain-logan') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | iain-logan - span.stars(data-repo='iain-logan/jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/iain-logan/jwt') View Repo - - .panel-footer - code libraryDependencies += "io.igl" %% "jwt" % "1.2.2" diff --git a/views/website/libraries/scala4.pug b/views/website/libraries/scala4.pug deleted file mode 100644 index 6a5be1f3..00000000 --- a/views/website/libraries/scala4.pug +++ /dev/null @@ -1,85 +0,0 @@ - -// Scala com.github.janjaali/spray-jwt -article.jwt-scala.scala.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/12.svg') - h3 Scala - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-501 - code aud - | check - p - i.icon-budicon-501 - code exp - | check - p - i.icon-budicon-501 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/janjaali') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | janjaali - span.stars(data-repo='janjaali/spray-jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/janjaali/spray-jwt') View Repo - - .panel-footer - code libraryDependencies += "com.github.janjaali" %% "spray-jwt" % "1.0.0" diff --git a/views/website/libraries/support/getLibsData.js b/views/website/libraries/support/getLibsData.js new file mode 100644 index 00000000..ad848ed9 --- /dev/null +++ b/views/website/libraries/support/getLibsData.js @@ -0,0 +1,88 @@ +function getLibs() { + + const libraries = document.querySelectorAll('.libraries-sv article'); + + const result = {}; + Array.prototype.forEach.call(libraries, lib => { + try { + const uniqueClass = lib.classList.item(1); + + let image = lib.querySelector('img').src; + image = image.substr(image.indexOf('/img')); + + const bgColor = window.getComputedStyle(lib.querySelector('h3')) + .getPropertyValue('background-color'); + const langName = lib.querySelector('h3').firstChild.textContent; + + if(!result[langName]) { + result[langName] = { + uniqueClass: uniqueClass, + image: image, + bgColor: bgColor, + libs: [] + }; + } + + const r = {}; + + const minimumVersionElement = lib.querySelector('.version p'); + r.minimumVersion = minimumVersionElement ? + minimumVersionElement.firstChild.textContent : null; + if(r.minimumVersion) { + r.minimumVersion = r.minimumVersion.substr('Minimum Version '.length); + } + + r.support = {}; + const panelBodyChildren = lib.querySelector('.panel-body').children; + + let orderedKeys = ['sign', 'verify', 'iss', + 'sub', 'aud', 'exp', + 'nbf', 'iat', 'jti']; + + for(let i = 0; i < orderedKeys.length; ++i) { + r.support[orderedKeys[i]] = + panelBodyChildren[0].children[i] + .firstChild + .classList + .contains('icon-budicon-500'); + } + + orderedKeys = ['hs256', 'hs384', 'hs512', + 'rs256', 'rs384', 'rs512', + 'es256', 'es384', 'es512']; + + for(let i = 0; i < orderedKeys.length; ++i) { + r.support[orderedKeys[i]] = + panelBodyChildren[1].children[i] + .firstChild + .classList + .contains('icon-budicon-500'); + } + + const maintainerA = lib.querySelector('.maintainer a'); + if(maintainerA) { + r.authorUrl = lib.querySelector('.maintainer a').href; + r.authorName = lib.querySelector('.maintainer a').textContent; + } else { + r.authorUrl = null; + r.authorName = lib.querySelector('.maintainer').childNodes[1].textContent; + } + + const spanStarsElement = lib.querySelector('.maintainer span'); + r.gitHubRepoPath = spanStarsElement ? + lib.querySelector('.maintainer span').getAttribute('data-repo') : + null; + + r.repoUrl = lib.querySelector('.repository a').href; + r.installCommandHtml = lib.querySelector('.panel-footer code').innerHTML; + + result[langName].libs.push(r); + } catch(e) { + console.log(e); + console.log(lib); + } + }); + + return result; + +} diff --git a/views/website/libraries/swift.pug b/views/website/libraries/swift.pug deleted file mode 100644 index 69ffa484..00000000 --- a/views/website/libraries/swift.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Swift kylef/JSONWebToken.swift -article.jwt-scala.swift.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/15.svg') - h3 Swift - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-501 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-501 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-501 - | RS256 - p - i.icon-budicon-501 - | RS384 - p - i.icon-budicon-501 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/kylef') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Kyle Fuller - span.stars(data-repo='kylef/JSONWebToken.swift', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/kylef/JSONWebToken.swift') View Repo - - .panel-footer - code pod 'JSONWebToken' diff --git a/views/website/libraries/swift2.pug b/views/website/libraries/swift2.pug deleted file mode 100644 index 6035e155..00000000 --- a/views/website/libraries/swift2.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Swift vapor/jwt -article.jwt-scala.swift.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/15.svg') - h3 Swift - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-500 - | ES256 - p - i.icon-budicon-500 - | ES384 - p - i.icon-budicon-500 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/siemensikkema') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Siemen Sikkema - span.stars(data-repo='vapor/jwt', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/vapor/jwt') View Repo - - .panel-footer - code .Package(url:"https://github.com/vapor/jwt.git", majorVersion: 1) diff --git a/views/website/libraries/swift3.pug b/views/website/libraries/swift3.pug deleted file mode 100644 index 738c5d99..00000000 --- a/views/website/libraries/swift3.pug +++ /dev/null @@ -1,84 +0,0 @@ -// Swift Wstunes/SwiftyJWT -article.jwt-scala.swift.accordion(data-accordion) - .panel-heading(data-control) - img(src='http://github.com/img/15.svg') - h3 Swift - .panel-wrap(data-content) - .panel-body - .column - p - i.icon-budicon-500 - | Sign - p - i.icon-budicon-500 - | Verify - p - i.icon-budicon-500 - code iss - | check - p - i.icon-budicon-500 - code sub - | check - p - i.icon-budicon-500 - code aud - | check - p - i.icon-budicon-500 - code exp - | check - p - i.icon-budicon-500 - code nbf - | check - p - i.icon-budicon-500 - code iat - | check - p - i.icon-budicon-500 - code jti - | check - .column - p - i.icon-budicon-500 - | HS256 - p - i.icon-budicon-500 - | HS384 - p - i.icon-budicon-500 - | HS512 - p - i.icon-budicon-500 - | RS256 - p - i.icon-budicon-500 - | RS384 - p - i.icon-budicon-500 - | RS512 - p - i.icon-budicon-501 - | ES256 - p - i.icon-budicon-501 - | ES384 - p - i.icon-budicon-501 - | ES512 - - .author-info - .maintainer - a(href='https://github.com/Wstunes') - i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') - | Wstunes - span.stars(data-repo='Wstunes/SwiftyJWT', style='display: inline;') - i.icon-budicon-466 - .repository - i.icon-1392070209-icon-social-github - a(href='https://github.com/Wstunes/SwiftyJWT') View Repo - - .panel-footer - code pod 'SwiftyJWT' diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug new file mode 100644 index 00000000..cdfaef71 --- /dev/null +++ b/views/website/libraries/template.pug @@ -0,0 +1,93 @@ +article(data-accordion, class=`accordion ${lang.uniqueClass}`) + .panel-heading(data-control) + img(src=lang.image) + h3(style=`background-color: ${lang.bgColor}`) #{langName} + .panel-wrap(data-content) + if lib.minimumVersion + .version + p Minimum Version #{lib.minimumVersion} + a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/', target='_blank') + img(src='http://github.com/img/ico_question.svg') + div(class={ 'panel-body': true, mversion: !!lib.minimumVersion }) + .column + p + i(class=lib.support.sign ? 'icon-budicon-500' : 'icon-budicon-501') + | Sign + p + i(class=lib.support.verify ? 'icon-budicon-500' : 'icon-budicon-501') + | Verify + p + i(class=lib.support.iss ? 'icon-budicon-500' : 'icon-budicon-501') + code iss + | check + p + i(class=lib.support.sub ? 'icon-budicon-500' : 'icon-budicon-501') + code sub + | check + p + i(class=lib.support.aud ? 'icon-budicon-500' : 'icon-budicon-501') + code aud + | check + p + i(class=lib.support.exp ? 'icon-budicon-500' : 'icon-budicon-501') + code exp + | check + p + i(class=lib.support.nbf ? 'icon-budicon-500' : 'icon-budicon-501') + code nbf + | check + p + i(class=lib.support.iat ? 'icon-budicon-500' : 'icon-budicon-501') + code iat + | check + p + i(class=lib.support.jti ? 'icon-budicon-500' : 'icon-budicon-501') + code jti + | check + .column + p + i(class=lib.support.hs256 ? 'icon-budicon-500' : 'icon-budicon-501') + | HS256 + p + i(class=lib.support.hs384 ? 'icon-budicon-500' : 'icon-budicon-501') + | HS384 + p + i(class=lib.support.hs512 ? 'icon-budicon-500' : 'icon-budicon-501') + | HS512 + p + i(class=lib.support.rs256 ? 'icon-budicon-500' : 'icon-budicon-501') + | RS256 + p + i(class=lib.support.rs384 ? 'icon-budicon-500' : 'icon-budicon-501') + | RS384 + p + i(class=lib.support.rs512 ? 'icon-budicon-500' : 'icon-budicon-501') + | RS512 + p + i(class=lib.support.es256 ? 'icon-budicon-500' : 'icon-budicon-501') + | ES256 + p + i(class=lib.support.es384 ? 'icon-budicon-500' : 'icon-budicon-501') + | ES384 + p + i(class=lib.support.es512 ? 'icon-budicon-500' : 'icon-budicon-501') + | ES512 + + .author-info + .maintainer + if lib.authorUrl + a(href=lib.authorUrl) + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | #{lib.authorName} + else + i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') + | #{lib.authorName} + if lib.gitHubRepoPath + span.stars(data-repo=lib.gitHubRepoPath, style='display: inline;') + i.icon-budicon-466 + .repository + i.icon-1392070209-icon-social-github + a(href=lib.repoUrl) View Repo + + .panel-footer + code !{lib.installCommandHtml} From 251f363c3049b8a12e834893f44661ebe809d5ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 28 Mar 2018 00:40:07 -0300 Subject: [PATCH 160/611] Added missing author URL for library. --- views/website/libraries/data.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/data.json b/views/website/libraries/data.json index 38ad1fe5..4e4d09af 100644 --- a/views/website/libraries/data.json +++ b/views/website/libraries/data.json @@ -26,7 +26,7 @@ "es384": true, "es512": true }, - "authorUrl": null, + "authorUrl": "https://www.microsoft.com/", "authorName": "Microsoft", "gitHubRepoPath": "AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet", "repoUrl": "https://github.com/MSOpenTech/azure-activedirectory-identitymodel-extensions-for-dotnet", From 5d57800a3890b53edcf1cda3c0f67bd5f0a3750d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 28 Mar 2018 00:40:25 -0300 Subject: [PATCH 161/611] Update README with instructions for adding or editing libraries. --- README.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 78 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f1051ca1..5154dd57 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,81 @@ [![Build Status](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io.png?branch=master)](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io) +### How to add a library +To add a library, simply edit the `data.json` file located at `views/website/libraries`. + +If you add a new language, you will need to provide a proper icon for it and place it in the `img` folder. + +Here's a commented example of a language + library definition. All fields must have valid values unless noted: + +```javascript +// Language name (unique) +".NET": { + + // Unique identifier that will be used as a CSS class + // for this language (only valid CSS class names). + "uniqueClass": "net", + + // The language icon, SVG format preferred, should be placed + // in /img directory. + "image": "/img/1.svg", + + // The color of header that displays the name of the language + // and the icon. This is a valid CSS color definition. + "bgColor": "rgb(42, 168, 229)", + + // An array of libraries for this language. + "libs": [ + { + // In case the library suffered from a vulnerability, the + // minimum version in which the vuln was fixed must be + // listed here. Optional (can be null). + "minimumVersion": "1.0.1", // or null + + // Supported features, true for supported, + // false for not supported. + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + + // Author URL, can be GitHub profile, personal page + // company page, etc. Can be null. + "authorUrl": "https://www.microsoft.com/", // or null + + // Author name. + "authorName": "Microsoft", + + // For the star count, this is the GitHub repository path, + // (usually user/repo). Can be null (no star count shown). + "gitHubRepoPath": "AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet", // or null + + // URL for source code. + "repoUrl": "https://github.com/MSOpenTech/azure-activedirectory-identitymodel-extensions-for-dotnet", + + // Install command, can be HTML or plain text. + "installCommandHtml": "Install-Package
    System.IdentityModel.Tokens.Jwt" + } + ] +} +``` + ### How to build First, install the required dependencies: @@ -18,7 +93,9 @@ In order to build (and run) the project execute: grunt ``` -You will find the generated files in the `dist` directory. For the website, you can run a server at its root. For example: `http-server dist/website`. +You will find the generated files in the `dist` directory. For the website, you can run a server at its root. For example: `http-server dist/website`. The default `grunt` task runs a server +at [https://127.0.0.1:8000](https://127.0.0.1:8000) and watches +for changes. To run tests, execute: @@ -29,5 +106,3 @@ grunt test Look at the end of the `Gruntfile` for other common tasks. ### Happy hacking! - - From b31f002a3a6e100c3d589000ffc30e24262a48a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 28 Mar 2018 00:44:34 -0300 Subject: [PATCH 162/611] README: use relative grunt. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5154dd57..3dd71294 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ npm install In order to build (and run) the project execute: ```sh -grunt +./node_modules/.bin/grunt ``` You will find the generated files in the `dist` directory. For the website, you can run a server at its root. For example: `http-server dist/website`. The default `grunt` task runs a server @@ -100,7 +100,7 @@ for changes. To run tests, execute: ``` -grunt test +./node_modules/.bin/grunt test ``` Look at the end of the `Gruntfile` for other common tasks. From d061bc4fb644569061aa448f7f33fafab83559c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 28 Mar 2018 20:30:54 -0300 Subject: [PATCH 163/611] Separate languages into their own data files. --- Gruntfile.js | 4 +- README.md | 11 +- views/website/libraries.pug | 2 +- views/website/libraries/0-.NET.json | 92 + views/website/libraries/1-Python.json | 92 + views/website/libraries/10-Groovy.json | 36 + views/website/libraries/11-Haskell.json | 64 + views/website/libraries/12-Haxe.json | 36 + views/website/libraries/13-Rust.json | 92 + views/website/libraries/14-Lua.json | 36 + views/website/libraries/15-Scala.json | 120 + views/website/libraries/16-D.json | 64 + views/website/libraries/17-Clojure.json | 36 + views/website/libraries/18-Objective-C.json | 36 + views/website/libraries/19-Swift.json | 92 + views/website/libraries/2-Node.js.json | 36 + views/website/libraries/20-C.json | 64 + views/website/libraries/21-C++.json | 92 + views/website/libraries/22-kdb+_Q.json | 36 + views/website/libraries/23-Delphi.json | 64 + views/website/libraries/24-PHP.json | 232 ++ views/website/libraries/25-Crystal.json | 36 + views/website/libraries/26-1C.json | 36 + views/website/libraries/27-PostgreSQL.json | 36 + views/website/libraries/3-Java.json | 176 ++ views/website/libraries/4-JavaScript.json | 64 + views/website/libraries/5-Perl.json | 36 + views/website/libraries/6-Ruby.json | 120 + views/website/libraries/7-Elixir.json | 92 + views/website/libraries/8-Erlang.json | 36 + views/website/libraries/9-Go.json | 260 ++ views/website/libraries/data.json | 2186 ----------------- .../libraries/support/get-languages.js | 26 + .../{getLibsData.js => get-libs-data.js} | 0 views/website/libraries/support/split-libs.js | 10 + views/website/libraries/template.pug | 2 +- 36 files changed, 2259 insertions(+), 2194 deletions(-) create mode 100644 views/website/libraries/0-.NET.json create mode 100644 views/website/libraries/1-Python.json create mode 100644 views/website/libraries/10-Groovy.json create mode 100644 views/website/libraries/11-Haskell.json create mode 100644 views/website/libraries/12-Haxe.json create mode 100644 views/website/libraries/13-Rust.json create mode 100644 views/website/libraries/14-Lua.json create mode 100644 views/website/libraries/15-Scala.json create mode 100644 views/website/libraries/16-D.json create mode 100644 views/website/libraries/17-Clojure.json create mode 100644 views/website/libraries/18-Objective-C.json create mode 100644 views/website/libraries/19-Swift.json create mode 100644 views/website/libraries/2-Node.js.json create mode 100644 views/website/libraries/20-C.json create mode 100644 views/website/libraries/21-C++.json create mode 100644 views/website/libraries/22-kdb+_Q.json create mode 100644 views/website/libraries/23-Delphi.json create mode 100644 views/website/libraries/24-PHP.json create mode 100644 views/website/libraries/25-Crystal.json create mode 100644 views/website/libraries/26-1C.json create mode 100644 views/website/libraries/27-PostgreSQL.json create mode 100644 views/website/libraries/3-Java.json create mode 100644 views/website/libraries/4-JavaScript.json create mode 100644 views/website/libraries/5-Perl.json create mode 100644 views/website/libraries/6-Ruby.json create mode 100644 views/website/libraries/7-Elixir.json create mode 100644 views/website/libraries/8-Erlang.json create mode 100644 views/website/libraries/9-Go.json delete mode 100644 views/website/libraries/data.json create mode 100644 views/website/libraries/support/get-languages.js rename views/website/libraries/support/{getLibsData.js => get-libs-data.js} (100%) create mode 100644 views/website/libraries/support/split-libs.js diff --git a/Gruntfile.js b/Gruntfile.js index 21e8347a..401478fe 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,4 +1,6 @@ const extensionManifest = require('./manifest.json'); +const getLanguages = + require('./views/website/libraries/support/get-languages.js'); module.exports = grunt => { grunt.loadNpmTasks('grunt-contrib-copy'); @@ -111,7 +113,7 @@ module.exports = grunt => { options: { //pretty: true, data: { - languages: require('./views/website/libraries/data.json') + languages: getLanguages() } }, files: { diff --git a/README.md b/README.md index 3dd71294..0bdc9806 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,16 @@ [![Build Status](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io.png?branch=master)](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io) ### How to add a library -To add a library, simply edit the `data.json` file located at `views/website/libraries`. +To add a library, simply edit the right JSON file located at `views/website/libraries`. Each language gets its own file. Multiple libraries share the same language file. -If you add a new language, you will need to provide a proper icon for it and place it in the `img` folder. +To add a new language, simply add a JSON file in the same folder as the others. It will get automatically recognized. If you add a new language, you will need to provide a proper icon for it and place it in the `img` folder. -Here's a commented example of a language + library definition. All fields must have valid values unless noted: +Here's a commented example of the .NET language file (`0-.NET.json`). All fields must have valid values unless noted: ```javascript -// Language name (unique) -".NET": { +{ + // Language name (unique) + "name": ".NET", // Unique identifier that will be used as a CSS class // for this language (only valid CSS class names). diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 76ef6002..86dc6d0a 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -23,6 +23,6 @@ section#libraries-io.libraries-jwt path(d='M16 10v28l22-14z') .libraries-sv(data-accordion-group) - each lang, langName in languages + each lang in languages each lib in lang.libs include libraries/template.pug diff --git a/views/website/libraries/0-.NET.json b/views/website/libraries/0-.NET.json new file mode 100644 index 00000000..2427e487 --- /dev/null +++ b/views/website/libraries/0-.NET.json @@ -0,0 +1,92 @@ +{ + "name": ".NET", + "uniqueClass": "net", + "image": "/img/1.svg", + "bgColor": "rgb(42, 168, 229)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://www.microsoft.com/", + "authorName": "Microsoft", + "gitHubRepoPath": "AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet", + "repoUrl": "https://github.com/MSOpenTech/azure-activedirectory-identitymodel-extensions-for-dotnet", + "installCommandHtml": "Install-Package
    System.IdentityModel.Tokens.Jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/dvsekhvalnov/jose-jwt", + "authorName": "DV", + "gitHubRepoPath": "dvsekhvalnov/jose-jwt", + "repoUrl": "https://github.com/dvsekhvalnov/jose-jwt", + "installCommandHtml": "Install-Package
    jose-jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/dvsekhvalnov/jose-rt", + "authorName": "DV", + "gitHubRepoPath": "dvsekhvalnov/jose-rt", + "repoUrl": "https://github.com/dvsekhvalnov/jose-rt", + "installCommandHtml": "Install-Package
    jose-rt" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/1-Python.json b/views/website/libraries/1-Python.json new file mode 100644 index 00000000..1d352e1e --- /dev/null +++ b/views/website/libraries/1-Python.json @@ -0,0 +1,92 @@ +{ + "name": "Python", + "uniqueClass": "python", + "image": "/img/4.svg", + "bgColor": "rgb(55, 126, 240)", + "libs": [ + { + "minimumVersion": "1.0.1", + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/jpadilla", + "authorName": "José Padilla", + "gitHubRepoPath": "jpadilla/pyjwt", + "repoUrl": "https://github.com/jpadilla/pyjwt/", + "installCommandHtml": "pip install pyjwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/mpdavis", + "authorName": "Michael Davis", + "gitHubRepoPath": "mpdavis/python-jose", + "repoUrl": "https://github.com/mpdavis/python-jose/", + "installCommandHtml": "pip install python-jose" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/simo5", + "authorName": "Simo Sorce", + "gitHubRepoPath": "latchset/jwcrypto", + "repoUrl": "https://github.com/latchset/jwcrypto/", + "installCommandHtml": "pip install jwcrypto" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/10-Groovy.json b/views/website/libraries/10-Groovy.json new file mode 100644 index 00000000..9d72d88c --- /dev/null +++ b/views/website/libraries/10-Groovy.json @@ -0,0 +1,36 @@ +{ + "name": "Groovy", + "uniqueClass": "groovy", + "image": "/img/24.svg", + "bgColor": "rgb(99, 152, 170)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/kaleidos", + "authorName": "Kaleidos", + "gitHubRepoPath": "kaleidos/grails-security-stateless", + "repoUrl": "https://github.com/kaleidos/grails-security-stateless", + "installCommandHtml": "compile \"org.grails.plugins:security-stateless:0.0.9\"" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/11-Haskell.json b/views/website/libraries/11-Haskell.json new file mode 100644 index 00000000..bf1aa1c1 --- /dev/null +++ b/views/website/libraries/11-Haskell.json @@ -0,0 +1,64 @@ +{ + "name": "Haskell", + "uniqueClass": "haskell", + "image": "/img/9.svg", + "bgColor": "rgb(102, 102, 102)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://bitbucket.org/ssaasen", + "authorName": "Stefan Saasen", + "gitHubRepoPath": null, + "repoUrl": "https://bitbucket.org/ssaasen/haskell-jwt", + "installCommandHtml": "cabal install jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/frasertweedale", + "authorName": "Fraser Tweedale", + "gitHubRepoPath": "frasertweedale/hs-jose", + "repoUrl": "https://github.com/frasertweedale/hs-jose", + "installCommandHtml": "cabal install jose" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/12-Haxe.json b/views/website/libraries/12-Haxe.json new file mode 100644 index 00000000..11816a1e --- /dev/null +++ b/views/website/libraries/12-Haxe.json @@ -0,0 +1,36 @@ +{ + "name": "Haxe", + "uniqueClass": "haxe", + "image": "/img/23.svg", + "bgColor": "rgb(234, 130, 32)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/kevinresol", + "authorName": "Kevin Leung", + "gitHubRepoPath": "kevinresol/jsonwebtoken", + "repoUrl": "https://github.com/kevinresol/jsonwebtoken", + "installCommandHtml": "haxelib install jsonwebtoken" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/13-Rust.json b/views/website/libraries/13-Rust.json new file mode 100644 index 00000000..029af015 --- /dev/null +++ b/views/website/libraries/13-Rust.json @@ -0,0 +1,92 @@ +{ + "name": "Rust", + "uniqueClass": "rust", + "image": "/img/10.svg", + "bgColor": "rgb(129, 70, 38)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/GildedHonour", + "authorName": "GildedHonour", + "gitHubRepoPath": "GildedHonour/rust-jwt", + "repoUrl": "https://github.com/GildedHonour/rust-jwt", + "installCommandHtml": "cargo: name = \"frank_jwt\" version = \"*\"" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/Keats", + "authorName": "Keats", + "gitHubRepoPath": "Keats/jsonwebtoken", + "repoUrl": "https://github.com/Keats/jsonwebtoken", + "installCommandHtml": "cargo: name = \"jsonwebtoken\" version = \"*\"" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/lawliet89", + "authorName": "Yong Wen Chua", + "gitHubRepoPath": "lawliet89/biscuit", + "repoUrl": "https://github.com/lawliet89/biscuit", + "installCommandHtml": "Cargo.toml: biscuit = \"*\"" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/14-Lua.json b/views/website/libraries/14-Lua.json new file mode 100644 index 00000000..bd8bd3e8 --- /dev/null +++ b/views/website/libraries/14-Lua.json @@ -0,0 +1,36 @@ +{ + "name": "Lua", + "uniqueClass": "lua", + "image": "/img/11.svg", + "bgColor": "rgb(0, 0, 128)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": true, + "rs256": true, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/SkyLothar", + "authorName": "SkyLothar", + "gitHubRepoPath": "SkyLothar/lua-resty-jwt", + "repoUrl": "https://github.com/SkyLothar/lua-resty-jwt", + "installCommandHtml": "git clone https://github.com/SkyLothar/lua-resty-jwt.git" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/15-Scala.json b/views/website/libraries/15-Scala.json new file mode 100644 index 00000000..f5e157fe --- /dev/null +++ b/views/website/libraries/15-Scala.json @@ -0,0 +1,120 @@ +{ + "name": "Scala", + "uniqueClass": "scala", + "image": "/img/12.svg", + "bgColor": "rgb(234, 45, 46)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/jasongoodwin", + "authorName": "jasongoodwin", + "gitHubRepoPath": "jasongoodwin/authentikat-jwt", + "repoUrl": "https://github.com/jasongoodwin/authentikat-jwt", + "installCommandHtml": "sbt: \"com.jason-goodwin\" %% \"authentikat-jwt\" % \"0.4.5\"" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/pauldijou", + "authorName": "pauldijou", + "gitHubRepoPath": "pauldijou/jwt-scala", + "repoUrl": "https://github.com/pauldijou/jwt-scala", + "installCommandHtml": "sbt: \"pdi\" %% \"jwt-core\" % \"0.14.1\"" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/iain-logan", + "authorName": "iain-logan", + "gitHubRepoPath": "iain-logan/jwt", + "repoUrl": "https://github.com/iain-logan/jwt", + "installCommandHtml": "libraryDependencies += \"io.igl\" %% \"jwt\" % \"1.2.2\"" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": false, + "exp": false, + "nbf": false, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/janjaali", + "authorName": "janjaali", + "gitHubRepoPath": "janjaali/spray-jwt", + "repoUrl": "https://github.com/janjaali/spray-jwt", + "installCommandHtml": "libraryDependencies += \"com.github.janjaali\" %% \"spray-jwt\" % \"1.0.0\"" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/16-D.json b/views/website/libraries/16-D.json new file mode 100644 index 00000000..e94f208d --- /dev/null +++ b/views/website/libraries/16-D.json @@ -0,0 +1,64 @@ +{ + "name": "D", + "uniqueClass": "d", + "image": "/img/14.svg", + "bgColor": "rgb(180, 65, 55)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/olehlong", + "authorName": "olehlong", + "gitHubRepoPath": "olehlong/jwtd", + "repoUrl": "https://github.com/olehlong/jwtd", + "installCommandHtml": "dub fetch jwtd" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/zolamk", + "authorName": "zolamk", + "gitHubRepoPath": "zolamk/jwt", + "repoUrl": "https://github.com/zolamk/jwt", + "installCommandHtml": "dub fetch jwt" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/17-Clojure.json b/views/website/libraries/17-Clojure.json new file mode 100644 index 00000000..c330e309 --- /dev/null +++ b/views/website/libraries/17-Clojure.json @@ -0,0 +1,36 @@ +{ + "name": "Clojure", + "uniqueClass": "clojure", + "image": "/img/13.svg", + "bgColor": "rgb(88, 129, 216)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/niwinz", + "authorName": "Andrey Antukh", + "gitHubRepoPath": "funcool/buddy", + "repoUrl": "https://github.com/funcool/buddy/", + "installCommandHtml": "lein: [funcool/buddy \"0.6.0\"]" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/18-Objective-C.json b/views/website/libraries/18-Objective-C.json new file mode 100644 index 00000000..6cd415b8 --- /dev/null +++ b/views/website/libraries/18-Objective-C.json @@ -0,0 +1,36 @@ +{ + "name": "Objective-C", + "uniqueClass": "objective-c", + "image": "/img/20.svg", + "bgColor": "#aaaaaa", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": null, + "authorName": "yourkarma & lolgear", + "gitHubRepoPath": "yourkarma/JWT", + "repoUrl": "https://github.com/yourkarma/JWT", + "installCommandHtml": "pod 'JWT'" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/19-Swift.json b/views/website/libraries/19-Swift.json new file mode 100644 index 00000000..30ac153d --- /dev/null +++ b/views/website/libraries/19-Swift.json @@ -0,0 +1,92 @@ +{ + "name": "Swift", + "uniqueClass": "swift", + "image": "/img/15.svg", + "bgColor": "rgb(234, 45, 46)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/kylef", + "authorName": "Kyle Fuller", + "gitHubRepoPath": "kylef/JSONWebToken.swift", + "repoUrl": "https://github.com/kylef/JSONWebToken.swift", + "installCommandHtml": "pod 'JSONWebToken'" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/siemensikkema", + "authorName": "Siemen Sikkema", + "gitHubRepoPath": "vapor/jwt", + "repoUrl": "https://github.com/vapor/jwt", + "installCommandHtml": ".Package(url:\"https://github.com/vapor/jwt.git/", majorVersion: 1)" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/Wstunes", + "authorName": "Wstunes", + "gitHubRepoPath": "Wstunes/SwiftyJWT", + "repoUrl": "https://github.com/Wstunes/SwiftyJWT", + "installCommandHtml": "pod 'SwiftyJWT'" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json new file mode 100644 index 00000000..3777880d --- /dev/null +++ b/views/website/libraries/2-Node.js.json @@ -0,0 +1,36 @@ +{ + "name": "Node.js", + "uniqueClass": "node", + "image": "/img/2.svg", + "bgColor": "rgb(138, 194, 68)", + "libs": [ + { + "minimumVersion": "4.2.2", + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": true, + "exp": true, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/auth0", + "authorName": "Auth0", + "gitHubRepoPath": "auth0/node-jsonwebtoken", + "repoUrl": "https://github.com/auth0/node-jsonwebtoken", + "installCommandHtml": "npm install jsonwebtoken" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json new file mode 100644 index 00000000..f71c0d3a --- /dev/null +++ b/views/website/libraries/20-C.json @@ -0,0 +1,64 @@ +{ + "name": "C", + "uniqueClass": "c", + "image": "/img/16.svg", + "bgColor": "rgb(81, 128, 210)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/benmcollins", + "authorName": "benmcollins", + "gitHubRepoPath": "benmcollins/libjwt", + "repoUrl": "https://github.com/benmcollins/libjwt", + "installCommandHtml": "add-apt-repository ppa:ben-collins/libjwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/cisco/cjose", + "authorName": "linuxwolf", + "gitHubRepoPath": "cisco/cjose", + "repoUrl": "https://github.com/cisco/cjose", + "installCommandHtml": "go get github.com/cisco/cjose" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/21-C++.json b/views/website/libraries/21-C++.json new file mode 100644 index 00000000..e59adc28 --- /dev/null +++ b/views/website/libraries/21-C++.json @@ -0,0 +1,92 @@ +{ + "name": "C++", + "uniqueClass": "cpp", + "image": "/img/26.svg", + "bgColor": "rgb(0, 89, 156)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/troian", + "authorName": "Artur Troian", + "gitHubRepoPath": "troian/josepp", + "repoUrl": "https://github.com/troian/josepp", + "installCommandHtml": "git clone https://github.com/troian/josepp" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/Thalhammer", + "authorName": "Dominik Thalhammer", + "gitHubRepoPath": "Thalhammer/jwt-cpp", + "repoUrl": "https://github.com/Thalhammer/jwt-cpp", + "installCommandHtml": "git clone https://github.com/Thalhammer/jwt-cpp" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/arun11299", + "authorName": "Arun Muralidharan", + "gitHubRepoPath": "arun11299/cpp-jwt", + "repoUrl": "https://github.com/arun11299/cpp-jwt", + "installCommandHtml": "git clone https://github.com/arun11299/cpp-jwt" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/22-kdb+_Q.json b/views/website/libraries/22-kdb+_Q.json new file mode 100644 index 00000000..880ecf52 --- /dev/null +++ b/views/website/libraries/22-kdb+_Q.json @@ -0,0 +1,36 @@ +{ + "name": "kdb+/Q", + "uniqueClass": "q", + "image": "/img/q.svg", + "bgColor": "rgb(102, 102, 102)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/tjcelaya", + "authorName": "tjcelaya", + "gitHubRepoPath": "tjcelaya/jwt.q", + "repoUrl": "https://github.com/tjcelaya/jwt.q", + "installCommandHtml": "git clone https://github.com/tjcelaya/jwt.q" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/23-Delphi.json b/views/website/libraries/23-Delphi.json new file mode 100644 index 00000000..c185e2e9 --- /dev/null +++ b/views/website/libraries/23-Delphi.json @@ -0,0 +1,64 @@ +{ + "name": "Delphi", + "uniqueClass": "delphi", + "image": "/img/17.svg", + "bgColor": "rgb(227, 28, 35)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/paolo-rossi", + "authorName": "Paolo Rossi", + "gitHubRepoPath": "paolo-rossi/delphi-jose-jwt", + "repoUrl": "https://github.com/paolo-rossi/delphi-jose-jwt", + "installCommandHtml": "git clone https://github.com/paolo-rossi/delphi-jose-jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": true, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/synopse", + "authorName": "Synopse", + "gitHubRepoPath": "synopse/mORMot", + "repoUrl": "https://github.com/synopse/mORMot", + "installCommandHtml": "git clone https://github.com/synopse/mORMot" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json new file mode 100644 index 00000000..6f1baa2a --- /dev/null +++ b/views/website/libraries/24-PHP.json @@ -0,0 +1,232 @@ +{ + "name": "PHP", + "uniqueClass": "php", + "image": "/img/5.svg", + "bgColor": "rgb(119, 123, 180)", + "libs": [ + { + "minimumVersion": "2.0.0", + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/firebase", + "authorName": "Firebase", + "gitHubRepoPath": "firebase/php-jwt", + "repoUrl": "https://github.com/firebase/php-jwt", + "installCommandHtml": "composer require firebase/php-jwt" + }, + { + "minimumVersion": "3.0.0", + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/lcobucci", + "authorName": "Luís Cobucci", + "gitHubRepoPath": "lcobucci/jwt", + "repoUrl": "https://github.com/lcobucci/jwt", + "installCommandHtml": "composer require lcobucci/jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/emarref", + "authorName": "Emarref", + "gitHubRepoPath": "emarref/jwt", + "repoUrl": "https://github.com/emarref/jwt", + "installCommandHtml": "composer require emarref/jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/Spomky-Labs/jose", + "authorName": "Spomky", + "gitHubRepoPath": "Spomky-Labs/jose", + "repoUrl": "https://github.com/Spomky-Labs/jose", + "installCommandHtml": "composer require spomky-labs/jose" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/nov", + "authorName": "Nov Matake", + "gitHubRepoPath": "nov/jose-php", + "repoUrl": "https://github.com/nov/jose-php", + "installCommandHtml": "composer require gree/jose" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/Spomky", + "authorName": "Spomky", + "gitHubRepoPath": "web-token/jwt-framework", + "repoUrl": "https://github.com/web-token/jwt-framework", + "installCommandHtml": "composer require web-token/jwt-framework" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/vaibhavpandeyvpz", + "authorName": "Vaibhav Pandey", + "gitHubRepoPath": "vaibhavpandeyvpz/jweety", + "repoUrl": "https://github.com/vaibhavpandeyvpz/jweety", + "installCommandHtml": "composer require vaibhavpandeyvpz/jweety" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/lindelius", + "authorName": "Tom Lindelius", + "gitHubRepoPath": "lindelius/php-jwt", + "repoUrl": "https://github.com/lindelius/php-jwt", + "installCommandHtml": "composer require lindelius/php-jwt" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/25-Crystal.json b/views/website/libraries/25-Crystal.json new file mode 100644 index 00000000..c8551f38 --- /dev/null +++ b/views/website/libraries/25-Crystal.json @@ -0,0 +1,36 @@ +{ + "name": "Crystal", + "uniqueClass": "crystal", + "image": "/img/21.svg", + "bgColor": "rgb(176, 176, 176)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/greyblake", + "authorName": "Sergey Potapov", + "gitHubRepoPath": "crystal-community/jwt", + "repoUrl": "https://github.com/crystal-community/jwt", + "installCommandHtml": "git clone https://github.com/crystal-community/jwt.git" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/26-1C.json b/views/website/libraries/26-1C.json new file mode 100644 index 00000000..a84938c2 --- /dev/null +++ b/views/website/libraries/26-1C.json @@ -0,0 +1,36 @@ +{ + "name": "1C", + "uniqueClass": "_1c", + "image": "/img/22.svg", + "bgColor": "rgb(251, 197, 61)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/pintov", + "authorName": "Vasily Pintov", + "gitHubRepoPath": "pintov/1c-jwt", + "repoUrl": "https://github.com/pintov/1c-jwt", + "installCommandHtml": "git clone https://github.com/pintov/1c-jwt" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/27-PostgreSQL.json b/views/website/libraries/27-PostgreSQL.json new file mode 100644 index 00000000..487589d5 --- /dev/null +++ b/views/website/libraries/27-PostgreSQL.json @@ -0,0 +1,36 @@ +{ + "name": "PostgreSQL", + "uniqueClass": "postgresql", + "image": "/img/25.svg", + "bgColor": "rgb(51, 103, 145)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/michelp", + "authorName": "Michel Pelletier", + "gitHubRepoPath": "michelp/pgjwt", + "repoUrl": "https://github.com/michelp/pgjwt", + "installCommandHtml": "CREATE EXTENSION pgjwt;" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json new file mode 100644 index 00000000..d2d0d88d --- /dev/null +++ b/views/website/libraries/3-Java.json @@ -0,0 +1,176 @@ +{ + "name": "Java", + "uniqueClass": "java", + "image": "/img/3.svg", + "bgColor": "rgb(231, 111, 0)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/auth0", + "authorName": "Auth0", + "gitHubRepoPath": "auth0/java-jwt", + "repoUrl": "https://github.com/auth0/java-jwt", + "installCommandHtml": "maven: com.auth0 / java-jwt / 3.3.0" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://twitter.com/__b_c", + "authorName": "Brian Campbell", + "gitHubRepoPath": null, + "repoUrl": "https://bitbucket.org/b_c/jose4j", + "installCommandHtml": "maven: org.bitbucket.b_c / jose4j / 0.6.3" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/connect2id", + "authorName": "connect2id", + "gitHubRepoPath": null, + "repoUrl": "https://bitbucket.org/connect2id/nimbus-jose-jwt", + "installCommandHtml": "maven: com.nimbusds / nimbus-jose-jwt / 5.7" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://twitter.com/lhazlewood", + "authorName": "Les Hazlewood", + "gitHubRepoPath": "jwtk/jjwt", + "repoUrl": "https://github.com/jwtk/jjwt", + "installCommandHtml": "maven: io.jsonwebtoken / jjwt / 0.9.0" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/inversoft", + "authorName": "Inversoft", + "gitHubRepoPath": "inversoft/prime-jwt", + "repoUrl": "https://github.com/inversoft/prime-jwt", + "installCommandHtml": "maven: com.inversoft / prime-jwt / 1.3.0" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/vert-x3", + "authorName": "Vert.x", + "gitHubRepoPath": "vert-x3/vertx-auth", + "repoUrl": "https://github.com/vert-x3/vertx-auth", + "installCommandHtml": "maven: io.vertx / vertx-auth-jwt / 3.5.1" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/4-JavaScript.json b/views/website/libraries/4-JavaScript.json new file mode 100644 index 00000000..612d1875 --- /dev/null +++ b/views/website/libraries/4-JavaScript.json @@ -0,0 +1,64 @@ +{ + "name": "JavaScript", + "uniqueClass": "js", + "image": "/img/6.svg", + "bgColor": "rgb(239, 200, 37)", + "libs": [ + { + "minimumVersion": "3.2.0", + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": false + }, + "authorUrl": "https://github.com/kjur", + "authorName": "Kenji Urushima", + "gitHubRepoPath": "kjur/jsrsasign", + "repoUrl": "https://github.com/kjur/jsrsasign", + "installCommandHtml": "npm install jsrsasign" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/square", + "authorName": "Square, Inc.", + "gitHubRepoPath": "square/js-jose", + "repoUrl": "https://github.com/square/js-jose", + "installCommandHtml": "npm install jose-jwe-jws" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/5-Perl.json b/views/website/libraries/5-Perl.json new file mode 100644 index 00000000..1902baa6 --- /dev/null +++ b/views/website/libraries/5-Perl.json @@ -0,0 +1,36 @@ +{ + "name": "Perl", + "uniqueClass": "perl", + "image": "/img/19.svg", + "bgColor": "rgb(59, 71, 122)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/DCIT", + "authorName": "Karel Miko", + "gitHubRepoPath": "DCIT/perl-Crypt-JWT", + "repoUrl": "https://github.com/DCIT/perl-Crypt-JWT", + "installCommandHtml": "cpanm Crypt::JWT" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/6-Ruby.json b/views/website/libraries/6-Ruby.json new file mode 100644 index 00000000..6b1fe8f2 --- /dev/null +++ b/views/website/libraries/6-Ruby.json @@ -0,0 +1,120 @@ +{ + "name": "Ruby", + "uniqueClass": "ruby", + "image": "/img/7.svg", + "bgColor": "rgb(170, 17, 0)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": null, + "authorName": "Lindsay & Rudat", + "gitHubRepoPath": "progrium/ruby-jwt", + "repoUrl": "https://github.com/progrium/ruby-jwt", + "installCommandHtml": "gem install jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": null, + "authorName": "Fleshman", + "gitHubRepoPath": "garyf/json_web_token", + "repoUrl": "https://github.com/garyf/json_web_token", + "installCommandHtml": "gem install json_web_token" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/nov", + "authorName": "Nov Matake", + "gitHubRepoPath": "nov/json-jwt", + "repoUrl": "https://github.com/nov/json-jwt", + "installCommandHtml": "gem install json-jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/potatosalad", + "authorName": "Andrew Bennett", + "gitHubRepoPath": "potatosalad/ruby-jose", + "repoUrl": "https://github.com/potatosalad/ruby-jose", + "installCommandHtml": "gem install jose" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/7-Elixir.json b/views/website/libraries/7-Elixir.json new file mode 100644 index 00000000..3fe0667d --- /dev/null +++ b/views/website/libraries/7-Elixir.json @@ -0,0 +1,92 @@ +{ + "name": "Elixir", + "uniqueClass": "elixir", + "image": "/img/18.svg", + "bgColor": "rgb(78, 42, 142)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": null, + "authorName": "Fleshman", + "gitHubRepoPath": "garyf/json_web_token_ex", + "repoUrl": "https://github.com/garyf/json_web_token_ex", + "installCommandHtml": "defp deps, do: [{:json_web_token, \"~> 0.2.5\"}]" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": null, + "authorName": "bryanjos", + "gitHubRepoPath": "bryanjos/joken", + "repoUrl": "https://github.com/bryanjos/joken", + "installCommandHtml": "defp deps, do: [{:joken, \"~> 1.2\"}]" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": null, + "authorName": "hassox", + "gitHubRepoPath": "ueberauth/guardian", + "repoUrl": "https://github.com/ueberauth/guardian", + "installCommandHtml": "defp deps, do: [{:guardian, \"~> 0.11.1\"}]" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/8-Erlang.json b/views/website/libraries/8-Erlang.json new file mode 100644 index 00000000..68839fa9 --- /dev/null +++ b/views/website/libraries/8-Erlang.json @@ -0,0 +1,36 @@ +{ + "name": "Erlang", + "uniqueClass": "erlang", + "image": "/img/27.svg", + "bgColor": "rgb(169, 5, 51)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/glejeune", + "authorName": "Gregoire Lejeune", + "gitHubRepoPath": "emedia-project/jwerl", + "repoUrl": "https://github.com/emedia-project/jwerl", + "installCommandHtml": "git clone https://github.com/emedia-project/jwerl.git" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json new file mode 100644 index 00000000..dfe0a814 --- /dev/null +++ b/views/website/libraries/9-Go.json @@ -0,0 +1,260 @@ +{ + "name": "Go", + "uniqueClass": "go", + "image": "/img/8.svg", + "bgColor": "rgb(71, 182, 196)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/dgrijalva", + "authorName": "dgrijalva", + "gitHubRepoPath": "dgrijalva/jwt-go", + "repoUrl": "https://github.com/dgrijalva/jwt-go", + "installCommandHtml": "go get github.com/dgrijalva/jwt-go" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/dvsekhvalnov/jose2go", + "authorName": "DV", + "gitHubRepoPath": "dvsekhvalnov/jose2go", + "repoUrl": "https://github.com/dvsekhvalnov/jose2go", + "installCommandHtml": "go get github.com/dvsekhvalnov/jose2go" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/SermoDigital/jose", + "authorName": "SermoDigital", + "gitHubRepoPath": "SermoDigital/jose", + "repoUrl": "https://github.com/SermoDigital/jose", + "installCommandHtml": "go get github.com/SermoDigital/jose" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/robbert229", + "authorName": "robbert229", + "gitHubRepoPath": "robbert229/jwt", + "repoUrl": "https://github.com/robbert229/jwt", + "installCommandHtml": "go get github.com/robbert229/jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/square", + "authorName": "DV", + "gitHubRepoPath": "square/go-jose", + "repoUrl": "https://github.com/square/go-jose", + "installCommandHtml": "go get github.com/square/go-jose" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/lestrrat", + "authorName": "lestrrat", + "gitHubRepoPath": "lestrrat/go-jwx", + "repoUrl": "https://github.com/lestrrat/go-jwx", + "installCommandHtml": "go get github.com/lestrrat/go-jwx" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": false, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/adam-hanna", + "authorName": "adam-hanna", + "gitHubRepoPath": "adam-hanna/jwt-auth", + "repoUrl": "https://github.com/adam-hanna/jwt-auth", + "installCommandHtml": "go get github.com/adam-hanna/jwt-auth" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/nickvellios", + "authorName": "nickvellios", + "gitHubRepoPath": "nickvellios/gojwt", + "repoUrl": "https://github.com/nickvellios/gojwt", + "installCommandHtml": "go get github.com/nickvellios/gojwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/gbrlsnchs", + "authorName": "gbrlsnchs", + "gitHubRepoPath": "gbrlsnchs/jwt", + "repoUrl": "https://github.com/gbrlsnchs/jwt", + "installCommandHtml": "go get github.com/gbrlsnchs/jwt" + } + ] +} \ No newline at end of file diff --git a/views/website/libraries/data.json b/views/website/libraries/data.json deleted file mode 100644 index 4e4d09af..00000000 --- a/views/website/libraries/data.json +++ /dev/null @@ -1,2186 +0,0 @@ -{ - ".NET": { - "uniqueClass": "net", - "image": "/img/1.svg", - "bgColor": "rgb(42, 168, 229)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://www.microsoft.com/", - "authorName": "Microsoft", - "gitHubRepoPath": "AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet", - "repoUrl": "https://github.com/MSOpenTech/azure-activedirectory-identitymodel-extensions-for-dotnet", - "installCommandHtml": "Install-Package
    System.IdentityModel.Tokens.Jwt" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/dvsekhvalnov/jose-jwt", - "authorName": "DV", - "gitHubRepoPath": "dvsekhvalnov/jose-jwt", - "repoUrl": "https://github.com/dvsekhvalnov/jose-jwt", - "installCommandHtml": "Install-Package
    jose-jwt" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/dvsekhvalnov/jose-rt", - "authorName": "DV", - "gitHubRepoPath": "dvsekhvalnov/jose-rt", - "repoUrl": "https://github.com/dvsekhvalnov/jose-rt", - "installCommandHtml": "Install-Package
    jose-rt" - } - ] - }, - "Python": { - "uniqueClass": "python", - "image": "/img/4.svg", - "bgColor": "rgb(55, 126, 240)", - "libs": [ - { - "minimumVersion": "1.0.1", - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": false, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/jpadilla", - "authorName": "José Padilla", - "gitHubRepoPath": "jpadilla/pyjwt", - "repoUrl": "https://github.com/jpadilla/pyjwt/", - "installCommandHtml": "pip install pyjwt" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/mpdavis", - "authorName": "Michael Davis", - "gitHubRepoPath": "mpdavis/python-jose", - "repoUrl": "https://github.com/mpdavis/python-jose/", - "installCommandHtml": "pip install python-jose" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/simo5", - "authorName": "Simo Sorce", - "gitHubRepoPath": "latchset/jwcrypto", - "repoUrl": "https://github.com/latchset/jwcrypto/", - "installCommandHtml": "pip install jwcrypto" - } - ] - }, - "Node.js": { - "uniqueClass": "node", - "image": "/img/2.svg", - "bgColor": "rgb(138, 194, 68)", - "libs": [ - { - "minimumVersion": "4.2.2", - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": true, - "exp": true, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/auth0", - "authorName": "Auth0", - "gitHubRepoPath": "auth0/node-jsonwebtoken", - "repoUrl": "https://github.com/auth0/node-jsonwebtoken", - "installCommandHtml": "npm install jsonwebtoken" - } - ] - }, - "Java": { - "uniqueClass": "java", - "image": "/img/3.svg", - "bgColor": "rgb(231, 111, 0)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/auth0", - "authorName": "Auth0", - "gitHubRepoPath": "auth0/java-jwt", - "repoUrl": "https://github.com/auth0/java-jwt", - "installCommandHtml": "maven: com.auth0 / java-jwt / 3.3.0" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://twitter.com/__b_c", - "authorName": "Brian Campbell", - "gitHubRepoPath": null, - "repoUrl": "https://bitbucket.org/b_c/jose4j", - "installCommandHtml": "maven: org.bitbucket.b_c / jose4j / 0.6.3" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": false, - "aud": true, - "exp": true, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/connect2id", - "authorName": "connect2id", - "gitHubRepoPath": null, - "repoUrl": "https://bitbucket.org/connect2id/nimbus-jose-jwt", - "installCommandHtml": "maven: com.nimbusds / nimbus-jose-jwt / 5.7" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://twitter.com/lhazlewood", - "authorName": "Les Hazlewood", - "gitHubRepoPath": "jwtk/jjwt", - "repoUrl": "https://github.com/jwtk/jjwt", - "installCommandHtml": "maven: io.jsonwebtoken / jjwt / 0.9.0" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/inversoft", - "authorName": "Inversoft", - "gitHubRepoPath": "inversoft/prime-jwt", - "repoUrl": "https://github.com/inversoft/prime-jwt", - "installCommandHtml": "maven: com.inversoft / prime-jwt / 1.3.0" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/vert-x3", - "authorName": "Vert.x", - "gitHubRepoPath": "vert-x3/vertx-auth", - "repoUrl": "https://github.com/vert-x3/vertx-auth", - "installCommandHtml": "maven: io.vertx / vertx-auth-jwt / 3.5.1" - } - ] - }, - "JavaScript": { - "uniqueClass": "js", - "image": "/img/6.svg", - "bgColor": "rgb(239, 200, 37)", - "libs": [ - { - "minimumVersion": "3.2.0", - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": false - }, - "authorUrl": "https://github.com/kjur", - "authorName": "Kenji Urushima", - "gitHubRepoPath": "kjur/jsrsasign", - "repoUrl": "https://github.com/kjur/jsrsasign", - "installCommandHtml": "npm install jsrsasign" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/square", - "authorName": "Square, Inc.", - "gitHubRepoPath": "square/js-jose", - "repoUrl": "https://github.com/square/js-jose", - "installCommandHtml": "npm install jose-jwe-jws" - } - ] - }, - "Perl": { - "uniqueClass": "perl", - "image": "/img/19.svg", - "bgColor": "rgb(59, 71, 122)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/DCIT", - "authorName": "Karel Miko", - "gitHubRepoPath": "DCIT/perl-Crypt-JWT", - "repoUrl": "https://github.com/DCIT/perl-Crypt-JWT", - "installCommandHtml": "cpanm Crypt::JWT" - } - ] - }, - "Ruby": { - "uniqueClass": "ruby", - "image": "/img/7.svg", - "bgColor": "rgb(170, 17, 0)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": null, - "authorName": "Lindsay & Rudat", - "gitHubRepoPath": "progrium/ruby-jwt", - "repoUrl": "https://github.com/progrium/ruby-jwt", - "installCommandHtml": "gem install jwt" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": null, - "authorName": "Fleshman", - "gitHubRepoPath": "garyf/json_web_token", - "repoUrl": "https://github.com/garyf/json_web_token", - "installCommandHtml": "gem install json_web_token" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/nov", - "authorName": "Nov Matake", - "gitHubRepoPath": "nov/json-jwt", - "repoUrl": "https://github.com/nov/json-jwt", - "installCommandHtml": "gem install json-jwt" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/potatosalad", - "authorName": "Andrew Bennett", - "gitHubRepoPath": "potatosalad/ruby-jose", - "repoUrl": "https://github.com/potatosalad/ruby-jose", - "installCommandHtml": "gem install jose" - } - ] - }, - "Elixir": { - "uniqueClass": "elixir", - "image": "/img/18.svg", - "bgColor": "rgb(78, 42, 142)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": null, - "authorName": "Fleshman", - "gitHubRepoPath": "garyf/json_web_token_ex", - "repoUrl": "https://github.com/garyf/json_web_token_ex", - "installCommandHtml": "defp deps, do: [{:json_web_token, \"~> 0.2.5\"}]" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": null, - "authorName": "bryanjos", - "gitHubRepoPath": "bryanjos/joken", - "repoUrl": "https://github.com/bryanjos/joken", - "installCommandHtml": "defp deps, do: [{:joken, \"~> 1.2\"}]" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": null, - "authorName": "hassox", - "gitHubRepoPath": "ueberauth/guardian", - "repoUrl": "https://github.com/ueberauth/guardian", - "installCommandHtml": "defp deps, do: [{:guardian, \"~> 0.11.1\"}]" - } - ] - }, - "Erlang": { - "uniqueClass": "erlang", - "image": "/img/27.svg", - "bgColor": "rgb(169, 5, 51)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/glejeune", - "authorName": "Gregoire Lejeune", - "gitHubRepoPath": "emedia-project/jwerl", - "repoUrl": "https://github.com/emedia-project/jwerl", - "installCommandHtml": "git clone https://github.com/emedia-project/jwerl.git" - } - ] - }, - "Go": { - "uniqueClass": "go", - "image": "/img/8.svg", - "bgColor": "rgb(71, 182, 196)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": true, - "nbf": true, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/dgrijalva", - "authorName": "dgrijalva", - "gitHubRepoPath": "dgrijalva/jwt-go", - "repoUrl": "https://github.com/dgrijalva/jwt-go", - "installCommandHtml": "go get github.com/dgrijalva/jwt-go" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/dvsekhvalnov/jose2go", - "authorName": "DV", - "gitHubRepoPath": "dvsekhvalnov/jose2go", - "repoUrl": "https://github.com/dvsekhvalnov/jose2go", - "installCommandHtml": "go get github.com/dvsekhvalnov/jose2go" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/SermoDigital/jose", - "authorName": "SermoDigital", - "gitHubRepoPath": "SermoDigital/jose", - "repoUrl": "https://github.com/SermoDigital/jose", - "installCommandHtml": "go get github.com/SermoDigital/jose" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": false, - "hs512": true, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/robbert229", - "authorName": "robbert229", - "gitHubRepoPath": "robbert229/jwt", - "repoUrl": "https://github.com/robbert229/jwt", - "installCommandHtml": "go get github.com/robbert229/jwt" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/square", - "authorName": "DV", - "gitHubRepoPath": "square/go-jose", - "repoUrl": "https://github.com/square/go-jose", - "installCommandHtml": "go get github.com/square/go-jose" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/lestrrat", - "authorName": "lestrrat", - "gitHubRepoPath": "lestrrat/go-jwx", - "repoUrl": "https://github.com/lestrrat/go-jwx", - "installCommandHtml": "go get github.com/lestrrat/go-jwx" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": true, - "nbf": true, - "iat": false, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/adam-hanna", - "authorName": "adam-hanna", - "gitHubRepoPath": "adam-hanna/jwt-auth", - "repoUrl": "https://github.com/adam-hanna/jwt-auth", - "installCommandHtml": "go get github.com/adam-hanna/jwt-auth" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": true, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": false, - "hs512": false, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/nickvellios", - "authorName": "nickvellios", - "gitHubRepoPath": "nickvellios/gojwt", - "repoUrl": "https://github.com/nickvellios/gojwt", - "installCommandHtml": "go get github.com/nickvellios/gojwt" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/gbrlsnchs", - "authorName": "gbrlsnchs", - "gitHubRepoPath": "gbrlsnchs/jwt", - "repoUrl": "https://github.com/gbrlsnchs/jwt", - "installCommandHtml": "go get github.com/gbrlsnchs/jwt" - } - ] - }, - "Groovy": { - "uniqueClass": "groovy", - "image": "/img/24.svg", - "bgColor": "rgb(99, 152, 170)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": false, - "hs512": false, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/kaleidos", - "authorName": "Kaleidos", - "gitHubRepoPath": "kaleidos/grails-security-stateless", - "repoUrl": "https://github.com/kaleidos/grails-security-stateless", - "installCommandHtml": "compile \"org.grails.plugins:security-stateless:0.0.9\"" - } - ] - }, - "Haskell": { - "uniqueClass": "haskell", - "image": "/img/9.svg", - "bgColor": "rgb(102, 102, 102)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": false, - "hs512": false, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://bitbucket.org/ssaasen", - "authorName": "Stefan Saasen", - "gitHubRepoPath": null, - "repoUrl": "https://bitbucket.org/ssaasen/haskell-jwt", - "installCommandHtml": "cabal install jwt" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": false, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/frasertweedale", - "authorName": "Fraser Tweedale", - "gitHubRepoPath": "frasertweedale/hs-jose", - "repoUrl": "https://github.com/frasertweedale/hs-jose", - "installCommandHtml": "cabal install jose" - } - ] - }, - "Haxe": { - "uniqueClass": "haxe", - "image": "/img/23.svg", - "bgColor": "rgb(234, 130, 32)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": false, - "aud": true, - "exp": true, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": false, - "hs512": false, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/kevinresol", - "authorName": "Kevin Leung", - "gitHubRepoPath": "kevinresol/jsonwebtoken", - "repoUrl": "https://github.com/kevinresol/jsonwebtoken", - "installCommandHtml": "haxelib install jsonwebtoken" - } - ] - }, - "Rust": { - "uniqueClass": "rust", - "image": "/img/10.svg", - "bgColor": "rgb(129, 70, 38)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/GildedHonour", - "authorName": "GildedHonour", - "gitHubRepoPath": "GildedHonour/rust-jwt", - "repoUrl": "https://github.com/GildedHonour/rust-jwt", - "installCommandHtml": "cargo: name = \"frank_jwt\" version = \"*\"" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/Keats", - "authorName": "Keats", - "gitHubRepoPath": "Keats/jsonwebtoken", - "repoUrl": "https://github.com/Keats/jsonwebtoken", - "installCommandHtml": "cargo: name = \"jsonwebtoken\" version = \"*\"" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/lawliet89", - "authorName": "Yong Wen Chua", - "gitHubRepoPath": "lawliet89/biscuit", - "repoUrl": "https://github.com/lawliet89/biscuit", - "installCommandHtml": "Cargo.toml: biscuit = \"*\"" - } - ] - }, - "Lua": { - "uniqueClass": "lua", - "image": "/img/11.svg", - "bgColor": "rgb(0, 0, 128)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": true, - "nbf": true, - "iat": false, - "jti": false, - "hs256": true, - "hs384": false, - "hs512": true, - "rs256": true, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/SkyLothar", - "authorName": "SkyLothar", - "gitHubRepoPath": "SkyLothar/lua-resty-jwt", - "repoUrl": "https://github.com/SkyLothar/lua-resty-jwt", - "installCommandHtml": "git clone https://github.com/SkyLothar/lua-resty-jwt.git" - } - ] - }, - "Scala": { - "uniqueClass": "scala", - "image": "/img/12.svg", - "bgColor": "rgb(234, 45, 46)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/jasongoodwin", - "authorName": "jasongoodwin", - "gitHubRepoPath": "jasongoodwin/authentikat-jwt", - "repoUrl": "https://github.com/jasongoodwin/authentikat-jwt", - "installCommandHtml": "sbt: \"com.jason-goodwin\" %% \"authentikat-jwt\" % \"0.4.5\"" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/pauldijou", - "authorName": "pauldijou", - "gitHubRepoPath": "pauldijou/jwt-scala", - "repoUrl": "https://github.com/pauldijou/jwt-scala", - "installCommandHtml": "sbt: \"pdi\" %% \"jwt-core\" % \"0.14.1\"" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/iain-logan", - "authorName": "iain-logan", - "gitHubRepoPath": "iain-logan/jwt", - "repoUrl": "https://github.com/iain-logan/jwt", - "installCommandHtml": "libraryDependencies += \"io.igl\" %% \"jwt\" % \"1.2.2\"" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": false, - "exp": false, - "nbf": false, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/janjaali", - "authorName": "janjaali", - "gitHubRepoPath": "janjaali/spray-jwt", - "repoUrl": "https://github.com/janjaali/spray-jwt", - "installCommandHtml": "libraryDependencies += \"com.github.janjaali\" %% \"spray-jwt\" % \"1.0.0\"" - } - ] - }, - "D": { - "uniqueClass": "d", - "image": "/img/14.svg", - "bgColor": "rgb(180, 65, 55)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/olehlong", - "authorName": "olehlong", - "gitHubRepoPath": "olehlong/jwtd", - "repoUrl": "https://github.com/olehlong/jwtd", - "installCommandHtml": "dub fetch jwtd" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": true, - "nbf": true, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/zolamk", - "authorName": "zolamk", - "gitHubRepoPath": "zolamk/jwt", - "repoUrl": "https://github.com/zolamk/jwt", - "installCommandHtml": "dub fetch jwt" - } - ] - }, - "Clojure": { - "uniqueClass": "clojure", - "image": "/img/13.svg", - "bgColor": "rgb(88, 129, 216)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": false, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/niwinz", - "authorName": "Andrey Antukh", - "gitHubRepoPath": "funcool/buddy", - "repoUrl": "https://github.com/funcool/buddy/", - "installCommandHtml": "lein: [funcool/buddy \"0.6.0\"]" - } - ] - }, - "Objective-C": { - "uniqueClass": "objective-c", - "image": "/img/20.svg", - "bgColor": "rgba(0, 0, 0, 0)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": null, - "authorName": "yourkarma & lolgear", - "gitHubRepoPath": "yourkarma/JWT", - "repoUrl": "https://github.com/yourkarma/JWT", - "installCommandHtml": "pod 'JWT'" - } - ] - }, - "Swift": { - "uniqueClass": "swift", - "image": "/img/15.svg", - "bgColor": "rgb(234, 45, 46)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": false, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/kylef", - "authorName": "Kyle Fuller", - "gitHubRepoPath": "kylef/JSONWebToken.swift", - "repoUrl": "https://github.com/kylef/JSONWebToken.swift", - "installCommandHtml": "pod 'JSONWebToken'" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/siemensikkema", - "authorName": "Siemen Sikkema", - "gitHubRepoPath": "vapor/jwt", - "repoUrl": "https://github.com/vapor/jwt", - "installCommandHtml": ".Package(url:\"https://github.com/vapor/jwt.git/", majorVersion: 1)" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/Wstunes", - "authorName": "Wstunes", - "gitHubRepoPath": "Wstunes/SwiftyJWT", - "repoUrl": "https://github.com/Wstunes/SwiftyJWT", - "installCommandHtml": "pod 'SwiftyJWT'" - } - ] - }, - "C": { - "uniqueClass": "c", - "image": "/img/16.svg", - "bgColor": "rgb(81, 128, 210)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/benmcollins", - "authorName": "benmcollins", - "gitHubRepoPath": "benmcollins/libjwt", - "repoUrl": "https://github.com/benmcollins/libjwt", - "installCommandHtml": "add-apt-repository ppa:ben-collins/libjwt" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/cisco/cjose", - "authorName": "linuxwolf", - "gitHubRepoPath": "cisco/cjose", - "repoUrl": "https://github.com/cisco/cjose", - "installCommandHtml": "go get github.com/cisco/cjose" - } - ] - }, - "C++": { - "uniqueClass": "cpp", - "image": "/img/26.svg", - "bgColor": "rgb(0, 89, 156)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/troian", - "authorName": "Artur Troian", - "gitHubRepoPath": "troian/josepp", - "repoUrl": "https://github.com/troian/josepp", - "installCommandHtml": "git clone https://github.com/troian/josepp" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/Thalhammer", - "authorName": "Dominik Thalhammer", - "gitHubRepoPath": "Thalhammer/jwt-cpp", - "repoUrl": "https://github.com/Thalhammer/jwt-cpp", - "installCommandHtml": "git clone https://github.com/Thalhammer/jwt-cpp" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/arun11299", - "authorName": "Arun Muralidharan", - "gitHubRepoPath": "arun11299/cpp-jwt", - "repoUrl": "https://github.com/arun11299/cpp-jwt", - "installCommandHtml": "git clone https://github.com/arun11299/cpp-jwt" - } - ] - }, - "kdb+/Q": { - "uniqueClass": "q", - "image": "/img/q.svg", - "bgColor": "rgb(102, 102, 102)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/tjcelaya", - "authorName": "tjcelaya", - "gitHubRepoPath": "tjcelaya/jwt.q", - "repoUrl": "https://github.com/tjcelaya/jwt.q", - "installCommandHtml": "git clone https://github.com/tjcelaya/jwt.q" - } - ] - }, - "Delphi": { - "uniqueClass": "delphi", - "image": "/img/17.svg", - "bgColor": "rgb(227, 28, 35)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/paolo-rossi", - "authorName": "Paolo Rossi", - "gitHubRepoPath": "paolo-rossi/delphi-jose-jwt", - "repoUrl": "https://github.com/paolo-rossi/delphi-jose-jwt", - "installCommandHtml": "git clone https://github.com/paolo-rossi/delphi-jose-jwt" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": false, - "hs512": false, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": true, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/synopse", - "authorName": "Synopse", - "gitHubRepoPath": "synopse/mORMot", - "repoUrl": "https://github.com/synopse/mORMot", - "installCommandHtml": "git clone https://github.com/synopse/mORMot" - } - ] - }, - "PHP": { - "uniqueClass": "php", - "image": "/img/5.svg", - "bgColor": "rgb(119, 123, 180)", - "libs": [ - { - "minimumVersion": "2.0.0", - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": false, - "aud": false, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/firebase", - "authorName": "Firebase", - "gitHubRepoPath": "firebase/php-jwt", - "repoUrl": "https://github.com/firebase/php-jwt", - "installCommandHtml": "composer require firebase/php-jwt" - }, - { - "minimumVersion": "3.0.0", - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/lcobucci", - "authorName": "Luís Cobucci", - "gitHubRepoPath": "lcobucci/jwt", - "repoUrl": "https://github.com/lcobucci/jwt", - "installCommandHtml": "composer require lcobucci/jwt" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/emarref", - "authorName": "Emarref", - "gitHubRepoPath": "emarref/jwt", - "repoUrl": "https://github.com/emarref/jwt", - "installCommandHtml": "composer require emarref/jwt" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/Spomky-Labs/jose", - "authorName": "Spomky", - "gitHubRepoPath": "Spomky-Labs/jose", - "repoUrl": "https://github.com/Spomky-Labs/jose", - "installCommandHtml": "composer require spomky-labs/jose" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/nov", - "authorName": "Nov Matake", - "gitHubRepoPath": "nov/jose-php", - "repoUrl": "https://github.com/nov/jose-php", - "installCommandHtml": "composer require gree/jose" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true - }, - "authorUrl": "https://github.com/Spomky", - "authorName": "Spomky", - "gitHubRepoPath": "web-token/jwt-framework", - "repoUrl": "https://github.com/web-token/jwt-framework", - "installCommandHtml": "composer require web-token/jwt-framework" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": false, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/vaibhavpandeyvpz", - "authorName": "Vaibhav Pandey", - "gitHubRepoPath": "vaibhavpandeyvpz/jweety", - "repoUrl": "https://github.com/vaibhavpandeyvpz/jweety", - "installCommandHtml": "composer require vaibhavpandeyvpz/jweety" - }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/lindelius", - "authorName": "Tom Lindelius", - "gitHubRepoPath": "lindelius/php-jwt", - "repoUrl": "https://github.com/lindelius/php-jwt", - "installCommandHtml": "composer require lindelius/php-jwt" - } - ] - }, - "Crystal": { - "uniqueClass": "crystal", - "image": "/img/21.svg", - "bgColor": "rgb(176, 176, 176)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/greyblake", - "authorName": "Sergey Potapov", - "gitHubRepoPath": "crystal-community/jwt", - "repoUrl": "https://github.com/crystal-community/jwt", - "installCommandHtml": "git clone https://github.com/crystal-community/jwt.git" - } - ] - }, - "1C": { - "uniqueClass": "_1c", - "image": "/img/22.svg", - "bgColor": "rgb(251, 197, 61)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": false, - "hs512": false, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/pintov", - "authorName": "Vasily Pintov", - "gitHubRepoPath": "pintov/1c-jwt", - "repoUrl": "https://github.com/pintov/1c-jwt", - "installCommandHtml": "git clone https://github.com/pintov/1c-jwt" - } - ] - }, - "PostgreSQL": { - "uniqueClass": "postgresql", - "image": "/img/25.svg", - "bgColor": "rgb(51, 103, 145)", - "libs": [ - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false - }, - "authorUrl": "https://github.com/michelp", - "authorName": "Michel Pelletier", - "gitHubRepoPath": "michelp/pgjwt", - "repoUrl": "https://github.com/michelp/pgjwt", - "installCommandHtml": "CREATE EXTENSION pgjwt;" - } - ] - } -} \ No newline at end of file diff --git a/views/website/libraries/support/get-languages.js b/views/website/libraries/support/get-languages.js new file mode 100644 index 00000000..9463d8f5 --- /dev/null +++ b/views/website/libraries/support/get-languages.js @@ -0,0 +1,26 @@ +const fs = require('fs'); + +function numericCompare(a, b) { + const lhs = parseInt(a, 10); + const rhs = parseInt(b, 10); + + return lhs - rhs; +} + +module.exports = function getLanguages() { + let dirEntries = fs.readdirSync(`${__dirname}/../`); + dirEntries = dirEntries.filter(e => e.endsWith('.json')); + dirEntries.sort(numericCompare); + + console.log('Found languages:\n', dirEntries); + + const result = []; + dirEntries.forEach(entry => { + const data = JSON.parse( + fs.readFileSync(`${__dirname}/../${entry}`).toString()); + + result.push(data); + }); + + return result; +} diff --git a/views/website/libraries/support/getLibsData.js b/views/website/libraries/support/get-libs-data.js similarity index 100% rename from views/website/libraries/support/getLibsData.js rename to views/website/libraries/support/get-libs-data.js diff --git a/views/website/libraries/support/split-libs.js b/views/website/libraries/support/split-libs.js new file mode 100644 index 00000000..9ed48bf4 --- /dev/null +++ b/views/website/libraries/support/split-libs.js @@ -0,0 +1,10 @@ +const data = require('../data.json'); +const fs = require('fs'); + +Object.keys(data).forEach((lang, idx) => { + fs.writeFileSync(`../${idx}-${lang.replace('/', '_')}.json`, + JSON.stringify(Object.assign({ + name: lang + }, data[lang]), + null, ' ')); +}); diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index cdfaef71..03098959 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -1,7 +1,7 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) .panel-heading(data-control) img(src=lang.image) - h3(style=`background-color: ${lang.bgColor}`) #{langName} + h3(style=`background-color: ${lang.bgColor}`) #{lang.name} .panel-wrap(data-content) if lib.minimumVersion .version From 179df92ab80b39ef99efb898dd95c86053ff729a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 28 Mar 2018 20:48:04 -0300 Subject: [PATCH 164/611] Implements PR #299, PHP library update. --- views/website/libraries/24-PHP.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index 6f1baa2a..f5a520c1 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -20,8 +20,8 @@ "hs384": true, "hs512": true, "rs256": true, - "rs384": false, - "rs512": false, + "rs384": true, + "rs512": true, "es256": false, "es384": false, "es512": false From 7fcc6f7a26d986db731c0160f10a059e7b8acb04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 28 Mar 2018 21:47:37 -0300 Subject: [PATCH 165/611] Fix language filter dropbox. --- views/website/libraries.pug | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 86dc6d0a..a5521b0a 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -9,8 +9,11 @@ section#libraries-io.libraries-jwt select#libraries-select option(value='*', selected='') All // Languages must be in alphabetic order - each lang in Object.keys(languages).sort() - option(value=`.${languages[lang].uniqueClass}`) #{lang} + - + const sortedLangs = Array.from(languages); + sortedLangs.sort((a, b) => a.name.localeCompare(b.name)); + each lang in sortedLangs + option(value=`.${lang.uniqueClass}`) #{lang.name} .warning b Warning: From e2a9ae9510ad5a6a32c95686bc97afa4d65e6750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 29 Mar 2018 01:58:46 -0300 Subject: [PATCH 166/611] Library schema validation plus other tests. --- package-lock.json | 44 +++++++++ package.json | 3 + test/unit/index.js | 1 + test/unit/libraries.js | 41 +++++++++ .../libraries/support/language-schema.js | 91 +++++++++++++++++++ webpack.website-unit-tests.js | 3 + 6 files changed, 183 insertions(+) create mode 100644 test/unit/libraries.js create mode 100644 views/website/libraries/support/language-schema.js diff --git a/package-lock.json b/package-lock.json index 85cac261..3d534ec8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2275,6 +2275,16 @@ "check-error": "1.0.2" } }, + "chai-json-schema": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/chai-json-schema/-/chai-json-schema-1.5.0.tgz", + "integrity": "sha1-aWBxnkD3H9Wzd8koLlyaRnmUdPY=", + "dev": true, + "requires": { + "jsonpointer.js": "0.4.0", + "tv4": "1.2.7" + } + }, "chalk": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", @@ -3091,6 +3101,12 @@ "is-plain-object": "2.0.4" } }, + "deep-freeze": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", + "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", + "dev": true + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -7388,6 +7404,12 @@ "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", "dev": true }, + "jsonpointer.js": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/jsonpointer.js/-/jsonpointer.js-0.4.0.tgz", + "integrity": "sha1-ACyxI/dnqv3rAZYTLOXE+ZQcyro=", + "dev": true + }, "jsonwebtoken": { "version": "7.1.9", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.1.9.tgz", @@ -11460,6 +11482,22 @@ "safe-buffer": "5.1.1" } }, + "tv4": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.2.7.tgz", + "integrity": "sha1-vSk4mvxzreSa5fSBQrXVRL9o0SA=", + "dev": true + }, + "tv4-formats": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tv4-formats/-/tv4-formats-3.0.3.tgz", + "integrity": "sha1-a3l43S3IqjnQrCWU3dtvbAy/2SE=", + "dev": true, + "requires": { + "moment": "2.21.0", + "validator": "8.2.0" + } + }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", @@ -11999,6 +12037,12 @@ "spdx-expression-parse": "3.0.0" } }, + "validator": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", + "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", + "dev": true + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", diff --git a/package.json b/package.json index 0bb6b20c..49656fbf 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,10 @@ "chai": "^4.1.2", "chai-arrays": "^2.0.0", "chai-as-promised": "^7.1.1", + "chai-json-schema": "^1.5.0", "clipboard-polyfill": "^2.4.6", "codemirror": "^5.33.0", + "deep-freeze": "0.0.1", "flipclock": "^0.7.8", "grunt": "^1.0.1", "grunt-cli": "^1.2.0", @@ -50,6 +52,7 @@ "source-map-support": "^0.5.3", "stylus": "^0.54.5", "tippy.js": "^2.3.0", + "tv4-formats": "^3.0.3", "uglifyjs-webpack-plugin": "^1.1.6", "web-ext": "^2.4.0", "webpack": "^4.1.0", diff --git a/test/unit/index.js b/test/unit/index.js index f71ce0d7..8e1ba9a2 100644 --- a/test/unit/index.js +++ b/test/unit/index.js @@ -1,4 +1,5 @@ import 'source-map-support/register'; import './utils.js'; +import './libraries.js'; import './editor'; diff --git a/test/unit/libraries.js b/test/unit/libraries.js new file mode 100644 index 00000000..ba8e809c --- /dev/null +++ b/test/unit/libraries.js @@ -0,0 +1,41 @@ +import chai from 'chai'; +import chaiJsonSchema from 'chai-json-schema'; +import deepFreeze from 'deep-freeze'; +import formats from 'tv4-formats'; + +import getLanguages from + '../../views/website/libraries/support/get-languages.js'; +import languageSchema from + '../../views/website/libraries/support/language-schema.js'; + +chai.use(chaiJsonSchema); +chai.should(); +chai.tv4.addFormat(formats); + +describe('Libraries', function() { + const languages = deepFreeze(getLanguages()); + + it('Each language has a unique name', function() { + const names = new Set(); + + for(const lang of languages) { + names.has(lang.name).should.be.false; + names.add(lang.name); + } + }); + + it('uniqueClass is unique for each language', function() { + const classes = new Set(); + + for(const lang of languages) { + classes.has(lang.uniqueClass).should.be.false; + classes.add(lang.uniqueClass); + } + }); + + it('Have a correct schema', function() { + for(const lang of languages) { + lang.should.be.jsonSchema(languageSchema); + } + }); +}); diff --git a/views/website/libraries/support/language-schema.js b/views/website/libraries/support/language-schema.js new file mode 100644 index 00000000..889ae949 --- /dev/null +++ b/views/website/libraries/support/language-schema.js @@ -0,0 +1,91 @@ +module.exports = { + type: 'object', + required: ['name', 'uniqueClass', 'image', 'bgColor', 'libs'], + properties: { + name: { + type: 'string', + minLength: 1, + }, + uniqueClass: { + type: 'string', + minLength: 1, + // Not entirely correct, but good enough + pattern: /[a-zA-Z_][\w\-]*/ + }, + image: { + type: 'string', + minLength: 1, + pattern: /\/img\/.*/ + }, + bgColor: { + type: 'string', + minLength: 1 + }, + libs: { + type: 'array', + uniqueItems: true, + items: { + type: 'object', + required: ['minimumVersion', 'support', 'authorUrl', 'authorName', + 'gitHubRepoPath', 'repoUrl', 'installCommandHtml'], + properties: { + minimumVersion: { + type: ['null', 'string'], + minLength: 1 + }, + authorUrl: { + type: ['null', 'string'], + minLength: 1, + // Format validator fails on null values, sigh. + //format: 'url' + }, + authorName: { + type: 'string', + minLength: 1 + }, + gitHubRepoPath: { + type: ['null', 'string'], + minLength: 1, + // Not entirely correct, but good enough + pattern: /.*\/.*/ + }, + repoUrl: { + type: 'string', + minLength: 1, + format: 'url' + }, + installCommandHtml: { + type: 'string', + minLength: 1 + }, + support: { + type: 'object', + required: ['sign', 'verify', 'iss', 'sub', 'aud', 'exp', 'nbf', + 'iat', 'jti', 'hs256', 'hs384', 'hs512', 'rs256', + 'rs384', 'rs512', 'es256', 'es384', 'es512'], + properties: { + sign: { type: 'boolean' }, + verify: { type: 'boolean' }, + iss: { type: 'boolean' }, + sub: { type: 'boolean' }, + aud: { type: 'boolean' }, + exp: { type: 'boolean' }, + nbf: { type: 'boolean' }, + iat: { type: 'boolean' }, + jti: { type: 'boolean' }, + hs256: { type: 'boolean' }, + hs384: { type: 'boolean' }, + hs512: { type: 'boolean' }, + rs256: { type: 'boolean' }, + rs384: { type: 'boolean' }, + rs512: { type: 'boolean' }, + es256: { type: 'boolean' }, + es384: { type: 'boolean' }, + es512: { type: 'boolean' }, + } + } + } + } + } + } +}; diff --git a/webpack.website-unit-tests.js b/webpack.website-unit-tests.js index b3e85a39..8900ff4d 100644 --- a/webpack.website-unit-tests.js +++ b/webpack.website-unit-tests.js @@ -12,6 +12,9 @@ module.exports = merge(common, { path: __dirname + '/dist/test' }, target: 'node', + node: { + __dirname: true + }, module: { rules: [{ test: /\.js$/, From 7a265d18584f8b5304f04eca2aba8b47f55e372c Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 18 Apr 2018 15:52:39 +0200 Subject: [PATCH 167/611] fix fragment callback parsing, parse other possible tokens - fix parsing response_mode=fragment responses where the token is the first parameter - parse id_token and access_token in addition to value and token --- src/utils.js | 26 +++++++++++++++++++++++--- src/website/index.js | 13 ++++++------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/utils.js b/src/utils.js index 4a4d952b..e874ba09 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,6 +1,7 @@ import { KEYUTIL } from 'jsrsasign'; import log from 'loglevel'; import clipboard from 'clipboard-polyfill'; +import { isToken } from './editor/jwt.js'; export function httpGet(url, cache = true) { return new Promise((resolve, reject) => { @@ -117,6 +118,25 @@ export function copyTokenLink(token, publicKeyOptional) { return url; } +function regexp(body, flag) { + return new RegExp("[?&#]" + body + "(?:=([^&#]*)|&|#|$)", flag); +} + +const tokenRegexp = regexp('((?:id_|access_)?token)', 'g'); + +export function getTokensFromLocation() { + const { href } = window.location; + let name, value; + const val = {}; + + try { + while ([, name, value] = tokenRegexp.exec(href)) { + if(isToken(value)) val[name] = value; + } + } catch (err) {} + return val; +} + // https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript export function getParameterByName(name, url) { if(!url) { @@ -125,16 +145,16 @@ export function getParameterByName(name, url) { name = name.replace(/[\[\]]/g, "\\$&"); - const regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"); + const regex = regexp(name); const results = regex.exec(url); if(!results) { return null; } - if(!results[2]) { + if(!results[1]) { return ''; } - return decodeURIComponent(results[2].replace(/\+/g, " ")); + return decodeURIComponent(results[1].replace(/\+/g, " ")); } export function isWideScreen() { diff --git a/src/website/index.js b/src/website/index.js index ec767c99..9160519e 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -5,7 +5,7 @@ import { setupTokenEditor, setTokenEditorValue } from '../editor'; import { setupJwtCounter } from './counter.js'; import { setupSmoothScrolling } from './smooth-scrolling.js'; import { setupHighlighting } from './highlighting.js'; -import { getParameterByName } from '../utils.js'; +import { getParameterByName, getTokensFromLocation } from '../utils.js'; import { isChrome, isFirefox } from './utils.js'; import { setupShareJwtButton } from '../share-button.js'; import { @@ -24,18 +24,17 @@ function parseLocationQuery() { const publicKey = getParameterByName('publicKey'); const value = getParameterByName('value'); const token = getParameterByName('token'); + const { id_token, access_token } = getTokensFromLocation(); let scroll = false; if(publicKey) { publicKeyTextArea.value = publicKey; scroll = true; } - if(value) { - setTokenEditorValue(value); - scroll = true; - } - if(token) { - setTokenEditorValue(token); + + const val = value || token || id_token || access_token; + if(val) { + setTokenEditorValue(val); scroll = true; } From 2ce0db101e0557b364083bd70cc585fd7416d54c Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 18 Apr 2018 17:11:47 +0200 Subject: [PATCH 168/611] add location parsing tests --- test/functional/editor.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/functional/editor.js b/test/functional/editor.js index c112a8da..7a10ca4c 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -31,6 +31,23 @@ describe('Editor', function() { await this.page.waitFor(3000); expect(await this.page.$eval('#debugger-io', isVisible)).to.be.true; }); + + const token = 'eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.'; + ['token', 'value', 'id_token', 'access_token'].forEach((key) => { + [ + `/?${key}=${token}`, + `/#${key}=${token}`, + `/?foo=bar&${key}=${token}`, + `/#foo=bar&${key}=${token}`, + ].forEach((structure, i) => { + it(`Should parse ${key} from window.location.href [${i}]`, async function () { + await this.page.goto(`http://localhost:8000${structure}${key}${i}`); + expect(await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + })).to.equal(`${token}${key}${i}`); + }); + }) + }); it('HS256 should be selected by default', async function() { const selected = await this.page.$eval('#algorithm-select', select => { From 56bae1b9b67498c4d141d0b2026286806b45616d Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 18 Apr 2018 17:17:43 +0200 Subject: [PATCH 169/611] use getTokensFromLocation for all token params --- src/utils.js | 2 +- src/website/index.js | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/utils.js b/src/utils.js index e874ba09..335018ee 100644 --- a/src/utils.js +++ b/src/utils.js @@ -122,7 +122,7 @@ function regexp(body, flag) { return new RegExp("[?&#]" + body + "(?:=([^&#]*)|&|#|$)", flag); } -const tokenRegexp = regexp('((?:id_|access_)?token)', 'g'); +const tokenRegexp = regexp('((?:id_|access_)?token|value)', 'g'); export function getTokensFromLocation() { const { href } = window.location; diff --git a/src/website/index.js b/src/website/index.js index 9160519e..423d17ba 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -22,9 +22,7 @@ import { function parseLocationQuery() { const publicKey = getParameterByName('publicKey'); - const value = getParameterByName('value'); - const token = getParameterByName('token'); - const { id_token, access_token } = getTokensFromLocation(); + const { id_token, access_token, value, token } = getTokensFromLocation(); let scroll = false; if(publicKey) { From 91cfa3f44522baca10157fa84273c86f33bc5be5 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 18 Apr 2018 17:22:12 +0200 Subject: [PATCH 170/611] isolate parsing tests --- test/functional/editor.js | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/test/functional/editor.js b/test/functional/editor.js index 7a10ca4c..8a896f6b 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -31,23 +31,6 @@ describe('Editor', function() { await this.page.waitFor(3000); expect(await this.page.$eval('#debugger-io', isVisible)).to.be.true; }); - - const token = 'eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.'; - ['token', 'value', 'id_token', 'access_token'].forEach((key) => { - [ - `/?${key}=${token}`, - `/#${key}=${token}`, - `/?foo=bar&${key}=${token}`, - `/#foo=bar&${key}=${token}`, - ].forEach((structure, i) => { - it(`Should parse ${key} from window.location.href [${i}]`, async function () { - await this.page.goto(`http://localhost:8000${structure}${key}${i}`); - expect(await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - })).to.equal(`${token}${key}${i}`); - }); - }) - }); it('HS256 should be selected by default', async function() { const selected = await this.page.$eval('#algorithm-select', select => { @@ -1168,4 +1151,23 @@ describe('Editor', function() { } ); }); + + describe('parsing tokens from window.location.href', () => { + const token = 'eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.'; + ['token', 'value', 'id_token', 'access_token'].forEach((key) => { + [ + `/?${key}=${token}`, + `/#${key}=${token}`, + `/?foo=bar&${key}=${token}`, + `/#foo=bar&${key}=${token}`, + ].forEach((structure, i) => { + it(`Should parse ${key} from window.location.href [${i}]`, async function () { + await this.page.goto(`http://localhost:8000${structure}${key}${i}`); + expect(await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + })).to.equal(`${token}${key}${i}`); + }); + }) + }); + }); }); From 370fe1824964d842e2dda71724c717b7c430c78b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 20 Apr 2018 15:10:26 -0300 Subject: [PATCH 171/611] Removed stray code. --- src/editor/index.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/editor/index.js b/src/editor/index.js index e4ce07a8..f3a158df 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -341,17 +341,6 @@ function setupTabEvents() { }); } -function copyTokenHandler(event) { - event.preventDefault(); - - const token = getTrimmedValue(tokenEditor); - const publicKey = isPublicKeyAlgorithm(getSelectedAlgorithm()) ? - publicKeyTextArea.value : - null; - - copyTokenLink(token, publicKey); -} - function setupEvents() { // The event manager lets us enable/disable events as needed without // manually tracking them. Events that need to be disabled should be @@ -382,8 +371,6 @@ function setupEvents() { // Human readable timestamp tooltips payloadElement.addEventListener('mousemove', timeTooltipHandler); - // Temporary (share button not ready yet) - signatureStatusElement.addEventListener('click', copyTokenHandler); setupTabEvents(); } From a8c6480bbcf643bdbacf56a94052e9195d55824f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 20 Apr 2018 15:41:56 -0300 Subject: [PATCH 172/611] Do not put IDE files in .gitignore, handle them locally. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2be5df3e..9871fe48 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ dist .tmp .DS_Store npm-debug.log -.vscode + From 6845f51ca2cde237551654ce00924b4d4bee28e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 20 Apr 2018 17:46:59 -0300 Subject: [PATCH 173/611] Manual merge of PR #301: new Go library. --- views/website/libraries/9-Go.json | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index dfe0a814..34e13bbf 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -255,6 +255,34 @@ "gitHubRepoPath": "gbrlsnchs/jwt", "repoUrl": "https://github.com/gbrlsnchs/jwt", "installCommandHtml": "go get github.com/gbrlsnchs/jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/pascaldekloe", + "authorName": "Pascal de Kloe", + "gitHubRepoPath": "pascaldekloe/jwt", + "repoUrl": "https://github.com/pascaldekloe/jwt", + "installCommandHtml": "go get github.com/pascaldekloe/jwt" } ] } \ No newline at end of file From fbb63a56ad187f9ae88b47bbc385ea1d52a3f3ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 20 Apr 2018 19:11:06 -0300 Subject: [PATCH 174/611] Manual merge of PR #302: new Python library. --- views/website/libraries/1-Python.json | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/views/website/libraries/1-Python.json b/views/website/libraries/1-Python.json index 1d352e1e..ddb6003c 100644 --- a/views/website/libraries/1-Python.json +++ b/views/website/libraries/1-Python.json @@ -87,6 +87,34 @@ "gitHubRepoPath": "latchset/jwcrypto", "repoUrl": "https://github.com/latchset/jwcrypto/", "installCommandHtml": "pip install jwcrypto" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/lepture", + "authorName": "Hsiaoming Yang", + "gitHubRepoPath": "lepture/authlib", + "repoUrl": "https://github.com/lepture/authlib", + "installCommandHtml": "pip install authlib" } ] } \ No newline at end of file From c920ad6768a2329abda5dcec21194ebfe6eb67a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 23 Apr 2018 19:53:15 -0300 Subject: [PATCH 175/611] Remove duplicate code, move functions of little use to better places. --- package-lock.json | 3 +- package.json | 3 +- src/editor/jwt.js | 32 ++++++++++++++++-- src/utils.js | 70 --------------------------------------- src/website/index.js | 31 ++++++++--------- test/functional/editor.js | 29 ++++++++++------ test/unit/editor/jwt.js | 37 +++++++++++++++++++-- test/unit/utils.js | 34 +------------------ 8 files changed, 102 insertions(+), 137 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d534ec8..edd34dea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9377,8 +9377,7 @@ "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, "querystring-es3": { "version": "0.2.1", diff --git a/package.json b/package.json index 49656fbf..c200e356 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ }, "dependencies": { "express": "^4.16.2", - "express-sslify": "^1.2.0" + "express-sslify": "^1.2.0", + "querystring": "^0.2.0" }, "devDependencies": { "@babel/core": "^7.0.0-beta.36", diff --git a/src/editor/jwt.js b/src/editor/jwt.js index ebc78697..f51fe41b 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -1,5 +1,3 @@ -import { isValidBase64String } from '../utils.js'; - import { jws, KEYUTIL, @@ -127,6 +125,36 @@ export function decode(jwt) { return result; } +export function isValidBase64String(s, urlOnly) { + try { + const validChars = urlOnly ? + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=' : + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_+/='; + + let hasPadding = false; + for(let i = 0; i < s.length; ++i) { + hasPadding |= s.charAt(i) === '='; + if(validChars.indexOf(s.charAt(i)) === -1) { + return false; + } + } + + if(hasPadding) { + for(let i = s.indexOf('='); i < s.length; ++i) { + if(s.charAt(i) !== '=') { + return false; + } + } + + return s.length % 4 === 0; + } + + return true; + } catch (e) { + return false; + } +} + export function isToken(jwt, checkTypClaim = false) { const decoded = decode(jwt); diff --git a/src/utils.js b/src/utils.js index 335018ee..a32e7653 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,7 +1,6 @@ import { KEYUTIL } from 'jsrsasign'; import log from 'loglevel'; import clipboard from 'clipboard-polyfill'; -import { isToken } from './editor/jwt.js'; export function httpGet(url, cache = true) { return new Promise((resolve, reject) => { @@ -31,36 +30,6 @@ export function httpGet(url, cache = true) { }); } -export function isValidBase64String(s, urlOnly) { - try { - const validChars = urlOnly ? - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=' : - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_+/='; - - let hasPadding = false; - for(let i = 0; i < s.length; ++i) { - hasPadding |= s.charAt(i) === '='; - if(validChars.indexOf(s.charAt(i)) === -1) { - return false; - } - } - - if(hasPadding) { - for(let i = s.indexOf('='); i < s.length; ++i) { - if(s.charAt(i) !== '=') { - return false; - } - } - - return s.length % 4 === 0; - } - - return true; - } catch (e) { - return false; - } -}; - export function isValidKey(key) { // Four tries: no header, header for cert, header for pub key, // header for priv key @@ -118,45 +87,6 @@ export function copyTokenLink(token, publicKeyOptional) { return url; } -function regexp(body, flag) { - return new RegExp("[?&#]" + body + "(?:=([^&#]*)|&|#|$)", flag); -} - -const tokenRegexp = regexp('((?:id_|access_)?token|value)', 'g'); - -export function getTokensFromLocation() { - const { href } = window.location; - let name, value; - const val = {}; - - try { - while ([, name, value] = tokenRegexp.exec(href)) { - if(isToken(value)) val[name] = value; - } - } catch (err) {} - return val; -} - -// https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript -export function getParameterByName(name, url) { - if(!url) { - url = window.location.href; - } - - name = name.replace(/[\[\]]/g, "\\$&"); - - const regex = regexp(name); - const results = regex.exec(url); - if(!results) { - return null; - } - if(!results[1]) { - return ''; - } - - return decodeURIComponent(results[1].replace(/\+/g, " ")); -} - export function isWideScreen() { return window.matchMedia('(min-width: 768px)').matches; } diff --git a/src/website/index.js b/src/website/index.js index 423d17ba..5ef8c40f 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -5,7 +5,6 @@ import { setupTokenEditor, setTokenEditorValue } from '../editor'; import { setupJwtCounter } from './counter.js'; import { setupSmoothScrolling } from './smooth-scrolling.js'; import { setupHighlighting } from './highlighting.js'; -import { getParameterByName, getTokensFromLocation } from '../utils.js'; import { isChrome, isFirefox } from './utils.js'; import { setupShareJwtButton } from '../share-button.js'; import { @@ -18,27 +17,29 @@ import { shareJwtTextElement } from './dom-elements.js'; +import queryString from 'querystring'; + /* For initialization, look at the end of this file */ function parseLocationQuery() { - const publicKey = getParameterByName('publicKey'); - const { id_token, access_token, value, token } = getTokensFromLocation(); + const locSearch = queryString.parse(document.location.search.substr(1)); + const locHash = queryString.parse(document.location.hash.substr(1)); - let scroll = false; - if(publicKey) { - publicKeyTextArea.value = publicKey; - scroll = true; - } + const token = locSearch.id_token || + locSearch.access_token || + locSearch.value || + locSearch.token; + if(token) { + setTokenEditorValue(token); - const val = value || token || id_token || access_token; - if(val) { - setTokenEditorValue(val); - scroll = true; - } + if(locSearch.publicKey) { + publicKeyTextArea.value = locSearch.publicKey; + } - if(scroll) { debuggerSection.scrollIntoView(true); - } + } else if(locHash.token) { // Legacy token passing method (as hash) + setTokenEditorValue(locHash.token); + } } function pickEbookOrExtensionBanner() { diff --git a/test/functional/editor.js b/test/functional/editor.js index 8a896f6b..87d8108b 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -726,7 +726,7 @@ describe('Editor', function() { }); it('Clears the token when the header is edited and there ' + - 'is no private key', async function() { + 'is no private key', async function() { await this.page.select('#algorithm-select', 'RS256'); const secretInput = await this.page.$('textarea[name="private-key"]'); @@ -1152,22 +1152,29 @@ describe('Editor', function() { ); }); - describe('parsing tokens from window.location.href', () => { - const token = 'eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.'; + describe('Parses tokens from window.location.href', () => { + const token = defaultTokens.hs384.token; + ['token', 'value', 'id_token', 'access_token'].forEach((key) => { + [ `/?${key}=${token}`, `/#${key}=${token}`, `/?foo=bar&${key}=${token}`, `/#foo=bar&${key}=${token}`, - ].forEach((structure, i) => { - it(`Should parse ${key} from window.location.href [${i}]`, async function () { - await this.page.goto(`http://localhost:8000${structure}${key}${i}`); - expect(await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - })).to.equal(`${token}${key}${i}`); - }); - }) + ].forEach((searchStr, i) => { + this.timeout(20000); + + it(`Should parse ${key} from window.location.href [${i}]`, + async function () { + await this.page.goto(`http://localhost:8000${searchStr}`); + expect(await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + })).to.equal(`${token}`); + }); + }); + }); + }); }); diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index 73f9afca..54e39f4c 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -1,11 +1,10 @@ import * as jwt from '../../../src/editor/jwt.js'; import tokens from '../../../src/editor/default-tokens.js'; -import { utf8tob64u, b64utob64 } from 'jsrsasign'; - +import { utf8tob64, utf8tob64u, b64utob64 } from 'jsrsasign'; import log from 'loglevel'; - import { should } from 'chai'; +import { randomFillSync } from 'crypto'; should(); @@ -200,4 +199,36 @@ describe('JWT', function() { jwt.verify(token, publicKeyPlainRSA).should.be.true; }); + + describe('isValidBase64String', function() { + // Generate random data of different sizes. + const data = []; + for(let i = 0; i < 1000; ++i) { + let bytes = new Uint8Array(i); + randomFillSync(bytes); + bytes = String.fromCharCode.apply(null, bytes); + + data.push({ + b64: utf8tob64(bytes), + b64u: utf8tob64u(bytes) + }); + } + + it('detects valid Base64 and Base64URL strings', function() { + data.forEach(d => { + jwt.isValidBase64String(d.b64, false).should.be.true; + jwt.isValidBase64String(d.b64u, false).should.be.true; + jwt.isValidBase64String(d.b64u).should.be.true; + jwt.isValidBase64String(d.b64u, true).should.be.true; + }); + }); + + it('fails on invalid Base64 and Base64 URL strings', function() { + data.forEach(d => { + if(d.b64.match(/[\+\/]/)) { + jwt.isValidBase64String(d.b64, true).should.be.false; + } + }); + }); + }); }); diff --git a/test/unit/utils.js b/test/unit/utils.js index 2430ad72..1d1af042 100644 --- a/test/unit/utils.js +++ b/test/unit/utils.js @@ -2,7 +2,7 @@ import chai from 'chai'; import chaiAsPromised from 'chai-as-promised'; import xhrMock from 'xhr-mock'; -import { httpGet, isValidBase64String } from '../../src/utils.js'; +import { httpGet } from '../../src/utils.js'; import { utf8tob64, utf8tob64u } from 'jsrsasign'; import { randomFillSync } from 'crypto'; @@ -11,38 +11,6 @@ chai.use(chaiAsPromised); chai.should(); describe('Generic utils', function() { - describe('isValidBase64String', function() { - // Generate random data of different sizes. - const data = []; - for(let i = 0; i < 1000; ++i) { - let bytes = new Uint8Array(i); - randomFillSync(bytes); - bytes = String.fromCharCode.apply(null, bytes); - - data.push({ - b64: utf8tob64(bytes), - b64u: utf8tob64u(bytes) - }); - } - - it('detects valid Base64 and Base64URL strings', function() { - data.forEach(d => { - isValidBase64String(d.b64, false).should.be.true; - isValidBase64String(d.b64u, false).should.be.true; - isValidBase64String(d.b64u).should.be.true; - isValidBase64String(d.b64u, true).should.be.true; - }); - }); - - it('fails on invalid Base64 and Base64 URL strings', function() { - data.forEach(d => { - if(d.b64.match(/[\+\/]/)) { - isValidBase64String(d.b64, true).should.be.false; - } - }); - }); - }); - describe('httpGet', function() { const url = '/'; const reply = 'test'; From 321f47b01d33fccc68f42f9c0af57c8eac13ab20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 23 Apr 2018 20:55:37 -0300 Subject: [PATCH 176/611] Better support for tokens passed in URL fragment/hash. --- src/website/index.js | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/website/index.js b/src/website/index.js index 5ef8c40f..e2b27d38 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -25,21 +25,22 @@ function parseLocationQuery() { const locSearch = queryString.parse(document.location.search.substr(1)); const locHash = queryString.parse(document.location.hash.substr(1)); - const token = locSearch.id_token || - locSearch.access_token || - locSearch.value || - locSearch.token; - if(token) { - setTokenEditorValue(token); - - if(locSearch.publicKey) { - publicKeyTextArea.value = locSearch.publicKey; - } + const keys = [ 'id_token', 'access_token', 'value', 'token']; + for(const key of keys) { + const token = locSearch[key] || locHash[key]; + + if(token) { + setTokenEditorValue(token); + + if(locSearch.publicKey) { + publicKeyTextArea.value = locSearch.publicKey; + } - debuggerSection.scrollIntoView(true); - } else if(locHash.token) { // Legacy token passing method (as hash) - setTokenEditorValue(locHash.token); - } + debuggerSection.scrollIntoView(true); + + break; + } + } } function pickEbookOrExtensionBanner() { From d235692dbca2497615a2ad52a3f5ce7eda361223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 23 Apr 2018 23:34:59 -0300 Subject: [PATCH 177/611] Fixes #39: implements claim description tooltips. --- src/dom-elements.js | 3 ++ src/editor/claims-tooltip.js | 56 ++++++++++++++++++++++++++++++++++ src/editor/index.js | 3 ++ src/editor/time-tooltip.js | 4 +-- src/editor/utils.js | 4 ++- src/strings.js | 12 ++++++++ stylus/website/codemirror.styl | 4 +-- views/token-editor-common.pug | 1 + 8 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 src/editor/claims-tooltip.js diff --git a/src/dom-elements.js b/src/dom-elements.js index 3cd8ed72..23d7ccfe 100644 --- a/src/dom-elements.js +++ b/src/dom-elements.js @@ -4,8 +4,11 @@ export const decodedTabLink = document.querySelector('.tab-link a[href="#decoded-jwt"]'); export const encodedTabElement = document.getElementById('encoded-jwt'); export const decodedTabElement = document.getElementById('decoded-jwt'); + export const editorElement = document.querySelector('#encoded-jwt .input'); export const decodedElement = document.querySelector('#decoded-jwt .output'); +export const claimsTooltipElement = + document.getElementById('js-claims-tooltip'); export const headerElement = document.querySelector('.js-header'); export const payloadElement = document.querySelector('.js-payload'); export const payloadTooltipElement = diff --git a/src/editor/claims-tooltip.js b/src/editor/claims-tooltip.js new file mode 100644 index 00000000..34b8fc8e --- /dev/null +++ b/src/editor/claims-tooltip.js @@ -0,0 +1,56 @@ +import { claimsTooltipElement } from '../dom-elements.js'; +import { timeClaims } from './time-tooltip.js'; +import { stringifyIndentSpaces } from './utils.js'; +import strings from '../strings.js'; + +function hideTooltip() { + claimsTooltipElement.style.display = 'none'; +} + +function showTooltip(x, y, text) { + claimsTooltipElement.firstChild.textContent = text; + claimsTooltipElement.style.left = x + 'px'; + claimsTooltipElement.style.top = y + 'px'; + claimsTooltipElement.style.display = 'block'; +} + +export function claimsTooltipHandler(event) { + const editor = event.currentTarget.querySelector('.CodeMirror').CodeMirror; + //const editor = event.currentTarget.firstChild.CodeMirror; + + if(!editor) { + return; + } + + const result = editor.coordsChar({ + left: event.pageX, + top: event.pageY + }, 'page'); + + const line = editor.getLine(result.line); + const matches = /"(.*)":\s*"?(.*)"?/.exec(line); + + if(!matches) { + hideTooltip(); + return; + } + + const claim = matches[1]; + + // If this is a time claim and the mouse cursor is on top of the time, + // let the time tooltip handle this, do nothing. + // TODO: merge both tooltip handlers? + const claimEnd = line.indexOf(':'); + if(result.ch >= claimEnd && timeClaims.includes(claim)) { + hideTooltip(); + return; + } + + const claimText = strings.common.claims[claim]; + if(!claimText) { + hideTooltip(); + return; + } + + showTooltip(event.pageX, event.pageY, claimText); +} diff --git a/src/editor/index.js b/src/editor/index.js index f3a158df..41861dea 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -5,6 +5,7 @@ import { } from '../utils.js'; import { downloadPublicKeyIfPossible } from './public-key-download.js'; import { timeTooltipHandler } from './time-tooltip.js'; +import { claimsTooltipHandler } from './claims-tooltip.js'; import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; import { getTrimmedValue, @@ -371,6 +372,8 @@ function setupEvents() { // Human readable timestamp tooltips payloadElement.addEventListener('mousemove', timeTooltipHandler); + payloadElement.addEventListener('mousemove', claimsTooltipHandler); + headerElement.addEventListener('mousemove', claimsTooltipHandler); setupTabEvents(); } diff --git a/src/editor/time-tooltip.js b/src/editor/time-tooltip.js index 6211fd44..cac6d619 100644 --- a/src/editor/time-tooltip.js +++ b/src/editor/time-tooltip.js @@ -1,6 +1,8 @@ import { payloadEditor } from './instances.js'; import { payloadTooltipElement } from '../dom-elements.js'; +export const timeClaims = ['exp', 'nbf', 'iat', 'auth_time', 'updated_at']; + export function timeTooltipHandler(event) { const result = payloadEditor.coordsChar({ left: event.pageX, @@ -9,8 +11,6 @@ export function timeTooltipHandler(event) { const line = payloadEditor.getLine(result.line); - const timeClaims = ['exp', 'nbf', 'iat', 'auth_time', 'updated_at']; - const matches = /"(.*)":\s*"?(\d*)"?/.exec(line); if (matches && timeClaims.indexOf(matches[1]) !== -1) { const dateStr = (new Date(parseInt(matches[2], 10) * 1000)).toString(); diff --git a/src/editor/utils.js b/src/editor/utils.js index 403f1c1d..f8b0a4f2 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -22,8 +22,10 @@ export function fixEditorHeight() { } } +export const stringifyIndentSpaces = 2; + export function stringify(object) { - return JSON.stringify(object, null, 2); + return JSON.stringify(object, null, stringifyIndentSpaces); } export function getSelectedAlgorithm() { diff --git a/src/strings.js b/src/strings.js index 113a2457..261c1a4e 100644 --- a/src/strings.js +++ b/src/strings.js @@ -2,6 +2,18 @@ export default { common: { shareThisJwt: 'Share JWT', jwtIoUrlCopied: 'Copied', + claims: { + exp: 'Expiration time (seconds since Unix epoch)', + nbf: 'Not valid before (seconds since Unix epoch)', + iat: 'Issued at (seconds since Unix epoch)', + iss: 'Issuer: who created and signed this token', + sub: 'Subject: who the token refers to', + aud: 'Audience: who or what the token is intended for', + jti: 'JWT ID: unique identifier for this token', + typ: 'Type of token', + azp: 'Authorized party: the party to which this token was issued', + alg: 'Signature or encryption algorithm' + } }, extension: { alreadyInstalled: 'Already installed', diff --git a/stylus/website/codemirror.styl b/stylus/website/codemirror.styl index f3fef468..aed8f296 100644 --- a/stylus/website/codemirror.styl +++ b/stylus/website/codemirror.styl @@ -40,7 +40,7 @@ .text-line a, .CodeMirror * color #D63AFF -#js-payload-tooltip +#js-payload-tooltip, #js-claims-tooltip position absolute background-color #00b9f1 display none @@ -51,4 +51,4 @@ .jwt-playground .output .jwt-signature .text-line a, pre - color #00B9F1 \ No newline at end of file + color #00B9F1 diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug index 4402ea2c..70a32537 100644 --- a/views/token-editor-common.pug +++ b/views/token-editor-common.pug @@ -12,6 +12,7 @@ .input.js-input #decoded-jwt.box-content .output + #js-claims-tooltip placeholder .jwt-explained.jwt-header p.text-line HEADER: span ALGORITHM & TOKEN TYPE From 8a474e38f2f25d6a1727d1456177c08515357fc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 23 Apr 2018 23:48:32 -0300 Subject: [PATCH 178/611] Better strings. --- src/strings.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings.js b/src/strings.js index 261c1a4e..92de7bdf 100644 --- a/src/strings.js +++ b/src/strings.js @@ -6,12 +6,12 @@ export default { exp: 'Expiration time (seconds since Unix epoch)', nbf: 'Not valid before (seconds since Unix epoch)', iat: 'Issued at (seconds since Unix epoch)', - iss: 'Issuer: who created and signed this token', - sub: 'Subject: who the token refers to', - aud: 'Audience: who or what the token is intended for', - jti: 'JWT ID: unique identifier for this token', + iss: 'Issuer (who created and signed this token)', + sub: 'Subject (who the token refers to)', + aud: 'Audience (who or what the token is intended for)', + jti: 'JWT ID (unique identifier for this token)', typ: 'Type of token', - azp: 'Authorized party: the party to which this token was issued', + azp: 'Authorized party (the party to which this token was issued)', alg: 'Signature or encryption algorithm' } }, From 40ff55cb2aa8f81a9a9e7384f8a545cfe2fbc61b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 24 Apr 2018 18:15:18 -0300 Subject: [PATCH 179/611] Use tippy for claims tooltips. --- src/editor/claims-tooltip.js | 38 ++++++++++++++++++++++++++--------- src/editor/index.js | 5 ++--- views/token-editor-common.pug | 2 +- 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/editor/claims-tooltip.js b/src/editor/claims-tooltip.js index 34b8fc8e..124c886b 100644 --- a/src/editor/claims-tooltip.js +++ b/src/editor/claims-tooltip.js @@ -2,21 +2,25 @@ import { claimsTooltipElement } from '../dom-elements.js'; import { timeClaims } from './time-tooltip.js'; import { stringifyIndentSpaces } from './utils.js'; import strings from '../strings.js'; +import { + payloadElement, + headerElement, + decodedElement +} from '../dom-elements.js'; + +import tippy from 'tippy.js'; function hideTooltip() { - claimsTooltipElement.style.display = 'none'; + decodedElement._tippy.hide(); } -function showTooltip(x, y, text) { - claimsTooltipElement.firstChild.textContent = text; - claimsTooltipElement.style.left = x + 'px'; - claimsTooltipElement.style.top = y + 'px'; - claimsTooltipElement.style.display = 'block'; +function showTooltip(text) { + decodedElement.title = text; + decodedElement._tippy.show(); } -export function claimsTooltipHandler(event) { +function tooltipHandler(event) { const editor = event.currentTarget.querySelector('.CodeMirror').CodeMirror; - //const editor = event.currentTarget.firstChild.CodeMirror; if(!editor) { return; @@ -52,5 +56,21 @@ export function claimsTooltipHandler(event) { return; } - showTooltip(event.pageX, event.pageY, claimText); + showTooltip(claimText); +} + +export function setupClaimsTooltip() { + tippy(decodedElement, { + placement: 'left', + arrow: true, + followCursor: true, + performance: true, + size: 'large', + dynamicTitle: true, + arrowTransform: 'scale(0.75)', + distance: 20 + }); + + payloadElement.addEventListener('mousemove', tooltipHandler); + headerElement.addEventListener('mousemove', tooltipHandler); } diff --git a/src/editor/index.js b/src/editor/index.js index 41861dea..0d526c0b 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -5,7 +5,7 @@ import { } from '../utils.js'; import { downloadPublicKeyIfPossible } from './public-key-download.js'; import { timeTooltipHandler } from './time-tooltip.js'; -import { claimsTooltipHandler } from './claims-tooltip.js'; +import { setupClaimsTooltip } from './claims-tooltip.js'; import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; import { getTrimmedValue, @@ -372,8 +372,6 @@ function setupEvents() { // Human readable timestamp tooltips payloadElement.addEventListener('mousemove', timeTooltipHandler); - payloadElement.addEventListener('mousemove', claimsTooltipHandler); - headerElement.addEventListener('mousemove', claimsTooltipHandler); setupTabEvents(); } @@ -397,4 +395,5 @@ export function setupTokenEditor() { loadToken(); fixEditorHeight(); setupSecretLengthTooltip(); + setupClaimsTooltip(); } diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug index 70a32537..19bc0752 100644 --- a/views/token-editor-common.pug +++ b/views/token-editor-common.pug @@ -11,7 +11,7 @@ #encoded-jwt.box-content.current .input.js-input #decoded-jwt.box-content - .output + .output(title='placeholder') #js-claims-tooltip placeholder .jwt-explained.jwt-header p.text-line HEADER: From 50dc800f8d9c5519e6cce76fd3c10625e7878dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 24 Apr 2018 18:26:19 -0300 Subject: [PATCH 180/611] Merge time and claims tooltips. --- src/editor/claims-tooltip.js | 9 +++++++-- src/editor/index.js | 7 +------ src/editor/time-tooltip.js | 25 ------------------------- src/strings.js | 2 +- 4 files changed, 9 insertions(+), 34 deletions(-) delete mode 100644 src/editor/time-tooltip.js diff --git a/src/editor/claims-tooltip.js b/src/editor/claims-tooltip.js index 124c886b..f84f0fdc 100644 --- a/src/editor/claims-tooltip.js +++ b/src/editor/claims-tooltip.js @@ -1,5 +1,4 @@ import { claimsTooltipElement } from '../dom-elements.js'; -import { timeClaims } from './time-tooltip.js'; import { stringifyIndentSpaces } from './utils.js'; import strings from '../strings.js'; import { @@ -10,6 +9,8 @@ import { import tippy from 'tippy.js'; +const timeClaims = ['exp', 'nbf', 'iat', 'auth_time', 'updated_at']; + function hideTooltip() { decodedElement._tippy.hide(); } @@ -19,6 +20,10 @@ function showTooltip(text) { decodedElement._tippy.show(); } +function getTimeText(timeStr) { + return (new Date(parseInt(timeStr, 10) * 1000)).toString(); +} + function tooltipHandler(event) { const editor = event.currentTarget.querySelector('.CodeMirror').CodeMirror; @@ -46,7 +51,7 @@ function tooltipHandler(event) { // TODO: merge both tooltip handlers? const claimEnd = line.indexOf(':'); if(result.ch >= claimEnd && timeClaims.includes(claim)) { - hideTooltip(); + showTooltip(getTimeText(matches[2])); return; } diff --git a/src/editor/index.js b/src/editor/index.js index 0d526c0b..3e25d3c9 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -4,7 +4,6 @@ import { copyTokenLink } from '../utils.js'; import { downloadPublicKeyIfPossible } from './public-key-download.js'; -import { timeTooltipHandler } from './time-tooltip.js'; import { setupClaimsTooltip } from './claims-tooltip.js'; import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; import { @@ -367,12 +366,8 @@ function setupEvents() { // (only verified). eventManager.addDomEvent(publicKeyTextArea, 'input', verifyToken); - // The following event are never disabled, so it is not necessary to go + // The following events are never disabled, so it is not necessary to go // through the event manager for them. - - // Human readable timestamp tooltips - payloadElement.addEventListener('mousemove', timeTooltipHandler); - setupTabEvents(); } diff --git a/src/editor/time-tooltip.js b/src/editor/time-tooltip.js deleted file mode 100644 index cac6d619..00000000 --- a/src/editor/time-tooltip.js +++ /dev/null @@ -1,25 +0,0 @@ -import { payloadEditor } from './instances.js'; -import { payloadTooltipElement } from '../dom-elements.js'; - -export const timeClaims = ['exp', 'nbf', 'iat', 'auth_time', 'updated_at']; - -export function timeTooltipHandler(event) { - const result = payloadEditor.coordsChar({ - left: event.pageX, - top: event.pageY - }, 'page'); - - const line = payloadEditor.getLine(result.line); - - const matches = /"(.*)":\s*"?(\d*)"?/.exec(line); - if (matches && timeClaims.indexOf(matches[1]) !== -1) { - const dateStr = (new Date(parseInt(matches[2], 10) * 1000)).toString(); - payloadTooltipElement.firstChild.textContent = dateStr; - payloadTooltipElement.style.left = event.pageX + 'px'; - payloadTooltipElement.style.top = event.pageY + 'px'; - - payloadTooltipElement.style.display = 'block'; - } else { - payloadTooltipElement.style.display = 'none'; - } -} diff --git a/src/strings.js b/src/strings.js index 92de7bdf..0861ece4 100644 --- a/src/strings.js +++ b/src/strings.js @@ -7,7 +7,7 @@ export default { nbf: 'Not valid before (seconds since Unix epoch)', iat: 'Issued at (seconds since Unix epoch)', iss: 'Issuer (who created and signed this token)', - sub: 'Subject (who the token refers to)', + sub: 'Subject (whom the token refers to)', aud: 'Audience (who or what the token is intended for)', jti: 'JWT ID (unique identifier for this token)', typ: 'Type of token', From 4d9559a48786a66b4d2bbf462d0c3cb643c002d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 24 Apr 2018 21:23:59 -0300 Subject: [PATCH 181/611] More claims are now explained. --- src/strings.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/strings.js b/src/strings.js index 0861ece4..8296109d 100644 --- a/src/strings.js +++ b/src/strings.js @@ -12,7 +12,20 @@ export default { jti: 'JWT ID (unique identifier for this token)', typ: 'Type of token', azp: 'Authorized party (the party to which this token was issued)', - alg: 'Signature or encryption algorithm' + alg: 'Signature or encryption algorithm', + jku: 'JSON Web Key Set URL', + jwk: 'JSON Web Key Set (embedded)', + kid: 'Key ID', + x5u: 'X.509 Certificate URL', + x5t: 'X.509 Fingerprint (SHA-1)', + 'x5t#S256': 'X.509 Fingerprint (SHA-256)', + cty: 'Content type', + crit: 'Extensions or claims that MUST be processed or verified', + enc: 'Encryption algorithm', + zip: 'Compression algorithm', + kty: 'Key type', + use: 'Intended use of key: "sig" or "enc" (other values accepted)', + key_ops: 'Intended operations for this key' } }, extension: { From 676aa2c5a072f9dba018351a4b83113e70dfa522 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 24 Apr 2018 21:25:44 -0300 Subject: [PATCH 182/611] Remove old tooltip code. --- src/dom-elements.js | 5 +---- stylus/website/codemirror.styl | 9 --------- views/token-editor-common.pug | 2 -- 3 files changed, 1 insertion(+), 15 deletions(-) diff --git a/src/dom-elements.js b/src/dom-elements.js index 23d7ccfe..f8e45867 100644 --- a/src/dom-elements.js +++ b/src/dom-elements.js @@ -7,12 +7,9 @@ export const decodedTabElement = document.getElementById('decoded-jwt'); export const editorElement = document.querySelector('#encoded-jwt .input'); export const decodedElement = document.querySelector('#decoded-jwt .output'); -export const claimsTooltipElement = - document.getElementById('js-claims-tooltip'); + export const headerElement = document.querySelector('.js-header'); export const payloadElement = document.querySelector('.js-payload'); -export const payloadTooltipElement = - document.getElementById('js-payload-tooltip'); export const signatureStatusElement = document.querySelector('.validation-status.js-signature'); diff --git a/stylus/website/codemirror.styl b/stylus/website/codemirror.styl index aed8f296..48b81b2e 100644 --- a/stylus/website/codemirror.styl +++ b/stylus/website/codemirror.styl @@ -40,15 +40,6 @@ .text-line a, .CodeMirror * color #D63AFF -#js-payload-tooltip, #js-claims-tooltip - position absolute - background-color #00b9f1 - display none - color white - z-index 9999 - padding 0 4pt - margin-left 4pt - .jwt-playground .output .jwt-signature .text-line a, pre color #00B9F1 diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug index 19bc0752..c85ec135 100644 --- a/views/token-editor-common.pug +++ b/views/token-editor-common.pug @@ -12,7 +12,6 @@ .input.js-input #decoded-jwt.box-content .output(title='placeholder') - #js-claims-tooltip placeholder .jwt-explained.jwt-header p.text-line HEADER: span ALGORITHM & TOKEN TYPE @@ -22,7 +21,6 @@ p.text-line PAYLOAD: span DATA .js-payload - #js-payload-tooltip placeholder .jwt-explained.jwt-signature p.text-line VERIFY SIGNATURE From e38c9c202e1da05a497d5da2652f0559c9bc8545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 24 Apr 2018 22:20:39 -0300 Subject: [PATCH 183/611] Fix tests for new tooltip method. --- test/functional/editor.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/test/functional/editor.js b/test/functional/editor.js index 87d8108b..102ce728 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -69,13 +69,17 @@ describe('Editor', function() { } }); - it('Should display a tooltip with a human readable ' + - 'date on claim hover', async function() { + it('Should display a tooltip for a claim', async function() { await this.page.select('#algorithm-select', 'HS384'); - + await this.page.mouse.move(0, 0); + + function tippyVisible(element) { + return element._tippy.state.visible; + } - expect(await this.page.$eval('#js-payload-tooltip', isVisible)).to.be.false; + expect(await this.page.$eval('#decoded-jwt .output', tippyVisible)). + to.be.false; const iatPos = await this.page.evaluate(() => { return window.test.payloadEditor.charCoords({ @@ -86,7 +90,11 @@ describe('Editor', function() { await this.page.mouse.move(iatPos.left, iatPos.top); - expect(await this.page.$eval('#js-payload-tooltip', isVisible)).to.be.true; + // Wait for animation + await this.page.waitFor(2000); + + expect(await this.page.$eval('#decoded-jwt .output', tippyVisible)) + .to.be.true; }); it('Displays a valid token by default', async function() { From 7628617ae9ac3b94c1c972174ce3dcce91006793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 25 Apr 2018 16:12:04 -0300 Subject: [PATCH 184/611] Improve behavior of claims tooltips, especially in Firefox. --- src/editor/claims-tooltip.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/editor/claims-tooltip.js b/src/editor/claims-tooltip.js index f84f0fdc..e2564e1c 100644 --- a/src/editor/claims-tooltip.js +++ b/src/editor/claims-tooltip.js @@ -12,12 +12,14 @@ import tippy from 'tippy.js'; const timeClaims = ['exp', 'nbf', 'iat', 'auth_time', 'updated_at']; function hideTooltip() { - decodedElement._tippy.hide(); + decodedElement._tippy.popper.style.opacity = 0; } function showTooltip(text) { - decodedElement.title = text; - decodedElement._tippy.show(); + decodedElement._tippy.popper.querySelector('.tippy-content') + .textContent = text; + decodedElement._tippy.popperInstance.update(); + decodedElement._tippy.popper.style.opacity = 1; } function getTimeText(timeStr) { @@ -28,6 +30,7 @@ function tooltipHandler(event) { const editor = event.currentTarget.querySelector('.CodeMirror').CodeMirror; if(!editor) { + hideTooltip(); return; } @@ -64,8 +67,8 @@ function tooltipHandler(event) { showTooltip(claimText); } -export function setupClaimsTooltip() { - tippy(decodedElement, { +export function setupClaimsTooltip() { + tippy(decodedElement, { placement: 'left', arrow: true, followCursor: true, @@ -73,8 +76,12 @@ export function setupClaimsTooltip() { size: 'large', dynamicTitle: true, arrowTransform: 'scale(0.75)', - distance: 20 - }); + distance: 20, + sticky: true, + updateDuration: 100 + }); + + decodedElement._tippy.popper.style.opacity = 0; payloadElement.addEventListener('mousemove', tooltipHandler); headerElement.addEventListener('mousemove', tooltipHandler); From 9f1ce9d8a0df7f2a413f94777ebab07b3d33db00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 25 Apr 2018 16:16:29 -0300 Subject: [PATCH 185/611] Version 2.1.0. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c200e356..ed8aa5ec 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "2.0.0", + "version": "2.1.0", "repository": { "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" From b3320cc0a2216751dd22328c4e56495c3e6201be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 25 Apr 2018 16:55:19 -0300 Subject: [PATCH 186/611] Extension version 2.1.0 --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index e26a9f8d..2c80216d 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "JWT Debugger", "description": "The JWT.io debugger as a Web Extension", - "version": "2.0.2", + "version": "2.1.0", "browser_action": { "default_icon": "img/favicon/favicon-96x96.png", From 25c556ad2eff6a1456137312712588d346438a3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 25 Apr 2018 19:19:49 -0300 Subject: [PATCH 187/611] Fix shared token display. --- src/website/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/website/index.js b/src/website/index.js index e2b27d38..1d3b56c9 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -25,7 +25,13 @@ function parseLocationQuery() { const locSearch = queryString.parse(document.location.search.substr(1)); const locHash = queryString.parse(document.location.hash.substr(1)); - const keys = [ 'id_token', 'access_token', 'value', 'token']; + const keys = [ + 'id_token', + 'access_token', + 'value', + 'token', + 'debugger-io?token' + ]; for(const key of keys) { const token = locSearch[key] || locHash[key]; From 46d9ac99f40bd879df7d1858f71f18eef427e333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 25 Apr 2018 19:20:11 -0300 Subject: [PATCH 188/611] Version 2.1.1. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ed8aa5ec..2c88cca0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "2.1.0", + "version": "2.1.1", "repository": { "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" From cd8ef045cf88cc53b6e0a050210323c640dfbc3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 25 Apr 2018 20:00:52 -0300 Subject: [PATCH 189/611] Share button tests fixes. --- test/functional/editor.js | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/test/functional/editor.js b/test/functional/editor.js index 102ce728..de68b7c5 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -1078,7 +1078,8 @@ describe('Editor', function() { window.test.shareJwtCopiedUrl); const newPage = await this.browser.newPage(); - await newPage.goto(copiedUrl); + await newPage.goto( + copiedUrl.replace('https://jwt.io/', 'http://localhost:8000/')); const destToken = await newPage.evaluate(() => window.test.tokenEditor.getValue()); @@ -1147,7 +1148,8 @@ describe('Editor', function() { window.test.shareJwtCopiedUrl); const newPage = await this.browser.newPage(); - await newPage.goto(copiedUrl); + await newPage.goto( + copiedUrl.replace('https://jwt.io/', 'http://localhost:8000/')); const destToken = await newPage.evaluate(() => window.test.tokenEditor.getValue()); @@ -1169,19 +1171,38 @@ describe('Editor', function() { `/?${key}=${token}`, `/#${key}=${token}`, `/?foo=bar&${key}=${token}`, - `/#foo=bar&${key}=${token}`, + `/#foo=bar&${key}=${token}` ].forEach((searchStr, i) => { this.timeout(20000); it(`Should parse ${key} from window.location.href [${i}]`, async function () { - await this.page.goto(`http://localhost:8000${searchStr}`); - expect(await this.page.evaluate(() => { + const page = await this.browser.newPage(); + + await page.goto(`http://localhost:8000${searchStr}`); + + expect(await page.evaluate(() => { return window.test.tokenEditor.getValue(); - })).to.equal(`${token}`); + })).to.equal(token); + + await page.close(); }); - }); + }); + + }); + + it('Parses shared token', async function() { + this.timeout(20000); + + const page = await this.browser.newPage(); + + await page.goto(`http://localhost:8000/#debugger-io?token=${token}`); + + expect(await page.evaluate(() => { + return window.test.tokenEditor.getValue(); + })).to.equal(token); + await page.close(); }); }); From ff320f9a3728b7e49f0e350b03dccfac2bf8776d Mon Sep 17 00:00:00 2001 From: blainehansen Date: Wed, 25 Apr 2018 17:17:35 -0600 Subject: [PATCH 190/611] removing field checks for GildedHonour/rust-jwt --- views/website/libraries/13-Rust.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/views/website/libraries/13-Rust.json b/views/website/libraries/13-Rust.json index 029af015..ae500fe8 100644 --- a/views/website/libraries/13-Rust.json +++ b/views/website/libraries/13-Rust.json @@ -9,13 +9,13 @@ "support": { "sign": true, "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, "hs256": true, "hs384": true, "hs512": true, From 82d02424aa4e8bec55289aad8727e383adc9c81b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 25 Apr 2018 22:15:31 -0300 Subject: [PATCH 191/611] Fix buggy tooltips. --- package-lock.json | 2 +- package.json | 2 +- src/editor/claims-tooltip.js | 75 ++++++++++++++++++++++++----------- test/functional/editor.js | 4 +- views/token-editor-common.pug | 2 +- 5 files changed, 57 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index edd34dea..7963fcab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "2.0.0", + "version": "2.1.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2c88cca0..bfa9b1d5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "2.1.1", + "version": "2.1.2", "repository": { "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" diff --git a/src/editor/claims-tooltip.js b/src/editor/claims-tooltip.js index e2564e1c..d65e251a 100644 --- a/src/editor/claims-tooltip.js +++ b/src/editor/claims-tooltip.js @@ -11,15 +11,50 @@ import tippy from 'tippy.js'; const timeClaims = ['exp', 'nbf', 'iat', 'auth_time', 'updated_at']; +let instance; + function hideTooltip() { - decodedElement._tippy.popper.style.opacity = 0; + if(instance) { + instance.destroy(); + instance = null; + } } -function showTooltip(text) { - decodedElement._tippy.popper.querySelector('.tippy-content') - .textContent = text; - decodedElement._tippy.popperInstance.update(); - decodedElement._tippy.popper.style.opacity = 1; +function showTooltip(element, text, placement) { + function newTooltip() { + element.title = text; + + tippy(element, { + placement: placement, + arrow: true, + performance: true, + size: 'large', + dynamicTitle: true, + arrowTransform: 'scale(0.75)', + distance: 10, + updateDuration: 100, + trigger: 'manual' + }); + + return element._tippy; + } + + if(instance) { + if(instance.reference !== element || + instance.options.placement !== placement) { + instance.destroy(); + instance = newTooltip(); + } else if(instance.popper.querySelector('.tippy-content').textContent !== + text) { + instance.popper.querySelector('.tippy-content').textContent = text; + } + } else { + instance = newTooltip(); + } + + if(!instance.state.visible) { + instance.show(); + } } function getTimeText(timeStr) { @@ -49,12 +84,21 @@ function tooltipHandler(event) { const claim = matches[1]; + const element = event.target.tagName === 'SPAN' ? + event.target : + event.target.querySelector('span'); + + if(!element || element.tagName !== 'SPAN') { + hideTooltip(); + return; + } + // If this is a time claim and the mouse cursor is on top of the time, // let the time tooltip handle this, do nothing. // TODO: merge both tooltip handlers? const claimEnd = line.indexOf(':'); if(result.ch >= claimEnd && timeClaims.includes(claim)) { - showTooltip(getTimeText(matches[2])); + showTooltip(element, getTimeText(matches[2]), 'right'); return; } @@ -64,25 +108,10 @@ function tooltipHandler(event) { return; } - showTooltip(claimText); + showTooltip(element, claimText, 'left'); } export function setupClaimsTooltip() { - tippy(decodedElement, { - placement: 'left', - arrow: true, - followCursor: true, - performance: true, - size: 'large', - dynamicTitle: true, - arrowTransform: 'scale(0.75)', - distance: 20, - sticky: true, - updateDuration: 100 - }); - - decodedElement._tippy.popper.style.opacity = 0; - payloadElement.addEventListener('mousemove', tooltipHandler); headerElement.addEventListener('mousemove', tooltipHandler); } diff --git a/test/functional/editor.js b/test/functional/editor.js index de68b7c5..019a4535 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -78,7 +78,7 @@ describe('Editor', function() { return element._tippy.state.visible; } - expect(await this.page.$eval('#decoded-jwt .output', tippyVisible)). + expect(await this.page.$eval('[data-tippy]', tippyVisible)). to.be.false; const iatPos = await this.page.evaluate(() => { @@ -93,7 +93,7 @@ describe('Editor', function() { // Wait for animation await this.page.waitFor(2000); - expect(await this.page.$eval('#decoded-jwt .output', tippyVisible)) + expect(await this.page.$eval('[data-tippy]', tippyVisible)) .to.be.true; }); diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug index c85ec135..7c5bc138 100644 --- a/views/token-editor-common.pug +++ b/views/token-editor-common.pug @@ -11,7 +11,7 @@ #encoded-jwt.box-content.current .input.js-input #decoded-jwt.box-content - .output(title='placeholder') + .output .jwt-explained.jwt-header p.text-line HEADER: span ALGORITHM & TOKEN TYPE From ca4f2912267214e44d5a2c2098ebdba46b5ea955 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 25 Apr 2018 22:21:29 -0300 Subject: [PATCH 192/611] Extension version 2.1.1. --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 2c80216d..f4695975 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "JWT Debugger", "description": "The JWT.io debugger as a Web Extension", - "version": "2.1.0", + "version": "2.1.1", "browser_action": { "default_icon": "img/favicon/favicon-96x96.png", From f23e2a5b7c1760ad3058fe85cdb8333cd27ea95f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 25 Apr 2018 22:21:48 -0300 Subject: [PATCH 193/611] Fix analytics for the extension (inline scripts are limited in extensions). --- src/extension/index.js | 1 + src/google-analytics.js | 13 +++++++++++++ src/website/index.js | 1 + views/extension/layout.pug | 17 +---------------- 4 files changed, 16 insertions(+), 16 deletions(-) create mode 100644 src/google-analytics.js diff --git a/src/extension/index.js b/src/extension/index.js index 30732430..188c3c3f 100644 --- a/src/extension/index.js +++ b/src/extension/index.js @@ -1,3 +1,4 @@ +import '../google-analytics.js'; import { setupTokenEditor, setTokenEditorValue, diff --git a/src/google-analytics.js b/src/google-analytics.js new file mode 100644 index 00000000..a54f80ff --- /dev/null +++ b/src/google-analytics.js @@ -0,0 +1,13 @@ +//Google Analytics +var _gaq = _gaq || []; +_gaq.push(['_setAccount', 'UA-37952868-23']); +_gaq.push(['_trackPageview']); + +(function() { + var ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = 'https://ssl.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); +})(); diff --git a/src/website/index.js b/src/website/index.js index 1d3b56c9..11902985 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -1,3 +1,4 @@ +import '../google-analytics.js'; import { setupNavbar } from './navbar.js'; import { setupExtensionButton } from './extension.js'; import { setupLibraries } from './libraries.js'; diff --git a/views/extension/layout.pug b/views/extension/layout.pug index 8dea998d..8c0e143d 100644 --- a/views/extension/layout.pug +++ b/views/extension/layout.pug @@ -5,19 +5,4 @@ html(lang='en') include ../stylesheets.pug body - block content - - script. - //Google Analytics - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-37952868-23']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); - ga.type = 'text/javascript'; - ga.async = true; - ga.src = 'https://ssl.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(ga, s); - })(); + block content \ No newline at end of file From 25ecc468df3b9c8c68a4799fa69ce8a1eac2a8ed Mon Sep 17 00:00:00 2001 From: Wilder Pereira Date: Thu, 26 Apr 2018 00:10:07 -0300 Subject: [PATCH 194/611] Add link to Gruntfile --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0bdc9806..c7471c70 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,6 @@ To run tests, execute: ./node_modules/.bin/grunt test ``` -Look at the end of the `Gruntfile` for other common tasks. +Look at the end of the [Gruntfile](/Gruntfile.js) for other common tasks. ### Happy hacking! From 96f07ce23444f72689922d4de7e2cb80b23f4748 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Thu, 26 Apr 2018 11:48:19 +0200 Subject: [PATCH 195/611] add `sid` tooltip `sid` ID Token/Logout Token claim used in the session management/logout family of specs - https://openid.net/specs/openid-connect-session-1_0.html - https://openid.net/specs/openid-connect-frontchannel-1_0.html - https://openid.net/specs/openid-connect-backchannel-1_0.html --- src/strings.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings.js b/src/strings.js index 8296109d..01a58972 100644 --- a/src/strings.js +++ b/src/strings.js @@ -25,7 +25,8 @@ export default { zip: 'Compression algorithm', kty: 'Key type', use: 'Intended use of key: "sig" or "enc" (other values accepted)', - key_ops: 'Intended operations for this key' + key_ops: 'Intended operations for this key' , + sid: 'Session ID (String identifier for a Session)' } }, extension: { From 4c60ed475d44d1ca0100fbcf47055c1e8f1da485 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Thu, 26 Apr 2018 12:02:32 +0200 Subject: [PATCH 196/611] add node-jose --- views/website/libraries/4-JavaScript.json | 30 ++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/4-JavaScript.json b/views/website/libraries/4-JavaScript.json index 612d1875..0e21ca06 100644 --- a/views/website/libraries/4-JavaScript.json +++ b/views/website/libraries/4-JavaScript.json @@ -59,6 +59,34 @@ "gitHubRepoPath": "square/js-jose", "repoUrl": "https://github.com/square/js-jose", "installCommandHtml": "npm install jose-jwe-jws" + }, + { + "minimumVersion": "0.9.4", + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/cisco", + "authorName": "Cisco Systems", + "gitHubRepoPath": "cisco/node-jose", + "repoUrl": "https://github.com/cisco/node-jose", + "installCommandHtml": "npm install node-jose" } ] -} \ No newline at end of file +} From c8f2518aee2acf7ff0f2c497b987720dd3a377ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 26 Apr 2018 15:56:38 -0300 Subject: [PATCH 197/611] Minor formatting fix. --- src/strings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings.js b/src/strings.js index 01a58972..bcd77c25 100644 --- a/src/strings.js +++ b/src/strings.js @@ -25,7 +25,7 @@ export default { zip: 'Compression algorithm', kty: 'Key type', use: 'Intended use of key: "sig" or "enc" (other values accepted)', - key_ops: 'Intended operations for this key' , + key_ops: 'Intended operations for this key', sid: 'Session ID (String identifier for a Session)' } }, From 0431f15e459c70c6feb1c41da0a381b0a19a8c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 26 Apr 2018 19:38:05 -0300 Subject: [PATCH 198/611] More common claim descriptions (for tooltips). --- src/strings.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings.js b/src/strings.js index bcd77c25..8151b804 100644 --- a/src/strings.js +++ b/src/strings.js @@ -26,7 +26,10 @@ export default { kty: 'Key type', use: 'Intended use of key: "sig" or "enc" (other values accepted)', key_ops: 'Intended operations for this key', - sid: 'Session ID (String identifier for a Session)' + sid: 'Session ID (String identifier for a Session)', + updated_at: 'Last modification timestamp', + at_hash: 'SHA-256 of leftmost half of this token', + nonce: 'Unique value associating request to token' } }, extension: { From c3e387928b0216e688bac32e084053c8ddf3ae6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 26 Apr 2018 19:41:30 -0300 Subject: [PATCH 199/611] More claim descriptions for tooltips. --- src/strings.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings.js b/src/strings.js index 8151b804..a89b4da5 100644 --- a/src/strings.js +++ b/src/strings.js @@ -29,7 +29,10 @@ export default { sid: 'Session ID (String identifier for a Session)', updated_at: 'Last modification timestamp', at_hash: 'SHA-256 of leftmost half of this token', - nonce: 'Unique value associating request to token' + nonce: 'Unique value associating request to token', + auth_time: 'Time when authentication occurred', + amr: 'Authentication methods array', + acr: 'Authentication context class' } }, extension: { From 41fb96e5658cd330d0f85375dc451fba014eeaa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 26 Apr 2018 19:53:45 -0300 Subject: [PATCH 200/611] Fix date parsing for claims tooltips. --- src/editor/claims-tooltip.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/editor/claims-tooltip.js b/src/editor/claims-tooltip.js index d65e251a..f1516e86 100644 --- a/src/editor/claims-tooltip.js +++ b/src/editor/claims-tooltip.js @@ -58,7 +58,15 @@ function showTooltip(element, text, placement) { } function getTimeText(timeStr) { - return (new Date(parseInt(timeStr, 10) * 1000)).toString(); + try { + if(/\d+,/.test(timeStr)) { + return (new Date(parseInt(timeStr, 10) * 1000)).toString(); + } else { + return (new Date(timeStr.replace(/[",]/g, ''))).toString(); + } + } catch(e) { + return 'Invalid date'; + } } function tooltipHandler(event) { From f11722985668107612e8b77d18dce02301afd371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 26 Apr 2018 19:56:55 -0300 Subject: [PATCH 201/611] Fix date parsing. --- src/editor/claims-tooltip.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/editor/claims-tooltip.js b/src/editor/claims-tooltip.js index f1516e86..fb2b16ec 100644 --- a/src/editor/claims-tooltip.js +++ b/src/editor/claims-tooltip.js @@ -59,7 +59,7 @@ function showTooltip(element, text, placement) { function getTimeText(timeStr) { try { - if(/\d+,/.test(timeStr)) { + if(/\d+,?$/.test(timeStr)) { return (new Date(parseInt(timeStr, 10) * 1000)).toString(); } else { return (new Date(timeStr.replace(/[",]/g, ''))).toString(); From 9c47faf37472f318406cd522739e5f4fabd5ffa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 26 Apr 2018 19:57:07 -0300 Subject: [PATCH 202/611] Version bump: website-2.1.3, extension-2.1.2. --- manifest.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.json b/manifest.json index f4695975..3e483cb4 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "JWT Debugger", "description": "The JWT.io debugger as a Web Extension", - "version": "2.1.1", + "version": "2.1.2", "browser_action": { "default_icon": "img/favicon/favicon-96x96.png", diff --git a/package.json b/package.json index bfa9b1d5..59467ea2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "2.1.2", + "version": "2.1.3", "repository": { "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" From 6e6ffb257e12a21e32779362220ada576efec3aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 26 Apr 2018 19:59:42 -0300 Subject: [PATCH 203/611] Fix tooltip flickering on Firefox. --- src/editor/secret-length-tooltip.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/editor/secret-length-tooltip.js b/src/editor/secret-length-tooltip.js index ad8444f3..5a2c2293 100644 --- a/src/editor/secret-length-tooltip.js +++ b/src/editor/secret-length-tooltip.js @@ -23,7 +23,9 @@ export function minSecretLengthCheck(event) { console.log(utf8tohex(secretInput.value)); if(inputBits < algBits) { - secretInput._tippy.show(); + if(!secretInput._tippy.state.visible) { + secretInput._tippy.show(); + } } else { secretInput._tippy.hide(); } From 91119dc16a7cc3a79f3c5897afbff12d559f10e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 7 May 2018 12:50:23 -0300 Subject: [PATCH 204/611] Update license to include licenses from libraries (requested by jsrsasign developers). --- LICENSE.md | 21 ------- LICENSE.txt | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+), 21 deletions(-) delete mode 100644 LICENSE.md create mode 100644 LICENSE.txt diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index 5fd32c57..00000000 --- a/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-2014 Auth0 Inc. - -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. diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 00000000..3278f02f --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,169 @@ +The MIT License (MIT) + +Copyright (c) 2013-2014 Auth0 Inc. + +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. + +---- + +Distributions of this software ("bundles") contain code from other +libraries. Additional licenses from these libraries can be found below. + +---- + +The 'jsrsasign'(RSA-Sign JavaScript Library) License + +Copyright (c) 2010-2018 Kenji Urushima + +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. + +LICENSE: BSD License +Files: node_modules/jsrsasign/** +---- + +RSA and ECC in JavaScript + +Copyright (c) 2003-2005 Tom Wu 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" AND WITHOUT WARRANTY OF ANY KIND, +EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY +WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, +INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF +THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +In addition, the following condition applies: + +All redistributions must retain an intact copy of this copyright notice +and disclaimer. + +http://www-cs-students.stanford.edu/~tjw/jsbn/ +LICENSE: BSD License +FILES: node_modules/jsrsasign/ext/{base64,jsbn,jsbn2,prgn4,rng,rsa,rsa2}.js +---- + +CryptoJS + +Copyright (c) 2009-2013 Jeff Mott + +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. + +https://code.google.com/p/crypto-js/wiki/License +FILES: node_modules/jsrsasign/ext/cryptojs-*.js +---- + +YUI Library + +Software License Agreement (BSD License) + +Copyright c 2013 Yahoo! Inc. All rights reserved. + +Redistribution and use of this software 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 Yahoo! Inc. nor the names of YUI's contributors + may be used to endorse or promote products derived from this + software without specific prior written permission of Yahoo! Inc. + +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 THE COPYRIGHT +OWNER OR CONTRIBUTORS 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. + +http://yuilibrary.com/license/ +LICENSE: BSD License +FILES: node_modules/jsrsasign/ext/yui*.js +---- + +Bitcoin JS + +Copyright (c) 2011 Stefan Thomas + +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. + +https://github.com/bitcoinjs/bitcoinjs-lib +LICENSE: MIT License +FILES: node_modules/jsrsasign/src/ecdsa-modified.js node_modules/jsrsasign/src/ec-patch.js +---- From 5a751a2db4d59ae683fc021d0c38d7d7030f0fcd Mon Sep 17 00:00:00 2001 From: Daniel DeGroff Date: Mon, 7 May 2018 11:41:33 -0600 Subject: [PATCH 205/611] Update to prime-jwt 1.3.1 --- views/website/libraries/3-Java.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index d2d0d88d..8ec4bc09 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -142,7 +142,7 @@ "authorName": "Inversoft", "gitHubRepoPath": "inversoft/prime-jwt", "repoUrl": "https://github.com/inversoft/prime-jwt", - "installCommandHtml": "maven: com.inversoft / prime-jwt / 1.3.0" + "installCommandHtml": "maven: com.inversoft / prime-jwt / 1.3.1" }, { "minimumVersion": null, @@ -173,4 +173,4 @@ "installCommandHtml": "maven: io.vertx / vertx-auth-jwt / 3.5.1" } ] -} \ No newline at end of file +} From a5080df7d53396db36a06bbeca64243adb8a4bf4 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 9 May 2018 14:14:25 +0200 Subject: [PATCH 206/611] add c_hash, update at_hash --- src/strings.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings.js b/src/strings.js index a89b4da5..abfbb4d6 100644 --- a/src/strings.js +++ b/src/strings.js @@ -28,7 +28,8 @@ export default { key_ops: 'Intended operations for this key', sid: 'Session ID (String identifier for a Session)', updated_at: 'Last modification timestamp', - at_hash: 'SHA-256 of leftmost half of this token', + at_hash: 'Access Token hash value', + c_hash: 'Authorization Code hash value', nonce: 'Unique value associating request to token', auth_time: 'Time when authentication occurred', amr: 'Authentication methods array', From e47d912432e4700df95e17d8adc99090d4000cea Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 9 May 2018 14:17:52 +0200 Subject: [PATCH 207/611] add s_hash --- src/strings.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/strings.js b/src/strings.js index abfbb4d6..c9f7ca68 100644 --- a/src/strings.js +++ b/src/strings.js @@ -30,6 +30,7 @@ export default { updated_at: 'Last modification timestamp', at_hash: 'Access Token hash value', c_hash: 'Authorization Code hash value', + s_hash: 'State hash value', nonce: 'Unique value associating request to token', auth_time: 'Time when authentication occurred', amr: 'Authentication methods array', From f4bfe48f9e1de03e21f20516b8683a5ab6ab6bd3 Mon Sep 17 00:00:00 2001 From: Kye-Maloy Date: Fri, 11 May 2018 15:32:03 +0100 Subject: [PATCH 208/611] new: Kitura Swift implementation --- views/website/libraries/19-Swift.json | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/views/website/libraries/19-Swift.json b/views/website/libraries/19-Swift.json index 30ac153d..e41a0a47 100644 --- a/views/website/libraries/19-Swift.json +++ b/views/website/libraries/19-Swift.json @@ -87,6 +87,34 @@ "gitHubRepoPath": "Wstunes/SwiftyJWT", "repoUrl": "https://github.com/Wstunes/SwiftyJWT", "installCommandHtml": "pod 'SwiftyJWT'" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": false, + "hs384": false, + "hs512": false, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/IBM-Swift", + "authorName": "IBM Swift", + "gitHubRepoPath": "IBM-Swift/Swift-JWT", + "repoUrl": "https://github.com/IBM-Swift/Swift-JWT", + "installCommandHtml": ".package(url:\"https://github.com/IBM-Swift/Swift-JWT/", from: \"1.0.0\")" } ] } \ No newline at end of file From fdd90866ecbe116ae98897ef9347aab9f5f3210b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Peyrott?= Date: Wed, 16 May 2018 05:36:28 -0500 Subject: [PATCH 209/611] Removed stray console.log call. --- src/editor/secret-length-tooltip.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/editor/secret-length-tooltip.js b/src/editor/secret-length-tooltip.js index 5a2c2293..9148eb87 100644 --- a/src/editor/secret-length-tooltip.js +++ b/src/editor/secret-length-tooltip.js @@ -20,8 +20,6 @@ export function minSecretLengthCheck(event) { b64utohex(secretInput.value).length / 2 * 8 : utf8tohex(secretInput.value).length / 2 * 8; - console.log(utf8tohex(secretInput.value)); - if(inputBits < algBits) { if(!secretInput._tippy.state.visible) { secretInput._tippy.show(); From 278900c477128848ce5d406b4df351615901f761 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Peyrott?= Date: Wed, 16 May 2018 06:13:30 -0500 Subject: [PATCH 210/611] Fix for #313: add link to licence in both the site and the extension. --- package-lock.json | 2 +- stylus/extension/index.styl | 3 +++ views/extension/index.pug | 4 +++- views/website/layout.pug | 2 ++ 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7963fcab..0bd80270 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "2.1.1", + "version": "2.1.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/stylus/extension/index.styl b/stylus/extension/index.styl index 768153a4..7649c533 100644 --- a/stylus/extension/index.styl +++ b/stylus/extension/index.styl @@ -65,6 +65,9 @@ text-decoration none color currentColor + .keep-deco:hover + text-decoration underline + .top-section margin-bottom 10px diff --git a/views/extension/index.pug b/views/extension/index.pug index a4969582..e09012eb 100644 --- a/views/extension/index.pug +++ b/views/extension/index.pug @@ -37,8 +37,10 @@ block content .colophon.clearfix .pull-left a(target="_blank" href="https://auth0.com/?utm_source=jwt-ext&utm_campaign=badge") - | Supported by + | Supported by   img(src="http://github.com/img/ico_logo.svg") + a  -  + a.keep-deco(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/blob/master/LICENSE.txt', target="_blank") Licence .pull-right.save-back.hide a#save-back-link(href="#") Save back to localStorage diff --git a/views/website/layout.pug b/views/website/layout.pug index 6fbd89b6..d8b7472d 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -62,6 +62,8 @@ html(lang='en') .column.pull-request span Missing something? a(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/tree/master/views', target="_blank") Send a Pull Request + a(style='text-decoration: none') - + a(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/blob/master/LICENSE.txt', target="_blank") Licence .column.social-counter a.twitter-follow-button(href='https://twitter.com/auth0', data-show-count='true') Follow @auth0 From ed99b29ca15f2b49312d62cf4e902c3a08a86577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Peyrott?= Date: Wed, 16 May 2018 06:18:53 -0500 Subject: [PATCH 211/611] Set version 2.1.4 (website), 2.1.3 (extensions). --- manifest.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.json b/manifest.json index 3e483cb4..9824c430 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "JWT Debugger", "description": "The JWT.io debugger as a Web Extension", - "version": "2.1.2", + "version": "2.1.3", "browser_action": { "default_icon": "img/favicon/favicon-96x96.png", diff --git a/package.json b/package.json index 59467ea2..5fdb55d5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "2.1.3", + "version": "2.1.4", "repository": { "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" From 6367a7cc1b816b64f7669103709e5361379984ed Mon Sep 17 00:00:00 2001 From: Pablo Barrenechea Date: Mon, 21 May 2018 12:23:20 -0300 Subject: [PATCH 212/611] Added banner script to layout --- views/website/layout.pug | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/views/website/layout.pug b/views/website/layout.pug index d8b7472d..3dcd3f74 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -27,7 +27,12 @@ html(lang='en') meta(property='og:image:type', content='image/png') meta(property='og:image:width', content='1200') meta(property='og:image:height', content='630') - + + // GDPR cookie banner + script(src="https://cdn.cookielaw.org/consent/c1198aef-6105-4bf5-9af7-ab5b543482e0.js") + script(type="text/javascript"). + function OptanonWrapper() { } + include ../stylesheets.pug link(rel='search', type='application/opensearchdescription+xml', title='JWT.io', href='http://github.com/opensearch.xml') From d8668e902f52bd16fc7d858aabfd836e5ecdd781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 22 May 2018 11:48:40 -0300 Subject: [PATCH 213/611] Move GDPR detection script to the bottom. --- views/website/layout.pug | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/views/website/layout.pug b/views/website/layout.pug index 3dcd3f74..d9750d99 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -27,11 +27,6 @@ html(lang='en') meta(property='og:image:type', content='image/png') meta(property='og:image:width', content='1200') meta(property='og:image:height', content='630') - - // GDPR cookie banner - script(src="https://cdn.cookielaw.org/consent/c1198aef-6105-4bf5-9af7-ab5b543482e0.js") - script(type="text/javascript"). - function OptanonWrapper() { } include ../stylesheets.pug @@ -82,3 +77,8 @@ html(lang='en') script. !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); + + // GDPR cookie banner + script(src="https://cdn.cookielaw.org/consent/c1198aef-6105-4bf5-9af7-ab5b543482e0.js") + script(type="text/javascript"). + function OptanonWrapper() { } From 43a5e21f981be15cbf60c0016622fa9d9f4b47af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 22 May 2018 11:51:41 -0300 Subject: [PATCH 214/611] Set version 2.2.0. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5fdb55d5..507ecec3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "2.1.4", + "version": "2.2.0", "repository": { "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" From 793d5eb082bfca1349485aa650609229423860b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 31 May 2018 17:53:13 -0300 Subject: [PATCH 215/611] NPM audit fixes. --- package-lock.json | 8575 ++++++++++++++++++++++++--------------------- package.json | 6 +- 2 files changed, 4593 insertions(+), 3988 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0bd80270..1d3c539f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "2.1.3", + "version": "2.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -26,13 +26,13 @@ "@babel/traverse": "7.0.0-beta.40", "@babel/types": "7.0.0-beta.40", "babylon": "7.0.0-beta.40", - "convert-source-map": "1.5.1", - "debug": "3.1.0", - "json5": "0.5.1", - "lodash": "4.17.5", - "micromatch": "2.3.11", - "resolve": "1.5.0", - "source-map": "0.5.7" + "convert-source-map": "^1.1.0", + "debug": "^3.0.1", + "json5": "^0.5.0", + "lodash": "^4.2.0", + "micromatch": "^2.3.11", + "resolve": "^1.3.2", + "source-map": "^0.5.0" }, "dependencies": { "debug": { @@ -53,10 +53,10 @@ "dev": true, "requires": { "@babel/types": "7.0.0-beta.40", - "jsesc": "2.5.1", - "lodash": "4.17.5", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "jsesc": "^2.5.1", + "lodash": "^4.2.0", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" } }, "@babel/helper-annotate-as-pure": { @@ -97,7 +97,7 @@ "requires": { "@babel/helper-function-name": "7.0.0-beta.40", "@babel/types": "7.0.0-beta.40", - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/helper-explode-assignable-expression": { @@ -146,7 +146,7 @@ "dev": true, "requires": { "@babel/types": "7.0.0-beta.40", - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/helper-module-transforms": { @@ -159,7 +159,7 @@ "@babel/helper-simple-access": "7.0.0-beta.40", "@babel/template": "7.0.0-beta.40", "@babel/types": "7.0.0-beta.40", - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/helper-optimise-call-expression": { @@ -177,7 +177,7 @@ "integrity": "sha512-75zi8hZSdWLT7upmEyAemfN0hJ7522svItPGbIj4Pi2T/C5vbgNFXLy8o/iOCX4FzB+yVKhz0zWC3SzN9hyigA==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/helper-remap-async-to-generator": { @@ -213,7 +213,7 @@ "requires": { "@babel/template": "7.0.0-beta.40", "@babel/types": "7.0.0-beta.40", - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/helper-wrap-function": { @@ -245,9 +245,9 @@ "integrity": "sha512-mOhhTrzieV6VO7odgzFGFapiwRK0ei8RZRhfzHhb6cpX3QM8XXuCLXWjN8qBB7JReDdUR80V3LFfFrGUYevhNg==", "dev": true, "requires": { - "chalk": "2.3.2", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" } }, "@babel/plugin-proposal-async-generator-functions": { @@ -285,7 +285,7 @@ "dev": true, "requires": { "@babel/helper-regex": "7.0.0-beta.40", - "regexpu-core": "4.1.3" + "regexpu-core": "^4.1.3" } }, "@babel/plugin-syntax-async-generators": { @@ -334,7 +334,7 @@ "integrity": "sha512-8QpOK9lXdzrq1QIrP3Hfx/BmGPaCKjBORd2QSjdghPNNRlQFZmO2l3kb0I6yC7w75U1M5q26KvUbAcPrE68E4w==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/plugin-transform-classes": { @@ -348,7 +348,7 @@ "@babel/helper-function-name": "7.0.0-beta.40", "@babel/helper-optimise-call-expression": "7.0.0-beta.40", "@babel/helper-replace-supers": "7.0.0-beta.40", - "globals": "11.3.0" + "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { @@ -370,7 +370,7 @@ "dev": true, "requires": { "@babel/helper-regex": "7.0.0-beta.40", - "regexpu-core": "4.1.3" + "regexpu-core": "^4.1.3" } }, "@babel/plugin-transform-duplicate-keys": { @@ -477,7 +477,7 @@ "integrity": "sha512-hFj52wAXbEpXwwfKsMol5Y967D3L8tz46Jin9n/gYPgcNWugvsw6d7g+HknBJ8FzaUESrDruFRkGPXgD+FyjvQ==", "dev": true, "requires": { - "regenerator-transform": "0.12.3" + "regenerator-transform": "^0.12.3" } }, "@babel/plugin-transform-shorthand-properties": { @@ -523,7 +523,7 @@ "dev": true, "requires": { "@babel/helper-regex": "7.0.0-beta.40", - "regexpu-core": "4.1.3" + "regexpu-core": "^4.1.3" } }, "@babel/polyfill": { @@ -532,8 +532,8 @@ "integrity": "sha512-aUO+KHYJDFAnyRU/g3sBofp9WVKI0ROriGpeKXBTq8DsMYnvbZkNQaEwrzKi6TzmVuRDBNpVAkArZQ9qbQrqRA==", "dev": true, "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" + "core-js": "^2.5.3", + "regenerator-runtime": "^0.11.1" } }, "@babel/preset-env": { @@ -576,9 +576,9 @@ "@babel/plugin-transform-template-literals": "7.0.0-beta.40", "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.40", "@babel/plugin-transform-unicode-regex": "7.0.0-beta.40", - "browserslist": "3.1.1", - "invariant": "2.2.3", - "semver": "5.5.0" + "browserslist": "^3.0.0", + "invariant": "^2.2.2", + "semver": "^5.3.0" } }, "@babel/template": { @@ -590,7 +590,7 @@ "@babel/code-frame": "7.0.0-beta.40", "@babel/types": "7.0.0-beta.40", "babylon": "7.0.0-beta.40", - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/traverse": { @@ -604,10 +604,10 @@ "@babel/helper-function-name": "7.0.0-beta.40", "@babel/types": "7.0.0-beta.40", "babylon": "7.0.0-beta.40", - "debug": "3.1.0", - "globals": "11.3.0", - "invariant": "2.2.3", - "lodash": "4.17.5" + "debug": "^3.0.1", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" }, "dependencies": { "debug": { @@ -627,9 +627,45 @@ "integrity": "sha512-uXCGCzTgMZxcSUzutCPtZmXbVC+cvENgS2e0tRuhn+Y1hZnMb8IHP0Trq7Q2MB/eFmG5pKrAeTIUfQIe5kA4Tg==", "dev": true, "requires": { - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "2.0.0" + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" + } + }, + "@cliqz-oss/firefox-client": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@cliqz-oss/firefox-client/-/firefox-client-0.3.1.tgz", + "integrity": "sha512-RO+Tops/wGnBzWoZYkCraqyh2JqOejqJq5/a4b54HhmjTNSKdUPwAOK17EGg/zPb0nWqkuB7QyZsI9bo+ev8Kw==", + "dev": true, + "requires": { + "colors": "0.5.x", + "js-select": "~0.6.0" + }, + "dependencies": { + "colors": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", + "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", + "dev": true + } + } + }, + "@cliqz-oss/node-firefox-connect": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@cliqz-oss/node-firefox-connect/-/node-firefox-connect-1.2.1.tgz", + "integrity": "sha512-O/IyiB5pfztCdmxQZg0/xeq5w+YiP3gtJz8d4We2EpLPKzbDVjOrtfLKYgVfm6Ya6mbvDge1uLkSRwaoVCWKnA==", + "dev": true, + "requires": { + "@cliqz-oss/firefox-client": "0.3.1", + "es6-promise": "^2.0.1" + }, + "dependencies": { + "es6-promise": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", + "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=", + "dev": true + } } }, "@sinonjs/formatio": { @@ -653,15 +689,244 @@ "integrity": "sha512-+Jty46mPaWe1VAyZbfvgJM4BAdklLWxrT5tc/RjvCgLrtk6gzRY6AOnoWFv4p6hVxhJshDdr2hGVn56alBp97Q==", "dev": true, "requires": { - "@types/babel-types": "7.0.1" + "@types/babel-types": "*" } }, "@types/node": { - "version": "9.4.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.4.6.tgz", - "integrity": "sha512-CTUtLb6WqCCgp6P59QintjHWqzf4VL1uPA27bipLAPxFqrtK1gEYllePzTICGqQ8rYsCbpnsNypXjjDzGAAjEQ==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.4.tgz", + "integrity": "sha512-GpQxofkdlHYxjHad98UUdNoMO7JrmzQZoAaghtNg14Gwg7YkohcrCoJEcEMSgllx4VIZ+mYw7ZHjfaeIagP/rg==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.9.tgz", + "integrity": "sha512-xL3hC0TOc4ic1UNG8ZZNeaiPf1klozt6rqajcy7hfO/qqfkEhLff1AFt5g2LJkTjhw+QSEYVMt7qOaaApu7JzA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.5.9", + "@webassemblyjs/helper-wasm-bytecode": "1.5.9", + "@webassemblyjs/wast-parser": "1.5.9", + "debug": "^3.1.0", + "mamacro": "^0.0.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.9.tgz", + "integrity": "sha512-naMJjuBqDqx4dPSzwpI9pkjdLds4tDTzvsOEzwxPDp655IfgLLP/QEvK/9PQp4p5DExqrR87rk8DWByoqWWlGA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.9.tgz", + "integrity": "sha512-tzGdqBo7Xf3McJcXbwbwzwElRzF/nELJN+G4MGGfm0DGRQB6UTmMe44jFIOQYT1Za89Aiz5DMQJotdnnLheixw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.9.tgz", + "integrity": "sha512-WYkys6y33viEY23tHJ+KkSd9yHZBd54Sy6gcSgwLGPP1or9pLqWBrjWWATHuDuIkpvSJSt/+3qjAV6zHd1nS0g==", + "dev": true, + "requires": { + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.9.tgz", + "integrity": "sha512-SYjNAlqcRH+YynslbIhFYOnGvE3WBl82/XlcFXiNkqnWsvHWnNkJbtxAtzrT/dcf69O/2pt8j1Q0+qc/rtacVw==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.5.9" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.9.tgz", + "integrity": "sha512-8D+VVIJTRbsn31zt3eyidYyUkhH1jk2/58mrIPiMarflRsisItJa5WZVu/gw0l+ubFOJf9PivTJB6Kw/Kgxx3g==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.9.tgz", + "integrity": "sha512-DbeLbFOhioEeY7yAff12+n5sf7WP7Fmi0lnhCSzfW4xBsgwXKmRjAx7nVmsUf3z+BDnwHHVKIXBUM+ucccNUsw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.9.tgz", + "integrity": "sha512-zHQuTMMd2nTyEa3fbmGfzlJW305py1sgf1gHNCO/LVN8nWlKysB/+6J68sP1Cd+9USnT1VS2vyD1z+YJPS6GqQ==", "dev": true }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.9.tgz", + "integrity": "sha512-+ff+8Ju6sLCMFNygcDdLRNRsmuD0PHwq77d2mbfWj5YzUvFaKN2q2kRppJSEAixOnM2xLADuG5y/blpMo5G90A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.9", + "@webassemblyjs/helper-buffer": "1.5.9", + "@webassemblyjs/helper-wasm-bytecode": "1.5.9", + "@webassemblyjs/wasm-gen": "1.5.9", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/ieee754": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.9.tgz", + "integrity": "sha512-mhetZBDnpV3VYqZb5Aail9X01VyIqDDZrNYdYj8bfx/PsVPG2znX90wRyVNTeqC5ylqHCgGkJ63bPaPEyINfsw==", + "dev": true, + "requires": { + "ieee754": "^1.1.11" + } + }, + "@webassemblyjs/leb128": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.9.tgz", + "integrity": "sha512-oZ3eUB9EViUtiuMwW/xeYamXgfFS2cmXl6aUIYBfpXJQ5v5aOC8ZuPpz2/LqlgNlT8ThpyFd6kfgkYVwKwkGvQ==", + "dev": true, + "requires": { + "leb": "^0.3.0" + } + }, + "@webassemblyjs/wasm-edit": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.9.tgz", + "integrity": "sha512-pMWe3HomnWAMZytJ5sSNBS6qTbSoULUHkvDrtcarmLBTclmupZe25INy1jxbWGKsuFxw6w0xQ+eLRPlC8HPjhg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.9", + "@webassemblyjs/helper-buffer": "1.5.9", + "@webassemblyjs/helper-wasm-bytecode": "1.5.9", + "@webassemblyjs/helper-wasm-section": "1.5.9", + "@webassemblyjs/wasm-gen": "1.5.9", + "@webassemblyjs/wasm-opt": "1.5.9", + "@webassemblyjs/wasm-parser": "1.5.9", + "@webassemblyjs/wast-printer": "1.5.9", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.9.tgz", + "integrity": "sha512-UEhymlxupBUJuwnD2N860MqkpE7LHt0tNKqAgT4YAVjbx+88P6MBBk+q+9wr2FJCXxMgsPTxMWifqC4wd2FzVg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.9", + "@webassemblyjs/helper-wasm-bytecode": "1.5.9", + "@webassemblyjs/ieee754": "1.5.9", + "@webassemblyjs/leb128": "1.5.9" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.9.tgz", + "integrity": "sha512-oQm84US3e36dPq5bOeybVKA2ZyzeWR4fereg9kJa0Y9XLKxHwlsBa2kFyNXwZNrhMP33iyXAW+ym7om1zPZeAg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.9", + "@webassemblyjs/helper-buffer": "1.5.9", + "@webassemblyjs/wasm-gen": "1.5.9", + "@webassemblyjs/wasm-parser": "1.5.9", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.9.tgz", + "integrity": "sha512-jBKBTKE4M/WYCSqLjRvK+/QD55E/HNcQjswbksof3GEXfkq0iMqYxoPfqR7uLAD9/jVf9HpBNW2FJOyfTTlYfw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.9", + "@webassemblyjs/helper-api-error": "1.5.9", + "@webassemblyjs/helper-wasm-bytecode": "1.5.9", + "@webassemblyjs/ieee754": "1.5.9", + "@webassemblyjs/leb128": "1.5.9", + "@webassemblyjs/wasm-parser": "1.5.9" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.9.tgz", + "integrity": "sha512-bDuYH/NR5D+MmwVZdGW2rUvu4UcKGpodiHBSueajon3oNPu+PAKG+7br3BVFKxDUtDoVtuHLUQvkqp1lTrqPCA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.9", + "@webassemblyjs/floating-point-hex-parser": "1.5.9", + "@webassemblyjs/helper-api-error": "1.5.9", + "@webassemblyjs/helper-code-frame": "1.5.9", + "@webassemblyjs/helper-fsm": "1.5.9", + "long": "^3.2.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.9.tgz", + "integrity": "sha512-04iV32TO69kZChP3DN6W8i6GCa5UtEn1Lnzb4sQGe5YNjIFz2k8+KZLxbovWIZgj9pk06k3Egq/wyD98lSKaLw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.9", + "@webassemblyjs/wast-parser": "1.5.9", + "long": "^3.2.0" + } + }, "JSONSelect": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.2.1.tgz", @@ -679,7 +944,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "2.1.18", + "mime-types": "~2.1.18", "negotiator": "0.6.1" } }, @@ -690,18 +955,18 @@ "dev": true }, "acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", "dev": true, "requires": { - "acorn": "4.0.13" + "acorn": "^5.0.0" }, "dependencies": { "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.0.tgz", + "integrity": "sha512-QatFQ4C0n+PLqemyC6zXEv04tSqRR0hRqe+uGKPEVgKe2G8kl8wJvHzRYWwz6vqqEqt6idPVMFojZ4P1zlyAzQ==", "dev": true } } @@ -712,7 +977,7 @@ "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", "dev": true, "requires": { - "acorn": "4.0.13" + "acorn": "^4.0.4" }, "dependencies": { "acorn": { @@ -729,7 +994,7 @@ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { - "acorn": "3.3.0" + "acorn": "^3.0.4" } }, "adbkit": { @@ -738,13 +1003,13 @@ "integrity": "sha512-j2vUhEeZmCiqBP+p77CpPWQTcT20rOmSmRHFUTZUwUpxzeCd3fXop4NAGYztSY9/FNU4bT/qqvYQ4EZKuCXhfA==", "dev": true, "requires": { - "adbkit-logcat": "1.1.0", - "adbkit-monkey": "1.0.1", - "bluebird": "2.9.34", - "commander": "2.8.1", - "debug": "2.6.9", - "node-forge": "0.7.2", - "split": "0.3.3" + "adbkit-logcat": "^1.1.0", + "adbkit-monkey": "~1.0.1", + "bluebird": "~2.9.24", + "commander": "^2.3.0", + "debug": "~2.6.3", + "node-forge": "^0.7.1", + "split": "~0.3.3" }, "dependencies": { "bluebird": { @@ -767,7 +1032,7 @@ "integrity": "sha1-8pG+cBou/FZ6Y/x6pq/N7TFDC+E=", "dev": true, "requires": { - "async": "0.2.10" + "async": "~0.2.9" }, "dependencies": { "async": { @@ -779,120 +1044,88 @@ } }, "addons-linter": { - "version": "0.35.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-0.35.0.tgz", - "integrity": "sha1-hYcszliYP/M5ztKX2/9IbALs0zY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-1.0.0.tgz", + "integrity": "sha512-6cC0Jcf0vMVgE86TV4A1lfjx78Fp0JltA1UH2icz/cALWMMfDZrD7YpB4dMrpobclsbKFPHexNOYhS4efAc5ng==", "dev": true, "requires": { - "ajv": "5.5.2", + "ajv": "6.5.0", "ajv-merge-patch": "3.0.0", "babel-register": "6.26.0", - "chalk": "2.3.0", + "chalk": "2.4.0", "cheerio": "1.0.0-rc.2", "columnify": "1.5.4", "common-tags": "1.7.2", "crx-parser": "0.1.2", - "dispensary": "0.12.0", - "doctoc": "1.3.0", + "deepmerge": "2.1.0", + "dispensary": "0.18.0", + "doctoc": "1.3.1", "es6-promisify": "5.0.0", - "eslint": "4.15.0", + "eslint": "4.19.1", "eslint-plugin-no-unsafe-innerhtml": "1.0.16", "esprima": "3.1.3", - "extract-text-webpack-plugin": "3.0.2", "first-chunk-stream": "2.0.0", - "fluent": "0.4.1", + "fluent-syntax": "^0.7.0", "glob": "7.1.2", + "is-mergeable-object": "1.1.0", "jed": "1.1.1", - "pino": "4.10.3", + "os-locale": "2.1.0", + "pino": "4.16.1", "po2json": "0.4.5", - "postcss": "6.0.14", - "probe-image-size": "3.2.0", + "postcss": "6.0.19", + "probe-image-size": "4.0.0", "relaxed-json": "1.0.1", "semver": "5.5.0", "shelljs": "0.8.1", - "source-map-support": "0.5.1", + "snyk": "^1.78.1", + "source-map-support": "0.5.6", "strip-bom-stream": "3.0.0", "tosource": "1.0.0", - "upath": "1.0.2", - "webpack": "3.10.0", - "whatwg-url": "6.3.0", + "upath": "1.0.5", + "whatwg-url": "6.4.1", "xmldom": "0.1.27", - "yargs": "10.0.3", + "yargs": "11.0.0", "yauzl": "2.9.1" }, "dependencies": { - "acorn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.0.tgz", - "integrity": "sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g==", - "dev": true - }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true - }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", "dev": true, "requires": { - "lodash": "4.17.5" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^4.2.1" } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", + "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, "esprima": { @@ -901,253 +1134,93 @@ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "dev": true }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "2.3.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "source-map-support": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "ansi-regex": "^3.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, - "source-map-support": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.1.tgz", - "integrity": "sha512-EZNecLNrsdRk9fcdOcjjy+Z/id7cr68sdmsYtR1gA45oQ81Ccea0UvM7DdSRblO0Ie5zWX31bvJTC7Y3QZVujg==", + "yargs": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, "requires": { - "source-map": "0.6.1" + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "yauzl": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz", + "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", "dev": true, "requires": { - "has-flag": "2.0.0" - } - }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dev": true, - "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "webpack": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", - "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", - "dev": true, - "requires": { - "acorn": "5.5.0", - "acorn-dynamic-import": "2.0.2", - "ajv": "5.5.2", - "ajv-keywords": "2.1.1", - "async": "2.6.0", - "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.1.0", - "json-loader": "0.5.7", - "json5": "0.5.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.5.0", - "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.4.0", - "webpack-sources": "1.1.0", - "yargs": "8.0.2" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "dev": true, - "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" - } - } - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", - "dev": true, - "requires": { - "cliui": "3.2.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.1.0" - }, - "dependencies": { - "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", - "dev": true, - "requires": { - "camelcase": "4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dev": true, - "requires": { - "camelcase": "4.1.0" - } - }, - "yauzl": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz", - "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", - "dev": true, - "requires": { - "buffer-crc32": "0.2.13", - "fd-slicer": "1.0.1" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.0.1" } } } }, "adm-zip": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", - "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.11.tgz", + "integrity": "sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA==", "dev": true }, "agent-base": { @@ -1156,7 +1229,7 @@ "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "dev": true, "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" } }, "ajv": { @@ -1165,9 +1238,9 @@ "integrity": "sha1-r6wpW7qgFSRJ5SJ0LkVHwa6TKNI=", "dev": true, "requires": { - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ajv-keywords": { @@ -1182,8 +1255,8 @@ "integrity": "sha1-dvBx45H0Gf6f4/6n6SChrYJLK2E=", "dev": true, "requires": { - "fast-json-patch": "1.2.2", - "json-merge-patch": "0.2.3" + "fast-json-patch": "^1.0.0", + "json-merge-patch": "^0.2.3" } }, "align-text": { @@ -1192,9 +1265,9 @@ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -1209,7 +1282,7 @@ "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", "dev": true, "requires": { - "emoji-regex": "6.1.3" + "emoji-regex": "~6.1.0" } }, "ansi-align": { @@ -1218,13 +1291,13 @@ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.0.0" } }, "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, "ansi-regex": { @@ -1239,9 +1312,15 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, + "ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", + "dev": true + }, "any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -1249,13 +1328,289 @@ "dev": true }, "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } } }, "aproba": { @@ -1270,15 +1625,15 @@ "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", "dev": true, "requires": { - "archiver-utils": "1.3.0", - "async": "2.6.0", - "buffer-crc32": "0.2.13", - "glob": "7.0.6", - "lodash": "4.17.5", - "readable-stream": "2.3.4", - "tar-stream": "1.5.5", - "walkdir": "0.0.11", - "zip-stream": "1.2.0" + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "walkdir": "^0.0.11", + "zip-stream": "^1.1.0" }, "dependencies": { "async": { @@ -1287,7 +1642,7 @@ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.14.0" } } } @@ -1298,21 +1653,27 @@ "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", "dev": true, "requires": { - "glob": "7.0.6", - "graceful-fs": "4.1.11", - "lazystream": "1.0.0", - "lodash": "4.17.5", - "normalize-path": "2.1.1", - "readable-stream": "2.3.4" + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" } }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" }, "dependencies": { "sprintf-js": { @@ -1329,7 +1690,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -1385,7 +1746,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -1424,9 +1785,9 @@ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "assert": { @@ -1456,6 +1817,12 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "ast-types": { + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.5.tgz", + "integrity": "sha512-oJjo+5e7/vEc2FBK8gUalV0pba4L3VdBIs2EKhOLHLcOd2FgQIVQN9xb0eZ9IjEWyAL7vq6fGJxOvVvdCHNyMw==", + "dev": true + }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", @@ -1481,9 +1848,9 @@ "dev": true }, "atob": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, "aws-sign2": { @@ -1493,9 +1860,9 @@ "dev": true }, "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", "dev": true }, "babel-code-frame": { @@ -1504,9 +1871,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { "ansi-styles": { @@ -1521,11 +1888,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "supports-color": { @@ -1542,25 +1909,25 @@ "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.5", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.0", + "debug": "^2.6.8", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.7", + "slash": "^1.0.0", + "source-map": "^0.5.6" }, "dependencies": { "babylon": { @@ -1577,14 +1944,14 @@ "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.5", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" }, "dependencies": { "jsesc": { @@ -1601,8 +1968,8 @@ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-loader": { @@ -1611,9 +1978,9 @@ "integrity": "sha512-P1zch1DvQy3RGmp/1CH78uPg5gTPQQ01S9r6ipCOWVamO0UIC8gnrx7m7LsUsXa470yB6IOZxhtEEwIUclRLNw==", "dev": true, "requires": { - "find-cache-dir": "1.0.0", - "loader-utils": "1.1.0", - "mkdirp": "0.5.1" + "find-cache-dir": "^1.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1" } }, "babel-messages": { @@ -1622,7 +1989,7 @@ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-polyfill": { @@ -1631,9 +1998,9 @@ "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "core-js": "2.5.3", - "regenerator-runtime": "0.10.5" + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" }, "dependencies": { "regenerator-runtime": { @@ -1650,13 +2017,13 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.0", - "babel-runtime": "6.26.0", - "core-js": "2.5.3", - "home-or-tmp": "2.0.0", - "lodash": "4.17.5", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" }, "dependencies": { "source-map-support": { @@ -1665,7 +2032,7 @@ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } } } @@ -1676,8 +2043,8 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, "babel-template": { @@ -1686,11 +2053,11 @@ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.5" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" }, "dependencies": { "babylon": { @@ -1707,15 +2074,15 @@ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.3", - "lodash": "4.17.5" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" }, "dependencies": { "babylon": { @@ -1738,10 +2105,10 @@ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" }, "dependencies": { "to-fast-properties": { @@ -1759,9 +2126,9 @@ "dev": true }, "bail": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.2.tgz", - "integrity": "sha1-99bBcxYwqfnw1NNe0fli4gdKF2Q=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", + "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", "dev": true }, "balanced-match": { @@ -1776,13 +2143,13 @@ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { "define-property": { @@ -1791,27 +2158,56 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, "base64-js": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", - "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", - "dev": true - }, - "base64url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", - "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", + "integrity": "sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=", "dev": true }, "basic-auth": { @@ -1836,7 +2232,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "big.js": { @@ -1857,7 +2253,7 @@ "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", "dev": true, "requires": { - "readable-stream": "2.3.4" + "readable-stream": "^2.0.5" } }, "bluebird": { @@ -1872,21 +2268,57 @@ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", "dev": true }, + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "dev": true, + "requires": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + }, + "dependencies": { + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, + "raw-body": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "dev": true, + "requires": { + "bytes": "1", + "string_decoder": "0.10" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, "body-parser": { "version": "1.18.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", "requires": { "bytes": "3.0.0", - "content-type": "1.0.4", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.2", + "depd": "~1.1.1", + "http-errors": "~1.6.2", "iconv-lite": "0.4.19", - "on-finished": "2.3.0", + "on-finished": "~2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "1.6.16" + "type-is": "~1.6.15" } }, "boolbase": { @@ -1901,7 +2333,7 @@ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } }, "bootstrap": { @@ -1910,6 +2342,16 @@ "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=", "dev": true }, + "bops": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/bops/-/bops-0.1.1.tgz", + "integrity": "sha1-Bi4CqNqoAfoQ8uXb5nQM/4Af4X4=", + "dev": true, + "requires": { + "base64-js": "0.0.2", + "to-utf8": "0.0.1" + } + }, "boundary": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", @@ -1922,13 +2364,13 @@ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.3.2", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" }, "dependencies": { "camelcase": { @@ -1945,7 +2387,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -1955,9 +2397,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "brorand": { @@ -1973,39 +2415,39 @@ "dev": true }, "browserify-aes": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", - "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, "requires": { - "browserify-aes": "1.1.1", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", + "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", "dev": true, "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" } }, "browserify-rsa": { @@ -2014,8 +2456,8 @@ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, "browserify-sign": { @@ -2024,13 +2466,13 @@ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, "browserify-zlib": { @@ -2039,7 +2481,7 @@ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "pako": "1.0.6" + "pako": "~1.0.5" } }, "browserslist": { @@ -2048,8 +2490,8 @@ "integrity": "sha512-zHGaPnTt70ywm+glR7uMJFZSl+ADGO67SgD2ae20L+Y3KJUeH4fVa89OkTqKCqAnXFE9mO4LTHBKBqKRlr7VNw==", "dev": true, "requires": { - "caniuse-lite": "1.0.30000810", - "electron-to-chromium": "1.3.34" + "caniuse-lite": "^1.0.30000809", + "electron-to-chromium": "^1.3.33" } }, "buffer": { @@ -2058,9 +2500,17 @@ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "base64-js": "1.2.3", - "ieee754": "1.1.8", - "isarray": "1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + }, + "dependencies": { + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + } } }, "buffer-crc32": { @@ -2075,6 +2525,12 @@ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", "dev": true }, + "buffer-from": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", + "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", + "dev": true + }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", @@ -2099,10 +2555,10 @@ "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", "dev": true, "requires": { - "dtrace-provider": "0.8.6", - "moment": "2.21.0", - "mv": "2.1.1", - "safe-json-stringify": "1.1.0" + "dtrace-provider": "~0.8", + "moment": "^2.10.6", + "mv": "~2", + "safe-json-stringify": "~1" } }, "bytes": { @@ -2116,19 +2572,19 @@ "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", "dev": true, "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.1", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.2.4", - "unique-filename": "1.1.0", - "y18n": "4.0.0" + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" }, "dependencies": { "glob": { @@ -2137,12 +2593,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "rimraf": { @@ -2151,7 +2607,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } } } @@ -2162,15 +2618,15 @@ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" }, "dependencies": { "isobject": { @@ -2187,7 +2643,7 @@ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "callsites": "0.2.0" + "callsites": "^0.2.0" } }, "callsites": { @@ -2208,8 +2664,8 @@ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" } }, "caniuse-lite": { @@ -2231,9 +2687,9 @@ "dev": true }, "ccount": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.2.tgz", - "integrity": "sha1-U7ai+BW7d7nChx97mnLDol8djok=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz", + "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==", "dev": true }, "center-align": { @@ -2242,8 +2698,8 @@ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chai": { @@ -2252,12 +2708,12 @@ "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", "dev": true, "requires": { - "assertion-error": "1.1.0", - "check-error": "1.0.2", - "deep-eql": "3.0.1", - "get-func-name": "2.0.0", - "pathval": "1.1.0", - "type-detect": "4.0.8" + "assertion-error": "^1.0.1", + "check-error": "^1.0.1", + "deep-eql": "^3.0.0", + "get-func-name": "^2.0.0", + "pathval": "^1.0.0", + "type-detect": "^4.0.0" } }, "chai-arrays": { @@ -2272,7 +2728,7 @@ "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", "dev": true, "requires": { - "check-error": "1.0.2" + "check-error": "^1.0.2" } }, "chai-json-schema": { @@ -2282,7 +2738,7 @@ "dev": true, "requires": { "jsonpointer.js": "0.4.0", - "tv4": "1.2.7" + "tv4": "~1.2.7" } }, "chalk": { @@ -2291,27 +2747,27 @@ "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "character-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.1.tgz", - "integrity": "sha1-92hxvl72bdt/j440eOzDdMJ9bco=", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", + "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", "dev": true }, "character-entities-html4": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.1.tgz", - "integrity": "sha1-NZoqSg9+KdPcKsmb2+Ie45Q46lA=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz", + "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==", "dev": true }, "character-entities-legacy": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz", - "integrity": "sha1-9Ad53xoQGHK7UQo9KV4fzPFHIC8=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", + "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", "dev": true }, "character-parser": { @@ -2320,13 +2776,13 @@ "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", "dev": true, "requires": { - "is-regex": "1.0.4" + "is-regex": "^1.0.3" } }, "character-reference-invalid": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz", - "integrity": "sha1-lCg191Dk7GGjCOYMLvjMEBEgLvw=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", + "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", "dev": true }, "chardet": { @@ -2347,29 +2803,130 @@ "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", "dev": true, "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.9.2", - "lodash": "4.17.5", - "parse5": "3.0.3" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" } }, "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.3", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.1.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.0" + }, + "dependencies": { + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "chownr": { @@ -2379,9 +2936,9 @@ "dev": true }, "chrome-trace-event": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.2.tgz", - "integrity": "sha1-kPNohdU0WlBiEzLwcXtZWIPV2YI=", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", + "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", "dev": true }, "cipher-base": { @@ -2390,8 +2947,8 @@ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "circular-json": { @@ -2406,10 +2963,10 @@ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { @@ -2418,58 +2975,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-descriptor": "^0.1.0" } }, "isobject": { @@ -2477,12 +2983,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, @@ -2492,8 +2992,8 @@ "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", "dev": true, "requires": { - "commander": "2.8.1", - "source-map": "0.4.4" + "commander": "2.8.x", + "source-map": "0.4.x" }, "dependencies": { "source-map": { @@ -2502,7 +3002,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -2519,7 +3019,7 @@ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-width": { @@ -2551,17 +3051,40 @@ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" } }, "clone": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", - "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "dev": true }, + "clone-deep": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.1", + "kind-of": "^3.2.2", + "shallow-clone": "^0.1.2" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -2587,9 +3110,9 @@ "dev": true }, "collapse-white-space": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.3.tgz", - "integrity": "sha1-S5BvZw5aljqHt2sOFolkM0G2Ajw=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", + "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", "dev": true }, "collection-visit": { @@ -2598,8 +3121,8 @@ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "color-convert": { @@ -2608,7 +3131,7 @@ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -2629,8 +3152,8 @@ "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", "dev": true, "requires": { - "strip-ansi": "3.0.1", - "wcwidth": "1.0.1" + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" } }, "combined-stream": { @@ -2639,7 +3162,7 @@ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -2648,7 +3171,7 @@ "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "common-tags": { @@ -2657,7 +3180,7 @@ "integrity": "sha512-joj9ZlUOjCrwdbmiLqafeUSgkUM74NqhLsZtSqDmhKudaIY197zTrb8JMl31fMnCUuxwFT23eC/oWvrZzDLRJQ==", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.26.0" } }, "commondir": { @@ -2678,10 +3201,10 @@ "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", "dev": true, "requires": { - "buffer-crc32": "0.2.13", - "crc32-stream": "2.0.0", - "normalize-path": "2.1.1", - "readable-stream": "2.3.4" + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" } }, "concat-map": { @@ -2696,23 +3219,23 @@ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.4", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "configstore": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", - "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.2.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "connect": { @@ -2723,7 +3246,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.1.0", - "parseurl": "1.3.2", + "parseurl": "~1.3.2", "utils-merge": "1.0.1" } }, @@ -2739,7 +3262,7 @@ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "date-now": "0.1.4" + "date-now": "^0.1.4" } }, "constantinople": { @@ -2748,10 +3271,10 @@ "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", "dev": true, "requires": { - "@types/babel-types": "7.0.1", - "@types/babylon": "6.16.2", - "babel-types": "6.26.0", - "babylon": "6.18.0" + "@types/babel-types": "^7.0.0", + "@types/babylon": "^6.16.2", + "babel-types": "^6.26.0", + "babylon": "^6.18.0" }, "dependencies": { "babylon": { @@ -2778,6 +3301,12 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "dev": true + }, "convert-source-map": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", @@ -2800,12 +3329,12 @@ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "dev": true, "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" }, "dependencies": { "rimraf": { @@ -2814,7 +3343,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.0.6" + "glob": "^7.0.5" } } } @@ -2849,18 +3378,18 @@ "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", "dev": true, "requires": { - "crc": "3.5.0", - "readable-stream": "2.3.4" + "crc": "^3.4.4", + "readable-stream": "^2.0.0" } }, "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, "create-error-class": { @@ -2869,33 +3398,34 @@ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { - "capture-stack-trace": "1.0.0" + "capture-stack-trace": "^1.0.0" } }, "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.10" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, "create-hmac": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.10" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "cross-spawn": { @@ -2904,9 +3434,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.2.14" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "crx": { @@ -2915,10 +3445,10 @@ "integrity": "sha1-Fyk+51790IxtHIs+F0nS1XV89Cs=", "dev": true, "requires": { - "archiver": "1.3.0", - "commander": "2.8.1", - "es6-promise": "3.3.1", - "node-rsa": "0.2.30" + "archiver": "^1.1.0", + "commander": "^2.5.0", + "es6-promise": "^3.0.0", + "node-rsa": "^0.2.10" } }, "crx-parser": { @@ -2933,7 +3463,7 @@ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { @@ -2942,7 +3472,7 @@ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "dev": true, "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } } } @@ -2953,17 +3483,17 @@ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.6", - "randomfill": "1.0.4" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, "crypto-random-string": { @@ -2984,10 +3514,10 @@ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "dev": true, "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", + "boolbase": "~1.0.0", + "css-what": "2.1", "domutils": "1.5.1", - "nth-check": "1.0.1" + "nth-check": "~1.0.1" } }, "css-what": { @@ -3002,7 +3532,7 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "cyclist": { @@ -3017,7 +3547,7 @@ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.39" + "es5-ext": "^0.10.9" } }, "dashdash": { @@ -3026,10 +3556,16 @@ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, - "date-now": { + "data-uri-to-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", + "dev": true + }, + "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", @@ -3041,8 +3577,8 @@ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "get-stdin": "^4.0.1", + "meow": "^3.3.0" } }, "debounce": { @@ -3077,7 +3613,7 @@ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "type-detect": "4.0.8" + "type-detect": "^4.0.0" } }, "deep-equal": { @@ -3087,9 +3623,9 @@ "dev": true }, "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, "deep-for-each": { @@ -3098,7 +3634,7 @@ "integrity": "sha1-r6DOJJxYSSqXIFOUeKGNN+GxC64=", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.1" } }, "deep-freeze": { @@ -3120,9 +3656,9 @@ "dev": true }, "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.0.tgz", + "integrity": "sha512-Q89Z26KAfA3lpPGhbF6XMfYAm3jIV3avViy6KOJ2JLzFbeWHOvPQUu5aSJIWXap3gDZC2y1eF5HXEPI2wGqgvw==", "dev": true }, "defaults": { @@ -3131,7 +3667,7 @@ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, "requires": { - "clone": "1.0.3" + "clone": "^1.0.2" } }, "define-property": { @@ -3140,15 +3676,69 @@ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "dev": true, + "requires": { + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true } } }, @@ -3158,13 +3748,13 @@ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.2.8" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" }, "dependencies": { "pify": { @@ -3192,8 +3782,8 @@ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "desandro-matches-selector": { @@ -3213,7 +3803,7 @@ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "diff": { @@ -3223,31 +3813,31 @@ "dev": true }, "diffie-hellman": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, "dispensary": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.12.0.tgz", - "integrity": "sha1-zEkbu/pmpXQUyVjGhYKkyHA/8Vk=", - "dev": true, - "requires": { - "array-from": "2.1.1", - "async": "2.6.0", - "natural-compare-lite": "1.4.0", - "pino": "4.10.3", - "request": "2.83.0", - "semver": "5.4.1", - "sha.js": "2.4.10", - "source-map-support": "0.5.0", - "yargs": "10.1.2" + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.18.0.tgz", + "integrity": "sha512-ikVxjigcj4leoPgjqYcHV1YhmLEZ5eXMq30CIPTf1BniWrH1C0X35F5iVCa4U2/JXZYcQJyHWniSRSOpM+hiNw==", + "dev": true, + "requires": { + "array-from": "~2.1.1", + "async": "~2.6.0", + "natural-compare-lite": "~1.4.0", + "pino": "~4.16.1", + "request": "~2.85.0", + "semver": "~5.5.0", + "sha.js": "~2.4.4", + "source-map-support": "~0.5.4", + "yargs": "~11.0.0" }, "dependencies": { "ansi-regex": { @@ -3257,29 +3847,29 @@ "dev": true }, "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.17.10" } }, "cliui": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, "source-map": { @@ -3289,12 +3879,13 @@ "dev": true }, "source-map-support": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", - "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", "dev": true, "requires": { - "source-map": "0.6.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, "strip-ansi": { @@ -3303,7 +3894,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "y18n": { @@ -3313,39 +3904,39 @@ "dev": true }, "yargs": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", - "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", - "dev": true, - "requires": { - "cliui": "4.0.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.1.0" + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" } } } }, "doctoc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.3.0.tgz", - "integrity": "sha1-fwg5hR3VjICKLK5V2VBOAS0I7jA=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.3.1.tgz", + "integrity": "sha1-8BLjYD4xViVMLvIqyIxxkPVUJro=", "dev": true, "requires": { - "anchor-markdown-header": "0.5.7", - "htmlparser2": "3.9.2", - "markdown-to-ast": "3.4.0", - "minimist": "1.2.0", - "underscore": "1.8.3", - "update-section": "0.3.3" + "anchor-markdown-header": "^0.5.5", + "htmlparser2": "~3.9.2", + "markdown-to-ast": "~3.4.0", + "minimist": "~1.2.0", + "underscore": "~1.8.3", + "update-section": "^0.3.0" }, "dependencies": { "minimist": { @@ -3362,7 +3953,7 @@ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "2.0.2" + "esutils": "^2.0.2" } }, "doctypes": { @@ -3377,8 +3968,8 @@ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "dev": true, "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { @@ -3408,12 +3999,12 @@ "dev": true }, "domhandler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "domutils": { @@ -3422,8 +4013,8 @@ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "dot-prop": { @@ -3432,17 +4023,17 @@ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "dtrace-provider": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.6.tgz", - "integrity": "sha1-QooiOv4DQl0s1tY0f99AxmkDVj0=", + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz", + "integrity": "sha1-3JObTT4GIM/gwc2APQ0tftBP/QQ=", "dev": true, "optional": true, "requires": { - "nan": "2.9.2" + "nan": "^2.10.0" } }, "duplexer3": { @@ -3457,10 +4048,10 @@ "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.4", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, "ecc-jsbn": { @@ -3470,17 +4061,16 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "ecdsa-sig-formatter": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", - "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", + "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", "dev": true, "requires": { - "base64url": "2.0.0", - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "ee-first": { @@ -3500,15 +4090,21 @@ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "dev": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, + "email-validator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", + "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", + "dev": true + }, "emoji-regex": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", @@ -3532,7 +4128,7 @@ "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "dev": true, "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "~0.4.13" } }, "end-of-stream": { @@ -3541,19 +4137,18 @@ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", + "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" } }, "entities": { @@ -3568,7 +4163,17 @@ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "prr": "1.0.1" + "prr": "~1.0.1" + } + }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "dev": true, + "requires": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" } }, "error-ex": { @@ -3577,17 +4182,18 @@ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es5-ext": { - "version": "0.10.39", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.39.tgz", - "integrity": "sha512-AlaXZhPHl0po/uxMx1tyrlt1O86M6D5iVaDH8UgLfgek4kXTX6vzsRfJQWC2Ku+aG8pkw1XWzh9eTkwfVrsD5g==", + "version": "0.10.44", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.44.tgz", + "integrity": "sha512-TO4Vt9IhW3FzDKLDOpoA8VS9BCV4b9WTf6BqvMOgfoa8wX73F3Kh3y2J7yTstTaXlQ0k1vq4DH2vw6RSs42z+g==", "dev": true, "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" } }, "es6-error": { @@ -3602,9 +4208,9 @@ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.39", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, "es6-map": { @@ -3613,12 +4219,12 @@ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.39", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "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" } }, "es6-promise": { @@ -3633,7 +4239,7 @@ "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -3650,11 +4256,11 @@ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.39", - "es6-iterator": "2.0.3", + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "event-emitter": "~0.3.5" } }, "es6-symbol": { @@ -3663,8 +4269,8 @@ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.39" + "d": "1", + "es5-ext": "~0.10.14" } }, "es6-weak-map": { @@ -3673,10 +4279,10 @@ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.39", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" } }, "escape-html": { @@ -3690,61 +4296,90 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, "escope": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", "dev": true, "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.15.0.tgz", - "integrity": "sha512-zEO/Z1ZUxIQ+MhDVKkVTUYpIPDTEJLXGMrkID+5v1NeQHtCz6FZikWuFRgxE1Q/RV2V4zVl1u3xmpPADHhMZ6A==", - "dev": true, - "requires": { - "ajv": "5.5.2", - "babel-code-frame": "6.26.0", - "chalk": "2.3.2", - "concat-stream": "1.6.0", - "cross-spawn": "5.1.0", - "debug": "3.1.0", - "doctrine": "2.1.0", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "1.0.0", - "espree": "3.5.3", - "esquery": "1.0.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "11.3.0", - "ignore": "3.3.7", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.1.0", - "js-yaml": "3.10.0", - "json-stable-stringify-without-jsonify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.5", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "7.0.0", - "progress": "2.0.0", - "require-uncached": "1.0.3", - "semver": "5.5.0", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", - "table": "4.0.3", - "text-table": "0.2.0" + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" }, "dependencies": { "ajv": { @@ -3753,10 +4388,10 @@ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ansi-regex": { @@ -3786,22 +4421,22 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "strip-ansi": { @@ -3810,7 +4445,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -3821,7 +4456,7 @@ "integrity": "sha1-fQKHjI6b95FriINtWsEitC8VGTI=", "dev": true, "requires": { - "eslint": "3.19.0" + "eslint": "^3.7.1" }, "dependencies": { "ajv": { @@ -3830,8 +4465,8 @@ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "ajv-keywords": { @@ -3858,11 +4493,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "cli-cursor": { @@ -3871,7 +4506,7 @@ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "eslint": { @@ -3880,41 +4515,41 @@ "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "chalk": "1.1.3", - "concat-stream": "1.6.0", - "debug": "2.6.9", - "doctrine": "2.1.0", - "escope": "3.6.0", - "espree": "3.5.3", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "glob": "7.0.6", - "globals": "9.18.0", - "ignore": "3.3.7", - "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.17.2", - "is-resolvable": "1.1.0", - "js-yaml": "3.5.5", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.5", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", - "require-uncached": "1.0.3", - "shelljs": "0.7.8", - "strip-bom": "3.0.0", - "strip-json-comments": "2.0.1", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" + "babel-code-frame": "^6.16.0", + "chalk": "^1.1.3", + "concat-stream": "^1.5.2", + "debug": "^2.1.1", + "doctrine": "^2.0.0", + "escope": "^3.6.0", + "espree": "^3.4.0", + "esquery": "^1.0.0", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "glob": "^7.0.3", + "globals": "^9.14.0", + "ignore": "^3.2.0", + "imurmurhash": "^0.1.4", + "inquirer": "^0.12.0", + "is-my-json-valid": "^2.10.0", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.5.1", + "json-stable-stringify": "^1.0.0", + "levn": "^0.3.0", + "lodash": "^4.0.0", + "mkdirp": "^0.5.0", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.1", + "pluralize": "^1.2.1", + "progress": "^1.1.8", + "require-uncached": "^1.0.2", + "shelljs": "^0.7.5", + "strip-bom": "^3.0.0", + "strip-json-comments": "~2.0.1", + "table": "^3.7.8", + "text-table": "~0.2.0", + "user-home": "^2.0.0" } }, "figures": { @@ -3923,8 +4558,8 @@ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "globals": { @@ -3939,19 +4574,19 @@ "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.2.0", - "figures": "1.7.0", - "lodash": "4.17.5", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" } }, "is-fullwidth-code-point": { @@ -3960,12 +4595,12 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, @@ -3987,8 +4622,8 @@ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "dev": true, "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" } }, "run-async": { @@ -3997,7 +4632,7 @@ "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.3.0" } }, "rx-lite": { @@ -4012,9 +4647,9 @@ "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", "dev": true, "requires": { - "glob": "7.0.6", - "interpret": "1.1.0", - "rechoir": "0.6.2" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" } }, "slice-ansi": { @@ -4029,9 +4664,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-bom": { @@ -4052,12 +4687,12 @@ "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", "dev": true, "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.5", + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", "slice-ansi": "0.0.4", - "string-width": "2.1.1" + "string-width": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -4078,8 +4713,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -4088,7 +4723,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -4101,8 +4736,8 @@ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint-visitor-keys": { @@ -4112,19 +4747,19 @@ "dev": true }, "espree": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.3.tgz", - "integrity": "sha512-Zy3tAJDORxQZLl2baguiRU1syPERAIg0L+JB2MWorORgTu/CplzvxS9WWA7Xh4+Q+eOQihNs/1o1Xep8cvCxWQ==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { - "acorn": "5.5.0", - "acorn-jsx": "3.0.1" + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" }, "dependencies": { "acorn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.0.tgz", - "integrity": "sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.0.tgz", + "integrity": "sha512-QatFQ4C0n+PLqemyC6zXEv04tSqRR0hRqe+uGKPEVgKe2G8kl8wJvHzRYWwz6vqqEqt6idPVMFojZ4P1zlyAzQ==", "dev": true } } @@ -4136,12 +4771,12 @@ "dev": true }, "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "esrecurse": { @@ -4150,7 +4785,7 @@ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.1.0" } }, "estraverse": { @@ -4182,8 +4817,8 @@ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.39" + "d": "1", + "es5-ext": "~0.10.14" } }, "event-to-promise": { @@ -4210,8 +4845,8 @@ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, "execa": { @@ -4220,13 +4855,13 @@ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "exit": { @@ -4247,7 +4882,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -4256,7 +4891,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "express": { @@ -4264,36 +4899,36 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.4", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "1.0.4", + "content-type": "~1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.1", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "finalhandler": "1.1.0", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.3", + "proxy-addr": "~2.0.2", "qs": "6.5.1", - "range-parser": "1.2.0", + "range-parser": "~1.2.0", "safe-buffer": "5.1.1", "send": "0.16.1", "serve-static": "1.13.1", "setprototypeof": "1.1.0", - "statuses": "1.3.1", - "type-is": "1.6.16", + "statuses": "~1.3.1", + "type-is": "~1.6.15", "utils-merge": "1.0.1", - "vary": "1.1.2" + "vary": "~1.1.2" } }, "express-sslify": { @@ -4313,8 +4948,8 @@ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -4323,20 +4958,20 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } }, "external-editor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", - "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.19", - "tmp": "0.0.33" + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" } }, "extglob": { @@ -4345,51 +4980,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" - } - }, - "extract-text-webpack-plugin": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", - "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", - "dev": true, - "requires": { - "async": "2.6.0", - "loader-utils": "1.1.0", - "schema-utils": "0.3.0", - "webpack-sources": "1.1.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dev": true, - "requires": { - "lodash": "4.17.5" - } - }, - "schema-utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", - "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", - "dev": true, - "requires": { - "ajv": "5.5.2" - } - } + "is-extglob": "^1.0.0" } }, "extract-zip": { @@ -4463,7 +5054,7 @@ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "dev": true, "requires": { - "websocket-driver": "0.7.0" + "websocket-driver": ">=0.5.1" } }, "fd-slicer": { @@ -4472,7 +5063,7 @@ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "dev": true, "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "figures": { @@ -4481,7 +5072,7 @@ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { @@ -4490,8 +5081,8 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" } }, "file-sync-cmp": { @@ -4500,6 +5091,12 @@ "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", "dev": true }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -4512,11 +5109,11 @@ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "finalhandler": { @@ -4525,12 +5122,12 @@ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "requires": { "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" } }, "find-cache-dir": { @@ -4539,9 +5136,9 @@ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "commondir": "1.0.1", - "make-dir": "1.2.0", - "pkg-dir": "2.0.0" + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" } }, "find-up": { @@ -4550,7 +5147,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "findup-sync": { @@ -4559,7 +5156,7 @@ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", "dev": true, "requires": { - "glob": "5.0.15" + "glob": "~5.0.0" }, "dependencies": { "glob": { @@ -4568,50 +5165,32 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } }, - "firefox-client": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/firefox-client/-/firefox-client-0.3.0.tgz", - "integrity": "sha1-N5RGD262r89BN2rdy8dGLiSkzYs=", - "dev": true, - "requires": { - "colors": "0.5.1", - "js-select": "0.6.0" - }, - "dependencies": { - "colors": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", - "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", - "dev": true - } - } - }, "firefox-profile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-1.1.0.tgz", "integrity": "sha512-wUIE4QeAjwoHvFbomWmXgKyYtV4/oZxDcJG4znxtGGa/0BhKkd3HzeOf3tAsMWPq1ExARZxCRRiNw1BL3FuPqA==", "dev": true, "requires": { - "adm-zip": "0.4.7", - "archiver": "2.1.1", - "async": "2.5.0", - "fs-extra": "4.0.3", - "ini": "1.3.5", + "adm-zip": "~0.4.x", + "archiver": "~2.1.0", + "async": "~2.5.0", + "fs-extra": "~4.0.2", + "ini": "~1.3.3", "jetpack-id": "1.0.0", - "lazystream": "1.0.0", - "lodash": "4.17.5", - "minimist": "1.2.0", - "uuid": "3.2.1", - "xml2js": "0.4.19" + "lazystream": "~1.0.0", + "lodash": "~4.17.2", + "minimist": "^1.1.1", + "uuid": "^3.0.0", + "xml2js": "~0.4.4" }, "dependencies": { "archiver": { @@ -4620,14 +5199,14 @@ "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", "dev": true, "requires": { - "archiver-utils": "1.3.0", - "async": "2.5.0", - "buffer-crc32": "0.2.13", - "glob": "7.0.6", - "lodash": "4.17.5", - "readable-stream": "2.3.4", - "tar-stream": "1.5.5", - "zip-stream": "1.2.0" + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "zip-stream": "^1.2.0" } }, "async": { @@ -4636,7 +5215,7 @@ "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.14.0" } }, "minimist": { @@ -4653,7 +5232,7 @@ "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", "dev": true, "requires": { - "readable-stream": "2.3.4" + "readable-stream": "^2.0.2" } }, "fizzy-ui-utils": { @@ -4662,7 +5241,7 @@ "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", "dev": true, "requires": { - "desandro-matches-selector": "2.0.2" + "desandro-matches-selector": "^2.0.0" } }, "flat-cache": { @@ -4671,16 +5250,16 @@ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "dev": true, "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" } }, "flatstr": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.5.tgz", - "integrity": "sha1-W0UbCMvUji6sVKK74L9GFlqhS+M=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.8.tgz", + "integrity": "sha512-YXblbv/vc1zuVVUtnKl1hPqqk7TalZCppnKE7Pr8FI/Rp48vzckS/4SJ4Y9O9RNiI82Vcw/FydmtqdQOg1Dpqw==", "dev": true }, "flipclock": { @@ -4689,13 +5268,13 @@ "integrity": "sha1-838ffKkETZAsH+4fGuf0vR7vGlQ=", "dev": true, "requires": { - "jquery": "3.3.1" + "jquery": ">=1.7" } }, - "fluent": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/fluent/-/fluent-0.4.1.tgz", - "integrity": "sha512-vatFe36jVjXclCYPRopLVB6oR5ceuKWnn6oVLIuLCnkdCb49RGuTznPdd51xATo+S83N9zLD1xsYf1Ma4s2VoQ==", + "fluent-syntax": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.7.0.tgz", + "integrity": "sha512-T0iqfhC40jrs3aDjYOKgzIQjjhsH2Fa6LnXB6naPv0ymW3DeYMUFa89y9aLKMpi1P9nl2vEimK7blx4tVnUWBg==", "dev": true }, "flush-write-stream": { @@ -4704,8 +5283,8 @@ "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.4" + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" } }, "for-in": { @@ -4720,7 +5299,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "forever-agent": { @@ -4735,9 +5314,9 @@ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "dev": true, "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "^2.1.12" } }, "forwarded": { @@ -4751,7 +5330,7 @@ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "fresh": { @@ -4765,8 +5344,8 @@ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.4" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, "fs-extra": { @@ -4775,9 +5354,9 @@ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "fs-write-stream-atomic": { @@ -4786,10 +5365,10 @@ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "2.3.4" + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" } }, "fs.realpath": { @@ -4799,39 +5378,29 @@ "dev": true }, "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "dev": true, "optional": true, "requires": { - "nan": "2.9.2", - "node-pre-gyp": "0.6.39" + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" }, "dependencies": { "abbrev": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, "ansi-regex": { "version": "2.1.1", "bundled": true, "dev": true }, "aproba": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "dev": true, "optional": true @@ -4842,862 +5411,547 @@ "dev": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, - "asn1": { - "version": "0.2.3", + "balanced-match": { + "version": "1.0.0", "bundled": true, "dev": true, "optional": true }, - "assert-plus": { - "version": "0.2.0", + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, - "asynckit": { - "version": "0.4.0", + "code-point-at": { + "version": "1.1.0", "bundled": true, "dev": true, "optional": true }, - "aws-sign2": { - "version": "0.6.0", + "concat-map": { + "version": "0.0.1", "bundled": true, "dev": true, "optional": true }, - "aws4": { - "version": "1.6.0", + "console-control-strings": { + "version": "1.1.0", "bundled": true, "dev": true, "optional": true }, - "balanced-match": { - "version": "0.4.2", + "core-util-is": { + "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", + "debug": { + "version": "2.6.9", "bundled": true, "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "ms": "2.0.0" } }, - "block-stream": { - "version": "0.0.9", + "deep-extend": { + "version": "0.5.1", "bundled": true, "dev": true, - "requires": { - "inherits": "2.0.3" - } + "optional": true }, - "boom": { - "version": "2.10.1", + "delegates": { + "version": "1.0.0", "bundled": true, "dev": true, - "requires": { - "hoek": "2.16.3" - } + "optional": true }, - "brace-expansion": { - "version": "1.1.7", + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", "bundled": true, "dev": true, + "optional": true, "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" + "minipass": "^2.2.1" } }, - "buffer-shims": { + "fs.realpath": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, "dev": true, "optional": true }, - "co": { - "version": "4.6.0", + "gauge": { + "version": "2.7.4", "bundled": true, "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } }, - "combined-stream": { - "version": "1.0.5", + "glob": { + "version": "7.1.2", "bundled": true, "dev": true, + "optional": true, "requires": { - "delayed-stream": "1.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "concat-map": { - "version": "0.0.1", + "has-unicode": { + "version": "2.0.1", "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true + "dev": true, + "optional": true }, - "cryptiles": { - "version": "2.0.5", + "iconv-lite": { + "version": "0.4.21", "bundled": true, "dev": true, + "optional": true, "requires": { - "boom": "2.10.1" + "safer-buffer": "^2.1.0" } }, - "dashdash": { - "version": "1.14.1", + "ignore-walk": { + "version": "3.0.1", "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } + "minimatch": "^3.0.4" } }, - "debug": { - "version": "2.6.8", + "inflight": { + "version": "1.0.6", "bundled": true, "dev": true, "optional": true, "requires": { - "ms": "2.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "delegates": { - "version": "1.0.0", + "inherits": { + "version": "2.0.3", "bundled": true, "dev": true, "optional": true }, - "detect-libc": { - "version": "1.0.2", + "ini": { + "version": "1.3.5", "bundled": true, "dev": true, "optional": true }, - "ecc-jsbn": { - "version": "0.1.1", + "is-fullwidth-code-point": { + "version": "1.0.0", "bundled": true, "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "number-is-nan": "^1.0.0" } }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", + "isarray": { + "version": "1.0.0", "bundled": true, "dev": true, "optional": true }, - "form-data": { - "version": "2.1.4", + "minimatch": { + "version": "3.0.4", "bundled": true, "dev": true, "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "brace-expansion": "^1.1.7" } }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", + "minimist": { + "version": "0.0.8", "bundled": true, "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } + "optional": true }, - "fstream-ignore": { - "version": "1.0.5", + "minipass": { + "version": "2.2.4", "bundled": true, "dev": true, "optional": true, "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" } }, - "gauge": { - "version": "2.7.4", + "minizlib": { + "version": "1.1.0", "bundled": true, "dev": true, "optional": true, "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "minipass": "^2.2.1" } }, - "getpass": { - "version": "0.1.7", + "mkdirp": { + "version": "0.5.1", "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "minimist": "0.0.8" } }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", + "ms": { + "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, - "har-validator": { - "version": "4.2.1", + "needle": { + "version": "2.2.0", "bundled": true, "dev": true, "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" } }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", + "node-pre-gyp": { + "version": "0.10.0", "bundled": true, "dev": true, + "optional": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" } }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", + "nopt": { + "version": "4.0.1", "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" + "abbrev": "1", + "osenv": "^0.1.4" } }, - "inflight": { - "version": "1.0.6", + "npm-bundled": { + "version": "1.0.3", "bundled": true, "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true + "optional": true }, - "ini": { - "version": "1.3.4", + "npm-packlist": { + "version": "1.1.10", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } }, - "is-fullwidth-code-point": { - "version": "1.0.0", + "npmlog": { + "version": "4.1.2", "bundled": true, "dev": true, + "optional": true, "requires": { - "number-is-nan": "1.0.1" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, - "is-typedarray": { - "version": "1.0.0", + "number-is-nan": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", + "object-assign": { + "version": "4.1.1", "bundled": true, "dev": true, "optional": true }, - "jodid25519": { - "version": "1.0.2", + "once": { + "version": "1.4.0", "bundled": true, "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "wrappy": "1" } }, - "jsbn": { - "version": "0.1.1", + "os-homedir": { + "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, - "json-schema": { - "version": "0.2.3", + "os-tmpdir": { + "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, - "json-stable-stringify": { - "version": "1.0.1", + "osenv": { + "version": "0.1.5", "bundled": true, "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, - "json-stringify-safe": { - "version": "5.0.1", + "path-is-absolute": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, - "jsonify": { - "version": "0.0.0", + "process-nextick-args": { + "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, - "jsprim": { - "version": "1.4.0", + "rc": { + "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { - "assert-plus": { - "version": "1.0.0", + "minimist": { + "version": "1.2.0", "bundled": true, "dev": true, "optional": true } } }, - "mime-db": { - "version": "1.27.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.15", + "readable-stream": { + "version": "2.3.6", "bundled": true, "dev": true, + "optional": true, "requires": { - "mime-db": "1.27.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "minimatch": { - "version": "3.0.4", + "rimraf": { + "version": "2.6.2", "bundled": true, "dev": true, + "optional": true, "requires": { - "brace-expansion": "1.1.7" + "glob": "^7.0.5" } }, - "minimist": { - "version": "0.0.8", + "safe-buffer": { + "version": "5.1.1", "bundled": true, "dev": true }, - "mkdirp": { - "version": "0.5.1", + "safer-buffer": { + "version": "2.1.2", "bundled": true, "dev": true, - "requires": { - "minimist": "0.0.8" - } + "optional": true }, - "ms": { + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, - "node-pre-gyp": { - "version": "0.6.39", + "signal-exit": { + "version": "3.0.2", "bundled": true, "dev": true, - "optional": true, - "requires": { - "detect-libc": "1.0.2", - "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } + "optional": true }, - "nopt": { - "version": "4.0.1", + "string-width": { + "version": "1.0.2", "bundled": true, "dev": true, "optional": true, "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "npmlog": { - "version": "4.1.0", + "string_decoder": { + "version": "1.1.1", "bundled": true, "dev": true, "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "safe-buffer": "~5.1.0" } }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", + "strip-ansi": { + "version": "3.0.1", "bundled": true, "dev": true, - "optional": true + "requires": { + "ansi-regex": "^2.0.0" + } }, - "object-assign": { - "version": "4.1.1", + "strip-json-comments": { + "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, - "once": { - "version": "1.4.0", + "tar": { + "version": "4.4.1", "bundled": true, "dev": true, + "optional": true, "requires": { - "wrappy": "1.0.2" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" } }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { + "util-deprecate": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, - "osenv": { - "version": "0.1.4", + "wide-align": { + "version": "1.1.2", "bundled": true, "dev": true, "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "string-width": "^1.0.2" } }, - "path-is-absolute": { - "version": "1.0.1", + "wrappy": { + "version": "1.0.2", "bundled": true, "dev": true }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", + "yallist": { + "version": "3.0.2", "bundled": true, "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "dev": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true, + } + } + }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "dev": true, + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true } } @@ -5715,13 +5969,13 @@ "dev": true }, "fx-runner": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.0.8.tgz", - "integrity": "sha1-XO07BKjVHWNN4g0UgPDcXdgyXew=", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.0.9.tgz", + "integrity": "sha1-eyPzdz3HaqzELxHZr/J2lnXLY/A=", "dev": true, "requires": { "commander": "2.9.0", - "lodash": "3.10.1", + "lodash": "4.17.10", "shell-quote": "1.6.1", "spawn-sync": "1.0.15", "when": "3.7.7", @@ -5735,7 +5989,7 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "isexe": { @@ -5745,9 +5999,9 @@ "dev": true }, "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, "which": { @@ -5756,19 +6010,19 @@ "integrity": "sha1-FVf5YIBgTlsRs1meufRbUKnv1yI=", "dev": true, "requires": { - "is-absolute": "0.1.7", - "isexe": "1.1.2" + "is-absolute": "^0.1.7", + "isexe": "^1.1.1" } } } }, "gaze": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", - "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", "dev": true, "requires": { - "globule": "1.2.0" + "globule": "^1.0.0" } }, "generate-function": { @@ -5783,7 +6037,7 @@ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "dev": true, "requires": { - "is-property": "1.0.2" + "is-property": "^1.0.0" } }, "get-caller-file": { @@ -5816,6 +6070,20 @@ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, + "get-uri": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.2.tgz", + "integrity": "sha512-ZD325dMZOgerGqF/rF6vZXyFGTAay62svjQIT+X/oU2PtxYpFxvSkbsdi+oxIrsNxlZVd4y8wUDqkaExWTI/Cw==", + "dev": true, + "requires": { + "data-uri-to-buffer": "1", + "debug": "2", + "extend": "3", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "2" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -5834,7 +6102,7 @@ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "gettext-parser": { @@ -5843,7 +6111,7 @@ "integrity": "sha1-LFpmONiTk0ubVQN9CtgstwBLJnk=", "dev": true, "requires": { - "encoding": "0.1.12" + "encoding": "^0.1.11" } }, "git-rev-sync": { @@ -5863,9 +6131,9 @@ "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", "dev": true, "requires": { - "glob": "7.0.6", - "interpret": "1.1.0", - "rechoir": "0.6.2" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" } } } @@ -5876,12 +6144,12 @@ "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -5890,8 +6158,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -5900,7 +6168,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "global": { @@ -5909,8 +6177,8 @@ "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", "dev": true, "requires": { - "min-document": "2.19.0", - "process": "0.5.2" + "min-document": "^2.19.0", + "process": "~0.5.1" }, "dependencies": { "process": { @@ -5927,7 +6195,7 @@ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "ini": "1.3.5" + "ini": "^1.3.4" } }, "globals": { @@ -5942,12 +6210,12 @@ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.0.6", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { "pify": { @@ -5959,14 +6227,14 @@ } }, "globule": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", - "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", "dev": true, "requires": { - "glob": "7.1.2", - "lodash": "4.17.5", - "minimatch": "3.0.4" + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" }, "dependencies": { "glob": { @@ -5975,13 +6243,19 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true } } }, @@ -5991,17 +6265,17 @@ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" } }, "graceful-fs": { @@ -6016,6 +6290,15 @@ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, + "graphlib": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.5.tgz", + "integrity": "sha512-XvtbqCcw+EM5SqQrIetIKKD+uZVNQtDPD1goIg7K73RuRZtVI5rYMdcCVSHm/AS1sCBZ7vt0p5WgXouucHQaOA==", + "dev": true, + "requires": { + "lodash": "^4.11.1" + } + }, "growl": { "version": "1.10.3", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", @@ -6034,22 +6317,22 @@ "integrity": "sha1-TmpeaVtwRy/VME9fqeNCNoNqc7w=", "dev": true, "requires": { - "coffeescript": "1.10.0", - "dateformat": "1.0.12", - "eventemitter2": "0.4.14", - "exit": "0.1.2", - "findup-sync": "0.3.0", - "glob": "7.0.6", - "grunt-cli": "1.2.0", - "grunt-known-options": "1.1.0", - "grunt-legacy-log": "1.0.1", - "grunt-legacy-util": "1.0.0", - "iconv-lite": "0.4.19", - "js-yaml": "3.5.5", - "minimatch": "3.0.4", - "nopt": "3.0.6", - "path-is-absolute": "1.0.1", - "rimraf": "2.2.8" + "coffeescript": "~1.10.0", + "dateformat": "~1.0.12", + "eventemitter2": "~0.4.13", + "exit": "~0.1.1", + "findup-sync": "~0.3.0", + "glob": "~7.0.0", + "grunt-cli": "~1.2.0", + "grunt-known-options": "~1.1.0", + "grunt-legacy-log": "~1.0.0", + "grunt-legacy-util": "~1.0.0", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.5.2", + "minimatch": "~3.0.2", + "nopt": "~3.0.6", + "path-is-absolute": "~1.0.0", + "rimraf": "~2.2.8" } }, "grunt-cli": { @@ -6058,10 +6341,10 @@ "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", "dev": true, "requires": { - "findup-sync": "0.3.0", - "grunt-known-options": "1.1.0", - "nopt": "3.0.6", - "resolve": "1.1.7" + "findup-sync": "~0.3.0", + "grunt-known-options": "~1.1.0", + "nopt": "~3.0.6", + "resolve": "~1.1.0" }, "dependencies": { "resolve": { @@ -6078,8 +6361,8 @@ "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=", "dev": true, "requires": { - "async": "1.5.2", - "rimraf": "2.6.2" + "async": "^1.5.2", + "rimraf": "^2.5.1" }, "dependencies": { "rimraf": { @@ -6088,7 +6371,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.0.6" + "glob": "^7.0.5" } } } @@ -6099,15 +6382,15 @@ "integrity": "sha1-XPkzuRpnOGBEJzwLJERgPNmIebo=", "dev": true, "requires": { - "async": "1.5.2", - "connect": "3.6.6", - "connect-livereload": "0.5.4", - "http2": "3.3.7", - "morgan": "1.9.0", - "opn": "4.0.2", - "portscanner": "1.2.0", - "serve-index": "1.9.1", - "serve-static": "1.13.1" + "async": "^1.5.2", + "connect": "^3.4.0", + "connect-livereload": "^0.5.0", + "http2": "^3.3.4", + "morgan": "^1.6.1", + "opn": "^4.0.0", + "portscanner": "^1.0.0", + "serve-index": "^1.7.1", + "serve-static": "^1.10.0" } }, "grunt-contrib-copy": { @@ -6116,8 +6399,8 @@ "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", "dev": true, "requires": { - "chalk": "1.1.3", - "file-sync-cmp": "0.1.1" + "chalk": "^1.1.1", + "file-sync-cmp": "^0.1.0" }, "dependencies": { "ansi-styles": { @@ -6132,11 +6415,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "supports-color": { @@ -6153,8 +6436,8 @@ "integrity": "sha1-tSWlwK/wRiL3Vw4x+SQQbxb4G0Y=", "dev": true, "requires": { - "chalk": "1.1.3", - "pug": "2.0.0-rc.4" + "chalk": "^1.0.0", + "pug": "^2.0.0-alpha3" }, "dependencies": { "ansi-styles": { @@ -6169,11 +6452,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "supports-color": { @@ -6190,11 +6473,11 @@ "integrity": "sha1-R9RG7wVESW7/naQY0A9XdFQ0crs=", "dev": true, "requires": { - "async": "1.5.2", - "chalk": "1.1.3", - "lodash": "4.17.5", - "nib": "1.1.2", - "stylus": "0.54.5" + "async": "^1.5.2", + "chalk": "^1.0.0", + "lodash": "^4.0.0", + "nib": "^1.1.0", + "stylus": "^0.54.0" }, "dependencies": { "ansi-styles": { @@ -6209,11 +6492,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "supports-color": { @@ -6225,21 +6508,30 @@ } }, "grunt-contrib-watch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz", - "integrity": "sha1-hKGnodar0m7VaEE0lscxM+mQAY8=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", + "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", "dev": true, "requires": { - "async": "1.5.2", - "gaze": "1.1.2", - "lodash": "3.10.1", - "tiny-lr": "0.2.1" + "async": "^2.6.0", + "gaze": "^1.1.0", + "lodash": "^4.17.10", + "tiny-lr": "^1.1.1" }, "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true } } @@ -6250,11 +6542,11 @@ "integrity": "sha1-nU5QHO8WtyF3KmBBxNQdH5KFirU=", "dev": true, "requires": { - "crx": "3.2.1", - "es6-promise": "3.3.1", - "mkdirp": "0.5.1", - "os-homedir": "1.0.2", - "xtend": "4.0.1" + "crx": "^3.0.1", + "es6-promise": "^3.0.0", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "xtend": "^4.0.1" } }, "grunt-exec": { @@ -6270,16 +6562,15 @@ "dev": true }, "grunt-legacy-log": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.1.tgz", - "integrity": "sha512-rwuyqNKlI0IPz0DvxzJjcEiQEBaBNVeb1LFoZKxSmHLETFUwhwUrqOsPIxURTKSwNZHZ4ht1YLBYmVU0YZAzHQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.2.tgz", + "integrity": "sha512-WdedTJ/6zCXnI/coaouzqvkI19uwqbcPkdsXiDRKJyB5rOUlOxnCnTVbpeUdEckKVir2uHF3rDBYppj2p6N3+g==", "dev": true, "requires": { - "colors": "1.1.2", - "grunt-legacy-log-utils": "1.0.0", - "hooker": "0.2.3", - "lodash": "4.17.5", - "underscore.string": "3.3.4" + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~1.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.5" } }, "grunt-legacy-log-utils": { @@ -6288,8 +6579,8 @@ "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", "dev": true, "requires": { - "chalk": "1.1.3", - "lodash": "4.3.0" + "chalk": "~1.1.1", + "lodash": "~4.3.0" }, "dependencies": { "ansi-styles": { @@ -6304,11 +6595,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "lodash": { @@ -6331,13 +6622,13 @@ "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", "dev": true, "requires": { - "async": "1.5.2", - "exit": "0.1.2", - "getobject": "0.1.0", - "hooker": "0.2.3", - "lodash": "4.3.0", - "underscore.string": "3.2.3", - "which": "1.2.14" + "async": "~1.5.2", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~4.3.0", + "underscore.string": "~3.2.3", + "which": "~1.2.1" }, "dependencies": { "lodash": { @@ -6360,8 +6651,8 @@ "integrity": "sha512-zQGEsi3d+ViPPi7/4jcj78afKKAKiAA5n61pknQYi25Ugik+aNOuRmiOkmb8mN2CeG8YxT+YdT1H1Q7B/eNkoQ==", "dev": true, "requires": { - "hooker": "0.2.3", - "mkdirp": "0.5.1" + "hooker": "^0.2.3", + "mkdirp": "^0.5.0" } }, "grunt-webpack": { @@ -6370,8 +6661,8 @@ "integrity": "sha512-ghSkdCdvbF1SpI46qDT9FYqw5ZP5sSYbEQU/DwzoJE1K42xizAZ5Rv3kzpaRdJT4yvu8/6fO5+wne3/y0n74QA==", "dev": true, "requires": { - "deep-for-each": "1.0.6", - "lodash": "4.17.5" + "deep-for-each": "^1.0.5", + "lodash": "^4.7.0" } }, "har-schema": { @@ -6386,8 +6677,8 @@ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" }, "dependencies": { "ajv": { @@ -6396,10 +6687,10 @@ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } } } @@ -6410,7 +6701,7 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.0.2" } }, "has-ansi": { @@ -6419,7 +6710,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-color": { @@ -6440,9 +6731,9 @@ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" }, "dependencies": { "isobject": { @@ -6459,8 +6750,8 @@ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -6469,7 +6760,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -6478,7 +6769,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -6489,18 +6780,28 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } }, + "hasbin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", + "integrity": "sha1-eMWSaJPIAhXCtWiuH9P8q3omlrA=", + "dev": true, + "requires": { + "async": "~1.5" + } + }, "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "hash.js": { @@ -6509,8 +6810,8 @@ "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" } }, "hawk": { @@ -6519,10 +6820,10 @@ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "dev": true, "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" } }, "he": { @@ -6543,9 +6844,9 @@ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, "hoek": { @@ -6560,8 +6861,8 @@ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" } }, "hooker": { @@ -6582,12 +6883,12 @@ "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "dev": true, "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.1", - "domutils": "1.5.1", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.4" + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" } }, "http-errors": { @@ -6598,7 +6899,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.3.1" + "statuses": ">= 1.3.1 < 2" }, "dependencies": { "depd": { @@ -6614,20 +6915,41 @@ } }, "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", + "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=", "dev": true }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "http2": { @@ -6643,13 +6965,13 @@ "dev": true }, "https-proxy-agent": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.1.1.tgz", - "integrity": "sha512-LK6tQUR/VOkTI6ygAfWUKKP95I+e6M1h7N3PncGu1CATHCnex+CAv9ttR0lbHu1Uk2PXm/WoAHFo6JCGwMjVMw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "dev": true, "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" + "agent-base": "^4.1.0", + "debug": "^3.1.0" }, "dependencies": { "debug": { @@ -6669,9 +6991,9 @@ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" }, "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", + "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", "dev": true }, "iferr": { @@ -6681,9 +7003,9 @@ "dev": true }, "ignore": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", - "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", + "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", "dev": true }, "import-lazy": { @@ -6704,7 +7026,7 @@ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "indexof": { @@ -6719,8 +7041,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -6740,7 +7062,7 @@ "integrity": "sha512-0Kd4NqMJUhknG4ECiJ/mgyHJBpfBBWZ3IKHl2BLNQiFtMO7/xiv9mmHl7mGvE0iKrBeQAZdMcQP3sMXZN0cqeg==", "dev": true, "requires": { - "babel-core": "6.26.0" + "babel-core": "~6" } }, "inquirer": { @@ -6749,20 +7071,20 @@ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.3.2", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.1.0", - "figures": "2.0.0", - "lodash": "4.17.5", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" }, "dependencies": { "ansi-regex": { @@ -6777,7 +7099,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -6794,7 +7116,7 @@ "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", "dev": true, "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -6803,6 +7125,12 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, "ipaddr.js": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", @@ -6814,40 +7142,32 @@ "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", "dev": true, "requires": { - "is-relative": "0.1.3" + "is-relative": "^0.1.0" } }, "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "^3.0.2" } }, "is-alphabetical": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.1.tgz", - "integrity": "sha1-x3B5zJHU76x3W+EDS/LSQ/lebwg=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", + "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", "dev": true }, "is-alphanumerical": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz", - "integrity": "sha1-37SqTRCF4zvbYcLe6cgOnGwZ9Ts=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", + "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", "dev": true, "requires": { - "is-alphabetical": "1.0.1", - "is-decimal": "1.0.1" + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" } }, "is-arrayish": { @@ -6862,7 +7182,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { @@ -6877,47 +7197,39 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "^3.0.2" } }, "is-decimal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.1.tgz", - "integrity": "sha1-9ftqlJlq2ejjdh+/vQkfH8qMToI=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", + "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", "dev": true }, "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } @@ -6934,7 +7246,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-expression": { @@ -6943,8 +7255,8 @@ "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", "dev": true, "requires": { - "acorn": "4.0.13", - "object-assign": "4.1.1" + "acorn": "~4.0.2", + "object-assign": "^4.0.1" }, "dependencies": { "acorn": { @@ -6973,7 +7285,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -6988,13 +7300,13 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-hexadecimal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz", - "integrity": "sha1-bghLvJIGH7sJcexYts5tQE4k2mk=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", + "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", "dev": true }, "is-installed-globally": { @@ -7003,10 +7315,16 @@ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" } }, + "is-mergeable-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-mergeable-object/-/is-mergeable-object-1.1.0.tgz", + "integrity": "sha512-JfyDDwUdtS4yHCgUpxOyKB9dnfZ0gecufxB0eytX6BmSXSE+8dbxDGt+V7CNRIRJ9sYFV/WQt2KJG6hNob2sBw==", + "dev": true + }, "is-my-ip-valid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", @@ -7019,11 +7337,11 @@ "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", "dev": true, "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "is-my-ip-valid": "1.0.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" } }, "is-npm": { @@ -7038,7 +7356,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-obj": { @@ -7053,7 +7371,7 @@ "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { - "is-number": "4.0.0" + "is-number": "^4.0.0" }, "dependencies": { "is-number": { @@ -7071,12 +7389,12 @@ "dev": true }, "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -7085,7 +7403,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-plain-object": { @@ -7094,7 +7412,7 @@ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -7141,7 +7459,7 @@ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { - "has": "1.0.1" + "has": "^1.0.1" } }, "is-relative": { @@ -7186,18 +7504,18 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "isemail": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", - "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo=", - "dev": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -7219,11 +7537,11 @@ "integrity": "sha512-qyZXlTaBilCJu5gxATAYskiZVa1LUCpWfs3hJLq/kFeOElLMH7RPMUk3u/+gGAl8QOgERU7zpzBM9jwrg+uEjg==", "dev": true, "requires": { - "desandro-matches-selector": "2.0.2", - "fizzy-ui-utils": "2.0.7", - "get-size": "2.0.2", - "masonry-layout": "4.2.1", - "outlayer": "2.1.1" + "desandro-matches-selector": "^2.0.0", + "fizzy-ui-utils": "^2.0.4", + "get-size": "^2.0.0", + "masonry-layout": "^4.1.0", + "outlayer": "^2.1.0" } }, "isstream": { @@ -7244,26 +7562,6 @@ "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", "dev": true }, - "joi": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", - "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", - "dev": true, - "requires": { - "hoek": "2.16.3", - "isemail": "1.2.0", - "moment": "2.21.0", - "topo": "1.1.0" - }, - "dependencies": { - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - } - } - }, "jquery": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", @@ -7277,15 +7575,7 @@ "dev": true, "requires": { "JSONSelect": "0.2.1", - "traverse": "0.4.6" - }, - "dependencies": { - "traverse": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.4.6.tgz", - "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=", - "dev": true - } + "traverse": "0.4.x" } }, "js-stringify": { @@ -7306,8 +7596,8 @@ "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "2.7.3" + "argparse": "^1.0.2", + "esprima": "^2.6.0" } }, "jsbn": { @@ -7323,25 +7613,19 @@ "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", "dev": true }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", - "dev": true - }, "json-merge-patch": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-0.2.3.tgz", "integrity": "sha1-+ixrWvh9p3uuKWalidUuI+2B/kA=", "dev": true, "requires": { - "deep-equal": "1.0.1" + "deep-equal": "^1.0.0" } }, "json-parse-better-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", - "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-schema": { @@ -7362,7 +7646,7 @@ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stable-stringify-without-jsonify": { @@ -7389,7 +7673,7 @@ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" } }, "jsonify": { @@ -7411,22 +7695,27 @@ "dev": true }, "jsonwebtoken": { - "version": "7.1.9", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.1.9.tgz", - "integrity": "sha1-hHgE5SWL7FqUmajcSl56O64I1Yo=", - "dev": true, - "requires": { - "joi": "6.10.1", - "jws": "3.1.4", - "lodash.once": "4.1.1", - "ms": "0.7.3", - "xtend": "4.0.1" + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz", + "integrity": "sha512-l8rUBr0fqYYwPc8/ZGrue7GiW7vWdZtZqelxo4Sd5lMvuEeCK8/wS54sEo6tJhdZ6hqfutsj6COgC0d1XdbHGw==", + "dev": true, + "requires": { + "jws": "^3.1.4", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "xtend": "^4.0.1" }, "dependencies": { "ms": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", - "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true } } @@ -7455,8 +7744,8 @@ "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", "dev": true, "requires": { - "is-promise": "2.1.0", - "promise": "7.3.1" + "is-promise": "^2.0.0", + "promise": "^7.0.1" } }, "jstransformer-markdown-it": { @@ -7465,7 +7754,7 @@ "integrity": "sha1-i0Su28lGXck10oC+kDObZxwWzrg=", "dev": true, "requires": { - "markdown-it": "8.4.1" + "markdown-it": "^8.0.0" } }, "jszip": { @@ -7474,7 +7763,7 @@ "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", "dev": true, "requires": { - "pako": "1.0.6" + "pako": "~1.0.2" } }, "just-extend": { @@ -7484,26 +7773,24 @@ "dev": true }, "jwa": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz", - "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", + "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", "dev": true, "requires": { - "base64url": "2.0.0", "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.9", - "safe-buffer": "5.1.1" + "ecdsa-sig-formatter": "1.0.10", + "safe-buffer": "^5.0.1" } }, "jws": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", - "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", + "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", "dev": true, "requires": { - "base64url": "2.0.0", - "jwa": "1.1.5", - "safe-buffer": "5.1.1" + "jwa": "^1.1.5", + "safe-buffer": "^5.0.1" } }, "kind-of": { @@ -7512,7 +7799,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "latest-version": { @@ -7521,7 +7808,7 @@ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { - "package-json": "4.0.1" + "package-json": "^4.0.0" } }, "lazy-cache": { @@ -7536,7 +7823,7 @@ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "dev": true, "requires": { - "readable-stream": "2.3.4" + "readable-stream": "^2.0.5" } }, "lcid": { @@ -7545,17 +7832,23 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, + "leb": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz", + "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=", + "dev": true + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "linkify-it": { @@ -7564,7 +7857,7 @@ "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", "dev": true, "requires": { - "uc.micro": "1.0.5" + "uc.micro": "^1.0.1" } }, "livereload-js": { @@ -7579,11 +7872,11 @@ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" }, "dependencies": { "pify": { @@ -7606,9 +7899,9 @@ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "dev": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" } }, "locate-path": { @@ -7617,8 +7910,8 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -7627,10 +7920,28 @@ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", "dev": true }, - "lodash.endswith": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", - "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=", + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", "dev": true }, "lodash.get": { @@ -7639,10 +7950,34 @@ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, - "lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "dev": true + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", + "dev": true + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", "dev": true }, "lodash.isstring": { @@ -7657,18 +7992,18 @@ "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", "dev": true }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, - "lodash.startswith": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", - "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=", - "dev": true - }, "loglevel": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", @@ -7681,6 +8016,12 @@ "integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==", "dev": true }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", + "dev": true + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -7699,7 +8040,7 @@ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "loud-rejection": { @@ -7708,14 +8049,14 @@ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "dev": true }, "lru-cache": { @@ -7724,19 +8065,31 @@ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, + "macos-release": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz", + "integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==", + "dev": true + }, "make-dir": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "dev": true, "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -7755,7 +8108,7 @@ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "markdown-it": { @@ -7764,11 +8117,11 @@ "integrity": "sha512-CzzqSSNkFRUf9vlWvhK1awpJreMRqdCrBvZ8DIoDWTOkESMIF741UPAhuAmbyWmdiFPA6WARNhnu2M6Nrhwa+A==", "dev": true, "requires": { - "argparse": "1.0.10", - "entities": "1.1.1", - "linkify-it": "2.0.3", - "mdurl": "1.0.1", - "uc.micro": "1.0.5" + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" } }, "markdown-table": { @@ -7783,10 +8136,18 @@ "integrity": "sha1-Diy6gTkLBUmpFT7DsNkVthwWS+c=", "dev": true, "requires": { - "debug": "2.6.9", - "remark": "5.1.0", - "structured-source": "3.0.2", - "traverse": "0.6.6" + "debug": "^2.1.3", + "remark": "^5.0.1", + "structured-source": "^3.0.2", + "traverse": "^0.6.6" + }, + "dependencies": { + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "dev": true + } } }, "masonry-layout": { @@ -7795,8 +8156,8 @@ "integrity": "sha512-ngJmxszn+JSKreNnrwkjks9OUuwVL2JR8T4iVeE3+g+sJjyoxTLdUNRbYONA25y+nWZn+WZI2GvThRAV+z5Duw==", "dev": true, "requires": { - "get-size": "2.0.2", - "outlayer": "2.1.1" + "get-size": "^2.0.2", + "outlayer": "^2.1.0" } }, "md5.js": { @@ -7805,20 +8166,8 @@ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "dev": true, "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - } + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, "mdurl": { @@ -7838,7 +8187,7 @@ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "memory-fs": { @@ -7847,8 +8196,8 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "0.1.7", - "readable-stream": "2.3.4" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, "meow": { @@ -7857,16 +8206,16 @@ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" }, "dependencies": { "minimist": { @@ -7893,19 +8242,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "miller-rabin": { @@ -7914,8 +8263,8 @@ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" } }, "mime": { @@ -7933,7 +8282,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } }, "mimic-fn": { @@ -7948,13 +8297,13 @@ "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", "dev": true, "requires": { - "dom-walk": "0.1.1" + "dom-walk": "^0.1.0" } }, "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, "minimalistic-crypto-utils": { @@ -7969,7 +8318,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -7984,16 +8333,16 @@ "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", "dev": true, "requires": { - "concat-stream": "1.6.0", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.2", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" } }, "mixin-deep": { @@ -8002,8 +8351,8 @@ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -8012,11 +8361,29 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -8065,12 +8432,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "has-flag": { @@ -8085,7 +8452,7 @@ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -8102,11 +8469,11 @@ "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", "dev": true, "requires": { - "basic-auth": "2.0.0", + "basic-auth": "~2.0.0", "debug": "2.6.9", - "depd": "1.1.2", - "on-finished": "2.3.0", - "on-headers": "1.0.1" + "depd": "~1.1.1", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" } }, "move-concurrently": { @@ -8115,12 +8482,12 @@ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "dev": true, "requires": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" }, "dependencies": { "rimraf": { @@ -8129,7 +8496,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.0.6" + "glob": "^7.0.5" } } } @@ -8152,9 +8519,9 @@ "dev": true, "optional": true, "requires": { - "mkdirp": "0.5.1", - "ncp": "2.0.0", - "rimraf": "2.4.5" + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" }, "dependencies": { "glob": { @@ -8164,11 +8531,11 @@ "dev": true, "optional": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "rimraf": { @@ -8178,7 +8545,7 @@ "dev": true, "optional": true, "requires": { - "glob": "6.0.4" + "glob": "^6.0.1" } } } @@ -8189,15 +8556,15 @@ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, "requires": { - "any-promise": "1.3.0", - "object-assign": "4.1.1", - "thenify-all": "1.6.0" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, "nan": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.9.2.tgz", - "integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", "dev": true, "optional": true }, @@ -8207,18 +8574,18 @@ "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "arr-diff": { @@ -8253,6 +8620,87 @@ "integrity": "sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q=", "dev": true }, + "nconf": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.10.0.tgz", + "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==", + "dev": true, + "requires": { + "async": "^1.4.0", + "ini": "^1.3.0", + "secure-keys": "^1.0.0", + "yargs": "^3.19.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true, + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } + } + }, "ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", @@ -8260,15 +8708,40 @@ "dev": true, "optional": true }, + "needle": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.1.tgz", + "integrity": "sha512-t/ZswCM9JTWjAdXS9VpvqhI2Ct2sL2MdY4fUXqGJaGBk13ge99ObqRksRTbBE56K+wxUXwwfZYOuZHifFW9q+Q==", + "dev": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, "neo-async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", - "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", + "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", + "dev": true + }, + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", "dev": true }, "next-tick": { @@ -8292,11 +8765,11 @@ "integrity": "sha512-U+Krdzhsw4losPP/Rij5UGTLQgS9gaWmXdRIbZQIQWVsUGDBo+N0m9mrY9CCEnmwssgswwydxLJUZtFfouC0gA==", "dev": true, "requires": { - "@sinonjs/formatio": "2.0.0", - "just-extend": "1.1.27", - "lolex": "2.3.2", - "path-to-regexp": "1.7.0", - "text-encoding": "0.6.4" + "@sinonjs/formatio": "^2.0.0", + "just-extend": "^1.1.27", + "lolex": "^2.3.2", + "path-to-regexp": "^1.7.0", + "text-encoding": "^0.6.4" }, "dependencies": { "isarray": { @@ -8316,28 +8789,10 @@ } } }, - "node-firefox-connect": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/node-firefox-connect/-/node-firefox-connect-1.2.0.tgz", - "integrity": "sha1-QkA4SDEyQMmFFO8UszAoFv47hOE=", - "dev": true, - "requires": { - "es6-promise": "2.3.0", - "firefox-client": "0.3.0" - }, - "dependencies": { - "es6-promise": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", - "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=", - "dev": true - } - } - }, "node-forge": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.2.tgz", - "integrity": "sha512-XTBoBY8NoeGAqQywTM8BjBz/Ro37eTmVF657yf6JumfOhxW9eET43Hve5+6L4+lo3hTDx7kTbC1WfasTHinDpg==", + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", "dev": true }, "node-libs-browser": { @@ -8346,28 +8801,28 @@ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", "dev": true, "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.2.0", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "domain-browser": "1.2.0", - "events": "1.1.1", - "https-browserify": "1.0.0", - "os-browserify": "0.3.0", + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.4", - "stream-browserify": "2.0.1", - "stream-http": "2.8.0", - "string_decoder": "1.0.3", - "timers-browserify": "2.0.6", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", + "url": "^0.11.0", + "util": "^0.10.3", "vm-browserify": "0.0.4" } }, @@ -8377,19 +8832,19 @@ "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", "dev": true, "requires": { - "growly": "1.3.0", - "semver": "5.5.0", - "shellwords": "0.1.1", - "which": "1.3.0" + "growly": "^1.3.0", + "semver": "^5.4.1", + "shellwords": "^0.1.1", + "which": "^1.3.0" }, "dependencies": { "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } } } @@ -8418,8 +8873,8 @@ "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", "dev": true, "requires": { - "chalk": "0.4.0", - "underscore": "1.6.0" + "chalk": "~0.4.0", + "underscore": "~1.6.0" }, "dependencies": { "ansi-styles": { @@ -8434,9 +8889,9 @@ "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", "dev": true, "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" } }, "strip-ansi": { @@ -8459,7 +8914,7 @@ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-package-data": { @@ -8468,10 +8923,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { @@ -8480,7 +8935,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "npm-run-path": { @@ -8489,7 +8944,7 @@ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "nth-check": { @@ -8498,7 +8953,7 @@ "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "dev": true, "requires": { - "boolbase": "1.0.0" + "boolbase": "~1.0.0" } }, "number-is-nan": { @@ -8525,9 +8980,9 @@ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { @@ -8536,44 +8991,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "is-descriptor": "^0.1.0" } } } @@ -8584,7 +9002,7 @@ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" }, "dependencies": { "isobject": { @@ -8601,8 +9019,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "object.pick": { @@ -8611,7 +9029,7 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -8642,7 +9060,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -8651,23 +9069,17 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, - "open": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", - "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", - "dev": true - }, "opn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", "dev": true, "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } }, "optionator": { @@ -8676,12 +9088,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" }, "dependencies": { "wordwrap": { @@ -8710,9 +9122,19 @@ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-2.0.1.tgz", + "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=", + "dev": true, + "requires": { + "macos-release": "^1.0.0", + "win-release": "^1.0.0" } }, "os-shim": { @@ -8733,9 +9155,9 @@ "integrity": "sha1-KYY7beEOpdrf/8rfoNcokHOH6aI=", "dev": true, "requires": { - "ev-emitter": "1.1.1", - "fizzy-ui-utils": "2.0.7", - "get-size": "2.0.2" + "ev-emitter": "^1.0.0", + "fizzy-ui-utils": "^2.0.0", + "get-size": "^2.0.2" } }, "p-finally": { @@ -8750,7 +9172,7 @@ "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -8759,7 +9181,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" } }, "p-try": { @@ -8768,16 +9190,56 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, + "pac-proxy-agent": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz", + "integrity": "sha512-cDNAN1Ehjbf5EHkNY5qnRhGPUCp6SnpyVof5fRzN800QV1Y2OkzbH9rmjZkbBRa8igof903yOnjIl6z0SlAhxA==", + "dev": true, + "requires": { + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "pac-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", + "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", + "dev": true, "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.5.0" + "co": "^4.6.0", + "degenerator": "^1.0.4", + "ip": "^1.1.5", + "netmask": "^1.0.6", + "thunkify": "^2.1.2" + } + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" } }, "pako": { @@ -8792,36 +9254,36 @@ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "dev": true, "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.4" + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" } }, "parse-asn1": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "dev": true, "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.1.1", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" } }, "parse-entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.1.tgz", - "integrity": "sha1-gRLYhHExnyerrk1klksSL+ThuJA=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.2.tgz", + "integrity": "sha512-5N9lmQ7tmxfXf+hO3X6KRG6w7uYO/HL9fHalSySTdyn63C3WNvTM/1R8tn1u1larNcEbo3Slcy2bsVDQqvEpUg==", "dev": true, "requires": { - "character-entities": "1.2.1", - "character-entities-legacy": "1.1.1", - "character-reference-invalid": "1.1.1", - "is-alphanumerical": "1.0.1", - "is-decimal": "1.0.1", - "is-hexadecimal": "1.0.1" + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" } }, "parse-glob": { @@ -8830,10 +9292,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parse-json": { @@ -8842,7 +9304,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "parse5": { @@ -8851,7 +9313,7 @@ "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "dev": true, "requires": { - "@types/node": "9.4.6" + "@types/node": "*" } }, "parseurl": { @@ -8865,6 +9327,16 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "dev": true, + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, "path-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", @@ -8918,9 +9390,9 @@ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { "pify": { @@ -8938,16 +9410,16 @@ "dev": true }, "pbkdf2": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", - "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", "dev": true, "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.10" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "pend": { @@ -8980,31 +9452,50 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pino": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/pino/-/pino-4.10.3.tgz", - "integrity": "sha512-IKXK0dcFQYITgOJBEvy1RCI5gUz+VVERXMhIvk5Ie+k9zzrbwXDs38M3H6JhoCHR58exyNpNcEKBrW4JC2P0pg==", - "dev": true, - "requires": { - "chalk": "2.3.2", - "fast-json-parse": "1.0.3", - "fast-safe-stringify": "1.2.3", - "flatstr": "1.0.5", - "pump": "2.0.1", - "quick-format-unescaped": "1.1.2", - "split2": "2.2.0" + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-4.16.1.tgz", + "integrity": "sha512-ST/IC5RMyqrOZL+Hq6LDwz5h4fGKABXzx2/5Ze7rz5TjuPvE8uI72dzj409xkq9JjyWsKoOOApgXn8kEjJ73yg==", + "dev": true, + "requires": { + "chalk": "^2.3.2", + "fast-json-parse": "^1.0.3", + "fast-safe-stringify": "^1.2.3", + "flatstr": "^1.0.5", + "pino-std-serializers": "^2.0.0", + "pump": "^3.0.0", + "quick-format-unescaped": "^1.1.2", + "split2": "^2.2.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } } }, + "pino-std-serializers": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.1.0.tgz", + "integrity": "sha512-NqWvrQD/GpY78ybiNBzi/dg8ylERhDo6nB33j5sfCKpUmWLc3lYzeoBjyRoCMvEpDpL9lmH6ufRd0jw6rcd1pQ==", + "dev": true + }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } }, "pluralize": { @@ -9045,36 +9536,21 @@ "dev": true }, "postcss": { - "version": "6.0.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", - "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.19.tgz", + "integrity": "sha512-f13HRz0HtVwVaEuW6J6cOUCBLFtymhgyLPV7t4QEk2UD3twRI9IluDcQNdzQdBpiixkXj2OmzejhhTbSbDxNTg==", "dev": true, "requires": { - "chalk": "2.3.2", - "source-map": "0.6.1", - "supports-color": "4.5.0" + "chalk": "^2.3.1", + "source-map": "^0.6.1", + "supports-color": "^5.2.0" }, "dependencies": { - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } } } }, @@ -9103,17 +9579,17 @@ "dev": true }, "probe-image-size": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-3.2.0.tgz", - "integrity": "sha512-LE7mIvfDoEeOgIH9TbMNv5txJh+K0/UVandiXHk+Hm4VKqNV5qxoeDzdW3QiMIlqXsIEm3K+SzeAedT6fZKjtQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-4.0.0.tgz", + "integrity": "sha512-nm7RvWUxps+2+jZKNLkd04mNapXNariS6G5WIEVzvAqjx7EUuKcY1Dp3e6oUK7GLwzJ+3gbSbPLFAASHFQrPcQ==", "dev": true, "requires": { - "any-promise": "1.3.0", - "deepmerge": "1.5.2", - "got": "6.7.1", - "inherits": "2.0.3", - "next-tick": "1.0.0", - "stream-parser": "0.3.1" + "any-promise": "^1.3.0", + "deepmerge": "^2.0.1", + "inherits": "^2.0.3", + "next-tick": "^1.0.0", + "request": "^2.83.0", + "stream-parser": "~0.3.1" } }, "process": { @@ -9140,7 +9616,7 @@ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "dev": true, "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } }, "promise-inflight": { @@ -9154,10 +9630,47 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", "requires": { - "forwarded": "0.1.2", + "forwarded": "~0.1.2", "ipaddr.js": "1.6.0" } }, + "proxy-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.0.0.tgz", + "integrity": "sha512-g6n6vnk8fRf705ShN+FEXFG/SDJaW++lSs0d9KaJh4uBWW/wi7en4Cpo5VYQW3SZzAE121lhB/KLQrbURoubZw==", + "dev": true, + "requires": { + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "pac-proxy-agent": "^2.0.1", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + } + } + }, "proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", @@ -9177,16 +9690,16 @@ "dev": true }, "public-encrypt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", "dev": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" } }, "pug": { @@ -9195,14 +9708,14 @@ "integrity": "sha512-SL7xovj6E2Loq9N0UgV6ynjMLW4urTFY/L/Fprhvz13Xc5vjzkjZjI1QHKq31200+6PSD8PyU6MqrtCTJj6/XA==", "dev": true, "requires": { - "pug-code-gen": "2.0.0", - "pug-filters": "2.1.5", - "pug-lexer": "3.1.0", - "pug-linker": "3.0.3", - "pug-load": "2.0.9", - "pug-parser": "4.0.0", - "pug-runtime": "2.0.3", - "pug-strip-comments": "1.0.2" + "pug-code-gen": "^2.0.0", + "pug-filters": "^2.1.5", + "pug-lexer": "^3.1.0", + "pug-linker": "^3.0.3", + "pug-load": "^2.0.9", + "pug-parser": "^4.0.0", + "pug-runtime": "^2.0.3", + "pug-strip-comments": "^1.0.2" } }, "pug-attrs": { @@ -9211,9 +9724,9 @@ "integrity": "sha1-i+KyIlVo/6ddG4Zpgr/59BEa/8s=", "dev": true, "requires": { - "constantinople": "3.1.2", - "js-stringify": "1.0.2", - "pug-runtime": "2.0.3" + "constantinople": "^3.0.1", + "js-stringify": "^1.0.1", + "pug-runtime": "^2.0.3" } }, "pug-code-gen": { @@ -9222,14 +9735,14 @@ "integrity": "sha512-E4oiJT+Jn5tyEIloj8dIJQognbiNNp0i0cAJmYtQTFS0soJ917nlIuFtqVss3IXMEyQKUew3F4gIkBpn18KbVg==", "dev": true, "requires": { - "constantinople": "3.1.2", - "doctypes": "1.1.0", - "js-stringify": "1.0.2", - "pug-attrs": "2.0.2", - "pug-error": "1.3.2", - "pug-runtime": "2.0.3", - "void-elements": "2.0.1", - "with": "5.1.1" + "constantinople": "^3.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.1", + "pug-attrs": "^2.0.2", + "pug-error": "^1.3.2", + "pug-runtime": "^2.0.3", + "void-elements": "^2.0.1", + "with": "^5.0.0" } }, "pug-error": { @@ -9244,13 +9757,13 @@ "integrity": "sha512-xkw71KtrC4sxleKiq+cUlQzsiLn8pM5+vCgkChW2E6oNOzaqTSIBKIQ5cl4oheuDzvJYCTSYzRaVinMUrV4YLQ==", "dev": true, "requires": { - "clean-css": "3.4.28", - "constantinople": "3.1.2", + "clean-css": "^3.3.0", + "constantinople": "^3.0.1", "jstransformer": "1.0.0", - "pug-error": "1.3.2", - "pug-walk": "1.1.5", - "resolve": "1.5.0", - "uglify-js": "2.8.29" + "pug-error": "^1.3.2", + "pug-walk": "^1.1.5", + "resolve": "^1.1.6", + "uglify-js": "^2.6.1" } }, "pug-lexer": { @@ -9259,9 +9772,9 @@ "integrity": "sha1-/QhzdtSmdbT1n4/vQiiDQ06VgaI=", "dev": true, "requires": { - "character-parser": "2.2.0", - "is-expression": "3.0.0", - "pug-error": "1.3.2" + "character-parser": "^2.1.1", + "is-expression": "^3.0.0", + "pug-error": "^1.3.2" } }, "pug-linker": { @@ -9270,8 +9783,8 @@ "integrity": "sha512-DCKczglCXOzJ1lr4xUj/lVHYvS+lGmR2+KTCjZjtIpdwaN7lNOoX2SW6KFX5X4ElvW+6ThwB+acSUg08UJFN5A==", "dev": true, "requires": { - "pug-error": "1.3.2", - "pug-walk": "1.1.5" + "pug-error": "^1.3.2", + "pug-walk": "^1.1.5" } }, "pug-load": { @@ -9280,8 +9793,8 @@ "integrity": "sha512-BDdZOCru4mg+1MiZwRQZh25+NTRo/R6/qArrdWIf308rHtWA5N9kpoUskRe4H6FslaQujC+DigH9LqlBA4gf6Q==", "dev": true, "requires": { - "object-assign": "4.1.1", - "pug-walk": "1.1.5" + "object-assign": "^4.1.0", + "pug-walk": "^1.1.5" } }, "pug-parser": { @@ -9290,7 +9803,7 @@ "integrity": "sha512-ocEUFPdLG9awwFj0sqi1uiZLNvfoodCMULZzkRqILryIWc/UUlDlxqrKhKjAIIGPX/1SNsvxy63+ayEGocGhQg==", "dev": true, "requires": { - "pug-error": "1.3.2", + "pug-error": "^1.3.2", "token-stream": "0.0.1" } }, @@ -9306,7 +9819,7 @@ "integrity": "sha1-0xOvoBvMN0mA4TmeI+vy65vchRM=", "dev": true, "requires": { - "pug-error": "1.3.2" + "pug-error": "^1.3.2" } }, "pug-walk": { @@ -9321,8 +9834,8 @@ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "pumpify": { @@ -9331,9 +9844,9 @@ "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", "dev": true, "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" + "duplexify": "^3.5.3", + "inherits": "^2.0.3", + "pump": "^2.0.0" } }, "punycode": { @@ -9348,14 +9861,14 @@ "integrity": "sha1-rb8l5J9e8DRDwQq44JqVTKDHv+4=", "dev": true, "requires": { - "debug": "2.6.9", - "extract-zip": "1.6.6", - "https-proxy-agent": "2.1.1", - "mime": "1.4.1", - "progress": "2.0.0", - "proxy-from-env": "1.0.0", - "rimraf": "2.6.2", - "ws": "3.3.3" + "debug": "^2.6.8", + "extract-zip": "^1.6.5", + "https-proxy-agent": "^2.1.0", + "mime": "^1.3.4", + "progress": "^2.0.0", + "proxy-from-env": "^1.0.0", + "rimraf": "^2.6.1", + "ws": "^3.0.0" }, "dependencies": { "rimraf": { @@ -9364,7 +9877,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.0.6" + "glob": "^7.0.5" } } } @@ -9391,7 +9904,7 @@ "integrity": "sha1-DKWB3jF0vs7yWsPC6JVjQjgdtpg=", "dev": true, "requires": { - "fast-safe-stringify": "1.2.3" + "fast-safe-stringify": "^1.0.8" } }, "randomatic": { @@ -9400,8 +9913,8 @@ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -9410,7 +9923,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -9419,7 +9932,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -9430,7 +9943,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -9441,7 +9954,7 @@ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.1.0" } }, "randomfill": { @@ -9450,8 +9963,8 @@ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "requires": { - "randombytes": "2.0.6", - "safe-buffer": "5.1.1" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, "range-parser": { @@ -9471,15 +9984,15 @@ } }, "rc": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.5.tgz", - "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -9496,9 +10009,9 @@ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -9507,8 +10020,8 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" }, "dependencies": { "find-up": { @@ -9517,8 +10030,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "path-exists": { @@ -9527,7 +10040,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } } } @@ -9538,13 +10051,13 @@ "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -9553,10 +10066,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.4", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "readline2": { @@ -9565,8 +10078,8 @@ "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", "mute-stream": "0.0.5" }, "dependencies": { @@ -9576,7 +10089,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "mute-stream": { @@ -9593,7 +10106,16 @@ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "1.5.0" + "resolve": "^1.1.6" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dev": true, + "requires": { + "minimatch": "3.0.4" } }, "redent": { @@ -9602,8 +10124,8 @@ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" } }, "regenerate": { @@ -9618,7 +10140,7 @@ "integrity": "sha512-Yjy6t7jFQczDhYE+WVm7pg6gWYE258q4sUkk9qDErwXJIqx7jU9jGrMFHutJK/SRfcg7MEkXjGaYiVlOZyev/A==", "dev": true, "requires": { - "regenerate": "1.3.3" + "regenerate": "^1.3.3" } }, "regenerator-runtime": { @@ -9633,7 +10155,7 @@ "integrity": "sha512-y2uxO/6u+tVmtEDIKo+tLCtI0GcbQr0OreosKgCd7HP4VypGjtTrw79DezuwT+W5QX0YWuvpeBOgumrepwM1kA==", "dev": true, "requires": { - "private": "0.1.8" + "private": "^0.1.6" } }, "regex-cache": { @@ -9642,7 +10164,7 @@ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regex-not": { @@ -9651,22 +10173,28 @@ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true + }, "regexpu-core": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.3.tgz", "integrity": "sha512-mB+njEzO7oezA57IbQxxd6fVPOeWKDmnGvJ485CwmfNchjHe5jWwqKepapmzUEj41yxIAqOg+C4LbXuJlkiO8A==", "dev": true, "requires": { - "regenerate": "1.3.3", - "regenerate-unicode-properties": "5.1.3", - "regjsgen": "0.3.0", - "regjsparser": "0.2.1", - "unicode-match-property-ecmascript": "1.0.3", - "unicode-match-property-value-ecmascript": "1.0.1" + "regenerate": "^1.3.3", + "regenerate-unicode-properties": "^5.1.1", + "regjsgen": "^0.3.0", + "regjsparser": "^0.2.1", + "unicode-match-property-ecmascript": "^1.0.3", + "unicode-match-property-value-ecmascript": "^1.0.1" } }, "registry-auth-token": { @@ -9675,8 +10203,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.5", - "safe-buffer": "5.1.1" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" } }, "registry-url": { @@ -9685,7 +10213,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.5" + "rc": "^1.0.1" } }, "regjsgen": { @@ -9700,7 +10228,7 @@ "integrity": "sha1-w3h1U/rwTndcMCEC7zRtmVAA7Bw=", "dev": true, "requires": { - "jsesc": "0.5.0" + "jsesc": "~0.5.0" }, "dependencies": { "jsesc": { @@ -9717,8 +10245,8 @@ "integrity": "sha1-fI1KovCVcEzQIOMugJm8rhA/C9Q=", "dev": true, "requires": { - "chalk": "1.1.3", - "commander": "2.8.1" + "chalk": "^1.0.0", + "commander": "^2.6.0" }, "dependencies": { "ansi-styles": { @@ -9733,11 +10261,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "supports-color": { @@ -9754,9 +10282,9 @@ "integrity": "sha1-y0Y709vLS5l5STXu4c9x16jjBow=", "dev": true, "requires": { - "remark-parse": "1.1.0", - "remark-stringify": "1.1.0", - "unified": "4.2.1" + "remark-parse": "^1.1.0", + "remark-stringify": "^1.1.0", + "unified": "^4.1.1" } }, "remark-parse": { @@ -9765,15 +10293,15 @@ "integrity": "sha1-w8oQ+ajaBGFcKPCapOMEUQUm7CE=", "dev": true, "requires": { - "collapse-white-space": "1.0.3", - "extend": "3.0.1", - "parse-entities": "1.1.1", - "repeat-string": "1.6.1", + "collapse-white-space": "^1.0.0", + "extend": "^3.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", "trim": "0.0.1", - "trim-trailing-lines": "1.1.0", - "unherit": "1.1.0", - "unist-util-remove-position": "1.1.1", - "vfile-location": "2.0.2" + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0" } }, "remark-stringify": { @@ -9782,14 +10310,14 @@ "integrity": "sha1-pxBeJbnuK/mkm3XSxCPxGwauIJI=", "dev": true, "requires": { - "ccount": "1.0.2", - "extend": "3.0.1", - "longest-streak": "1.0.0", - "markdown-table": "0.4.0", - "parse-entities": "1.1.1", - "repeat-string": "1.6.1", - "stringify-entities": "1.3.1", - "unherit": "1.1.0" + "ccount": "^1.0.0", + "extend": "^3.0.0", + "longest-streak": "^1.0.0", + "markdown-table": "^0.4.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4" } }, "remove-trailing-separator": { @@ -9816,37 +10344,37 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", - "dev": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "request-promise-core": { @@ -9855,7 +10383,7 @@ "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.13.1" } }, "request-promise-native": { @@ -9865,8 +10393,8 @@ "dev": true, "requires": { "request-promise-core": "1.1.1", - "stealthy-require": "1.1.1", - "tough-cookie": "2.3.4" + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" } }, "require-directory": { @@ -9887,8 +10415,8 @@ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" } }, "resolve": { @@ -9897,7 +10425,7 @@ "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-from": { @@ -9918,8 +10446,8 @@ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "ret": { @@ -9934,7 +10462,7 @@ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -9944,13 +10472,13 @@ "dev": true }, "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, "run-async": { @@ -9959,7 +10487,7 @@ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "run-queue": { @@ -9968,7 +10496,7 @@ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "dev": true, "requires": { - "aproba": "1.2.0" + "aproba": "^1.1.1" } }, "rx-lite": { @@ -9983,7 +10511,7 @@ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "dev": true, "requires": { - "rx-lite": "4.0.8" + "rx-lite": "*" } }, "safe-buffer": { @@ -9991,10 +10519,16 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, + "safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "dev": true + }, "safe-json-stringify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.1.0.tgz", - "integrity": "sha512-EzBtUaFH9bHYPc69wqjp0efJI/DPNHdFbGE3uIMn4sVbO0zx8vZ8cG4WKxQfOpUOKsQyGBiT2mTqnCw+6nLswA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", "dev": true, "optional": true }, @@ -10004,7 +10538,7 @@ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "samsam": { @@ -10025,10 +10559,16 @@ "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", "dev": true, "requires": { - "ajv": "6.2.0", - "ajv-keywords": "3.1.0" + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" } }, + "secure-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", + "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o=", + "dev": true + }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", @@ -10041,7 +10581,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.5.0" + "semver": "^5.0.3" } }, "send": { @@ -10050,18 +10590,18 @@ "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", "requires": { "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.1", + "destroy": "~1.0.4", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.6.2", + "http-errors": "~1.6.2", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.3.1" } }, "serialize-javascript": { @@ -10076,13 +10616,13 @@ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.4", "batch": "0.6.1", "debug": "2.6.9", - "escape-html": "1.0.3", - "http-errors": "1.6.2", - "mime-types": "2.1.18", - "parseurl": "1.3.2" + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" } }, "serve-static": { @@ -10090,9 +10630,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", "send": "0.16.1" } }, @@ -10102,15 +10642,6 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "set-getter": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", - "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", - "dev": true, - "requires": { - "to-object-path": "0.3.0" - } - }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -10123,10 +10654,10 @@ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -10135,7 +10666,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -10152,13 +10683,42 @@ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "sha.js": { - "version": "2.4.10", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", - "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^2.0.1", + "lazy-cache": "^0.2.3", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true, + "requires": { + "is-buffer": "^1.0.2" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + } } }, "shebang-command": { @@ -10167,7 +10727,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -10182,10 +10742,10 @@ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "dev": true, "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" } }, "shelljs": { @@ -10194,9 +10754,9 @@ "integrity": "sha512-YA/iYtZpzFe5HyWVGrb02FjPxc4EMCfpoU/Phg9fQoyMC72u9598OUBrsU8IrtwAKG0tO8IYaqbaLIw+k3IRGA==", "dev": true, "requires": { - "glob": "7.0.6", - "interpret": "1.1.0", - "rechoir": "0.6.2" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" } }, "shellwords": { @@ -10206,93 +10766,32 @@ "dev": true }, "sign-addon": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-0.2.2.tgz", - "integrity": "sha512-f6EzJaysErGx7a4jmccspkpM37j6bfTS+6aeo/i0F3GmS9ruv1m3CgERn3VMBQgz69kNbzE63toVFmhcbvta9g==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-0.3.1.tgz", + "integrity": "sha512-feaoG7+8IXr9SymOEd8VTZCSlVZArWcBDZ33IIdfXlU5NWWzXdCxCjPDqAkLQplFa7RRZr1S4lSmgMPn80Ze1A==", "dev": true, "requires": { "babel-polyfill": "6.16.0", "deepcopy": "0.6.3", "es6-error": "4.0.0", "es6-promisify": "5.0.0", - "jsonwebtoken": "7.1.9", + "jsonwebtoken": "8.2.1", "mz": "2.5.0", - "request": "2.79.0", + "request": "2.87.0", "source-map-support": "0.4.6", "stream-to-promise": "2.2.0", "when": "3.7.7" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, "babel-polyfill": { "version": "6.16.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "core-js": "2.5.3", - "regenerator-runtime": "0.9.6" - } - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "commander": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", - "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==", - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.10.1" + "babel-runtime": "^6.9.1", + "core-js": "^2.4.0", + "regenerator-runtime": "^0.9.5" } }, "es6-error": { @@ -10301,75 +10800,17 @@ "integrity": "sha1-8JTHBB9mJZm7EnINoFnWucf/D0A=", "dev": true }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - } - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "commander": "2.14.1", - "is-my-json-valid": "2.17.2", - "pinkie-promise": "2.0.1" - } - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" - } - }, "mz": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.5.0.tgz", "integrity": "sha1-KFkCXfA9RrV7sxcXSxlkd85kzsE=", "dev": true, "requires": { - "any-promise": "1.3.0", - "object-assign": "4.1.1", - "thenify-all": "1.6.0" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, - "qs": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", - "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", - "dev": true - }, "regenerator-runtime": { "version": "0.9.6", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", @@ -10377,40 +10818,31 @@ "dev": true }, "request": { - "version": "2.79.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", - "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.11.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "qs": "6.3.2", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.4.3", - "uuid": "3.2.1" - } - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "requires": { - "hoek": "2.16.3" + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "source-map-support": { @@ -10419,20 +10851,8 @@ "integrity": "sha1-MlUqpktFg5KoXqs7C17mFScWeus=", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.3" } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true } } }, @@ -10448,13 +10868,13 @@ "integrity": "sha512-cpOHpnRyY3Dk9dTHBYMfVBB0HUCSKIpxW07X6OGW2NiYPovs4AkcL8Q8MzecbAROjbfRA9esJCmlZgikxDz7DA==", "dev": true, "requires": { - "@sinonjs/formatio": "2.0.0", - "diff": "3.3.1", - "lodash.get": "4.4.2", - "lolex": "2.3.2", - "nise": "1.3.0", - "supports-color": "5.3.0", - "type-detect": "4.0.8" + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.1.0", + "lodash.get": "^4.4.2", + "lolex": "^2.2.0", + "nise": "^1.2.0", + "supports-color": "^5.1.0", + "type-detect": "^4.0.5" } }, "sinon-chai": { @@ -10475,23 +10895,29 @@ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0" + "is-fullwidth-code-point": "^2.0.0" } }, + "smart-buffer": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", + "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", + "dev": true + }, "snapdragon": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", - "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", - "dev": true, - "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "2.0.2" + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { "define-property": { @@ -10500,7 +10926,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -10509,112 +10935,440 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "^6.0.0" } }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, + "snyk": { + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.82.0.tgz", + "integrity": "sha512-UZuGBdh3PSK6Va9Sos+hFUnLImIShluHfOSvF3UdM0jmjOaIRvIywkUrqT7J38xQ0VRmbVCoJlrYA1g7vD1CeA==", + "dev": true, + "requires": { + "abbrev": "^1.1.1", + "ansi-escapes": "^3.1.0", + "chalk": "^2.4.1", + "configstore": "^3.1.2", + "debug": "^3.1.0", + "hasbin": "^1.2.3", + "inquirer": "^3.0.0", + "lodash": "^4.17.5", + "needle": "^2.0.1", + "opn": "^5.2.0", + "os-name": "^2.0.1", + "proxy-agent": "^3.0.0", + "proxy-from-env": "^1.0.0", + "recursive-readdir": "^2.2.2", + "semver": "^5.5.0", + "snyk-config": "2.1.0", + "snyk-go-plugin": "1.5.1", + "snyk-gradle-plugin": "1.3.0", + "snyk-module": "1.8.2", + "snyk-mvn-plugin": "1.2.0", + "snyk-nuget-plugin": "1.6.2", + "snyk-php-plugin": "1.5.1", + "snyk-policy": "1.12.0", + "snyk-python-plugin": "1.6.1", + "snyk-resolve": "1.0.1", + "snyk-resolve-deps": "3.1.0", + "snyk-sbt-plugin": "1.3.0", + "snyk-tree": "^1.0.0", + "snyk-try-require": "1.3.0", + "tempfile": "^2.0.0", + "then-fs": "^2.0.0", + "undefsafe": "^2.0.0", + "uuid": "^3.2.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + } + } + }, + "snyk-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-2.1.0.tgz", + "integrity": "sha512-D1Xz1pZa9lwA9AHogmAigyJGo/iuEGH+rcPB77mFsneVfnuiK9c6IjnsHbEBUf1cePtZvWdGBjs6e75Cvc2AMg==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "nconf": "^0.10.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "snyk-go-plugin": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.5.1.tgz", + "integrity": "sha512-8OPJOT05Z/UL5fFSXV6b/A6KjlS1Ahr2gpup1bhXtAGXlUUPyWidqkCIER9fexDXqYWgAoDAdn9YHIvmL/5bfw==", + "dev": true, + "requires": { + "graphlib": "^2.1.1", + "tmp": "0.0.33", + "toml": "^2.3.2" + } + }, + "snyk-gradle-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-1.3.0.tgz", + "integrity": "sha512-rKZcPwbDM9zk3pFcO0w77MIKOZTkk5ZBVBkBlTlUiFg+eNOKqPTmw2hBGF5NB4ASQmMnx3uB1C8+hrQ405CthA==", + "dev": true, + "requires": { + "clone-deep": "^0.3.0" + } + }, + "snyk-module": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/snyk-module/-/snyk-module-1.8.2.tgz", + "integrity": "sha512-XqhdbZ/CUuJ5gSaYdYfapLqx9qm2Mp6nyRMBCLXe9tJSiohOJsc9fQuUDbdOiRCqpA4BD6WLl+qlwOJmJoszBg==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "hosted-git-info": "^2.1.4" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "snyk-mvn-plugin": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-1.2.0.tgz", + "integrity": "sha512-ieTWhn1MB88gEQ6nUtGCeUKQ6Xoxm+u+QmD9u3zfP1QS5ep9fWt3YYDUQjgUiDTJJy7QyVQdZ/fsz3RECnOA7w==", + "dev": true + }, + "snyk-nuget-plugin": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.6.2.tgz", + "integrity": "sha512-8l8hS85esXyweTFgUFdwnGT94Ts42KcG5fdBX2wYosQkpUMePd+GTT9+64k/GvdH5hqcNt2OvtzW+Uf8JF+pbA==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "es6-promise": "^4.1.1", + "lodash": "^4.17.10", + "xml2js": "^0.4.17", + "zip": "^1.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", + "dev": true + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "snyk-php-plugin": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.5.1.tgz", + "integrity": "sha512-g5QSHBsRJ2O4cNxKC4zlWwnQYiSgQ77Y6QgGmo3ihPX3VLZrc1amaZIpPsNe1jwXirnGj2rvR5Xw+jDjbzvHFw==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash": "^4.17.5", + "path": "0.12.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "snyk-policy": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.12.0.tgz", + "integrity": "sha512-CEioNnDzccHyid7UIVl3bJ1dnG4co4ofI+KxuC1mo0IUXy64gxnBTeVoZF5gVLWbAyxGxSeW8f0+8GmWMHVb7w==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "email-validator": "^2.0.3", + "js-yaml": "^3.5.3", + "lodash.clonedeep": "^4.3.1", + "semver": "^5.5.0", + "snyk-module": "^1.8.2", + "snyk-resolve": "^1.0.1", + "snyk-try-require": "^1.1.1", + "then-fs": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "snyk-python-plugin": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.6.1.tgz", + "integrity": "sha512-6zr5jAB3p/bwMZQxZpdj+aPmioTgHB4DI6JMLInhZupss0x8Ome5YqzVzBbOvUKNrc3KaLtjGrJWcAuxDL6M/g==", + "dev": true, + "requires": { + "tmp": "0.0.33" + } + }, + "snyk-resolve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/snyk-resolve/-/snyk-resolve-1.0.1.tgz", + "integrity": "sha512-7+i+LLhtBo1Pkth01xv+RYJU8a67zmJ8WFFPvSxyCjdlKIcsps4hPQFebhz+0gC5rMemlaeIV6cqwqUf9PEDpw==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "then-fs": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "ms": "2.0.0" } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + } + } + }, + "snyk-resolve-deps": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/snyk-resolve-deps/-/snyk-resolve-deps-3.1.0.tgz", + "integrity": "sha512-YVAelR+dTpqLgfk6lf6WgOlw+MGmGI0r3/Dny8tUbJJ9uVTHTRAOdZCbUyTFqJG7oEmEZxUwmfjqgAuniYwx8Q==", + "dev": true, + "requires": { + "ansicolors": "^0.3.2", + "debug": "^3.1.0", + "lodash.assign": "^4.2.0", + "lodash.assignin": "^4.2.0", + "lodash.flatten": "^4.4.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lru-cache": "^4.0.0", + "semver": "^5.1.0", + "snyk-module": "^1.6.0", + "snyk-resolve": "^1.0.0", + "snyk-tree": "^1.0.0", + "snyk-try-require": "^1.1.1", + "then-fs": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "ms": "2.0.0" } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "snyk-sbt-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-1.3.0.tgz", + "integrity": "sha512-SRxPB16392dvN3Qv2RfUcHe0XETLWx2kNIOuoNXvc2Gl6DuPW+X+meDJY7xC/yQhU7bSPPKoM2B7awYaj9i2Bg==", + "dev": true, + "requires": { + "debug": "^2.2.0" + } + }, + "snyk-tree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/snyk-tree/-/snyk-tree-1.0.0.tgz", + "integrity": "sha1-D7cxdtvzLngvGRAClBYESPkRHMg=", + "dev": true, + "requires": { + "archy": "^1.0.0" + } + }, + "snyk-try-require": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/snyk-try-require/-/snyk-try-require-1.3.0.tgz", + "integrity": "sha1-81cGrPkciveI1Y4fGta/D89sVJM=", "dev": true, "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "debug": "^3.1.0", + "lodash.clonedeep": "^4.3.0", + "lru-cache": "^4.0.0", + "then-fs": "^2.0.0" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "ms": "2.0.0" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "socks": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", + "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", "dev": true, "requires": { - "kind-of": "3.2.2" + "ip": "^1.1.4", + "smart-buffer": "^1.0.13" } }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "socks-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz", + "integrity": "sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==", "dev": true, "requires": { - "hoek": "4.2.1" + "agent-base": "^4.1.0", + "socks": "^1.1.10" } }, "source-list-map": { @@ -10630,16 +11384,16 @@ "dev": true }, "source-map-resolve": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "dev": true, "requires": { - "atob": "2.0.3", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-support": { @@ -10648,7 +11402,7 @@ "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", "dev": true, "requires": { - "source-map": "0.6.1" + "source-map": "^0.6.0" }, "dependencies": { "source-map": { @@ -10671,8 +11425,8 @@ "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", "dev": true, "requires": { - "concat-stream": "1.6.0", - "os-shim": "0.1.3" + "concat-stream": "^1.4.7", + "os-shim": "^0.1.2" } }, "spdx-correct": { @@ -10681,8 +11435,8 @@ "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { @@ -10697,8 +11451,8 @@ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -10713,7 +11467,7 @@ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { - "through": "2.3.8" + "through": "2" } }, "split-string": { @@ -10722,7 +11476,7 @@ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" } }, "split2": { @@ -10731,29 +11485,23 @@ "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", "dev": true, "requires": { - "through2": "2.0.3" + "through2": "^2.0.2" } }, - "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=", - "dev": true - }, "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "dev": true, "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" } }, "ssri": { @@ -10762,7 +11510,7 @@ "integrity": "sha512-UnEAgMZa15973iH7cUi0AHjJn1ACDIkaMyZILoqwN6yzt+4P81I8tBc5Hl+qwi5auMplZtPQsHrPBR5vJLcQtQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.1.1" } }, "static-extend": { @@ -10771,8 +11519,8 @@ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { @@ -10781,65 +11529,8 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-descriptor": "^0.1.0" } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, @@ -10860,8 +11551,8 @@ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.4" + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" } }, "stream-each": { @@ -10870,21 +11561,47 @@ "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" } }, "stream-http": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", - "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", "dev": true, "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.4", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "stream-parser": { @@ -10893,7 +11610,7 @@ "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", "dev": true, "requires": { - "debug": "2.6.9" + "debug": "2" } }, "stream-shift": { @@ -10908,7 +11625,7 @@ "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=", "dev": true, "requires": { - "any-promise": "1.3.0" + "any-promise": "^1.1.0" } }, "stream-to-promise": { @@ -10917,9 +11634,9 @@ "integrity": "sha1-se2y4cjLESidG1A8CNPyrvUeZQ8=", "dev": true, "requires": { - "any-promise": "1.3.0", - "end-of-stream": "1.1.0", - "stream-to-array": "2.3.0" + "any-promise": "~1.3.0", + "end-of-stream": "~1.1.0", + "stream-to-array": "~2.3.0" }, "dependencies": { "end-of-stream": { @@ -10928,7 +11645,7 @@ "integrity": "sha1-6TUyWLqpEIll78QcsO+K3i88+wc=", "dev": true, "requires": { - "once": "1.3.3" + "once": "~1.3.0" } }, "once": { @@ -10937,19 +11654,25 @@ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } } } }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -10964,7 +11687,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -10975,25 +11698,25 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "stringify-entities": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.1.tgz", - "integrity": "sha1-sVDsLXKsTBtfMktR+2soyc3/BYw=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", + "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", "dev": true, "requires": { - "character-entities-html4": "1.1.1", - "character-entities-legacy": "1.1.1", - "is-alphanumerical": "1.0.1", - "is-hexadecimal": "1.0.1" + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" } }, "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", "dev": true }, "strip-ansi": { @@ -11002,7 +11725,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -11011,7 +11734,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-bom-buf": { @@ -11020,7 +11743,7 @@ "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.1" } }, "strip-bom-stream": { @@ -11029,8 +11752,8 @@ "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", "dev": true, "requires": { - "first-chunk-stream": "2.0.0", - "strip-bom-buf": "1.0.0" + "first-chunk-stream": "^2.0.0", + "strip-bom-buf": "^1.0.0" } }, "strip-eof": { @@ -11045,7 +11768,7 @@ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "4.0.1" + "get-stdin": "^4.0.1" } }, "strip-json-comments": { @@ -11060,7 +11783,7 @@ "integrity": "sha1-3YAkJeD1PcSm56yjdSkBoczaevU=", "dev": true, "requires": { - "boundary": "1.0.1" + "boundary": "^1.0.1" } }, "stylus": { @@ -11069,12 +11792,12 @@ "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", "dev": true, "requires": { - "css-parse": "1.7.0", - "debug": "2.6.9", - "glob": "7.0.6", - "mkdirp": "0.5.1", - "sax": "0.5.8", - "source-map": "0.1.43" + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" }, "dependencies": { "source-map": { @@ -11083,7 +11806,7 @@ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -11094,27 +11817,47 @@ "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "table": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", - "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "6.2.0", - "ajv-keywords": "3.1.0", - "chalk": "2.3.2", - "lodash": "4.17.5", + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", "slice-ansi": "1.0.0", - "string-width": "2.1.1" + "string-width": "^2.1.1" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + } } }, "tapable": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", - "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", "dev": true }, "tar-stream": { @@ -11123,10 +11866,26 @@ "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", "dev": true, "requires": { - "bl": "1.2.1", - "end-of-stream": "1.4.1", - "readable-stream": "2.3.4", - "xtend": "4.0.1" + "bl": "^1.0.0", + "end-of-stream": "^1.0.0", + "readable-stream": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true + }, + "tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "dev": true, + "requires": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" } }, "term-size": { @@ -11135,7 +11894,7 @@ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, "requires": { - "execa": "0.7.0" + "execa": "^0.7.0" } }, "text-encoding": { @@ -11150,13 +11909,22 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "then-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/then-fs/-/then-fs-2.0.0.tgz", + "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", + "dev": true, + "requires": { + "promise": ">=3.2 <8" + } + }, "thenify": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", "dev": true, "requires": { - "any-promise": "1.3.0" + "any-promise": "^1.0.0" } }, "thenify-all": { @@ -11165,7 +11933,7 @@ "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", "dev": true, "requires": { - "thenify": "3.3.0" + "thenify": ">= 3.1.0 < 4" } }, "through": { @@ -11180,10 +11948,16 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.4", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } }, + "thunkify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", + "dev": true + }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", @@ -11191,114 +11965,35 @@ "dev": true }, "timers-browserify": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", - "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", "dev": true, "requires": { - "setimmediate": "1.0.5" + "setimmediate": "^1.0.4" } }, "tiny-lr": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz", - "integrity": "sha1-s/26gC5dVqM8L28QeUsy5Hescp0=", - "dev": true, - "requires": { - "body-parser": "1.14.2", - "debug": "2.2.0", - "faye-websocket": "0.10.0", - "livereload-js": "2.3.0", - "parseurl": "1.3.2", - "qs": "5.1.0" - }, - "dependencies": { - "body-parser": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz", - "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=", - "dev": true, - "requires": { - "bytes": "2.2.0", - "content-type": "1.0.4", - "debug": "2.2.0", - "depd": "1.1.2", - "http-errors": "1.3.1", - "iconv-lite": "0.4.13", - "on-finished": "2.3.0", - "qs": "5.2.0", - "raw-body": "2.1.7", - "type-is": "1.6.16" - }, - "dependencies": { - "qs": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", - "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=", - "dev": true - } - } - }, - "bytes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz", - "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=", - "dev": true - }, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", + "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", + "dev": true, + "requires": { + "body": "^5.1.0", + "debug": "^3.1.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" + }, + "dependencies": { "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "http-errors": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "statuses": "1.3.1" - } - }, - "iconv-lite": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - }, - "qs": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", - "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=", - "dev": true - }, - "raw-body": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", - "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { - "bytes": "2.4.0", - "iconv-lite": "0.4.13", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", - "dev": true - } + "ms": "2.0.0" } } } @@ -11309,7 +12004,7 @@ "integrity": "sha512-F1frIYVNJlXcl5M4dJrsonTqB19rXP8jj3CB/2K6EIKYszLtYAczGQNTtinNlCvZnS2/wiGo6zv9ex46KibrGA==", "dev": true, "requires": { - "popper.js": "1.14.1" + "popper.js": "^1.13.0" } }, "tmp": { @@ -11318,7 +12013,7 @@ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "to-arraybuffer": { @@ -11339,7 +12034,7 @@ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "to-regex": { @@ -11348,10 +12043,10 @@ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, "to-regex-range": { @@ -11360,8 +12055,8 @@ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "dependencies": { "is-number": { @@ -11370,33 +12065,28 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } } } }, + "to-utf8": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/to-utf8/-/to-utf8-0.0.1.tgz", + "integrity": "sha1-0Xrqcv8vujm55DYBvns/9y4ImFI=", + "dev": true + }, "token-stream": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", "dev": true }, - "topo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", - "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", - "dev": true, - "requires": { - "hoek": "2.16.3" - }, - "dependencies": { - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - } - } + "toml": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.3.tgz", + "integrity": "sha512-O7L5hhSQHxuufWUdcTRPfuTh3phKfAZ/dqfxZFoxPCj2RYmpaSGLEIs016FCXItQwNr08yefUB5TSjzRYnajTA==", + "dev": true }, "tosource": { "version": "1.0.0", @@ -11410,7 +12100,7 @@ "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "dev": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tr46": { @@ -11419,21 +12109,21 @@ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { - "punycode": "2.1.0" + "punycode": "^2.1.0" }, "dependencies": { "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true } } }, "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.4.6.tgz", + "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=", "dev": true }, "trim": { @@ -11455,15 +12145,15 @@ "dev": true }, "trim-trailing-lines": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.0.tgz", - "integrity": "sha1-eu+7eAjfnWafbaLkOMrIxGradoQ=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz", + "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==", "dev": true }, "trough": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.1.tgz", - "integrity": "sha1-qf2LA5Swro//guBjOgo2zK1bX4Y=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.2.tgz", + "integrity": "sha512-FHkoUZvG6Egrv9XZAyYGKEyb1JMsFphgPjoczkZC2y6W93U1jswcVURB8MUvtsahEPEVACyxD47JAL63vF4JsQ==", "dev": true }, "tty-browserify": { @@ -11478,7 +12168,7 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tv4": { @@ -11493,8 +12183,8 @@ "integrity": "sha1-a3l43S3IqjnQrCWU3dtvbAy/2SE=", "dev": true, "requires": { - "moment": "2.21.0", - "validator": "8.2.0" + "moment": "^2.10.6", + "validator": "^8.2.0" } }, "tweetnacl": { @@ -11510,7 +12200,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "type-detect": { @@ -11525,7 +12215,7 @@ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.18" + "mime-types": "~2.1.18" } }, "typedarray": { @@ -11546,9 +12236,9 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" } }, "uglify-to-browserify": { @@ -11564,14 +12254,14 @@ "integrity": "sha512-CG/NvzXfemUAm5Y4Guh5eEaJYHtkG7kKNpXEJHp9QpxsFVB5/qKvYWoMaq4sa99ccZ0hM3MK8vQV9XPZB4357A==", "dev": true, "requires": { - "cacache": "10.0.4", - "find-cache-dir": "1.0.0", - "schema-utils": "0.4.5", - "serialize-javascript": "1.4.0", - "source-map": "0.6.1", - "uglify-es": "3.3.9", - "webpack-sources": "1.1.0", - "worker-farm": "1.5.4" + "cacache": "^10.0.1", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.2", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" }, "dependencies": { "commander": { @@ -11592,8 +12282,8 @@ "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "dev": true, "requires": { - "commander": "2.13.0", - "source-map": "0.6.1" + "commander": "~2.13.0", + "source-map": "~0.6.1" } } } @@ -11604,30 +12294,29 @@ "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", "dev": true }, + "undefsafe": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", + "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", + "dev": true, + "requires": { + "debug": "^2.2.0" + } + }, "underscore": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", "dev": true }, - "underscore.string": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz", - "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=", - "dev": true, - "requires": { - "sprintf-js": "1.1.1", - "util-deprecate": "1.0.2" - } - }, "unherit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.0.tgz", - "integrity": "sha1-a5qu379z3xdWrZ4xbdmBiFhAzX0=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz", + "integrity": "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==", "dev": true, "requires": { - "inherits": "2.0.3", - "xtend": "4.0.1" + "inherits": "^2.0.1", + "xtend": "^4.0.1" } }, "unicode-canonical-property-names-ecmascript": { @@ -11642,8 +12331,8 @@ "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "1.0.3", - "unicode-property-aliases-ecmascript": "1.0.3" + "unicode-canonical-property-names-ecmascript": "^1.0.2", + "unicode-property-aliases-ecmascript": "^1.0.3" } }, "unicode-match-property-value-ecmascript": { @@ -11664,12 +12353,12 @@ "integrity": "sha1-dv9Dqo2kMPbn5KVchOusKtLPzS4=", "dev": true, "requires": { - "bail": "1.0.2", - "extend": "3.0.1", - "has": "1.0.1", - "once": "1.4.0", - "trough": "1.0.1", - "vfile": "1.4.0" + "bail": "^1.0.0", + "extend": "^3.0.0", + "has": "^1.0.1", + "once": "^1.3.3", + "trough": "^1.0.0", + "vfile": "^1.0.0" } }, "union-value": { @@ -11678,10 +12367,10 @@ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, "dependencies": { "extend-shallow": { @@ -11690,7 +12379,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "set-value": { @@ -11699,10 +12388,10 @@ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } @@ -11713,7 +12402,7 @@ "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", "dev": true, "requires": { - "unique-slug": "2.0.0" + "unique-slug": "^2.0.0" } }, "unique-slug": { @@ -11722,7 +12411,7 @@ "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", "dev": true, "requires": { - "imurmurhash": "0.1.4" + "imurmurhash": "^0.1.4" } }, "unique-string": { @@ -11731,31 +12420,31 @@ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "dev": true, "requires": { - "crypto-random-string": "1.0.0" + "crypto-random-string": "^1.0.0" } }, "unist-util-is": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.1.tgz", - "integrity": "sha1-DDEmKeP5YMZukx6BLT2A53AQlHs=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", + "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==", "dev": true }, "unist-util-remove-position": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.1.tgz", - "integrity": "sha1-WoXBVV/BugwQG4ZwfRXlD6TIcbs=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz", + "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==", "dev": true, "requires": { - "unist-util-visit": "1.3.0" + "unist-util-visit": "^1.1.0" } }, "unist-util-visit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.3.0.tgz", - "integrity": "sha512-9ntYcxPFtl44gnwXrQKZ5bMqXMY0ZHzUpqMFiU4zcc8mmf/jzYm8GhYgezuUlX4cJIM1zIDYaO6fG/fI+L6iiQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.3.1.tgz", + "integrity": "sha512-0fdB9EQJU0tho5tK0VzOJzAQpPv2LyLZ030b10GxuzAWEfvd54mpY7BMjQ1L69k2YNvL+SvxRzH0yUIehOO8aA==", "dev": true, "requires": { - "unist-util-is": "2.1.1" + "unist-util-is": "^2.1.1" } }, "universalify": { @@ -11775,8 +12464,8 @@ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { @@ -11785,9 +12474,9 @@ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { @@ -11822,16 +12511,10 @@ "dev": true }, "upath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.2.tgz", - "integrity": "sha512-fCmij7T5LnwUme3dbnVSejvOHHlARjB3ikJFwgZfz386pHmf/gueuTLRFU94FZEaeCLlbQrweiUU700gG41tUw==", - "dev": true, - "requires": { - "lodash.endswith": "4.2.1", - "lodash.isfunction": "3.0.9", - "lodash.isstring": "4.0.1", - "lodash.startswith": "4.2.1" - } + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.5.tgz", + "integrity": "sha512-qbKn90aDQ0YEwvXoLqj0oiuUYroLX2lVHZ+b+xwjozFasAOC4GneDq5+OaIG5Zj+jFmbz/uO+f7a9qxjktJQww==", + "dev": true }, "update-notifier": { "version": "2.3.0", @@ -11839,15 +12522,15 @@ "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", "dev": true, "requires": { - "boxen": "1.3.0", - "chalk": "2.3.2", - "configstore": "3.1.1", - "import-lazy": "2.1.0", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "update-section": { @@ -11856,6 +12539,23 @@ "integrity": "sha1-RY8Xgg03gg3GDiC4bZQ5GwASMVg=", "dev": true }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -11886,100 +12586,23 @@ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } }, "use": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", - "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "dev": true, "requires": { - "define-property": "0.2.5", - "isobject": "3.0.1", - "lazy-cache": "2.0.2" + "kind-of": "^6.0.2" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "dev": true, - "requires": { - "set-getter": "0.1.0" - } } } }, @@ -11989,7 +12612,7 @@ "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", "dev": true, "requires": { - "os-homedir": "1.0.2" + "os-homedir": "^1.0.0" } }, "util": { @@ -12032,8 +12655,8 @@ "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "validator": { @@ -12053,9 +12676,9 @@ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "vfile": { @@ -12065,9 +12688,9 @@ "dev": true }, "vfile-location": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.2.tgz", - "integrity": "sha1-02dcWch3SY5JK0dW/2Xkrxp1IlU=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.3.tgz", + "integrity": "sha512-zM5/l4lfw1CBoPx3Jimxoc5RNDAHHpk6AM6LM0pTIkm5SUSsx8ZekZ0PVdf0WEZ7kjlhSt7ZlqbRL6Cd6dBs6A==", "dev": true }, "vm-browserify": { @@ -12092,25 +12715,14 @@ "dev": true }, "watchpack": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", - "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", "dev": true, "requires": { - "async": "2.6.0", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" - }, - "dependencies": { - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dev": true, - "requires": { - "lodash": "4.17.5" - } - } + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" } }, "wcwidth": { @@ -12119,17 +12731,19 @@ "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "dev": true, "requires": { - "defaults": "1.0.3" + "defaults": "^1.0.3" } }, "web-ext": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-2.4.0.tgz", - "integrity": "sha1-QQPnNxlusqn+gwh3UjV9Hf5hgpQ=", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-2.7.0.tgz", + "integrity": "sha512-hXj/MV/x6G0oxplOirV4/j7BJ5MZJ2yZHml0gulBr7mH2BMNyTJHdRi+qzVBNPFdBMLV0/PS05YGZ7xr2YmwVA==", "dev": true, "requires": { + "@cliqz-oss/firefox-client": "0.3.1", + "@cliqz-oss/node-firefox-connect": "1.2.1", "adbkit": "2.11.0", - "addons-linter": "0.35.0", + "addons-linter": "1.0.0", "babel-polyfill": "6.26.0", "babel-runtime": "6.26.0", "bunyan": "1.8.12", @@ -12140,23 +12754,23 @@ "es6-promisify": "5.0.0", "event-to-promise": "0.8.0", "firefox-profile": "1.1.0", - "fx-runner": "1.0.8", + "fx-runner": "1.0.9", "git-rev-sync": "1.9.1", "minimatch": "3.0.4", "mkdirp": "0.5.1", "mz": "2.7.0", - "node-firefox-connect": "1.2.0", "node-notifier": "5.2.1", - "open": "0.0.5", + "opn": "5.3.0", "parse-json": "4.0.0", "regenerator-runtime": "0.11.1", "require-uncached": "1.0.3", - "sign-addon": "0.2.2", + "sign-addon": "0.3.1", "source-map-support": "0.5.3", "stream-to-promise": "2.2.0", + "strip-json-comments": "2.0.1", "tmp": "0.0.33", "update-notifier": "2.3.0", - "watchpack": "1.4.0", + "watchpack": "1.5.0", "yargs": "6.6.0", "zip-dir": "1.0.2" }, @@ -12173,9 +12787,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, "decamelize": { @@ -12193,7 +12807,16 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" + } + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" } }, "os-locale": { @@ -12202,7 +12825,7 @@ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { - "lcid": "1.0.0" + "lcid": "^1.0.0" } }, "parse-json": { @@ -12211,8 +12834,8 @@ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.1" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "string-width": { @@ -12221,9 +12844,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "which-module": { @@ -12232,6 +12855,12 @@ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", "dev": true }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", @@ -12244,19 +12873,19 @@ "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", "dev": true, "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "4.2.1" + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.2.0" }, "dependencies": { "camelcase": { @@ -12279,7 +12908,7 @@ "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", "dev": true, "requires": { - "camelcase": "3.0.0" + "camelcase": "^3.0.0" }, "dependencies": { "camelcase": { @@ -12299,57 +12928,43 @@ "dev": true }, "webpack": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.1.0.tgz", - "integrity": "sha512-ZFYcAZ44kOT+xsS5MS2H1fQr0PJkwQdYem/d17wacDkkupzsAkBJ3hDShWHdPVvWluFs6pfhHWw/dVso1m0rsA==", - "dev": true, - "requires": { - "acorn": "5.5.0", - "acorn-dynamic-import": "3.0.0", - "ajv": "6.2.0", - "ajv-keywords": "3.1.0", - "chrome-trace-event": "0.1.2", - "enhanced-resolve": "4.0.0", - "eslint-scope": "3.7.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "micromatch": "3.1.9", - "mkdirp": "0.5.1", - "neo-async": "2.5.0", - "node-libs-browser": "2.1.0", - "schema-utils": "0.4.5", - "tapable": "1.0.0", - "uglifyjs-webpack-plugin": "1.2.2", - "watchpack": "1.5.0", - "webpack-sources": "1.1.0" + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.10.2.tgz", + "integrity": "sha512-S4yIBevM7DFSAOAvWSBgvuH5mtJ3HgjAS6tCGsTxxHtrVdbntdRVaPey2u9sCns6KV859Vwd2DwkvBLTcs6t6g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.9", + "@webassemblyjs/wasm-edit": "1.5.9", + "@webassemblyjs/wasm-opt": "1.5.9", + "@webassemblyjs/wasm-parser": "1.5.9", + "acorn": "^5.0.0", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^0.1.1", + "enhanced-resolve": "^4.0.0", + "eslint-scope": "^3.7.1", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.0.1" }, "dependencies": { "acorn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.0.tgz", - "integrity": "sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.0.tgz", + "integrity": "sha512-QatFQ4C0n+PLqemyC6zXEv04tSqRR0hRqe+uGKPEVgKe2G8kl8wJvHzRYWwz6vqqEqt6idPVMFojZ4P1zlyAzQ==", "dev": true }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "5.5.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "3.1.9", - "normalize-path": "2.1.1" - } - }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -12363,75 +12978,39 @@ "dev": true }, "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "kind-of": "6.0.2", - "repeat-element": "1.1.2", - "snapdragon": "0.8.1", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } }, - "chokidar": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", - "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", - "dev": true, - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.1", - "fsevents": "1.1.3", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.0.2" - } - }, - "enhanced-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", - "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "tapable": "1.0.0" - } + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true }, "expand-brackets": { "version": "2.1.4", @@ -12439,13 +13018,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -12454,7 +13033,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -12463,7 +13042,47 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-descriptor": { @@ -12472,9 +13091,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -12491,14 +13110,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.2" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -12507,7 +13126,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -12516,7 +13135,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -12527,10 +13146,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -12539,85 +13158,38 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" + "is-extendable": "^0.1.0" } } } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "^6.0.0" } }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "^6.0.0" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-number": { @@ -12626,7 +13198,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -12635,7 +13207,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -12653,41 +13225,56 @@ "dev": true }, "micromatch": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", - "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.1", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.2" - } - }, - "tapable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", - "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "watchpack": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", - "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz", + "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==", "dev": true, "requires": { - "chokidar": "2.0.2", - "graceful-fs": "4.1.11", - "neo-async": "2.5.0" + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" } } } @@ -12698,7 +13285,7 @@ "integrity": "sha512-/0QYwW/H1N/CdXYA2PNPVbsxO3u2Fpz34vs72xm03SRfg6bMNGfMJIQEpQjKRvkG2JvT6oRJFpDtSrwbX8Jzvw==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.17.5" } }, "webpack-sources": { @@ -12707,8 +13294,8 @@ "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", "dev": true, "requires": { - "source-list-map": "2.0.0", - "source-map": "0.6.1" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" }, "dependencies": { "source-map": { @@ -12725,8 +13312,8 @@ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "dev": true, "requires": { - "http-parser-js": "0.4.10", - "websocket-extensions": "0.1.3" + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" } }, "websocket-extensions": { @@ -12736,14 +13323,14 @@ "dev": true }, "whatwg-url": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.3.0.tgz", - "integrity": "sha512-rM+hE5iYKGPAOu05mIdJR47pYSR2vDzfrTEFRc/S8D3L60yW8BuXmUJ7Kog7x/DrokFN7JNaHKadpzjouKRRAw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz", + "integrity": "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==", "dev": true, "requires": { - "lodash.sortby": "4.7.0", - "tr46": "1.0.1", - "webidl-conversions": "4.0.2" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, "when": { @@ -12758,7 +13345,7 @@ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -12773,7 +13360,16 @@ "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.1.1" + } + }, + "win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", + "dev": true, + "requires": { + "semver": "^5.0.1" } }, "window-size": { @@ -12794,8 +13390,8 @@ "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", "dev": true, "requires": { - "acorn": "3.3.0", - "acorn-globals": "3.1.0" + "acorn": "^3.1.0", + "acorn-globals": "^3.0.0" } }, "wordwrap": { @@ -12810,8 +13406,8 @@ "integrity": "sha512-ITyClEvcfv0ozqJl1vmWFWhvI+OIrkbInYqkEPE50wFPXj8J9Gd3FYf8+CkZJXJJsQBYe+2DvmoK9Zhx5w8W+w==", "dev": true, "requires": { - "errno": "0.1.7", - "xtend": "4.0.1" + "errno": "~0.1.7", + "xtend": "~4.0.1" } }, "wrap-ansi": { @@ -12820,8 +13416,8 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "is-fullwidth-code-point": { @@ -12830,7 +13426,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -12839,9 +13435,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -12858,7 +13454,7 @@ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "write-file-atomic": { @@ -12867,9 +13463,9 @@ "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "ws": { @@ -12878,9 +13474,9 @@ "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "dev": true, "requires": { - "async-limiter": "1.0.0", - "safe-buffer": "5.1.1", - "ultron": "1.1.1" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" } }, "xdg-basedir": { @@ -12895,8 +13491,8 @@ "integrity": "sha1-TfIzjszRSRT62wHP4ieo+FrXvjU=", "dev": true, "requires": { - "global": "4.3.2", - "url": "0.11.0" + "global": "^4.3.0", + "url": "^0.11.0" } }, "xml2js": { @@ -12905,8 +13501,8 @@ "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "dev": true, "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.7" + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" }, "dependencies": { "sax": { @@ -12930,9 +13526,9 @@ "dev": true }, "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", "dev": true }, "xtend": { @@ -12959,9 +13555,9 @@ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" }, "dependencies": { @@ -12974,12 +13570,12 @@ } }, "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { @@ -12996,7 +13592,16 @@ "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", "dev": true, "requires": { - "fd-slicer": "1.0.1" + "fd-slicer": "~1.0.1" + } + }, + "zip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip/-/zip-1.2.0.tgz", + "integrity": "sha1-rQrUImUwm+QutW/IYZThfCTmapw=", + "dev": true, + "requires": { + "bops": "~0.1.1" } }, "zip-dir": { @@ -13005,8 +13610,8 @@ "integrity": "sha1-JT+QeurWKiGs2HIdi4gDKyQRwFE=", "dev": true, "requires": { - "async": "1.5.2", - "jszip": "2.6.1" + "async": "^1.5.2", + "jszip": "^2.4.0" } }, "zip-stream": { @@ -13015,10 +13620,10 @@ "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", "dev": true, "requires": { - "archiver-utils": "1.3.0", - "compress-commons": "1.2.2", - "lodash": "4.17.5", - "readable-stream": "2.3.4" + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" } } } diff --git a/package.json b/package.json index 507ecec3..4d4c92b4 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "grunt-contrib-copy": "^1.0.0", "grunt-contrib-pug": "^1.0.0", "grunt-contrib-stylus": "^1.2.0", - "grunt-contrib-watch": "^1.0.0", + "grunt-contrib-watch": "^1.1.0", "grunt-crx": "^1.0.5", "grunt-exec": "^3.0.0", "grunt-mocha-test": "^0.13.3", @@ -55,8 +55,8 @@ "tippy.js": "^2.3.0", "tv4-formats": "^3.0.3", "uglifyjs-webpack-plugin": "^1.1.6", - "web-ext": "^2.4.0", - "webpack": "^4.1.0", + "web-ext": "^2.7.0", + "webpack": "^4.10.2", "webpack-merge": "^4.1.1", "xhr-mock": "^2.0.3" }, From c7ee13dcbacbacbdefde9340dbb1af6eff4fa595 Mon Sep 17 00:00:00 2001 From: Sunny Sharma Date: Sat, 2 Jun 2018 17:41:59 +0530 Subject: [PATCH 216/611] fixed a typo --- views/token-editor-common.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug index 7c5bc138..93e3a32d 100644 --- a/views/token-editor-common.pug +++ b/views/token-editor-common.pug @@ -35,5 +35,5 @@ base64UrlEncode(header) + "." + base64UrlEncode(payload), , - + ) From 923d1a61dc1061ec4261b9ed5dbbed4bb0e3bed6 Mon Sep 17 00:00:00 2001 From: ZiHang Gao Date: Mon, 4 Jun 2018 14:13:47 +0800 Subject: [PATCH 217/611] New: PHP implementation --- views/website/libraries/24-PHP.json | 30 ++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index f5a520c1..cb0c069d 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -227,6 +227,34 @@ "gitHubRepoPath": "lindelius/php-jwt", "repoUrl": "https://github.com/lindelius/php-jwt", "installCommandHtml": "composer require lindelius/php-jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true + }, + "authorUrl": "https://github.com/cdoco", + "authorName": "ZiHang Gao", + "gitHubRepoPath": "cdoco/php-jwt", + "repoUrl": "https://github.com/cdoco/php-jwt", + "installCommandHtml": "git clone https://github.com/cdoco/php-jwt" } ] -} \ No newline at end of file +} From ae2833adf50fc447d01995717289295b5636a704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 6 Jun 2018 01:12:21 -0300 Subject: [PATCH 218/611] Improved selection of browsers to support. --- webpack.common.js | 14 +++++++++++--- webpack.website-unit-tests.js | 14 +++++++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/webpack.common.js b/webpack.common.js index e9bd0487..25e40aa0 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -1,7 +1,7 @@ const webpack = require('webpack'); module.exports = { - devtool: 'source-map', + devtool: 'source-map', module: { rules: [{ test: /\.js$/, @@ -12,9 +12,17 @@ module.exports = { presets: [[ '@babel/preset-env', { targets: { - browsers: ["last 5 versions", "safari >= 7"] + browsers: [ + '> 0.25%', + 'not dead', + ], + android: 7, + ios: 10, + ie: 11, }, - modules: false + modules: 'commonjs', + "useBuiltIns": 'usage', + "debug": false } ]] } diff --git a/webpack.website-unit-tests.js b/webpack.website-unit-tests.js index 8900ff4d..91ac6e30 100644 --- a/webpack.website-unit-tests.js +++ b/webpack.website-unit-tests.js @@ -25,11 +25,19 @@ module.exports = merge(common, { presets: [[ '@babel/preset-env', { targets: { - browsers: ["last 5 versions", "safari >= 7"] + browsers: [ + '> 0.25%', + 'not dead', + ], + android: 7, + ios: 10, + ie: 11, }, - modules: 'commonjs' + modules: 'commonjs', + "useBuiltIns": 'usage', + "debug": false } - ]] + ]], } } }] From 6554276d34a817daf27bb95df678160db84893e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 6 Jun 2018 01:12:44 -0300 Subject: [PATCH 219/611] Removed jsrsasign in favor of node-jose. --- LICENSE.txt | 140 -------- package-lock.json | 190 +++++++++-- package.json | 5 +- src/editor/default-tokens.js | 70 ++-- src/editor/index.js | 103 +++--- src/editor/jwt.js | 126 ++++--- src/editor/secret-length-tooltip.js | 10 +- src/utils.js | 10 +- test/functional/default-tokens.js | 101 ------ test/functional/editor.js | 493 ++++++++++++++++------------ test/functional/tokens.js | 27 +- test/functional/utils.js | 8 +- test/unit/editor/jwt.js | 200 +++++------ test/unit/utils.js | 3 +- views/token-editor-algorithms.pug | 6 +- 15 files changed, 777 insertions(+), 715 deletions(-) delete mode 100644 test/functional/default-tokens.js diff --git a/LICENSE.txt b/LICENSE.txt index 3278f02f..e39bd6be 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -27,143 +27,3 @@ libraries. Additional licenses from these libraries can be found below. ---- -The 'jsrsasign'(RSA-Sign JavaScript Library) License - -Copyright (c) 2010-2018 Kenji Urushima - -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. - -LICENSE: BSD License -Files: node_modules/jsrsasign/** ----- - -RSA and ECC in JavaScript - -Copyright (c) 2003-2005 Tom Wu 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" AND WITHOUT WARRANTY OF ANY KIND, -EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY -WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - -IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, -INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER -RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF -THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT -OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -In addition, the following condition applies: - -All redistributions must retain an intact copy of this copyright notice -and disclaimer. - -http://www-cs-students.stanford.edu/~tjw/jsbn/ -LICENSE: BSD License -FILES: node_modules/jsrsasign/ext/{base64,jsbn,jsbn2,prgn4,rng,rsa,rsa2}.js ----- - -CryptoJS - -Copyright (c) 2009-2013 Jeff Mott - -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. - -https://code.google.com/p/crypto-js/wiki/License -FILES: node_modules/jsrsasign/ext/cryptojs-*.js ----- - -YUI Library - -Software License Agreement (BSD License) - -Copyright c 2013 Yahoo! Inc. All rights reserved. - -Redistribution and use of this software 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 Yahoo! Inc. nor the names of YUI's contributors - may be used to endorse or promote products derived from this - software without specific prior written permission of Yahoo! Inc. - -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 THE COPYRIGHT -OWNER OR CONTRIBUTORS 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. - -http://yuilibrary.com/license/ -LICENSE: BSD License -FILES: node_modules/jsrsasign/ext/yui*.js ----- - -Bitcoin JS - -Copyright (c) 2011 Stefan Thomas - -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. - -https://github.com/bitcoinjs/bitcoinjs-lib -LICENSE: MIT License -FILES: node_modules/jsrsasign/src/ecdsa-modified.js node_modules/jsrsasign/src/ec-patch.js ----- diff --git a/package-lock.json b/package-lock.json index 1d3c539f..cbed9e88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1962,6 +1962,42 @@ } } }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", @@ -1992,6 +2028,23 @@ "babel-runtime": "^6.22.0" } }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, "babel-polyfill": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", @@ -2210,6 +2263,12 @@ "integrity": "sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=", "dev": true }, + "base64url": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.0.tgz", + "integrity": "sha512-LIVmqIrIWuiqTvn4RzcrwCOuHo2DD6tKmKBPXXlr4p4n4l6BZBkwFTIa3zu1XkX5MbZgro4a6BvPi+n2Mns5Gg==", + "dev": true + }, "basic-auth": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", @@ -4746,6 +4805,12 @@ "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", "dev": true }, + "esm": { + "version": "3.0.47", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.0.47.tgz", + "integrity": "sha512-SkYEU0ZR/4hj9QxMAIk1oU2Y20bJOby8QvCgQMHVBwWSNFXbB7z8q1I7lp4ppn1Nwbx9xLKbB+atRbMSMd7ICQ==", + "dev": true + }, "espree": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", @@ -5418,14 +5483,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5440,20 +5503,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -5570,8 +5630,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -5583,7 +5642,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -5598,7 +5656,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -5606,14 +5663,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -5632,7 +5687,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -5713,8 +5767,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -5726,7 +5779,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -5848,7 +5900,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -7732,12 +7783,6 @@ "verror": "1.10.0" } }, - "jsrsasign": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-8.0.6.tgz", - "integrity": "sha1-RYbwCCPjAuWZokSke+IMYardD88=", - "dev": true - }, "jstransformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", @@ -7932,12 +7977,24 @@ "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", "dev": true }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, + "lodash.fill": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/lodash.fill/-/lodash.fill-3.4.0.tgz", + "integrity": "sha1-o8dK5kDQU63w3CB5+HIHiOi/74U=", + "dev": true + }, "lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", @@ -7956,6 +8013,12 @@ "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", "dev": true }, + "lodash.intersection": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.intersection/-/lodash.intersection-4.4.0.tgz", + "integrity": "sha1-ChG6Yx0OlcI8fy9Mu5ppLtF45wU=", + "dev": true + }, "lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", @@ -7986,12 +8049,36 @@ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", "dev": true }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "dev": true + }, + "lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=", + "dev": true + }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", "dev": true }, + "lodash.partialright": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-4.2.1.tgz", + "integrity": "sha1-ATDYDoM2MmTUAHTzKbij56ihzEs=", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", + "dev": true + }, "lodash.set": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", @@ -8004,6 +8091,12 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, "loglevel": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", @@ -8795,6 +8888,43 @@ "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", "dev": true }, + "node-jose": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.0.0.tgz", + "integrity": "sha512-RE3P8l60Rj9ELrpPmvw6sOQ1hSyYfmQdNUMCa4EN7nCE1ux5JVX+GfXv+mfUTEMhZwNMwxBtI0+X1CKKeukSVQ==", + "dev": true, + "requires": { + "base64url": "^3.0.0", + "es6-promise": "^4.0.5", + "lodash.assign": "^4.0.8", + "lodash.clone": "^4.3.2", + "lodash.fill": "^3.2.2", + "lodash.flatten": "^4.2.0", + "lodash.intersection": "^4.1.2", + "lodash.merge": "^4.3.5", + "lodash.omit": "^4.2.1", + "lodash.partialright": "^4.1.3", + "lodash.pick": "^4.2.0", + "lodash.uniq": "^4.2.1", + "long": "^4.0.0", + "node-forge": "^0.7.1", + "uuid": "^3.0.1" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", + "dev": true + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + } + } + }, "node-libs-browser": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", @@ -9625,6 +9755,12 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "promise.any": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/promise.any/-/promise.any-0.1.1.tgz", + "integrity": "sha1-Fg+JisPHW1y7cw/yOgyi8XQHvzo=", + "dev": true + }, "proxy-addr": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", diff --git a/package.json b/package.json index 4d4c92b4..f7dcdaa1 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@babel/polyfill": "^7.0.0-beta.37", "@babel/preset-env": "^7.0.0-beta.36", "babel-loader": "^8.0.0-beta.0", + "babel-plugin-transform-async-to-generator": "^6.24.1", "bootstrap": "^3.3.7", "chai": "^4.1.2", "chai-arrays": "^2.0.0", @@ -23,6 +24,7 @@ "clipboard-polyfill": "^2.4.6", "codemirror": "^5.33.0", "deep-freeze": "0.0.1", + "esm": "^3.0.47", "flipclock": "^0.7.8", "grunt": "^1.0.1", "grunt-cli": "^1.2.0", @@ -40,11 +42,12 @@ "inject-loader": "^3.0.1", "isotope-layout": "^3.0.5", "jquery": "^3.2.1", - "jsrsasign": "^8.0.4", "jstransformer-markdown-it": "^2.0.0", "lodash": "^4.17.4", "loglevel": "^1.6.1", "mocha": "^5.0.0", + "node-jose": "^1.0.0", + "promise.any": "^0.1.1", "pug": "^2.0.0-rc.4", "puppeteer": "^1.0.0", "request-promise-native": "^1.0.5", diff --git a/src/editor/default-tokens.js b/src/editor/default-tokens.js index 8d582165..337053aa 100644 --- a/src/editor/default-tokens.js +++ b/src/editor/default-tokens.js @@ -1,8 +1,8 @@ // Yes, all keys here are supposed to be exposed, you can commit // them safely to GitHub. -const rsaPrivateKey = -`-----BEGIN RSA PRIVATE KEY----- +const rsaPrivateKey = +`-----BEGIN RSA PRIVATE KEY----- MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw 33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW +jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB @@ -18,7 +18,7 @@ Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw== -----END RSA PRIVATE KEY-----`; -const rsaPublicKey = +const rsaPublicKey = `-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs @@ -26,24 +26,56 @@ HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D o2kQ+X5xK9cipRgEKwIDAQAB -----END PUBLIC KEY-----`; -const ecPrivateKey = +const ecPrivateKey256 = `-----BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2 +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2 OF/2NxApJCzGCEDdfSp6VQO30hyhRANCAAQRWz+jn65BtOMvdyHKcvjBeBSDZH2r 1RTwjmYSi9R/zpBnuQ4EiMnCqfMPWiZqB4QdbAd0E7oH50VpuZ1P087G -----END PRIVATE KEY-----`; -const ecPublicKey = +const ecPublicKey256 = `-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVs/o5+uQbTjL3chynL4wXgUg2R9 q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== -----END PUBLIC KEY-----`; +const ecPrivateKey384 = +`-----BEGIN EC PRIVATE KEY----- +MIGkAgEBBDCAHpFQ62QnGCEvYh/pE9QmR1C9aLcDItRbslbmhen/h1tt8AyMhske +enT+rAyyPhGgBwYFK4EEACKhZANiAAQLW5ZJePZzMIPAxMtZXkEWbDF0zo9f2n4+ +T1h/2sh/fviblc/VTyrv10GEtIi5qiOy85Pf1RRw8lE5IPUWpgu553SteKigiKLU +PeNpbqmYZUkWGh3MLfVzLmx85ii2vMU= +-----END EC PRIVATE KEY-----`; + +const ecPublicKey384 = +`-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEC1uWSXj2czCDwMTLWV5BFmwxdM6PX9p+ +Pk9Yf9rIf374m5XP1U8q79dBhLSIuaojsvOT39UUcPJROSD1FqYLued0rXiooIii +1D3jaW6pmGVJFhodzC31cy5sfOYotrzF +-----END PUBLIC KEY-----`; + +const ecPrivateKey521 = +`-----BEGIN EC PRIVATE KEY----- +MIHcAgEBBEIBiyAa7aRHFDCh2qga9sTUGINE5jHAFnmM8xWeT/uni5I4tNqhV5Xx +0pDrmCV9mbroFtfEa0XVfKuMAxxfZ6LM/yKgBwYFK4EEACOhgYkDgYYABAGBzgdn +P798FsLuWYTDDQA7c0r3BVk8NnRUSexpQUsRilPNv3SchO0lRw9Ru86x1khnVDx+ +duq4BiDFcvlSAcyjLACJvjvoyTLJiA+TQFdmrearjMiZNE25pT2yWP1NUndJxPcv +VtfBW48kPOmvkY4WlqP5bAwCXwbsKrCgk6xbsp12ew== +-----END EC PRIVATE KEY-----`; + +const ecPublicKey521 = +`-----BEGIN PUBLIC KEY----- +MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBgc4HZz+/fBbC7lmEww0AO3NK9wVZ +PDZ0VEnsaUFLEYpTzb90nITtJUcPUbvOsdZIZ1Q8fnbquAYgxXL5UgHMoywAib47 +6MkyyYgPk0BXZq3mq4zImTRNuaU9slj9TVJ3ScT3L1bXwVuPJDzpr5GOFpaj+WwM +Al8G7CqwoJOsW7Kddns= +-----END PUBLIC KEY-----`; + export default { hs256: { token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c', secret: 'your-256-bit-secret' - }, + }, hs384: { token: 'eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.bQTnz6AuMJvmXXQsVPrxeQNvzDkimo7VNXxHeSBfClLufmCVZRUuyTwJF311JHuh', secret: 'your-384-bit-secret' @@ -69,19 +101,19 @@ export default { }, es256: { token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA', - privateKey: ecPrivateKey, - publicKey: ecPublicKey + privateKey: ecPrivateKey256, + publicKey: ecPublicKey256 }, es384: { - token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.bmnmBALgkWpJ_wRTj6gJpmEpq6SzvYlgViuNTTHxJYSLseeRyjkIAXlJHT1s1ygi3UCzh4jfIymjHOlqVFIk1A', - privateKey: ecPrivateKey, - publicKey: ecPublicKey + token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6ImlUcVhYSTB6YkFuSkNLRGFvYmZoa00xZi02ck1TcFRmeVpNUnBfMnRLSTgifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.cJOP_w-hBqnyTsBm3T6lOE5WpcHaAkLuQGAs1QO-lg2eWs8yyGW8p9WagGjxgvx7h9X72H7pXmXqej3GdlVbFmhuzj45A9SXDOAHZ7bJXwM1VidcPi7ZcrsMSCtP1hiN', + privateKey: ecPrivateKey384, + publicKey: ecPublicKey384 + }, + es512: { + token: 'eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCIsImtpZCI6InhaRGZacHJ5NFA5dlpQWnlHMmZOQlJqLTdMejVvbVZkbTd0SG9DZ1NOZlkifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.AP_CIMClixc5-BFflmjyh_bRrkloEvwzn8IaWJFfMz13X76PGWF0XFuhjJUjp7EYnSAgtjJ-7iJG4IP7w3zGTBk_AUdmvRCiWp5YAe8S_Hcs8e3gkeYoOxiXFZlSSAx0GfwW1cZ0r67mwGtso1I3VXGkSjH5J0Rk6809bn25GoGRjOPu', + privateKey: ecPrivateKey521, + publicKey: ecPublicKey521 }, - /*es512: { - token: '', - privateKey: ecPrivateKey, - publicKey: ecPublicKey - },*/ ps256: { token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.P9_X1ctIxnnoUpKSWpYw3rF62e-d8LXe3sETuLn4Lhigw5OQhi-mBBKoBMneHy4kimS84zxnMby0FYo9wKM3I3pEg8Qrz0Q00tNhKCwOnZ7Q-e86sW1luK1z82tufF-sZ9_BY_LGQsym0lQmQaHFzLmEDXnOzWsjUThHGVJTI64', privateKey: rsaPrivateKey, @@ -91,8 +123,8 @@ export default { token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.oywIg-I6w59yw9jiPxewn5n2BhrD7hSifWSmzFKGBMPEMd0qweVNjlyxu2TodunPzlh49OW8QA0ygNRL9VQrWA3GXzb5FubNF4s7Y15QePx52anlvebzihx5-hR0UhKbVC0UODwYNMiY-v0L7iMbT9UvuSj0GAuZMxndo2Y2VFQ', privateKey: rsaPrivateKey, publicKey: rsaPublicKey - }, - /*ps512: { + }/*, + ps512: { token: '', privateKey: rsaPrivateKey, publicKey: rsaPublicKey diff --git a/src/editor/index.js b/src/editor/index.js index 3e25d3c9..1e6ec966 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -1,12 +1,12 @@ -import { +import { deferToNextLoop, safeLocalStorageSetItem, - copyTokenLink + copyTokenLink } from '../utils.js'; import { downloadPublicKeyIfPossible } from './public-key-download.js'; import { setupClaimsTooltip } from './claims-tooltip.js'; import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; -import { +import { getTrimmedValue, stringify, fixEditorHeight, @@ -16,12 +16,12 @@ import { sign, verify, decode } from './jwt.js'; import EventManager from './event-manager.js'; import strings from '../strings.js'; import defaultTokens from './default-tokens.js'; -import { +import { minSecretLengthCheck, - setupSecretLengthTooltip + setupSecretLengthTooltip } from './secret-length-tooltip.js'; -import { - algorithmSelect, +import { + algorithmSelect, signatureStatusElement, editorElement, headerElement, @@ -59,7 +59,7 @@ function isPublicKeyAlgorithm(algorithm) { function markAsInvalid() { signatureStatusElement.classList.remove('valid-token'); signatureStatusElement.classList.add('invalid-token'); - signatureStatusElement.innerHTML = + signatureStatusElement.innerHTML = ` ${strings.editor.signatureInvalid}`; } @@ -71,7 +71,7 @@ function markAsValid() { signatureStatusElement.classList.remove('invalid-token'); signatureStatusElement.classList.add('valid-token'); - signatureStatusElement.innerHTML = + signatureStatusElement.innerHTML = ` ${strings.editor.signatureVerified}`; } @@ -100,9 +100,9 @@ function displaySecretOrKeys(algorithm) { function selectAlgorithm(algorithm) { eventManager.withDisabledEvents(() => { - const selected = + const selected = algorithmSelect.querySelector(`option[value="${algorithm}"]`); - + if(!selected) { log.info(`Invalid algorithm ${algorithm}, ignoring...`); return; @@ -110,7 +110,7 @@ function selectAlgorithm(algorithm) { selected.selected = true; - displaySecretOrKeys(algorithm); + displaySecretOrKeys(algorithm); }); } @@ -129,10 +129,10 @@ export function useDefaultToken(algorithm) { const defaults = defaultTokens[algorithm.toLowerCase()]; const decoded = decode(defaults.token); - tokenEditor.setValue(defaults.token); + tokenEditor.setValue(defaults.token); headerEditor.setValue(stringify(decoded.header)); payloadEditor.setValue(stringify(decoded.payload)); - + if(isSharedSecretAlgorithm(algorithm)) { secretInput.value = defaults.secret; } else { @@ -170,7 +170,7 @@ function setAlgorithmInHeader(algorithm) { function algorithmChangeHandler() { const algorithm = getSelectedAlgorithm(); - + displaySecretOrKeys(algorithm); if(isDefaultToken(getTrimmedValue(tokenEditor))) { @@ -183,10 +183,10 @@ function algorithmChangeHandler() { function markAsInvalidWithElement(element, clearTokenEditor = true) { element.classList.add('error'); markAsInvalid(); - + if(clearTokenEditor) { - eventManager.withDisabledEvents(() => { - tokenEditor.setValue(''); + eventManager.withDisabledEvents(() => { + tokenEditor.setValue(''); }); } } @@ -208,7 +208,7 @@ function loadToken() { if(lastToken) { setTokenEditorValue(lastToken); - + const lastPublicKey = localStorage.getItem('lastPublicKey'); if(lastPublicKey) { publicKeyTextArea.value = lastPublicKey; @@ -245,23 +245,24 @@ function encodeToken() { return; } - try { - const encoded = sign(header, payload, - isSharedSecretAlgorithm(header.alg) ? - secretInput.value : - privateKeyTextArea.value, - secretBase64Checkbox.checked); - - tokenEditor.setValue(encoded); - - saveAsLastToken(); - } catch(e) { - log.warn('Failed to sign/encode token: ', e); - markAsInvalid(); - tokenEditor.setValue(''); - } + const key = isSharedSecretAlgorithm(header.alg) ? + secretInput.value : + privateKeyTextArea.value; - verifyToken(); + sign(header, payload, key, secretBase64Checkbox.checked).then(encoded => { + eventManager.withDisabledEvents(() => { + tokenEditor.setValue(encoded); + saveAsLastToken(); + }); + }).catch(e => { + eventManager.withDisabledEvents(() => { + log.warn('Failed to sign/encode token: ', e); + markAsInvalid(); + tokenEditor.setValue(''); + }) + }).finally(() => { + verifyToken(); + }); }); } @@ -272,7 +273,7 @@ function decodeToken() { try { const jwt = getTrimmedValue(tokenEditor); const decoded = decode(jwt); - + selectAlgorithm(decoded.header.alg); if(isPublicKeyAlgorithm(decoded.header.alg)) { downloadPublicKeyIfPossible(decoded).then(publicKey => { @@ -282,10 +283,10 @@ function decodeToken() { }); }); } - + headerEditor.setValue(stringify(decoded.header)); payloadEditor.setValue(stringify(decoded.payload)); - + if(decoded.errors) { markAsInvalidWithElement(editorElement, false); } else { @@ -294,34 +295,36 @@ function decodeToken() { } } catch(e) { log.warn('Failed to decode token: ', e); - } + } }); } function verifyToken() { const jwt = getTrimmedValue(tokenEditor); const decoded = decode(jwt); - + if(!decoded.header.alg || decoded.header.alg === 'none') { markAsInvalid(); return; } - const publicKeyOrSecret = + const publicKeyOrSecret = isSharedSecretAlgorithm(decoded.header.alg) ? - secretInput.value : + secretInput.value : publicKeyTextArea.value; - if(verify(jwt, publicKeyOrSecret, secretBase64Checkbox.checked)) { - markAsValid(); - } else { - markAsInvalid(); - } + verify(jwt, publicKeyOrSecret, secretBase64Checkbox.checked).then(valid => { + if(valid) { + markAsValid(); + } else { + markAsInvalid(); + } + }); } function setupTabEvents() { // These are relevant for portrait or mobile screens. - + encodedTabLink.addEventListener('click', event => { event.preventDefault(); @@ -357,7 +360,7 @@ function setupEvents() { // HMAC secret, show tooltip if secret is too short. eventManager.addDomEvent(secretInput, 'input', minSecretLengthCheck); // HMAC secret, when changed the encoded token must be updated. - eventManager.addDomEvent(secretInput, 'input', encodeToken); + eventManager.addDomEvent(secretInput, 'input', encodeToken); // Base64 checkbox, when changes the encoded token must be updated. eventManager.addDomEvent(secretBase64Checkbox, 'change', encodeToken); // Private key, when changed the encoded token must be updated. @@ -378,7 +381,7 @@ export function setTokenEditorValue(value) { export function getTokenEditorValue() { return { token: getTrimmedValue(tokenEditor), - publicKey: isPublicKeyAlgorithm(getSelectedAlgorithm()) ? + publicKey: isPublicKeyAlgorithm(getSelectedAlgorithm()) ? publicKeyTextArea.value : undefined }; diff --git a/src/editor/jwt.js b/src/editor/jwt.js index f51fe41b..d383f7cc 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -1,33 +1,71 @@ -import { - jws, - KEYUTIL, - b64utoutf8, - b64utohex, - utf8tohex, - b64tohex, - ASN1HEX -} from 'jsrsasign'; +import jose from 'node-jose'; +import b64u from 'base64url'; +import any from 'promise.any'; import log from 'loglevel'; -export function sign(header, +// node-jose does not support keys shorter than block size. This is a +// limitation from their implementation and could be resolved in the future. +// See: https://github.com/cisco/node-jose/blob/master/lib/jwk/octkey.js#L141 +function paddedKey(key, alg, base64Secret) { + const blockSizeBytes = alg.indexOf('256') !== -1 ? 512 / 8 : 1024 / 8; + + let buf = base64Secret ? Buffer.from(key, 'base64') : Buffer.from(key); + + if(buf.length < blockSizeBytes) { + const oldBuf = buf; + buf = Buffer.alloc(blockSizeBytes); + buf.set(oldBuf); + } + + return b64u.encode(buf); +} + +function getJoseKey(header, key, base64Secret) { + if(header.alg.indexOf('HS') === 0) { + return jose.JWK.asKey({ + kty: 'oct', + use: 'sig', + alg: header.alg, + k: paddedKey(key, header.alg, base64Secret) + }); + } else { + return any(['pem', 'json'].map(form => { + try { + return jose.JWK.asKey(key, form); + } catch(e) { + return Promise.reject(e); + } + })); + } +} + +export function sign(header, payload, secretOrPrivateKeyString, base64Secret = false) { if(!header.alg) { - throw new Error('Missing "alg" claim in header'); + return Promise.reject(new Error('Missing "alg" claim in header')); } - if(header.alg.indexOf('HS') === 0) { - return jws.JWS.sign(null, header, payload, - base64Secret ? - b64utohex(secretOrPrivateKeyString) : - utf8tohex(secretOrPrivateKeyString)); - } else { - return jws.JWS.sign(null, header, payload, secretOrPrivateKeyString); - } + return getJoseKey(header, secretOrPrivateKeyString, base64Secret).then( + key => { + if(!(typeof payload === 'string' || payload instanceof String)) { + payload = JSON.stringify(payload); + } + + return jose.JWS.createSign({ + fields: header, + format: 'compact' + }, { + key: key, + reference: false + }).update(payload, 'utf8').final(); + } + ); } +// TODO: reenable this (and tests) /** * This function takes a PEM string with a public key and returns a * jsrsasign key object (RSAKey, KJUR.crypto.DSA, KJUR.crypto.ECDSA). It also @@ -36,19 +74,19 @@ export function sign(header, * See: https://stackoverflow.com/questions/18039401/how-can-i-transform-between-the-two-styles-of-public-key-format-one-begin-rsa * @param {String} publicKey The public key as a PEM string. * @returns {Object} The public key as a jsrsasign key object. - */ + * / function getPublicKeyObject(publicKey) { try { const startTag = '-----BEGIN RSA PUBLIC KEY-----'; const endTag = '-----END RSA PUBLIC KEY-----'; const startTagPos = publicKey.indexOf(startTag); const endTagPos = publicKey.indexOf(endTag); - + if(startTagPos !== -1 && endTagPos !== -1) { const plainDataBase64 = publicKey.substr(0, endTagPos) .substr(startTagPos + startTag.length); - + const plainDataDER = b64tohex(plainDataBase64); const barePublicKey = { @@ -59,39 +97,35 @@ function getPublicKeyObject(publicKey) { return KEYUTIL.getKey(barePublicKey); } } catch(e) { - log.error('Failed to make public key into X.509 ' + + log.error('Failed to make public key into X.509 ' + 'SubjectPublicKeyInfo key:', e); } return KEYUTIL.getKey(publicKey); -} +}*/ export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { if(!isToken(jwt)) { - return false; + return Promise.resolve(false); } const decoded = decode(jwt); - + if(!decoded.header.alg) { - return false; + return Promise.resolve(false); } - try { - if(decoded.header.alg.indexOf('HS') === 0) { - return jws.JWS.verify(jwt, - base64Secret ? - b64utohex(secretOrPublicKeyString) : - utf8tohex(secretOrPublicKeyString)); - } else { - const publicKeyObject = getPublicKeyObject(secretOrPublicKeyString); - return jws.JWS.verify(jwt, publicKeyObject); + return getJoseKey(decoded.header, secretOrPublicKeyString, base64Secret).then( + key => { + return jose.JWS.createVerify(key) + .verify(jwt) + .then(() => true, () => false); + }, e => { + log.warn('Could not verify token, ' + + 'probably due to bad data in it or the keys: ', e); + return false; } - } catch(e) { - log.warn('Could not verify token, ' + - 'probably due to bad data in it or the keys: ', e); - return false; - } + ); } export function decode(jwt) { @@ -105,18 +139,18 @@ export function decode(jwt) { result.errors = true; return result; } - + const split = jwt.split('.'); - + try { - result.header = JSON.parse(b64utoutf8(split[0])); + result.header = JSON.parse(b64u.decode(split[0])); } catch(e) { result.header = {}; result.errors = true; } try { - result.payload = JSON.parse(b64utoutf8(split[1])); + result.payload = JSON.parse(b64u.decode(split[1])); } catch(e) { result.payload = {}; result.errors = true; @@ -149,7 +183,7 @@ export function isValidBase64String(s, urlOnly) { return s.length % 4 === 0; } - return true; + return true; } catch (e) { return false; } diff --git a/src/editor/secret-length-tooltip.js b/src/editor/secret-length-tooltip.js index 9148eb87..6314fdc5 100644 --- a/src/editor/secret-length-tooltip.js +++ b/src/editor/secret-length-tooltip.js @@ -1,12 +1,12 @@ import { getSelectedAlgorithm } from './utils.js'; -import { +import { secretInput, secretBase64Checkbox, } from '../dom-elements.js'; import log from 'loglevel'; import tippy from 'tippy.js'; -import { b64utohex, utf8tohex } from 'jsrsasign'; +import b64u from 'base64url'; export function minSecretLengthCheck(event) { const alg = getSelectedAlgorithm(); @@ -16,9 +16,9 @@ export function minSecretLengthCheck(event) { } const algBits = parseInt(alg.substr(2)); - const inputBits = secretBase64Checkbox.checked ? - b64utohex(secretInput.value).length / 2 * 8 : - utf8tohex(secretInput.value).length / 2 * 8; + const inputBits = secretBase64Checkbox.checked ? + b64u.decode(secretInput.value).length * 8 : + Buffer.from(secretInput.value).length * 8; if(inputBits < algBits) { if(!secretInput._tippy.state.visible) { diff --git a/src/utils.js b/src/utils.js index a32e7653..e6f91ac2 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,11 +1,11 @@ -import { KEYUTIL } from 'jsrsasign'; +//import { KEYUTIL } from 'jsrsasign'; import log from 'loglevel'; import clipboard from 'clipboard-polyfill'; export function httpGet(url, cache = true) { return new Promise((resolve, reject) => { - const request = new XMLHttpRequest(); + const request = new XMLHttpRequest(); request.onreadystatechange = () => { if (request.readyState === XMLHttpRequest.DONE) { @@ -30,7 +30,7 @@ export function httpGet(url, cache = true) { }); } -export function isValidKey(key) { +/*export function isValidKey(key) { // Four tries: no header, header for cert, header for pub key, // header for priv key @@ -71,7 +71,7 @@ export function isValidKey(key) { valid: false, key: key }; -} +}*/ export function deferToNextLoop(func) { setTimeout(func, 1); @@ -95,7 +95,7 @@ export function safeLocalStorageSetItem(key, value) { try { localStorage.setItem(key, value); } catch (e) { - log.info('Cannot save token to Local Storage ' + + log.info('Cannot save token to Local Storage ' + '(private browsing enabled?), ignoring...', e); // Safari when in private browsing doesn't allow it } diff --git a/test/functional/default-tokens.js b/test/functional/default-tokens.js deleted file mode 100644 index 98803a8d..00000000 --- a/test/functional/default-tokens.js +++ /dev/null @@ -1,101 +0,0 @@ -// Yes, all keys here are supposed to be exposed, you can commit -// them safely to GitHub. - -const rsaPrivateKey = -`-----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw -33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW -+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB -AoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS -3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp -uGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE -2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0 -GAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K -Su5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY -6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5 -fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523 -Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP -FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw== ------END RSA PRIVATE KEY-----`; - -const rsaPublicKey = -`-----BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd -UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs -HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D -o2kQ+X5xK9cipRgEKwIDAQAB ------END PUBLIC KEY-----`; - -const ecPrivateKey = -`-----BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2 -OF/2NxApJCzGCEDdfSp6VQO30hyhRANCAAQRWz+jn65BtOMvdyHKcvjBeBSDZH2r -1RTwjmYSi9R/zpBnuQ4EiMnCqfMPWiZqB4QdbAd0E7oH50VpuZ1P087G ------END PRIVATE KEY-----`; - -const ecPublicKey = -`-----BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVs/o5+uQbTjL3chynL4wXgUg2R9 -q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== ------END PUBLIC KEY-----`; - -module.exports = { - hs256: { - token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c', - secret: 'your-256-bit-secret' - }, - hs384: { - token: 'eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.bQTnz6AuMJvmXXQsVPrxeQNvzDkimo7VNXxHeSBfClLufmCVZRUuyTwJF311JHuh', - secret: 'your-384-bit-secret' - }, - hs512: { - token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.VFb0qJ1LRg_4ujbZoRMXnVkUgiuKq5KxWqNdbKq_G9Vvz-S1zZa9LPxtHWKa64zDl2ofkT8F6jBt_K4riU-fPg', - secret: 'your-512-bit-secret' - }, - rs256: { - token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.TCYt5XsITJX1CxPCT8yAV-TVkIEq_PbChOMqsLfRoPsnsgw5WEuts01mq-pQy7UJiN5mgRxD-WUcX16dUEMGlv50aqzpqh4Qktb3rk-BuQy72IFLOqV0G_zS245-kronKb78cPN25DGlcTwLtjPAYuNzVBAh4vGHSrQyHUdBBPM', - privateKey: rsaPrivateKey, - publicKey: rsaPublicKey - }, - rs384: { - token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.CN9hqUMdVb5LGo06Geb8ap1qYfbJ4rEZIMqTE9gxA2m6GGmsXkznRxzoFpAzQUey9q5HehRTk_-TxYydN3QtFPfrTbAHep7PLhp3XhdvTJ1ok__UBjv4aP6UWTF-Rflr3qeC18LdlM4nyKL7ZwSGDzytWihGod5vn4GAXErUUE4', - privateKey: rsaPrivateKey, - publicKey: rsaPublicKey - }, - rs512: { - token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.MejLezWY6hjGgbIXkq6Qbvx_-q5vWaTR6qPiNHphvla-XaZD3up1DN6Ib5AEOVtuB3fC9l-0L36noK4qQA79lhpSK3gozXO6XPIcCp4C8MU_ACzGtYe7IwGnnK3Emr6IHQE0bpGinHX1Ak1pAuwJNawaQ6Nvmz2ozZPsyxmiwoo', - privateKey: rsaPrivateKey, - publicKey: rsaPublicKey - }, - es256: { - token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA', - privateKey: ecPrivateKey, - publicKey: ecPublicKey - }, - es384: { - token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.bmnmBALgkWpJ_wRTj6gJpmEpq6SzvYlgViuNTTHxJYSLseeRyjkIAXlJHT1s1ygi3UCzh4jfIymjHOlqVFIk1A', - privateKey: ecPrivateKey, - publicKey: ecPublicKey - }, - /*es512: { - token: '', - privateKey: ecPrivateKey, - publicKey: ecPublicKey - },*/ - ps256: { - token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.P9_X1ctIxnnoUpKSWpYw3rF62e-d8LXe3sETuLn4Lhigw5OQhi-mBBKoBMneHy4kimS84zxnMby0FYo9wKM3I3pEg8Qrz0Q00tNhKCwOnZ7Q-e86sW1luK1z82tufF-sZ9_BY_LGQsym0lQmQaHFzLmEDXnOzWsjUThHGVJTI64', - privateKey: rsaPrivateKey, - publicKey: rsaPublicKey - }, - ps384: { - token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.oywIg-I6w59yw9jiPxewn5n2BhrD7hSifWSmzFKGBMPEMd0qweVNjlyxu2TodunPzlh49OW8QA0ygNRL9VQrWA3GXzb5FubNF4s7Y15QePx52anlvebzihx5-hR0UhKbVC0UODwYNMiY-v0L7iMbT9UvuSj0GAuZMxndo2Y2VFQ', - privateKey: rsaPrivateKey, - publicKey: rsaPublicKey - }, - /*ps512: { - token: '', - privateKey: rsaPrivateKey, - publicKey: rsaPublicKey - }*/ -}; - diff --git a/test/functional/editor.js b/test/functional/editor.js index 019a4535..2ba69b22 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -3,13 +3,14 @@ const chaiAsPromised = require('chai-as-promised'); const chaiArrays = require('chai-arrays'); const express = require('express'); -const jsrsasign = require('jsrsasign'); +const jose = require('node-jose'); const _ = require('lodash'); const utils = require('./utils.js'); const tokens = require('./tokens.js'); -const defaultTokens = require('./default-tokens.js'); +const defaultTokens = + require('esm')(module)('../../src/editor/default-tokens.js').default; const jwks = require('./jwks.json'); const isVisible = utils.isVisible; @@ -19,6 +20,7 @@ chai.use(chaiArrays); const expect = chai.expect; const typingDelay = 0; +const tokenProcessingWait = 200; describe('Editor', function() { before(utils.launchBrowser); @@ -29,7 +31,7 @@ describe('Editor', function() { await this.page.click('a[href="#debugger-io"]'); // Wait for scroll await this.page.waitFor(3000); - expect(await this.page.$eval('#debugger-io', isVisible)).to.be.true; + expect(await this.page.$eval('#debugger-io', isVisible)).to.be.true; }); it('HS256 should be selected by default', async function() { @@ -40,7 +42,7 @@ describe('Editor', function() { expect(selected).to.equal('HS256'); }); - it('Default selected token should say something ' + + it('Default selected token should say something ' + 'about secret length', async function() { const secret = this.page.$eval('input[name="secret"]', secretInput => secretInput.value); @@ -50,37 +52,37 @@ describe('Editor', function() { it('Should select default tokens when no changes have ' + 'been made', async function() { try { - await this.page.select('#algorithm-select', 'HS256'); + await this.page.select('#algorithm-select', 'HS256'); const algs = await this.page.$eval('#algorithm-select', select => { return Array.prototype.map.call(select.options, opt => opt.value); }); - for(const alg of algs) { + for(const alg of algs) { await this.page.select('#algorithm-select', alg); const token = await this.page.evaluate(() => { return window.test.tokenEditor.getValue(); }); expect(defaultTokens[alg.toLowerCase()].token).to.equal(token); - } + } } finally { await this.page.select('#algorithm-select', 'HS256'); } }); it('Should display a tooltip for a claim', async function() { - await this.page.select('#algorithm-select', 'HS384'); + await this.page.select('#algorithm-select', 'HS384'); await this.page.mouse.move(0, 0); function tippyVisible(element) { return element._tippy.state.visible; } - + expect(await this.page.$eval('[data-tippy]', tippyVisible)). to.be.false; - + const iatPos = await this.page.evaluate(() => { return window.test.payloadEditor.charCoords({ line: 4, @@ -99,15 +101,15 @@ describe('Editor', function() { it('Displays a valid token by default', async function() { const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); expect(valid).to.be.true; }); - it('Shows invalid token when a valid token is edited ' + - 'in the left pane', async function() { + it('Shows invalid token when a valid token is edited ' + + 'in the left pane', async function() { await this.page.evaluate(() => { let token = window.test.tokenEditor.getValue(); token += 'asdf23'; @@ -115,7 +117,7 @@ describe('Editor', function() { }); const invalid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('invalid-token') && + return status.classList.contains('invalid-token') && status.textContent.indexOf('invalid') !== -1; }); @@ -137,18 +139,21 @@ describe('Editor', function() { typ: 'JWT', test: 'test' }; - await this.page.keyboard.type(JSON.stringify(header, null, 2), { - delay: typingDelay + await this.page.keyboard.type(JSON.stringify(header, null, 2), { + delay: typingDelay }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const newToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue() + return window.test.tokenEditor.getValue(); }); expect(newToken).to.not.equal(oldToken); const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); @@ -172,10 +177,13 @@ describe('Editor', function() { "iat": 1516239022, "test": "test" }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: typingDelay + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const newToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue() }); @@ -183,7 +191,7 @@ describe('Editor', function() { expect(newToken).to.not.equal(oldToken); const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); @@ -191,7 +199,7 @@ describe('Editor', function() { }); it('Selects algorithm when header is edited', async function() { - const selectedBefore = + const selectedBefore = await this.page.$eval('#algorithm-select', select => { return select.options[select.selectedIndex].value; }); @@ -205,11 +213,11 @@ describe('Editor', function() { alg: 'HS384', typ: 'JWT', }; - await this.page.keyboard.type(JSON.stringify(header, null, 2), { - delay: typingDelay + await this.page.keyboard.type(JSON.stringify(header, null, 2), { + delay: typingDelay }); - const selectedAfter = + const selectedAfter = await this.page.$eval('#algorithm-select', select => { return select.options[select.selectedIndex].value; }); @@ -217,15 +225,18 @@ describe('Editor', function() { expect(selectedBefore).to.not.equal(selectedAfter); expect(selectedAfter).to.equal('HS384'); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); expect(valid).to.be.true; }); - it('Should never revert to a default token after a non-default token ' + + it('Should never revert to a default token after a non-default token ' + 'is generated', async function() { await this.page.select('#algorithm-select', 'HS256'); @@ -235,10 +246,10 @@ describe('Editor', function() { await this.page.keyboard.up('ControlLeft'); const payload = { - sub: 'test' + sub: 'test' }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: typingDelay + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay }); const algs = await this.page.$eval('#algorithm-select', select => { @@ -249,6 +260,9 @@ describe('Editor', function() { await this.page.select('#algorithm-select', alg); } + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const payloadInEditor = await this.page.evaluate(() => { return JSON.parse(window.test.payloadEditor.getValue()); }); @@ -260,48 +274,57 @@ describe('Editor', function() { before(async function() { await this.page.select('#algorithm-select', 'HS256'); }); - + it('Updates the token when the secret changes', async function() { const oldToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue() }); - + const secretInput = await this.page.$('input[name="secret"]'); - + await secretInput.type('asdfasdf'); - + + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const newToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue() }); - + expect(oldToken).to.not.equal(newToken); }); - + it('Updates the token when the Base64 checkbox changes', async function() { const oldToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue() }); - + await this.page.click('#is-base64-encoded'); - + + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + let newToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue() }); - + expect(oldToken).to.not.equal(newToken); - + await this.page.click('#is-base64-encoded'); - + + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + newToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue() }); - + expect(oldToken).to.equal(newToken); }); - describe('HS256/384/512', function() { + describe('HS256/384/512', function() { const algs = Object.keys(tokens).filter(alg => alg.includes('hs')); - + for(const alg of algs) { it(`Decodes ${alg.toUpperCase()} tokens`, async function() { const secretInput = await this.page.$('input[name="secret"]'); @@ -309,23 +332,26 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await secretInput.type(tokens[alg].secret, { - delay: typingDelay + await secretInput.type(tokens[alg].secret, { + delay: typingDelay }); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(tokens[alg].token, { - delay: typingDelay + await this.page.keyboard.type(tokens[alg].token, { + delay: typingDelay }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); - + expect(valid).to.be.true; const payload = await this.page.evaluate(() => { @@ -352,7 +378,7 @@ describe('Editor', function() { // Wait for animations await this.page.waitFor(500); - let tooltipVisible = + let tooltipVisible = await this.page.$eval('input[name="secret"]', input => { return input._tippy.state.visible; }); @@ -371,7 +397,7 @@ describe('Editor', function() { // Wait for animations await this.page.waitFor(500); - tooltipVisible = + tooltipVisible = await this.page.$eval('input[name="secret"]', input => { return input._tippy.state.visible; }); @@ -379,9 +405,9 @@ describe('Editor', function() { expect(tooltipVisible).to.be.false; }); } - }); + }); - it('Signs tokens with an empty secret', async function() { + it('Signs tokens with an empty secret', async function() { const secretInput = await this.page.$('input[name="secret"]'); await secretInput.click(); await this.page.keyboard.down('ControlLeft'); @@ -389,11 +415,14 @@ describe('Editor', function() { await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.press('Delete'); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); - + expect(valid).to.be.true; }); }); @@ -402,7 +431,7 @@ describe('Editor', function() { describe('Decodes RS/ES/PS tokens', function() { const algs = Object.keys(defaultTokens) .filter(alg => !alg.includes('hs')); - + for(const alg of algs) { it(alg.toUpperCase(), async function() { this.timeout(20000); @@ -411,8 +440,8 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(tokens[alg].token, { - delay: typingDelay + await this.page.keyboard.type(tokens[alg].token, { + delay: typingDelay }); const secretInput = await this.page.$('textarea[name="public-key"]'); @@ -420,15 +449,18 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await secretInput.type(tokens[alg].publicKey, { - delay: typingDelay - }); + await secretInput.type(tokens[alg].publicKey, { + delay: typingDelay + }); + + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); - + expect(valid).to.be.true; const payload = await this.page.evaluate(() => { @@ -440,7 +472,7 @@ describe('Editor', function() { } }); - describe('Encodes RS/ES/PS tokens', function() { + describe('Encodes RS/ES/PS tokens', function() { describe('RS/PS', async function() { before(async function() { this.timeout(30000); @@ -451,20 +483,20 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(defaultTokens['rs256'].publicKey, { - delay: typingDelay + await this.page.keyboard.type(defaultTokens['rs256'].publicKey, { + delay: typingDelay }); await this.page.click('textarea[name="private-key"]'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(defaultTokens['rs256'].privateKey, { - delay: typingDelay + await this.page.keyboard.type(defaultTokens['rs256'].privateKey, { + delay: typingDelay }); }); - const algs = + const algs = Object.keys(defaultTokens) .filter(alg => alg.includes('rs') || alg.includes('ps')); @@ -489,8 +521,8 @@ describe('Editor', function() { await this.page.keyboard.type(JSON.stringify({ alg: alg.toUpperCase(), typ: 'JWT' - }, null, 2), { - delay: typingDelay + }, null, 2), { + delay: typingDelay }); await this.page.click('.js-payload'); @@ -499,23 +531,26 @@ describe('Editor', function() { await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(JSON.stringify({ sub: 'test' - }, null, 2), { - delay: typingDelay + }, null, 2), { + delay: typingDelay }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const newToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue(); }); - + expect(newToken).to.not.be.empty; expect(newToken).to.not.equal(oldToken); - const valid = await this.page.$eval('.validation-status', + const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); - + expect(valid).to.be.true; }); } @@ -531,16 +566,16 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(defaultTokens['es256'].publicKey, { - delay: typingDelay + await this.page.keyboard.type(defaultTokens['es256'].publicKey, { + delay: typingDelay }); await this.page.click('textarea[name="private-key"]'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(defaultTokens['es256'].privateKey, { - delay: typingDelay + await this.page.keyboard.type(defaultTokens['es256'].privateKey, { + delay: typingDelay }); }); @@ -568,8 +603,8 @@ describe('Editor', function() { await this.page.keyboard.type(JSON.stringify({ alg: alg.toUpperCase(), typ: 'JWT' - }, null, 2), { - delay: typingDelay + }, null, 2), { + delay: typingDelay }); await this.page.click('.js-payload'); @@ -578,23 +613,26 @@ describe('Editor', function() { await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.type(JSON.stringify({ sub: 'test' - }, null, 2), { - delay: typingDelay + }, null, 2), { + delay: typingDelay }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const newToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue(); }); - + expect(newToken).to.not.be.empty; expect(newToken).to.not.equal(oldToken); - const valid = await this.page.$eval('.validation-status', + const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); - + expect(valid).to.be.true; }); } @@ -631,109 +669,127 @@ describe('Editor', function() { it('iss URL + .well-known', async function() { this.timeout(20000); - const token = jsrsasign.jws.JWS.sign(null, JSON.stringify({ - alg: 'RS256', - typ: 'JWT', - kid: '1' - }), JSON.stringify({ + const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); + const token = await jose.JWS.createSign({ + fields: { + alg: 'RS256', + typ: 'JWT', + kid: '1' + }, + format: 'compact' + }, { + key: key + }).update(JSON.stringify({ sub: 'test', iss: 'http://localhost:3000/' - }), defaultTokens.rs256.privateKey); + }), 'utf8').final(); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(token, { - delay: typingDelay + await this.page.keyboard.type(token, { + delay: typingDelay }); await this.page.waitFor(2000); - const publicKey = await this.page.$eval('textarea[name="public-key"]', + const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); expect(publicKey).to.include(jwks.keys[0].x5c[0]); const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); - + expect(valid).to.be.true; }); it('jku', async function() { this.timeout(20000); - const token = jsrsasign.jws.JWS.sign(null, JSON.stringify({ - alg: 'RS256', - typ: 'JWT', - kid: '1', - jku: 'http://localhost:3000/.well-known/jwks.json' - }), JSON.stringify({ + const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); + const token = await jose.JWS.createSign({ + fields: { + alg: 'RS256', + typ: 'JWT', + kid: '1', + jku: 'http://localhost:3000/.well-known/jwks.json' + }, + format: 'compact' + }, { + key: key + }).update(JSON.stringify({ sub: 'test' - }), defaultTokens.rs256.privateKey); + }), 'utf8').final(); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(token, { - delay: typingDelay + await this.page.keyboard.type(token, { + delay: typingDelay }); await this.page.waitFor(2000); - const publicKey = await this.page.$eval('textarea[name="public-key"]', + const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); expect(publicKey).to.include(jwks.keys[0].x5c[0]); const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); - + expect(valid).to.be.true; }); it('x5c', async function() { this.timeout(35000); - const token = jsrsasign.jws.JWS.sign(null, JSON.stringify({ - alg: 'RS256', - typ: 'JWT', - x5c: jwks.keys[0].x5c[0] - }), JSON.stringify({ - sub: 'test' - }), defaultTokens.rs256.privateKey); + const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); + const token = await jose.JWS.createSign({ + fields: { + alg: 'RS256', + typ: 'JWT', + x5c: jwks.keys[0].x5c[0] + }, + format: 'compact' + }, { + key: key + }).update(JSON.stringify({ + sub: 'test', + }), 'utf8').final(); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(token, { - delay: typingDelay + await this.page.keyboard.type(token, { + delay: typingDelay }); await this.page.waitFor(2000); - const publicKey = await this.page.$eval('textarea[name="public-key"]', + const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); expect(publicKey).to.include(jwks.keys[0].x5c[0]); const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); - + expect(valid).to.be.true; }); - }); + }); - it('Clears the token when the header is edited and there ' + + it('Clears the token when the header is edited and there ' + 'is no private key', async function() { await this.page.select('#algorithm-select', 'RS256'); @@ -754,10 +810,13 @@ describe('Editor', function() { typ: 'JWT', test: 'test' }; - await this.page.keyboard.type(JSON.stringify(header, null, 2), { - delay: typingDelay + await this.page.keyboard.type(JSON.stringify(header, null, 2), { + delay: typingDelay }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const token = await this.page.evaluate(() => { return window.test.tokenEditor.getValue(); }); @@ -765,7 +824,7 @@ describe('Editor', function() { expect(token).to.be.empty; }); - it('Clears the token when the payload is edited and there ' + + it('Clears the token when the payload is edited and there ' + 'is no private key', async function() { await this.page.select('#algorithm-select', 'RS256'); @@ -784,10 +843,13 @@ describe('Editor', function() { const payload = { sub: 'test' }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: typingDelay + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const token = await this.page.evaluate(() => { return window.test.tokenEditor.getValue(); }); @@ -804,8 +866,8 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(tokens['rs256'].token, { - delay: typingDelay + await this.page.keyboard.type(tokens['rs256'].token, { + delay: typingDelay }); const secretInput = await this.page.$('textarea[name="public-key"]'); @@ -813,15 +875,18 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await secretInput.type(tokens['rs256'].publicKey, { - delay: typingDelay + await secretInput.type(tokens['rs256'].publicKey, { + delay: typingDelay }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); - + expect(valid).to.be.true; await secretInput.click(); @@ -830,25 +895,28 @@ describe('Editor', function() { await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.press('Delete'); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const invalid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('invalid-token') && + return status.classList.contains('invalid-token') && status.textContent.indexOf('invalid') !== -1; }); - + expect(invalid).to.be.true; }); it('Marks token as invalid when the public key is wrong', async function() { this.timeout(20000); - + await this.page.select('#algorithm-select', 'RS256'); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(tokens['rs256'].token, { - delay: typingDelay + await this.page.keyboard.type(tokens['rs256'].token, { + delay: typingDelay }); const secretInput = await this.page.$('textarea[name="public-key"]'); @@ -856,15 +924,18 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await secretInput.type(tokens['rs256'].publicKey, { - delay: typingDelay + await secretInput.type(tokens['rs256'].publicKey, { + delay: typingDelay }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); - + expect(valid).to.be.true; await secretInput.click(); @@ -872,102 +943,105 @@ describe('Editor', function() { delay: typingDelay }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const invalid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('invalid-token') && + return status.classList.contains('invalid-token') && status.textContent.indexOf('invalid') !== -1; }); - + expect(invalid).to.be.true; }); - it('Marks token as valid when the public key is OK and private ' + + it('Marks token as valid when the public key is OK and private ' + 'key is wrong', async function() { this.timeout(30000); - await this.page.select('#algorithm-select', 'RS256'); + await this.page.select('#algorithm-select', 'RS256'); const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await secretInput.type(defaultTokens['rs256'].publicKey, { - delay: typingDelay + await secretInput.type(defaultTokens['rs256'].publicKey, { + delay: typingDelay }); const privateKeyInput = await this.page.$('textarea[name="private-key"]'); await privateKeyInput.click(); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.up('ControlLeft'); const head = defaultTokens['rs256'].privateKey.slice(0, 20); const tail = defaultTokens['rs256'].privateKey.slice(20); - await privateKeyInput.type(`${head}sadfasdf${tail}`, { - delay: typingDelay + await privateKeyInput.type(`${head}sadfasdf${tail}`, { + delay: typingDelay }); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(defaultTokens['rs256'].token, { - delay: typingDelay + await this.page.keyboard.type(defaultTokens['rs256'].token, { + delay: typingDelay }); await this.page.waitFor(1000); const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); - + expect(valid).to.be.true; }); - it('Marks token as valid when the public key is OK and private ' + + it('Marks token as valid when the public key is OK and private ' + 'key is missing', async function() { this.timeout(30000); - await this.page.select('#algorithm-select', 'RS256'); + await this.page.select('#algorithm-select', 'RS256'); const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await secretInput.type(tokens['rs256'].publicKey, { - delay: typingDelay + await secretInput.type(tokens['rs256'].publicKey, { + delay: typingDelay }); const privateKeyInput = await this.page.$('textarea[name="private-key"]'); await privateKeyInput.click(); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await this.page.keyboard.up('ControlLeft'); await this.page.keyboard.press('Delete'); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(tokens['rs256'].token, { - delay: typingDelay + await this.page.keyboard.type(tokens['rs256'].token, { + delay: typingDelay }); await this.page.waitFor(1000); const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); - + expect(valid).to.be.true; }); }); - it('Updates the header when the token algorithm ' + + it('Updates the header when the token algorithm ' + 'is changed', async function() { await this.page.select('#algorithm-select', 'HS256'); @@ -975,8 +1049,8 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(tokens.hs256.token, { - delay: typingDelay + await this.page.keyboard.type(tokens.hs256.token, { + delay: typingDelay }); await this.page.select('#algorithm-select', 'HS384'); @@ -995,12 +1069,15 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(tokens.none.token, { - delay: typingDelay + await this.page.keyboard.type(tokens.none.token, { + delay: typingDelay }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const invalid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('invalid-token') && + return status.classList.contains('invalid-token') && status.textContent.indexOf('invalid') !== -1; }); @@ -1015,8 +1092,8 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await secretInput.type('secret-test', { - delay: typingDelay + await secretInput.type('secret-test', { + delay: typingDelay }); await this.page.click('.js-payload'); @@ -1025,10 +1102,10 @@ describe('Editor', function() { await this.page.keyboard.up('ControlLeft'); const payload = { - sub: 'test' + sub: 'test' }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: typingDelay + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay }); await this.page.reload(); @@ -1049,8 +1126,8 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await secretInput.type('secret-test', { - delay: typingDelay + await secretInput.type('secret-test', { + delay: typingDelay }); await this.page.click('.js-payload'); @@ -1059,29 +1136,29 @@ describe('Editor', function() { await this.page.keyboard.up('ControlLeft'); const payload = { - sub: 'test' + sub: 'test' }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: typingDelay + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay }); const shareJwtButton = await this.page.$('.website-share button'); await shareJwtButton.click(); - const srcToken = await this.page.evaluate(() => + const srcToken = await this.page.evaluate(() => window.test.tokenEditor.getValue()); // We cannot read the clipboard in headless Chrome, so we have a special // harness in the code that stores this value. See: // https://github.com/GoogleChrome/puppeteer/issues/2147 - const copiedUrl = await this.page.evaluate(() => + const copiedUrl = await this.page.evaluate(() => window.test.shareJwtCopiedUrl); const newPage = await this.browser.newPage(); await newPage.goto( copiedUrl.replace('https://jwt.io/', 'http://localhost:8000/')); - const destToken = await newPage.evaluate(() => + const destToken = await newPage.evaluate(() => window.test.tokenEditor.getValue()); const destSecret = await newPage.$eval('input[name="secret"]', input => input.value); @@ -1094,14 +1171,14 @@ describe('Editor', function() { async function() { this.timeout(30000); - await this.page.select('#algorithm-select', 'RS256'); + await this.page.select('#algorithm-select', 'RS256'); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await this.page.keyboard.type(defaultTokens['rs256'].token, { - delay: typingDelay + await this.page.keyboard.type(defaultTokens['rs256'].token, { + delay: typingDelay }); const pubKeyInput = await this.page.$('textarea[name="public-key"]'); @@ -1109,18 +1186,18 @@ describe('Editor', function() { await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); await this.page.keyboard.up('ControlLeft'); - await pubKeyInput.type(defaultTokens['rs256'].publicKey, { - delay: typingDelay + await pubKeyInput.type(defaultTokens['rs256'].publicKey, { + delay: typingDelay }); - const privateKeyInput = + const privateKeyInput = await this.page.$('textarea[name="private-key"]'); await privateKeyInput.click(); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); - await privateKeyInput.type(defaultTokens['rs256'].privateKey, { - delay: typingDelay + await this.page.keyboard.up('ControlLeft'); + await privateKeyInput.type(defaultTokens['rs256'].privateKey, { + delay: typingDelay }); await this.page.click('.js-payload'); @@ -1129,29 +1206,29 @@ describe('Editor', function() { await this.page.keyboard.up('ControlLeft'); const payload = { - sub: 'test' + sub: 'test' }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: typingDelay + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay }); const shareJwtButton = await this.page.$('.website-share button'); await shareJwtButton.click(); - const srcToken = await this.page.evaluate(() => + const srcToken = await this.page.evaluate(() => window.test.tokenEditor.getValue()); // We cannot read the clipboard in headless Chrome, so we have a // special harness in the code that stores this value. See: // https://github.com/GoogleChrome/puppeteer/issues/2147 - const copiedUrl = await this.page.evaluate(() => + const copiedUrl = await this.page.evaluate(() => window.test.shareJwtCopiedUrl); const newPage = await this.browser.newPage(); await newPage.goto( copiedUrl.replace('https://jwt.io/', 'http://localhost:8000/')); - const destToken = await newPage.evaluate(() => + const destToken = await newPage.evaluate(() => window.test.tokenEditor.getValue()); const destPubKey = await newPage.$eval('textarea[name="public-key"]', input => input.value); @@ -1161,10 +1238,10 @@ describe('Editor', function() { } ); }); - + describe('Parses tokens from window.location.href', () => { const token = defaultTokens.hs384.token; - + ['token', 'value', 'id_token', 'access_token'].forEach((key) => { [ @@ -1177,7 +1254,7 @@ describe('Editor', function() { it(`Should parse ${key} from window.location.href [${i}]`, async function () { - const page = await this.browser.newPage(); + const page = await this.browser.newPage(); await page.goto(`http://localhost:8000${searchStr}`); @@ -1187,7 +1264,7 @@ describe('Editor', function() { await page.close(); }); - }); + }); }); @@ -1200,7 +1277,7 @@ describe('Editor', function() { expect(await page.evaluate(() => { return window.test.tokenEditor.getValue(); - })).to.equal(token); + })).to.equal(token); await page.close(); }); diff --git a/test/functional/tokens.js b/test/functional/tokens.js index 80873570..56ea8df9 100644 --- a/test/functional/tokens.js +++ b/test/functional/tokens.js @@ -6,12 +6,27 @@ HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D o2kQ+X5xK9cipRgEKwIDAQAB -----END PUBLIC KEY-----`; -const esPublicKey = +const ecPublicKey256 = `-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVs/o5+uQbTjL3chynL4wXgUg2R9 q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== -----END PUBLIC KEY-----`; +const ecPublicKey384 = +`-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEC1uWSXj2czCDwMTLWV5BFmwxdM6PX9p+ +Pk9Yf9rIf374m5XP1U8q79dBhLSIuaojsvOT39UUcPJROSD1FqYLued0rXiooIii +1D3jaW6pmGVJFhodzC31cy5sfOYotrzF +-----END PUBLIC KEY-----`; + +const ecPublicKey521 = +`-----BEGIN PUBLIC KEY----- +MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBgc4HZz+/fBbC7lmEww0AO3NK9wVZ +PDZ0VEnsaUFLEYpTzb90nITtJUcPUbvOsdZIZ1Q8fnbquAYgxXL5UgHMoywAib47 +6MkyyYgPk0BXZq3mq4zImTRNuaU9slj9TVJ3ScT3L1bXwVuPJDzpr5GOFpaj+WwM +Al8G7CqwoJOsW7Kddns= +-----END PUBLIC KEY-----`; + module.exports = { none: { token: 'eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.' @@ -42,11 +57,15 @@ module.exports = { }, es256: { token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImVzMjU2dGVzdCJ9.Ir41cyW-pc_pM2L0_cl0spnr8Y3GRUYKm7LfLhScI8SaPLfaQn9B7uES8OkYxu1YfudkYfgoFV_Bh1Qvu8lf7g', - publicKey: esPublicKey + publicKey: ecPublicKey256 }, es384: { - token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImVzMzg0dGVzdCJ9.xy86p6ogINec1cucUmjEUIPtN2-kkg22lbVqGlLqYY4RRI5AVHv-UndXAfe6wBxpggV1GFH5gyacOs1TWs1uhQ', - publicKey: esPublicKey + token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6ImlUcVhYSTB6YkFuSkNLRGFvYmZoa00xZi02ck1TcFRmeVpNUnBfMnRLSTgifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImVzMzg0dGVzdCJ9.YXzDoj68bFiJ-1gIOrqgSJUvyzh0y61uf6mqp4rWuhekhB1Ck1utbZ20Fg0fqokguEWG-9mj_iyEbiVDD9upf9SLU7M3_9PidGQ4YxbiMhXe3Q2iJyIcMHOqteqqobrt', + publicKey: ecPublicKey384 + }, + es512: { + token: 'eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCIsImtpZCI6InhaRGZacHJ5NFA5dlpQWnlHMmZOQlJqLTdMejVvbVZkbTd0SG9DZ1NOZlkifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImVzNTEydGVzdCJ9.AF3NvldM10bAnAYvoy337HgVLAyJealQRYLCYD1FxayivcNinURScqM49bhUWKUg6svLxi03ENhpcsErqJt2x6QnAOkkepMOPU52r1mVYNz_kB0gxY8Xvl8_0d9CYn84NmNL11NrvZlzm03vL2oFZnWZx1L_4st7bm4jsDglnzkapkdh', + publicKey: ecPublicKey521 }, ps256: { token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzMjU2dGVzdCJ9.jVQfrR2D8k3I5FsIBDW2zn1OINhemVA7T1izMSlYb-7MNlw4DrlcifJ0ilQwXHNw1rZI00OkGjeoJBNpArhEROCY8odXLosjvetRvfp0QPyH0mL5IehWcSsSAhJU0jL8FNQ44HBAUnTQ41llG6p1q7w7qIVcHnFmyqaXcFCP5B8', diff --git a/test/functional/utils.js b/test/functional/utils.js index be499fef..53af74aa 100644 --- a/test/functional/utils.js +++ b/test/functional/utils.js @@ -5,10 +5,10 @@ const os = require('os'); function isVisible(elm) { try { const rect = elm.getBoundingClientRect(); - const viewHeight = Math.max(document.documentElement.clientHeight, + const viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight); - return !(rect.bottom < 0 || rect.top - viewHeight >= 0) && - rect.width > 0 && + return !(rect.bottom < 0 || rect.top - viewHeight >= 0) && + rect.width > 0 && rect.height > 0; } catch(e) { return false; @@ -19,7 +19,7 @@ async function launchBrowser() { // Initial navigation may take long due to outside requests. this.timeout(30000); - const options = os.hostname() === 'i7-4790K-LIN' ? { + const options = os.hostname() === 'i7-4790K-LIN' ? { //headless: false, executablePath: '/usr/bin/chromium' } : { diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index 54e39f4c..8df7756c 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -1,12 +1,14 @@ import * as jwt from '../../../src/editor/jwt.js'; import tokens from '../../../src/editor/default-tokens.js'; -import { utf8tob64, utf8tob64u, b64utob64 } from 'jsrsasign'; +import b64u from 'base64url'; import log from 'loglevel'; -import { should } from 'chai'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; import { randomFillSync } from 'crypto'; -should(); +chai.use(chaiAsPromised); +chai.should(); const publicKeyPlainRSA = `-----BEGIN RSA PUBLIC KEY----- @@ -20,7 +22,7 @@ describe('JWT', function() { jwt.isToken('skdjf9238ujdhkf.asdfasdf2.sdsdffsfsd').should.be.false; jwt.isToken('skdjf9238ujdhkf.asdfasdf2').should.be.false; jwt.isToken('skdjf9238ujdhkfdfsai28#390}{+śdf').should.be.false; - + jwt.isToken(tokens.hs256.token).should.be.true; jwt.isToken(tokens.rs256.token).should.be.true; }); @@ -35,72 +37,64 @@ describe('JWT', function() { }); it('considers Base64 (not URL) encoded tokens invalid', function() { - const token = b64utob64(tokens.hs256.token); + const token = b64u.toBase64(tokens.hs256.token); jwt.isToken(token).should.be.false; - jwt.verify(token, tokens.hs256.secret).should.be.false; + return jwt.verify(token, tokens.hs256.secret).should.eventually.be.false; }); - it('verifies valid tokens', function() { - jwt.verify(tokens.hs256.token, tokens.hs256.secret).should.be.true; - jwt.verify(tokens.hs384.token, tokens.hs384.secret).should.be.true; - jwt.verify(tokens.hs512.token, tokens.hs512.secret).should.be.true; - - jwt.verify(tokens.rs256.token, tokens.rs256.publicKey).should.be.true; - jwt.verify(tokens.rs384.token, tokens.rs384.publicKey).should.be.true; - jwt.verify(tokens.rs512.token, tokens.rs512.publicKey).should.be.true; - - jwt.verify(tokens.es256.token, tokens.es256.publicKey).should.be.true; - jwt.verify(tokens.es384.token, tokens.es384.publicKey).should.be.true; - - jwt.verify(tokens.ps256.token, tokens.ps256.publicKey).should.be.true; - jwt.verify(tokens.ps384.token, tokens.ps384.publicKey).should.be.true; + describe('verifies valid tokens', function() { + Object.keys(tokens).forEach(alg => { + it(alg.toUpperCase(), function() { + if(alg.indexOf('hs') !== -1) { + return jwt.verify(tokens[alg].token, tokens[alg].secret) + .should.eventually.be.true; + } else { + return jwt.verify(tokens[alg].token, tokens[alg].publicKey) + .should.eventually.be.true; + } + }); + }); }); it('fails to verify invalid tokens ' + '(logging temporarily disabled to hide exceptions)', function() { log.disableAll(); - try { - const split = tokens.hs256.token.split('.'); - const token = `${split[0]}.${split[1]}`; - const token2 = token + '.'; + const split = tokens.hs256.token.split('.'); + const token = `${split[0]}.${split[1]}`; + const token2 = token + '.'; - jwt.verify(token, tokens.hs256.secret).should.be.false; - jwt.verify(token2, tokens.hs256.secret).should.be.false; + const promises = [ + jwt.verify(token, tokens.hs256.secret), + jwt.verify(token2, tokens.hs256.secret), + jwt.verify(tokens.hs256.token, tokens.hs256.secret + 'sdfasdf'), + jwt.verify(tokens.hs256.token, 'sdfsdf' + tokens.hs256.secret), + jwt.verify(tokens.hs256.token, 'sdfsdf'), + jwt.verify(tokens.rs256.token, tokens.rs256.publicKey.replace('a','b')), + jwt.verify(tokens.es256.token, tokens.es256.publicKey.replace('a','b')), + jwt.verify(tokens.ps256.token, tokens.ps256.publicKey.replace('a','b')) + ]; + + const header = { + typ: 'JWT', + alg: 'none' + }; + const payload = { + sub: 'test' + }; - jwt.verify(tokens.hs256.token, tokens.hs256.secret + 'sdfasdf') - .should.be.false; - jwt.verify(tokens.hs256.token, 'sdfsdf' + tokens.hs256.secret) - .should.be.false; - jwt.verify(tokens.hs256.token, 'sdfsdf').should.be.false; + const token3 = `${b64u.encode(JSON.stringify(header))}.` + + `${b64u.encode(JSON.stringify(payload))}`; - jwt.verify(tokens.rs256.token, tokens.rs256.publicKey.replace('a','b')) - .should.be.false; + promises.push(jwt.verify(token3, 'whatever')); + promises.push(jwt.verify(token3 + '.', 'whatever')); + promises.push(jwt.verify(token3 + '.' + split[2], 'whatever')); - jwt.verify(tokens.es256.token, tokens.es256.publicKey.replace('a','b')) - .should.be.false; - - jwt.verify(tokens.ps256.token, tokens.ps256.publicKey.replace('a','b')) - .should.be.false; - - const header = { - typ: 'JWT', - alg: 'none' - }; - const payload = { - sub: 'test' - }; - - const token3 = `${utf8tob64u(JSON.stringify(header))}.` + - `${utf8tob64u(JSON.stringify(payload))}`; - - jwt.verify(token3, 'whatever').should.be.false; - jwt.verify(token3 + '.', 'whatever').should.be.false; - jwt.verify(token3 + '.' + split[2], 'whatever').should.be.false; - } finally { - log.enableAll(); - } + return Promise.all(promises.map(p => p.then(v => !v, e => true))) + .then(all => all.every(v => v)) + .finally(() => log.enableAll()) + .should.eventually.be.true; }); it('signs/verifies tokens (HS256)', function() { @@ -111,17 +105,18 @@ describe('JWT', function() { sub: 'test' }; - const token = jwt.sign(header, payload, 'secret'); - token.should.be.a('string'); + return jwt.sign(header, payload, 'secret').then(token => { + token.should.be.a('string'); + + const split = token.split('.'); + split.should.have.lengthOf(3); - const split = token.split('.'); - split.should.have.lengthOf(3); - - jwt.verify(token, 'secret').should.be.true; + const decoded = jwt.decode(token); + decoded.header.should.deep.equal(header); + decoded.payload.should.deep.equal(payload); - const decoded = jwt.decode(token); - decoded.header.should.deep.equal(header); - decoded.payload.should.deep.equal(payload); + return jwt.verify(token, 'secret').should.eventually.be.true; + }); }); it('signs/verifies tokens (RS256)', function() { @@ -132,17 +127,19 @@ describe('JWT', function() { sub: 'test' }; - const token = jwt.sign(header, payload, tokens.rs256.privateKey); - token.should.be.a('string'); + return jwt.sign(header, payload, tokens.rs256.privateKey).then(token => { + token.should.be.a('string'); + + const split = token.split('.'); + split.should.have.lengthOf(3); - const split = token.split('.'); - split.should.have.lengthOf(3); - - jwt.verify(token, tokens.rs256.publicKey).should.be.true; + const decoded = jwt.decode(token); + decoded.header.should.deep.equal(header); + decoded.payload.should.deep.equal(payload); - const decoded = jwt.decode(token); - decoded.header.should.deep.equal(header); - decoded.payload.should.deep.equal(payload); + return jwt.verify(token, tokens.rs256.publicKey) + .should.eventually.be.true; + }); }); it('signs/verifies tokens (ES256)', function() { @@ -153,17 +150,19 @@ describe('JWT', function() { sub: 'test' }; - const token = jwt.sign(header, payload, tokens.es256.privateKey); - token.should.be.a('string'); + return jwt.sign(header, payload, tokens.es256.privateKey).then(token => { + token.should.be.a('string'); - const split = token.split('.'); - split.should.have.lengthOf(3); - - jwt.verify(token, tokens.es256.publicKey).should.be.true; + const split = token.split('.'); + split.should.have.lengthOf(3); - const decoded = jwt.decode(token); - decoded.header.should.deep.equal(header); - decoded.payload.should.deep.equal(payload); + const decoded = jwt.decode(token); + decoded.header.should.deep.equal(header); + decoded.payload.should.deep.equal(payload); + + return jwt.verify(token, tokens.es256.publicKey) + .should.eventually.be.true; + }); }); it('signs/verifies tokens (PS256)', function() { @@ -174,20 +173,23 @@ describe('JWT', function() { sub: 'test' }; - const token = jwt.sign(header, payload, tokens.ps256.privateKey); - token.should.be.a('string'); + return jwt.sign(header, payload, tokens.ps256.privateKey).then(token => { + token.should.be.a('string'); + + const split = token.split('.'); + split.should.have.lengthOf(3); - const split = token.split('.'); - split.should.have.lengthOf(3); - - jwt.verify(token, tokens.ps256.publicKey).should.be.true; + const decoded = jwt.decode(token); + decoded.header.should.deep.equal(header); + decoded.payload.should.deep.equal(payload); - const decoded = jwt.decode(token); - decoded.header.should.deep.equal(header); - decoded.payload.should.deep.equal(payload); + return jwt.verify(token, tokens.ps256.publicKey) + .should.eventually.be.true; + }); }); - it('verifies tokens (RS256) using a plain RSA public key', function() { + // TODO: reenable this test after converting plain RSA keys. + /*it('verifies tokens (RS256) using a plain RSA public key', function() { const header = { alg: 'RS256' }; @@ -195,10 +197,10 @@ describe('JWT', function() { sub: 'test' }; - const token = jwt.sign(header, payload, tokens.rs256.privateKey); - - jwt.verify(token, publicKeyPlainRSA).should.be.true; - }); + return jwt.sign(header, payload, tokens.rs256.privateKey).then(token => { + return jwt.verify(token, publicKeyPlainRSA).should.eventually.be.true; + }); + });*/ describe('isValidBase64String', function() { // Generate random data of different sizes. @@ -209,8 +211,8 @@ describe('JWT', function() { bytes = String.fromCharCode.apply(null, bytes); data.push({ - b64: utf8tob64(bytes), - b64u: utf8tob64u(bytes) + b64: b64u.toBase64(b64u.encode(bytes)), + b64u: b64u.encode(bytes) }); } diff --git a/test/unit/utils.js b/test/unit/utils.js index 1d1af042..3b850c64 100644 --- a/test/unit/utils.js +++ b/test/unit/utils.js @@ -3,7 +3,6 @@ import chaiAsPromised from 'chai-as-promised'; import xhrMock from 'xhr-mock'; import { httpGet } from '../../src/utils.js'; -import { utf8tob64, utf8tob64u } from 'jsrsasign'; import { randomFillSync } from 'crypto'; @@ -18,7 +17,7 @@ describe('Generic utils', function() { beforeEach(() => xhrMock.setup()); afterEach(() => xhrMock.teardown()); - + it('fetches data with a GET request', function() { xhrMock.get(url, { status: 200, diff --git a/views/token-editor-algorithms.pug b/views/token-editor-algorithms.pug index fe406993..20ebb164 100644 --- a/views/token-editor-algorithms.pug +++ b/views/token-editor-algorithms.pug @@ -7,11 +7,9 @@ select#algorithm-select option(name='algorithm',value='RS512') RS512 option(name='algorithm',value='ES256') ES256 option(name='algorithm',value='ES384') ES384 - //- Unsupported by jsrsasign - option(name='algorithm',value='ES512') ES512 + option(name='algorithm',value='ES512') ES512 option(name='algorithm',value='PS256') PS256 option(name='algorithm',value='PS384') PS384 - //- Buggy in jsrsasign + //- Buggy in node-jose for now, supported by browsers option(name='algorithm',value='PS512') PS512 - \ No newline at end of file From 6d20adc05908d1c2dd594a904befd8f7a9f9ba07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 7 Jun 2018 01:53:36 -0300 Subject: [PATCH 220/611] Improve bundle size. --- webpack.common.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/webpack.common.js b/webpack.common.js index 25e40aa0..9903d3a7 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -20,9 +20,7 @@ module.exports = { ios: 10, ie: 11, }, - modules: 'commonjs', - "useBuiltIns": 'usage', - "debug": false + modules: false } ]] } From 6887e94e688b2606185a99af231131c841145bcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 7 Jun 2018 01:53:49 -0300 Subject: [PATCH 221/611] Handle plain RSA public keys gracefully. --- src/editor/jwt.js | 69 ++++++++++++++++++----------------------- test/unit/editor/jwt.js | 5 ++- 2 files changed, 32 insertions(+), 42 deletions(-) diff --git a/src/editor/jwt.js b/src/editor/jwt.js index d383f7cc..022e9bd8 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -1,6 +1,7 @@ import jose from 'node-jose'; import b64u from 'base64url'; import any from 'promise.any'; +import { pki } from 'node-forge'; import log from 'loglevel'; @@ -21,6 +22,31 @@ function paddedKey(key, alg, base64Secret) { return b64u.encode(buf); } +/* + * This function handles plain RSA keys not wrapped in a + * X.509 SubjectPublicKeyInfo structure. It returns a PEM encoded public key + * wrapper in that structure. + * See: https://stackoverflow.com/questions/18039401/how-can-i-transform-between-the-two-styles-of-public-key-format-one-begin-rsa + * @param {String} publicKey The public key as a PEM string. + * @returns {String} The PEM encoded public key in + * X509 SubjectPublicKeyInfo format. + */ +function plainRsaKeyToX509Key(key) { + try { + const startTag = '-----BEGIN RSA PUBLIC KEY-----'; + const endTag = '-----END RSA PUBLIC KEY-----'; + const startTagPos = key.indexOf(startTag); + const endTagPos = key.indexOf(endTag); + + return startTagPos !== -1 && endTagPos !== -1 ? + pki.publicKeyToPem(pki.publicKeyFromPem(key)) : + key; + } catch(e) { + // If anything fails, it may not be a plain RSA key, so return the same key. + return key; + } +} + function getJoseKey(header, key, base64Secret) { if(header.alg.indexOf('HS') === 0) { return jose.JWK.asKey({ @@ -30,6 +56,10 @@ function getJoseKey(header, key, base64Secret) { k: paddedKey(key, header.alg, base64Secret) }); } else { + if(header.alg.indexOf('RS') === 0) { + key = plainRsaKeyToX509Key(key); + } + return any(['pem', 'json'].map(form => { try { return jose.JWK.asKey(key, form); @@ -65,45 +95,6 @@ export function sign(header, ); } -// TODO: reenable this (and tests) -/** - * This function takes a PEM string with a public key and returns a - * jsrsasign key object (RSAKey, KJUR.crypto.DSA, KJUR.crypto.ECDSA). It also - * handles plain RSA keys not wrapped in a X.509 SubjectPublicKeyInfo - * structure. - * See: https://stackoverflow.com/questions/18039401/how-can-i-transform-between-the-two-styles-of-public-key-format-one-begin-rsa - * @param {String} publicKey The public key as a PEM string. - * @returns {Object} The public key as a jsrsasign key object. - * / -function getPublicKeyObject(publicKey) { - try { - const startTag = '-----BEGIN RSA PUBLIC KEY-----'; - const endTag = '-----END RSA PUBLIC KEY-----'; - const startTagPos = publicKey.indexOf(startTag); - const endTagPos = publicKey.indexOf(endTag); - - if(startTagPos !== -1 && endTagPos !== -1) { - const plainDataBase64 = - publicKey.substr(0, endTagPos) - .substr(startTagPos + startTag.length); - - const plainDataDER = b64tohex(plainDataBase64); - - const barePublicKey = { - n: ASN1HEX.getVbyList(plainDataDER, 0, [0], '02'), - e: ASN1HEX.getVbyList(plainDataDER, 0, [1], '02') - }; - - return KEYUTIL.getKey(barePublicKey); - } - } catch(e) { - log.error('Failed to make public key into X.509 ' + - 'SubjectPublicKeyInfo key:', e); - } - - return KEYUTIL.getKey(publicKey); -}*/ - export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { if(!isToken(jwt)) { return Promise.resolve(false); diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index 8df7756c..362f8175 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -188,8 +188,7 @@ describe('JWT', function() { }); }); - // TODO: reenable this test after converting plain RSA keys. - /*it('verifies tokens (RS256) using a plain RSA public key', function() { + it('verifies tokens (RS256) using a plain RSA public key', function() { const header = { alg: 'RS256' }; @@ -200,7 +199,7 @@ describe('JWT', function() { return jwt.sign(header, payload, tokens.rs256.privateKey).then(token => { return jwt.verify(token, publicKeyPlainRSA).should.eventually.be.true; }); - });*/ + }); describe('isValidBase64String', function() { // Generate random data of different sizes. From c671aa4e03a0229f4d51c61091247d76b1315ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 7 Jun 2018 16:41:58 -0300 Subject: [PATCH 222/611] Disable ES512 in Safari: not supported for now. --- src/dom-elements.js | 14 +++++++++----- src/editor/index.js | 8 ++++---- src/editor/utils.js | 18 ++++++++++++++---- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/dom-elements.js b/src/dom-elements.js index f8e45867..dd4fecff 100644 --- a/src/dom-elements.js +++ b/src/dom-elements.js @@ -1,6 +1,6 @@ -export const encodedTabLink = +export const encodedTabLink = document.querySelector('.tab-link a[href="#encoded-jwt"]'); -export const decodedTabLink = +export const decodedTabLink = document.querySelector('.tab-link a[href="#decoded-jwt"]'); export const encodedTabElement = document.getElementById('encoded-jwt'); export const decodedTabElement = document.getElementById('decoded-jwt'); @@ -15,17 +15,21 @@ export const signatureStatusElement = document.querySelector('.validation-status.js-signature'); export const algorithmSelect = document.getElementById('algorithm-select'); +export const algorithmEs512 = + algorithmSelect.querySelector('option[value="ES512"]'); -export const keyEditorContainer = document.querySelector('.jwt-signature pre.RS256'); +export const keyEditorContainer = + document.querySelector('.jwt-signature pre.RS256'); export const rsaShaTextSpan = document.getElementById('rsasha-text'); -export const secretEditorContainer = document.querySelector('.jwt-signature pre.HS256'); +export const secretEditorContainer = + document.querySelector('.jwt-signature pre.HS256'); export const hmacShaTextSpan = document.getElementById('hmacsha-text'); export const publicKeyTextArea = document.querySelector('.jwt-signature textarea[name="public-key"]'); export const privateKeyTextArea = document.querySelector('.jwt-signature textarea[name="private-key"]'); -export const secretInput = +export const secretInput = document.querySelector('.jwt-signature input[name="secret"]'); export const secretBase64Checkbox = document.getElementById('is-base64-encoded'); diff --git a/src/editor/index.js b/src/editor/index.js index 1e6ec966..50d8c71d 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -1,7 +1,6 @@ import { deferToNextLoop, - safeLocalStorageSetItem, - copyTokenLink + safeLocalStorageSetItem } from '../utils.js'; import { downloadPublicKeyIfPossible } from './public-key-download.js'; import { setupClaimsTooltip } from './claims-tooltip.js'; @@ -10,7 +9,8 @@ import { getTrimmedValue, stringify, fixEditorHeight, - getSelectedAlgorithm + getSelectedAlgorithm, + disableUnsupportedAlgorithms } from './utils.js'; import { sign, verify, decode } from './jwt.js'; import EventManager from './event-manager.js'; @@ -26,7 +26,6 @@ import { editorElement, headerElement, payloadElement, - decodedElement, secretInput, privateKeyTextArea, publicKeyTextArea, @@ -388,6 +387,7 @@ export function getTokenEditorValue() { } export function setupTokenEditor() { + disableUnsupportedAlgorithms(); setupEvents(); selectAlgorithm('HS256'); loadToken(); diff --git a/src/editor/utils.js b/src/editor/utils.js index f8b0a4f2..6a4a724a 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -1,8 +1,7 @@ -import { tokenEditor } from './instances.js'; import { isWideScreen } from '../utils.js'; -import { - algorithmSelect, - publicKeyTextArea, +import { + algorithmSelect, + algorithmEs512, editorElement, decodedElement } from '../dom-elements.js'; @@ -32,3 +31,14 @@ export function getSelectedAlgorithm() { const selected = algorithmSelect.options[algorithmSelect.selectedIndex]; return selected.value; } + +export function isSafari() { + return /^((?!chrome|android).)*safari/i.test(navigator.userAgent); +} + +export function disableUnsupportedAlgorithms() { + // TODO: test supported algorithms in runtime + if(isSafari) { + algorithmEs512.disabled = true; + } +} From 6f64f2680a955b0d6503dc73c8765edb96396575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 7 Jun 2018 18:41:52 -0300 Subject: [PATCH 223/611] Set version 3.0.0 (website and extension). --- manifest.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 9824c430..51bdb3c7 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "JWT Debugger", "description": "The JWT.io debugger as a Web Extension", - "version": "2.1.3", + "version": "3.0.0", "browser_action": { "default_icon": "img/favicon/favicon-96x96.png", @@ -37,7 +37,7 @@ } }, - "content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'", + "content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'", "permissions": [ "activeTab", diff --git a/package.json b/package.json index f7dcdaa1..2a1b16f3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "2.2.0", + "version": "3.0.0", "repository": { "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" From 7694731e62c9ebee02ed3f9168355f886bc3ccc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 7 Jun 2018 22:17:27 -0300 Subject: [PATCH 224/611] Fix Safari detection. --- src/editor/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/editor/utils.js b/src/editor/utils.js index 6a4a724a..aa202d30 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -38,7 +38,7 @@ export function isSafari() { export function disableUnsupportedAlgorithms() { // TODO: test supported algorithms in runtime - if(isSafari) { + if(isSafari()) { algorithmEs512.disabled = true; } } From 477cef49af7a93c4b8b008997ce79a3a7bf8c1fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 7 Jun 2018 22:38:24 -0300 Subject: [PATCH 225/611] Fix failing test in CI. --- test/functional/editor.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/functional/editor.js b/test/functional/editor.js index 2ba69b22..3264cacc 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -116,6 +116,9 @@ describe('Editor', function() { window.test.tokenEditor.setValue(token); }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + const invalid = await this.page.$eval('.validation-status', status => { return status.classList.contains('invalid-token') && status.textContent.indexOf('invalid') !== -1; From 6a15692fee1767625dda1efe85e0ac60e68b58ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 7 Jun 2018 22:40:40 -0300 Subject: [PATCH 226/611] Update licence. --- LICENSE.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/LICENSE.txt b/LICENSE.txt index e39bd6be..e19b3a5e 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -23,7 +23,8 @@ SOFTWARE. ---- Distributions of this software ("bundles") contain code from other -libraries. Additional licenses from these libraries can be found below. +libraries. For a list of software included in a bundle, refer to +package.json and the list of dependencies. ---- From dfe6c8d12ef75a06b7bc97c1f8fff08e6fa81a5c Mon Sep 17 00:00:00 2001 From: glejeune Date: Fri, 8 Jun 2018 15:06:52 +0200 Subject: [PATCH 227/611] Update Erlang JWErl --- views/website/libraries/8-Erlang.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/views/website/libraries/8-Erlang.json b/views/website/libraries/8-Erlang.json index 68839fa9..aaac7b38 100644 --- a/views/website/libraries/8-Erlang.json +++ b/views/website/libraries/8-Erlang.json @@ -9,13 +9,13 @@ "support": { "sign": true, "verify": true, - "iss": false, - "sub": false, - "aud": false, + "iss": true, + "sub": true, + "aud": true, "exp": true, "nbf": true, "iat": true, - "jti": false, + "jti": true, "hs256": true, "hs384": true, "hs512": true, @@ -28,9 +28,9 @@ }, "authorUrl": "https://github.com/glejeune", "authorName": "Gregoire Lejeune", - "gitHubRepoPath": "emedia-project/jwerl", - "repoUrl": "https://github.com/emedia-project/jwerl", - "installCommandHtml": "git clone https://github.com/emedia-project/jwerl.git" + "gitHubRepoPath": "G-Corp/jwerl", + "repoUrl": "https://github.com/G-Corp/jwerl", + "installCommandHtml": "git clone https://github.com/G-Corp/jwerl.git" } ] -} \ No newline at end of file +} From bf70a02367040f2b01f33f69f24d5c10ed1c9cf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 8 Jun 2018 10:37:23 -0300 Subject: [PATCH 228/611] Deployment test. --- .deployment-test | 1 + 1 file changed, 1 insertion(+) create mode 100644 .deployment-test diff --git a/.deployment-test b/.deployment-test new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/.deployment-test @@ -0,0 +1 @@ + From 4ec4634f3d41a46fe0dad55e8d91d2836e40d7ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 8 Jun 2018 11:11:29 -0300 Subject: [PATCH 229/611] Deployment test: disable Travis cache. --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 06abbf9e..08c99c3a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,6 @@ before_script: - echo " StrictHostKeyChecking no" >> ~/.ssh/config - echo " CheckHostIP no" >> ~/.ssh/config - npm install -cache: - directories: - - node_modules +#cache: +# directories: +# - node_modules From b409521580a9eee1d3df9c2f73efe9c82e11ecc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 8 Jun 2018 11:25:44 -0300 Subject: [PATCH 230/611] Remove stray file. --- .deployment-test | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .deployment-test diff --git a/.deployment-test b/.deployment-test deleted file mode 100644 index 8b137891..00000000 --- a/.deployment-test +++ /dev/null @@ -1 +0,0 @@ - From a8b05fd44c175644df0b839a765f1242ceb7399b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 8 Jun 2018 12:46:27 -0300 Subject: [PATCH 231/611] Deployment trigger file. --- .deployment-trigger | 1 + 1 file changed, 1 insertion(+) create mode 100644 .deployment-trigger diff --git a/.deployment-trigger b/.deployment-trigger new file mode 100644 index 00000000..931443ae --- /dev/null +++ b/.deployment-trigger @@ -0,0 +1 @@ +This file is used to trigger running of CI in case of timeouts. We should fix this someday. From 83be3adbcb9d79bbb0795448276322f88d97a7a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 12 Jun 2018 23:07:53 -0300 Subject: [PATCH 232/611] Fix public key loading for tokens in location hash. --- src/website/index.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/website/index.js b/src/website/index.js index 11902985..3516694d 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -8,9 +8,8 @@ import { setupSmoothScrolling } from './smooth-scrolling.js'; import { setupHighlighting } from './highlighting.js'; import { isChrome, isFirefox } from './utils.js'; import { setupShareJwtButton } from '../share-button.js'; -import { - publicKeyTextArea, - codeElements, +import { + publicKeyTextArea, debuggerSection, extensionSection, ebookSection, @@ -27,7 +26,7 @@ function parseLocationQuery() { const locHash = queryString.parse(document.location.hash.substr(1)); const keys = [ - 'id_token', + 'id_token', 'access_token', 'value', 'token', @@ -39,8 +38,8 @@ function parseLocationQuery() { if(token) { setTokenEditorValue(token); - if(locSearch.publicKey) { - publicKeyTextArea.value = locSearch.publicKey; + if(locSearch.publicKey || locHash.publicKey) { + publicKeyTextArea.value = locSearch.publicKey || locHash.publicKey; } debuggerSection.scrollIntoView(true); From 1d5ce27d8221601504c0891cf0e55bf06bb1cae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 12 Jun 2018 23:08:19 -0300 Subject: [PATCH 233/611] Do not store last valid token. Remove all previously stored tokens. --- package.json | 2 +- src/editor/index.js | 44 +++++++++++---------------------------- test/functional/editor.js | 4 ++-- 3 files changed, 15 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index 2a1b16f3..3046d2b4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "3.0.0", + "version": "3.1.0", "repository": { "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" diff --git a/src/editor/index.js b/src/editor/index.js index 50d8c71d..c360a0b1 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -1,6 +1,5 @@ import { - deferToNextLoop, - safeLocalStorageSetItem + deferToNextLoop } from '../utils.js'; import { downloadPublicKeyIfPossible } from './public-key-download.js'; import { setupClaimsTooltip } from './claims-tooltip.js'; @@ -190,33 +189,6 @@ function markAsInvalidWithElement(element, clearTokenEditor = true) { } } -function saveAsLastToken() { - const token = getTrimmedValue(tokenEditor); - if(token && token.length > 0) { - safeLocalStorageSetItem('lastToken', token); - } - - const publicKey = publicKeyTextArea.value; - if(publicKey && publicKey.length > 0) { - safeLocalStorageSetItem('lastPublicKey', publicKey); - } -} - -function loadToken() { - const lastToken = localStorage.getItem('lastToken'); - - if(lastToken) { - setTokenEditorValue(lastToken); - - const lastPublicKey = localStorage.getItem('lastPublicKey'); - if(lastPublicKey) { - publicKeyTextArea.value = lastPublicKey; - } - } else { - useDefaultToken('HS256'); - } -} - function encodeToken() { deferToNextLoop(fixEditorHeight); @@ -251,7 +223,6 @@ function encodeToken() { sign(header, payload, key, secretBase64Checkbox.checked).then(encoded => { eventManager.withDisabledEvents(() => { tokenEditor.setValue(encoded); - saveAsLastToken(); }); }).catch(e => { eventManager.withDisabledEvents(() => { @@ -289,7 +260,6 @@ function decodeToken() { if(decoded.errors) { markAsInvalidWithElement(editorElement, false); } else { - saveAsLastToken(); verifyToken(); } } catch(e) { @@ -321,6 +291,15 @@ function verifyToken() { }); } +// The last saved token functionality has been flagged as a security issue. +// This function removes any locally stored tokens in the past. +// Once a considerable amount of time has passed since this was put in place, +// it may be safe to remove it. Enabled at: 2018-06-12. +function removeSavedTokens() { + localStorage.removeItem('lastToken'); + localStorage.removeItem('lastPublicKey'); +} + function setupTabEvents() { // These are relevant for portrait or mobile screens. @@ -390,8 +369,9 @@ export function setupTokenEditor() { disableUnsupportedAlgorithms(); setupEvents(); selectAlgorithm('HS256'); - loadToken(); + useDefaultToken('HS256'); fixEditorHeight(); setupSecretLengthTooltip(); setupClaimsTooltip(); + removeSavedTokens(); } diff --git a/test/functional/editor.js b/test/functional/editor.js index 3264cacc..32ed24bd 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -1087,7 +1087,7 @@ describe('Editor', function() { expect(invalid).to.be.true; }); - it('Saves last edited token', async function() { + it('Does NOT save the last edited token', async function() { await this.page.select('#algorithm-select', 'HS256'); const secretInput = await this.page.$('input[name="secret"]'); @@ -1117,7 +1117,7 @@ describe('Editor', function() { return JSON.parse(window.test.payloadEditor.getValue()); }); - expect(storedPayload).to.deep.equal(payload); + expect(storedPayload).to.not.deep.equal(payload); }); describe('JWT share button', function() { From 337e445efffe28c27dac80f0ff03b9d106e327dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 13 Jun 2018 22:11:37 -0300 Subject: [PATCH 234/611] Conceptual fixes in the introduction. --- package.json | 2 +- views/website/md/introduction.md | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 3046d2b4..a09be833 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "3.1.0", + "version": "3.1.1", "repository": { "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" diff --git a/views/website/md/introduction.md b/views/website/md/introduction.md index b863ccc0..05de3616 100755 --- a/views/website/md/introduction.md +++ b/views/website/md/introduction.md @@ -1,7 +1,7 @@ **NEW:** get the [JWT Handbook for free](https://auth0.com/e-books/jwt-handbook) and learn JWTs in depth! ## What is JSON Web Token? -JSON Web Token (JWT) is an open standard ([RFC 7519](https://tools.ietf.org/html/rfc7519)) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be signed using a secret (with the **HMAC** algorithm) or a public/private key pair using **RSA**. +JSON Web Token (JWT) is an open standard ([RFC 7519](https://tools.ietf.org/html/rfc7519)) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be signed using a secret (with the **HMAC** algorithm) or a public/private key pair using **RSA** or **ECDSA**. Although JWTs can be encrypted to also provide secrecy between parties, we will focus on *signed* tokens. Signed tokens can verify the *integrity* of the claims contained within it, while encrypted tokens *hide* those claims from other parties. When tokens are signed using public/private key pairs, the signature also certifies that only the party holding the private key is the one that signed it. @@ -9,7 +9,7 @@ Let's explain some concepts further. - **Compact**: Because of their smaller size, JWTs can be sent through a URL, POST parameter, or inside an HTTP header. Additionally, the smaller size means transmission is fast. -- **Self-contained**: The payload contains all the required information about the user, avoiding the need to query the database more than once. +- **Self-contained**: The payload may contain extra information about the user, avoiding the need to query the database more than once. ## When should you use JSON Web Tokens? Here are some scenarios where JSON Web Tokens are useful: @@ -48,7 +48,7 @@ Then, this JSON is **Base64Url** encoded to form the first part of the JWT. ### Payload -The second part of the token is the payload, which contains the claims. Claims are statements about an entity (typically, the user) and additional metadata. +The second part of the token is the payload, which contains the claims. Claims are statements about an entity (typically, the user) and additional data. There are three types of claims: *registered*, *public*, and *private* claims. - [**Registered claims**](https://tools.ietf.org/html/rfc7519#section-4.1): These are a set of predefined claims which are not mandatory but recommended, to provide a set of useful, interoperable claims. Some of them are: **iss** (issuer), **exp** (expiration time), **sub** (subject), **aud** (audience), and [others](https://tools.ietf.org/html/rfc7519#section-4.1). @@ -99,9 +99,7 @@ If you want to play with JWT and put these concepts into practice, you can use [ ![JWT.io Debugger](https://cdn.auth0.com/blog/legacy-app-auth/legacy-app-auth-5.png) ## How do JSON Web Tokens work? -In authentication, when the user successfully logs in using their credentials, a JSON Web Token will be returned and must be saved locally (typically in local storage, but cookies can be also used), instead of the traditional approach of creating a session in the server and returning a cookie. - -> There are security considerations that must be taken into account with regards to the way tokens are stored. These are enumerated in [Where to Store Tokens](https://auth0.com/docs/security/store-tokens). +In authentication, when the user successfully logs in using their credentials, a JSON Web Token will be returned. Since tokens are credentials, great care must be taken to prevent security issues. In general, you should not keep tokens longer than required. Whenever the user wants to access a protected route or resource, the user agent should send the JWT, typically in the **Authorization** header using the **Bearer** schema. The content of the header should look like the following: @@ -109,8 +107,7 @@ Whenever the user wants to access a protected route or resource, the user agent Authorization: Bearer ``` -This is a stateless authentication mechanism as the user state is never saved in server memory. -The server's protected routes will check for a valid JWT in the Authorization header, and if it's present, the user will be allowed to access protected resources. As JWTs are self-contained, all the necessary information is there, reducing the need to query the database multiple times. +This can be, in certain cases, a stateless authentication mechanism. The server's protected routes will check for a valid JWT in the `Authorization` header, and if it's present, the user will be allowed to access protected resources. If the JWT is self-contained, all the necessary information is there, reducing the need to query the database multiple times. This allows you to fully rely on data APIs that are stateless and even make requests to downstream services. It doesn't matter which domains are serving your APIs, so Cross-Origin Resource Sharing (CORS) won't be an issue as it doesn't use cookies. From 7a0b1a6d947f1fd4c6712c640b0a36c5c13868e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 14 Jun 2018 13:55:57 -0300 Subject: [PATCH 235/611] More conceptual fixes for the introduction. --- views/website/md/introduction.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/views/website/md/introduction.md b/views/website/md/introduction.md index 05de3616..d07d67bb 100755 --- a/views/website/md/introduction.md +++ b/views/website/md/introduction.md @@ -5,16 +5,10 @@ JSON Web Token (JWT) is an open standard ([RFC 7519](https://tools.ietf.org/html Although JWTs can be encrypted to also provide secrecy between parties, we will focus on *signed* tokens. Signed tokens can verify the *integrity* of the claims contained within it, while encrypted tokens *hide* those claims from other parties. When tokens are signed using public/private key pairs, the signature also certifies that only the party holding the private key is the one that signed it. -Let's explain some concepts further. - -- **Compact**: Because of their smaller size, JWTs can be sent through a URL, POST parameter, or inside an HTTP header. Additionally, the smaller size means transmission is fast. - -- **Self-contained**: The payload may contain extra information about the user, avoiding the need to query the database more than once. - ## When should you use JSON Web Tokens? Here are some scenarios where JSON Web Tokens are useful: -- **Authentication**: This is the most common scenario for using JWT. Once the user is logged in, each subsequent request will include the JWT, allowing the user to access routes, services, and resources that are permitted with that token. Single Sign On is a feature that widely uses JWT nowadays, because of its small overhead and its ability to be easily used across different domains. +- **Authorization**: This is the most common scenario for using JWT. Once the user is logged in, each subsequent request will include the JWT, allowing the user to access routes, services, and resources that are permitted with that token. Single Sign On is a feature that widely uses JWT nowadays, because of its small overhead and its ability to be easily used across different domains. - **Information Exchange**: JSON Web Tokens are a good way of securely transmitting information between parties. Because JWTs can be signed—for example, using public/private key pairs—you can be sure the senders are who they say they are. Additionally, as the signature is calculated using the header and the payload, you can also verify that the content hasn't been tampered with. @@ -107,13 +101,17 @@ Whenever the user wants to access a protected route or resource, the user agent Authorization: Bearer ``` -This can be, in certain cases, a stateless authentication mechanism. The server's protected routes will check for a valid JWT in the `Authorization` header, and if it's present, the user will be allowed to access protected resources. If the JWT is self-contained, all the necessary information is there, reducing the need to query the database multiple times. +This can be, in certain cases, a stateless authorization mechanism. The server's protected routes will check for a valid JWT in the `Authorization` header, and if it's present, the user will be allowed to access protected resources. If the JWT contains the necessary data, the need to query the database for certain operations may be reduced, though this may not always be the case. + +If the token is sent in the `Authorization` header, Cross-Origin Resource Sharing (CORS) won't be an issue as it doesn't use cookies. -This allows you to fully rely on data APIs that are stateless and even make requests to downstream services. It doesn't matter which domains are serving your APIs, so Cross-Origin Resource Sharing (CORS) won't be an issue as it doesn't use cookies. +The following diagram shows how a JWT is obtained and used to access APIs or resources: -The following diagram shows this process: +![How does a JSON Web Token works](https://cdn2.auth0.com/docs/media/articles/api-auth/client-credentials-grant.png) -![How does a JSON Web Token works](https://cdn.auth0.com/content/jwt/jwt-diagram.png) +1. The application or client requests authorization to the authorization server. This is performed through one of the different authorization flows. For example, a typical [OpenID Connect](http://openid.net/connect/) compliant web application will go through the `/oauth/authorize` endpoint using the [authorization code flow](http://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth). +2. When the authorization is granted, the authorization server returns an access token to the application. +3. The application uses the access token to access a protected resource (like an API). Do note that with signed tokens, all the information contained within the token is exposed to users or other parties, even though they are unable to change it. This means you should not put secret information within the token. From aba64871060a331e1733cc747e83e586d35a28a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 14 Jun 2018 14:00:06 -0300 Subject: [PATCH 236/611] Typo --- views/website/md/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/md/introduction.md b/views/website/md/introduction.md index d07d67bb..ec180855 100755 --- a/views/website/md/introduction.md +++ b/views/website/md/introduction.md @@ -107,7 +107,7 @@ If the token is sent in the `Authorization` header, Cross-Origin Resource Sharin The following diagram shows how a JWT is obtained and used to access APIs or resources: -![How does a JSON Web Token works](https://cdn2.auth0.com/docs/media/articles/api-auth/client-credentials-grant.png) +![How does a JSON Web Token work](https://cdn2.auth0.com/docs/media/articles/api-auth/client-credentials-grant.png) 1. The application or client requests authorization to the authorization server. This is performed through one of the different authorization flows. For example, a typical [OpenID Connect](http://openid.net/connect/) compliant web application will go through the `/oauth/authorize` endpoint using the [authorization code flow](http://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth). 2. When the authorization is granted, the authorization server returns an access token to the application. From dd825e5d28d9428a37aa8bb9afba2ec9e869a57f Mon Sep 17 00:00:00 2001 From: Oskar Laska Date: Fri, 22 Jun 2018 12:51:20 +0200 Subject: [PATCH 237/611] Bump guardian version (Elixir lib) --- views/website/libraries/7-Elixir.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/libraries/7-Elixir.json b/views/website/libraries/7-Elixir.json index 3fe0667d..43a75a26 100644 --- a/views/website/libraries/7-Elixir.json +++ b/views/website/libraries/7-Elixir.json @@ -86,7 +86,7 @@ "authorName": "hassox", "gitHubRepoPath": "ueberauth/guardian", "repoUrl": "https://github.com/ueberauth/guardian", - "installCommandHtml": "defp deps, do: [{:guardian, \"~> 0.11.1\"}]" + "installCommandHtml": "defp deps, do: [{:guardian, \"~> 1.0 \"}]" } ] -} \ No newline at end of file +} From 0bffd1278a5fc1a604a6f6901accacdf4164b980 Mon Sep 17 00:00:00 2001 From: Jitendra Adhikari Date: Sun, 24 Jun 2018 21:31:49 +0700 Subject: [PATCH 238/611] Add adhocore/jwt for php --- views/website/libraries/24-PHP.json | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index cb0c069d..609dc512 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -255,6 +255,34 @@ "gitHubRepoPath": "cdoco/php-jwt", "repoUrl": "https://github.com/cdoco/php-jwt", "installCommandHtml": "git clone https://github.com/cdoco/php-jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/adhocore", + "authorName": "Jitendra Adhikari", + "gitHubRepoPath": "adhocore/jwt", + "repoUrl": "https://github.com/adhocore/jwt", + "installCommandHtml": "composer require adhocore/jwt" } ] } From da76e8fcdbe3a8ae87ce26c9795f14aa2648a12e Mon Sep 17 00:00:00 2001 From: Jaco Koster Date: Thu, 28 Jun 2018 12:01:29 +0200 Subject: [PATCH 239/611] Changed Node-JS-capabilities based on the readme Every item in the list seems to be implemented: https://github.com/auth0/node-jsonwebtoken#jwtsignpayload-secretorprivatekey-options-callback --- views/website/libraries/2-Node.js.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json index 3777880d..b15b546e 100644 --- a/views/website/libraries/2-Node.js.json +++ b/views/website/libraries/2-Node.js.json @@ -9,13 +9,13 @@ "support": { "sign": true, "verify": true, - "iss": false, - "sub": false, + "iss": true, + "sub": true, "aud": true, "exp": true, - "nbf": false, - "iat": false, - "jti": false, + "nbf": true, + "iat": true, + "jti": true, "hs256": true, "hs384": true, "hs512": true, @@ -33,4 +33,4 @@ "installCommandHtml": "npm install jsonwebtoken" } ] -} \ No newline at end of file +} From 7219a8ad89e0e8bd0c2b8657b62e80f1049f7164 Mon Sep 17 00:00:00 2001 From: Seth Moeckel Date: Mon, 2 Jul 2018 21:00:17 -0400 Subject: [PATCH 240/611] added rucuriousyet/jwt --- views/website/libraries/9-Go.json | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 34e13bbf..54be8fb0 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -283,6 +283,34 @@ "gitHubRepoPath": "pascaldekloe/jwt", "repoUrl": "https://github.com/pascaldekloe/jwt", "installCommandHtml": "go get github.com/pascaldekloe/jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://gitlab.com/rucuriousyet", + "authorName": "Seth Moeckel", + "gitHubRepoPath": "rucuriousyet/jwt", + "repoUrl": "https://gitlab.com/rucuriousyet/jwt", + "installCommandHtml": "go get gitlab.com/rucuriousyet/jwt" } ] -} \ No newline at end of file +} From c0ce03193e33fb8b28defd6d9e7b50c30626807a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 4 Jul 2018 17:11:49 -0300 Subject: [PATCH 241/611] Fix JWT handbook URL. --- views/website/ebook.pug | 2 +- views/website/md/introduction.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/ebook.pug b/views/website/ebook.pug index 0c7ead59..20950f54 100644 --- a/views/website/ebook.pug +++ b/views/website/ebook.pug @@ -2,4 +2,4 @@ section.jtw-ebook-banner span strong Get the JWT Handbook for free! |  Spread the word and download it now. - a.btn.btn-download-ebook(href='https://auth0.com/e-books/jwt-handbook?utm_source=jwtio&utm_medium=sc&utm_campaign=rotating_banner', target='_blank') Download Ebook + a.btn.btn-download-ebook(href='https://auth0.com/resources/ebooks/jwt-handbook?utm_source=jwtio&utm_medium=sc&utm_campaign=rotating_banner', target='_blank') Download Ebook diff --git a/views/website/md/introduction.md b/views/website/md/introduction.md index ec180855..dda87a91 100755 --- a/views/website/md/introduction.md +++ b/views/website/md/introduction.md @@ -1,4 +1,4 @@ -**NEW:** get the [JWT Handbook for free](https://auth0.com/e-books/jwt-handbook) and learn JWTs in depth! +**NEW:** get the [JWT Handbook for free](https://auth0.com/resources/ebooks/jwt-handbook) and learn JWTs in depth! ## What is JSON Web Token? JSON Web Token (JWT) is an open standard ([RFC 7519](https://tools.ietf.org/html/rfc7519)) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be signed using a secret (with the **HMAC** algorithm) or a public/private key pair using **RSA** or **ECDSA**. From 28ce8d8b294dac1b2ab6a26bb2ac4dad5f94d27c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 4 Jul 2018 17:12:01 -0300 Subject: [PATCH 242/611] Set version 3.1.2. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a09be833..9919f8ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "3.1.1", + "version": "3.1.2", "repository": { "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" From b82abbbebe1514e10f4a2d8f7c9c17ddba906743 Mon Sep 17 00:00:00 2001 From: joseeantonior Date: Thu, 5 Jul 2018 17:49:58 -0500 Subject: [PATCH 243/611] Update libraries.pug --- views/website/libraries.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries.pug b/views/website/libraries.pug index a5521b0a..3fc76acf 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -18,7 +18,7 @@ section#libraries-io.libraries-jwt .warning b Warning: | Critical vulnerabilities in JSON Web Token libraries with asymmetric keys. - a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/') + a(href='https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/') | Learn more svg(height='48', viewbox='0 0 48 48', width='48', xmlns='http://www.w3.org/2000/svg') From 13cd7915f6f6b47581d29b34cac97ffb6df4a5ac Mon Sep 17 00:00:00 2001 From: joseeantonior Date: Thu, 5 Jul 2018 17:51:02 -0500 Subject: [PATCH 244/611] Update template.pug --- views/website/libraries/template.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index 03098959..d107f11f 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -6,7 +6,7 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) if lib.minimumVersion .version p Minimum Version #{lib.minimumVersion} - a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/', target='_blank') + a(href='https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/', target='_blank') img(src='http://github.com/img/ico_question.svg') div(class={ 'panel-body': true, mversion: !!lib.minimumVersion }) .column From 7cf9cae2babd81ac07cbc838d52e3d89682dad1c Mon Sep 17 00:00:00 2001 From: Tom Lindelius Date: Wed, 25 Jul 2018 17:13:11 +0200 Subject: [PATCH 245/611] Lindelius' php-jwt library now has built-in support for aud claims --- views/website/libraries/24-PHP.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index cb0c069d..3c407b97 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -207,7 +207,7 @@ "verify": true, "iss": false, "sub": false, - "aud": false, + "aud": true, "exp": true, "nbf": true, "iat": true, From 306a624a48faad569da703c2e2e28031da726a51 Mon Sep 17 00:00:00 2001 From: Seth Moeckel Date: Thu, 2 Aug 2018 16:15:41 -0400 Subject: [PATCH 246/611] Update 9-Go.json --- views/website/libraries/9-Go.json | 1 - 1 file changed, 1 deletion(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 54be8fb0..81a307a8 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -308,7 +308,6 @@ }, "authorUrl": "https://gitlab.com/rucuriousyet", "authorName": "Seth Moeckel", - "gitHubRepoPath": "rucuriousyet/jwt", "repoUrl": "https://gitlab.com/rucuriousyet/jwt", "installCommandHtml": "go get gitlab.com/rucuriousyet/jwt" } From 20ffb0eaeedbb8b7b0c2a6e63f3ec87c0faf1dea Mon Sep 17 00:00:00 2001 From: Seth Moeckel Date: Thu, 2 Aug 2018 16:16:24 -0400 Subject: [PATCH 247/611] Update 9-Go.json --- views/website/libraries/9-Go.json | 1 + 1 file changed, 1 insertion(+) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 81a307a8..4824d931 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -308,6 +308,7 @@ }, "authorUrl": "https://gitlab.com/rucuriousyet", "authorName": "Seth Moeckel", + "gitHubRepoPath": null, "repoUrl": "https://gitlab.com/rucuriousyet/jwt", "installCommandHtml": "go get gitlab.com/rucuriousyet/jwt" } From cba031fd9129186cf4e319029009df04c6840de7 Mon Sep 17 00:00:00 2001 From: Dmitry Lobanov Date: Fri, 10 Aug 2018 16:03:19 +0300 Subject: [PATCH 248/611] Objective-C library information has been updated. --- views/website/libraries/18-Objective-C.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/views/website/libraries/18-Objective-C.json b/views/website/libraries/18-Objective-C.json index 6cd415b8..5b6def1c 100644 --- a/views/website/libraries/18-Objective-C.json +++ b/views/website/libraries/18-Objective-C.json @@ -22,9 +22,9 @@ "rs256": true, "rs384": true, "rs512": true, - "es256": false, - "es384": false, - "es512": false + "es256": true, + "es384": true, + "es512": true }, "authorUrl": null, "authorName": "yourkarma & lolgear", @@ -33,4 +33,4 @@ "installCommandHtml": "pod 'JWT'" } ] -} \ No newline at end of file +} From ac9690e6132eef583084e5bdb71574dbffd02332 Mon Sep 17 00:00:00 2001 From: "Pascal S. de Kloe" Date: Fri, 24 Aug 2018 18:42:55 +0200 Subject: [PATCH 249/611] Propagate ECDSA support for a Go library. --- views/website/libraries/9-Go.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 4824d931..77ccf1f7 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -274,9 +274,9 @@ "rs256": true, "rs384": true, "rs512": true, - "es256": false, - "es384": false, - "es512": false + "es256": true, + "es384": true, + "es512": true }, "authorUrl": "https://github.com/pascaldekloe", "authorName": "Pascal de Kloe", From 6aed30e1cc436435eb319dfd6b8198ff5bc43da3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 6 Sep 2018 01:22:50 -0300 Subject: [PATCH 250/611] Some initial work on metrics (WIP). --- package-lock.json | 117 ++++++++++++++++++++++++++++++++++++++- package.json | 3 +- src/website/index.js | 27 ++++++++- src/website/libraries.js | 23 ++++++-- src/website/metrics.js | 13 +++++ src/website/utils.js | 26 ++++++++- webpack.website-dev.js | 7 ++- 7 files changed, 204 insertions(+), 12 deletions(-) create mode 100644 src/website/metrics.js diff --git a/package-lock.json b/package-lock.json index cbed9e88..9b9308db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "2.2.0", + "version": "3.1.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -668,6 +668,16 @@ } } }, + "@segment/loosely-validate-event": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", + "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==", + "dev": true, + "requires": { + "component-type": "^1.2.1", + "join-component": "^1.1.0" + } + }, "@sinonjs/formatio": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", @@ -1276,6 +1286,31 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "analytics-node": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/analytics-node/-/analytics-node-3.3.0.tgz", + "integrity": "sha512-wxrsmibvZVysy5CfkLItYrYMGbNVXDBccWurz+hgLUg98pbijiS2/QQdRc0SjHWVEqByxReEJ2T2MGhgb4jk3A==", + "dev": true, + "requires": { + "@segment/loosely-validate-event": "^2.0.0", + "axios": "^0.17.1", + "axios-retry": "^3.0.2", + "commander": "^2.9.0", + "lodash.isstring": "^4.0.1", + "md5": "^2.2.1", + "ms": "^2.0.0", + "remove-trailing-slash": "^0.1.0", + "uuid": "^3.2.1" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + } + } + }, "anchor-markdown-header": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", @@ -1865,6 +1900,25 @@ "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", "dev": true }, + "axios": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz", + "integrity": "sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=", + "dev": true, + "requires": { + "follow-redirects": "^1.2.5", + "is-buffer": "^1.1.5" + } + }, + "axios-retry": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.1.1.tgz", + "integrity": "sha512-BeNOxa/CBQQLa9gVuMta1oWIhbL6UETKBfAmFjOXwiBxgcmrDBVVwz/gKZTpzKJlVjmi5DeYC+lP5Ng7ssc1pg==", + "dev": true, + "requires": { + "is-retry-allowed": "^1.1.0" + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -2850,6 +2904,12 @@ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "dev": true + }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -3254,6 +3314,12 @@ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, + "component-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.1.tgz", + "integrity": "sha1-ikeQFwAjjk/DIml3EjAibyS0Fak=", + "dev": true + }, "compress-commons": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", @@ -3516,6 +3582,12 @@ "integrity": "sha1-fu7tnt3JXiLBiTguNGJARKiaWm0=", "dev": true }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "dev": true + }, "cryptiles": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", @@ -5352,6 +5424,26 @@ "readable-stream": "^2.0.4" } }, + "follow-redirects": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.7.tgz", + "integrity": "sha512-NONJVIFiX7Z8k2WxfqBjtwqMifx7X42ORLFrOZ2LTKGj71G3C0kfdyTqGqr8fx5zSX6Foo/D95dgGWbPUiwnew==", + "dev": true, + "requires": { + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -7613,6 +7705,12 @@ "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", "dev": true }, + "join-component": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz", + "integrity": "sha1-uEF7dQZho5K+4sJTfGiyqdSXfNU=", + "dev": true + }, "jquery": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", @@ -8253,6 +8351,17 @@ "outlayer": "^2.1.0" } }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "dev": true, + "requires": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", @@ -10462,6 +10571,12 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, + "remove-trailing-slash": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.0.tgz", + "integrity": "sha1-FJjl3wmEwn5Jt26/Boh8otARUNI=", + "dev": true + }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", diff --git a/package.json b/package.json index 9919f8ae..ecaf575b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "3.1.2", + "version": "3.2.0", "repository": { "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" @@ -14,6 +14,7 @@ "@babel/core": "^7.0.0-beta.36", "@babel/polyfill": "^7.0.0-beta.37", "@babel/preset-env": "^7.0.0-beta.36", + "analytics-node": "^3.3.0", "babel-loader": "^8.0.0-beta.0", "babel-plugin-transform-async-to-generator": "^6.24.1", "bootstrap": "^3.3.7", diff --git a/src/website/index.js b/src/website/index.js index 3516694d..099e0756 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -1,4 +1,5 @@ import '../google-analytics.js'; +import * as metrics from './metrics.js'; import { setupNavbar } from './navbar.js'; import { setupExtensionButton } from './extension.js'; import { setupLibraries } from './libraries.js'; @@ -6,7 +7,7 @@ import { setupTokenEditor, setTokenEditorValue } from '../editor'; import { setupJwtCounter } from './counter.js'; import { setupSmoothScrolling } from './smooth-scrolling.js'; import { setupHighlighting } from './highlighting.js'; -import { isChrome, isFirefox } from './utils.js'; +import { isChrome, isFirefox, isPartiallyInViewport, once } from './utils.js'; import { setupShareJwtButton } from '../share-button.js'; import { publicKeyTextArea, @@ -14,7 +15,8 @@ import { extensionSection, ebookSection, shareJwtButton, - shareJwtTextElement + shareJwtTextElement, + librariesElement } from './dom-elements.js'; import queryString from 'querystring'; @@ -36,9 +38,12 @@ function parseLocationQuery() { const token = locSearch[key] || locHash[key]; if(token) { + metrics.track('token-in-url', { type: key }); + setTokenEditorValue(token); if(locSearch.publicKey || locHash.publicKey) { + metrics.track('pubkey-in-url'); publicKeyTextArea.value = locSearch.publicKey || locHash.publicKey; } @@ -51,13 +56,31 @@ function parseLocationQuery() { function pickEbookOrExtensionBanner() { if((isChrome() || isFirefox()) && (Math.random() >= 0.5)) { + metrics.track('extension-banner-shown'); extensionSection.style.display = 'block'; } else { + metrics.track('ebook-banner-shown'); ebookSection.style.display = 'block'; } } +function setupMetrics() { + metrics.init(PRODUCTION ? 'PROD-KEY' : 'DEV-KEY'); + + // Section visible metrics + window.addEventListener('scroll', e => { + if(isPartiallyInViewport(librariesElement)) { + once('libraries-visible', () => metrics.track('libraries-visible-once')); + } + + if(isPartiallyInViewport(debuggerSection)) { + once('debugger-visible', () => metrics.track('debugger-visible-once')); + } + }); +} + // Initialization +setupMetrics(); setupNavbar(); setupExtensionButton(); setupSmoothScrolling(); diff --git a/src/website/libraries.js b/src/website/libraries.js index e1149581..4bcabc27 100644 --- a/src/website/libraries.js +++ b/src/website/libraries.js @@ -1,9 +1,10 @@ import { safeLocalStorageSetItem } from '../utils.js'; import { httpGet } from '../utils.js'; -import { +import * as metrics from './metrics.js'; +import { starsElements, librariesElement, - librariesSelect + librariesSelect } from './dom-elements.js'; import Isotope from 'isotope-layout'; @@ -49,7 +50,7 @@ function getStarsForGitHubRepos() { const now = Date.now(); try { - const stored = JSON.parse(localStorage.getItem(key)); + const stored = JSON.parse(localStorage.getItem(key)); const diff = now - stored.date; // Cached for a week const maxdiff = 7 * 24 * 60 * 60 * 1000; @@ -71,16 +72,26 @@ function getStarsForGitHubRepos() { insertStarCount(element, count); }).catch(e => { - log.warn('Failed to get GitHub stars count for repository, ' + - 'is the repository URL OK? ', e); + log.warn('Failed to get GitHub stars count for repository, ' + + 'is the repository URL OK? ', e); }); }); } +function setupMetrics() { + // TODO for clicks +} + export function setupLibraries() { getStarsForGitHubRepos(); - + + setupMetrics(); + librariesSelect.addEventListener('change', event => { + metrics.track('libraries-filter-selected', { + selected: event.target.value + }); + librariesGrid.arrange({ filter: event.target.value }); diff --git a/src/website/metrics.js b/src/website/metrics.js new file mode 100644 index 00000000..c4b8fe24 --- /dev/null +++ b/src/website/metrics.js @@ -0,0 +1,13 @@ +import Analytics from 'analytics-node'; + +let analytics; + +export function init(key) { + analytics = new Analytics(key); +} + +export function track(event, data) { + if(analytics) { + analytics.track(event, data); + } +} diff --git a/src/website/utils.js b/src/website/utils.js index cfb243b0..01093c38 100644 --- a/src/website/utils.js +++ b/src/website/utils.js @@ -18,7 +18,20 @@ export function isInViewport(elem) { bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth) ); -}; +} + +// From: https://stackoverflow.com/questions/487073/check-if-element-is-visible-after-scrolling +export function isPartiallyInViewport(el) { + var rect = el.getBoundingClientRect(); + var elemTop = rect.top; + var elemBottom = rect.bottom; + + // Only completely visible elements return true: + //var isVisible = (elemTop >= 0) && (elemBottom <= window.innerHeight); + // Partially visible elements return true: + var isVisible = elemTop < window.innerHeight && elemBottom >= 0; + return isVisible; +} //From: // https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser @@ -29,3 +42,14 @@ export function isChrome() { export function isFirefox() { return typeof InstallTrigger !== 'undefined'; } + +const alreadyRun = {}; +export function once(unique, fn) { + if(unique in alreadyRun) { + return alreadyRun[unique]; + } + + const result = fn(); + alreadyRun[unique] = result; + return result; +} diff --git a/webpack.website-dev.js b/webpack.website-dev.js index cc203b47..79d83343 100644 --- a/webpack.website-dev.js +++ b/webpack.website-dev.js @@ -11,5 +11,10 @@ module.exports = merge(common, { output: { filename: '[name].js', path: __dirname + '/dist/website/js' - } + }, + plugins: [ + new webpack.DefinePlugin({ + PRODUCTION: false + }) + ] }); From 0e97d37b322165f7e71b40c145eced2e2cde6192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Tue, 11 Sep 2018 22:12:25 -0300 Subject: [PATCH 251/611] Define the PRODUCTION variable in production. --- webpack.website-prod.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/webpack.website-prod.js b/webpack.website-prod.js index 18f412a0..4dc6d8af 100644 --- a/webpack.website-prod.js +++ b/webpack.website-prod.js @@ -7,6 +7,9 @@ module.exports = merge(devConfig, { mode: 'production', devtool: false, plugins: [ - new UglifyJsPlugin() + new UglifyJsPlugin(), + new webpack.DefinePlugin({ + PRODUCTION: true + }) ] }); From a522149b1ad92c6fab95434318516e22ae7f71c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 12 Sep 2018 00:55:35 -0300 Subject: [PATCH 252/611] Some more work on metrics (WIP). --- src/editor/index.js | 49 ++++++++++++++++++++++++++++++++++-- src/editor/utils.js | 42 +++++++++++++++++++++++++++++++ src/{website => }/metrics.js | 7 +++++- src/share-button.js | 7 ++++-- src/website/index.js | 4 +-- src/website/libraries.js | 22 ++++++++++++++-- 6 files changed, 122 insertions(+), 9 deletions(-) rename src/{website => }/metrics.js (55%) diff --git a/src/editor/index.js b/src/editor/index.js index c360a0b1..b0a07be6 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -9,7 +9,8 @@ import { stringify, fixEditorHeight, getSelectedAlgorithm, - disableUnsupportedAlgorithms + disableUnsupportedAlgorithms, + getSafeTokenInfo } from './utils.js'; import { sign, verify, decode } from './jwt.js'; import EventManager from './event-manager.js'; @@ -19,6 +20,7 @@ import { minSecretLengthCheck, setupSecretLengthTooltip } from './secret-length-tooltip.js'; +import * as metrics from '../metrics.js'; import { algorithmSelect, signatureStatusElement, @@ -46,6 +48,17 @@ import log from 'loglevel'; // passed to the event manager. const eventManager = new EventManager(); +function trackToken(jwt, operation) { + const tokenInfo = getSafeTokenInfo(jwt); + + metric.track('editor-jwt-tracked', { + operation: operation, + tokenInfo: tokenInfo + }); + + return tokenInfo.hash; +} + function isSharedSecretAlgorithm(algorithm) { return algorithm && algorithm.indexOf('HS') === 0; } @@ -169,6 +182,8 @@ function setAlgorithmInHeader(algorithm) { function algorithmChangeHandler() { const algorithm = getSelectedAlgorithm(); + metrics.track('editor-algorithm-selected', { algorithm: algorithm }); + displaySecretOrKeys(algorithm); if(isDefaultToken(getTrimmedValue(tokenEditor))) { @@ -223,13 +238,15 @@ function encodeToken() { sign(header, payload, key, secretBase64Checkbox.checked).then(encoded => { eventManager.withDisabledEvents(() => { tokenEditor.setValue(encoded); + trackToken(encoded, 'encode'); }); }).catch(e => { eventManager.withDisabledEvents(() => { log.warn('Failed to sign/encode token: ', e); markAsInvalid(); tokenEditor.setValue(''); - }) + }); + metrics.track('editor-encoding-error'); }).finally(() => { verifyToken(); }); @@ -244,9 +261,15 @@ function decodeToken() { const jwt = getTrimmedValue(tokenEditor); const decoded = decode(jwt); + const tokenHash = trackToken(jwt, 'decode'); + selectAlgorithm(decoded.header.alg); if(isPublicKeyAlgorithm(decoded.header.alg)) { downloadPublicKeyIfPossible(decoded).then(publicKey => { + metrics.track('editor-jwt-public-key-downloaded', { + tokenHash: tokenHash + }); + eventManager.withDisabledEvents(() => { publicKeyTextArea.value = publicKey; verifyToken(); @@ -259,11 +282,20 @@ function decodeToken() { if(decoded.errors) { markAsInvalidWithElement(editorElement, false); + metrics.track('editor-jwt-invalid', { + reason: `partial decode`, + tokenHash: tokenHash + }); } else { verifyToken(); } } catch(e) { log.warn('Failed to decode token: ', e); + + metrics.track('editor-jwt-invalid', { + reason: `failed to decode token`, + tokenHash: trackToken(jwt) + }); } }); } @@ -272,8 +304,14 @@ function verifyToken() { const jwt = getTrimmedValue(tokenEditor); const decoded = decode(jwt); + const tokenHash = trackToken(jwt, 'verify'); + if(!decoded.header.alg || decoded.header.alg === 'none') { markAsInvalid(); + metrics.track('editor-jwt-invalid', { + reason: `header.alg value is ${decoded.header.alg}`, + tokenHash: tokenHash + }); return; } @@ -285,8 +323,15 @@ function verifyToken() { verify(jwt, publicKeyOrSecret, secretBase64Checkbox.checked).then(valid => { if(valid) { markAsValid(); + metrics.track('editor-jwt-verified', { + tokenHash: tokenHash + }); } else { markAsInvalid(); + metrics.track('editor-jwt-invalid', { + reason: 'invalid signature', + tokenHash: tokenHash + }); } }); } diff --git a/src/editor/utils.js b/src/editor/utils.js index aa202d30..adcbfc5d 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -1,4 +1,7 @@ import { isWideScreen } from '../utils.js'; +import * as metrics from '../metrics.js'; +import * as jwt from './jwt.js'; +import forge from 'node-forge'; import { algorithmSelect, algorithmEs512, @@ -6,6 +9,8 @@ import { decodedElement } from '../dom-elements.js'; +const sha256 = forge.md.sha256.create(); + export function getTrimmedValue(instance) { const value = instance.getValue(); if (!value) { @@ -40,5 +45,42 @@ export function disableUnsupportedAlgorithms() { // TODO: test supported algorithms in runtime if(isSafari()) { algorithmEs512.disabled = true; + metrics.track('editor-disabled-es512-safari'); + } +} + +export function getSafeTokenInfo(jwt) { + try { + sha256.start(); + sha256.update(jwt); + + const result = { + hash: sha256.digest().toHex() + }; + + try { + const decoded = jwt.decode(jwt); + + return Object.assign(result, { + decodedWithErrors: decoded.errors, + header: { + alg: decoded.header.alg, + }, + payload: { + // TODO + } + }); + } catch(e) { + return Object.assign(result, { + error: 'error decoding token', + }); + } + } catch(e) { + sha256.start(); + + return { + error: 'error reading token', + hash: sha256.digest().toHex() // Hash for empty string + }; } } diff --git a/src/website/metrics.js b/src/metrics.js similarity index 55% rename from src/website/metrics.js rename to src/metrics.js index c4b8fe24..587f3a94 100644 --- a/src/website/metrics.js +++ b/src/metrics.js @@ -1,4 +1,5 @@ import Analytics from 'analytics-node'; +import log from 'loglevel'; let analytics; @@ -8,6 +9,10 @@ export function init(key) { export function track(event, data) { if(analytics) { - analytics.track(event, data); + try { + analytics.track(event, data); + } catch(e) { + log.error(`Metrics library error: ${e}`); + } } } diff --git a/src/share-button.js b/src/share-button.js index a98dac24..1f65f312 100644 --- a/src/share-button.js +++ b/src/share-button.js @@ -1,5 +1,6 @@ import { copyTokenLink } from './utils.js'; import { getTokenEditorValue } from './editor'; +import * as metrics from './metrics.js'; import strings from './strings.js'; @@ -7,15 +8,17 @@ export function setupShareJwtButton(shareJwtElement, shareJwtTextElement) { shareJwtElement.addEventListener('click', event => { event.preventDefault(); + metrics.track('editor-share-button-clicked'); + const value = getTokenEditorValue(); if(value.token) { // If the selected algorithm does not use public keys, publicKey will be // undefined. const copiedUrl = copyTokenLink(value.token, value.publicKey); - // We cannot read the clipboard in headless Chrome, + // We cannot read the clipboard in headless Chrome, // so we use this to let functional tests see the URL. See: - // https://github.com/GoogleChrome/puppeteer/issues/2147 + // https://github.com/GoogleChrome/puppeteer/issues/2147 if(!window.test) { window.test = {}; } diff --git a/src/website/index.js b/src/website/index.js index 099e0756..9db3a0d8 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -1,5 +1,5 @@ import '../google-analytics.js'; -import * as metrics from './metrics.js'; +import * as metrics from '../metrics.js'; import { setupNavbar } from './navbar.js'; import { setupExtensionButton } from './extension.js'; import { setupLibraries } from './libraries.js'; @@ -74,7 +74,7 @@ function setupMetrics() { } if(isPartiallyInViewport(debuggerSection)) { - once('debugger-visible', () => metrics.track('debugger-visible-once')); + once('editor-visible', () => metrics.track('editor-visible-once')); } }); } diff --git a/src/website/libraries.js b/src/website/libraries.js index 4bcabc27..5a9eb143 100644 --- a/src/website/libraries.js +++ b/src/website/libraries.js @@ -1,6 +1,6 @@ import { safeLocalStorageSetItem } from '../utils.js'; import { httpGet } from '../utils.js'; -import * as metrics from './metrics.js'; +import * as metrics from '../metrics.js'; import { starsElements, librariesElement, @@ -79,7 +79,25 @@ function getStarsForGitHubRepos() { } function setupMetrics() { - // TODO for clicks + const tracked = [{ + selector: '.version p a', + event: 'libraries-jwt-vulns-link-clicked' + }, { + selector: '.maintainer a', + event: 'libraries-maintainer-link-clicked' + }, { + selector: '.repository a', + event: 'libraries-repository-link-clicked' + }]; + + tracked.forEach(t => { + const els = document.querySelectorAll(t.selector); + Array.prototype.forEach.call(els, el => { + el.addEventListener('click', () => { + metrics.track(t.event); + }); + }); + }); } export function setupLibraries() { From cef116e62d413c2f2fb7aa6bdbd322d24fad9771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 12 Sep 2018 00:57:15 -0300 Subject: [PATCH 253/611] Better error message for metrics. --- src/metrics.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/metrics.js b/src/metrics.js index 587f3a94..cd3852bb 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -10,9 +10,9 @@ export function init(key) { export function track(event, data) { if(analytics) { try { - analytics.track(event, data); + analytics.track(event, data); } catch(e) { - log.error(`Metrics library error: ${e}`); + log.error(`Metrics library error for event ${event}: ${e}`); } } } From 42e69052654cfc32ebd52bd55f756555ca08995a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 12 Sep 2018 23:04:17 -0300 Subject: [PATCH 254/611] More work on metrics. --- src/editor/jwt-iana-registered-claims.js | 52 +++++++++++++++++ src/editor/utils.js | 73 ++++++++++++++++++++++-- 2 files changed, 120 insertions(+), 5 deletions(-) create mode 100644 src/editor/jwt-iana-registered-claims.js diff --git a/src/editor/jwt-iana-registered-claims.js b/src/editor/jwt-iana-registered-claims.js new file mode 100644 index 00000000..79c542a1 --- /dev/null +++ b/src/editor/jwt-iana-registered-claims.js @@ -0,0 +1,52 @@ +export default [ + 'iss', + 'sub', + 'aud', + 'exp', + 'nbf', + 'iat', + 'jti', + 'name', + 'given_name', + 'family_name', + 'middle_name', + 'nickname', + 'preferred_username', + 'profile', + 'picture', + 'website', + 'email', + 'email_verified', + 'gender', + 'birthdate', + 'zoneinfo', + 'locale', + 'phone_number', + 'phone_number_verified', + 'address', + 'updated_at', + 'azp', + 'nonce', + 'auth_time', + 'at_hash', + 'c_hash', + 'acr', + 'amr', + 'sub_jwk', + 'cnf', + 'sip_from_tag', + 'sip_date', + 'sip_callid', + 'sip_cseq_num', + 'sip_via_branch', + 'orig', + 'dest', + 'mky', + 'events', + 'toe', + 'txn', + 'rph', + 'sid', + 'vot', + 'vtm' +]; diff --git a/src/editor/utils.js b/src/editor/utils.js index adcbfc5d..3474a3c6 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -1,6 +1,7 @@ import { isWideScreen } from '../utils.js'; import * as metrics from '../metrics.js'; import * as jwt from './jwt.js'; +import registeredClaims from './jwt-iana-registered-claims.js'; import forge from 'node-forge'; import { algorithmSelect, @@ -49,27 +50,89 @@ export function disableUnsupportedAlgorithms() { } } -export function getSafeTokenInfo(jwt) { +export function isString(value) { + return typeof value === 'string' || value instanceof String; +} + +function getBase64Format(token) { + if(jwt.isValidBase64String(token, true)) { + return 'base64url'; + } else if(jwt.isValidBase64String(token, false)) { + return 'base64'; + } else { + return 'invalid'; + } +} + +function getRegisteredClaims(payload) { + const result = []; + + registeredClaims.forEach(claim => { + if(claim in payload) { + result.push(claim); + } + }); + + return result; +} + +function getScopes(payload) { + if(!isString(payload.scope)) { + return []; + } + + const scopes = payload.scope.split(/\s+/).filter(scope => { + return scope.length > 0 && /\S+/.test(scope); + }); + + return scopes; +} + +function getNumberOfScopes(payload) { + return getScopes(payload).length; +} + +function getOIDCScopes(payload) { + const oidcScopes = ['openid', 'profile', 'email', + 'address', 'phone', 'offline_access']; + const scopes = getScopes(payload); + + return scopes.filter(scope => oidcScopes.indexOf(scope) !== -1); +} + +export function getSafeTokenInfo(token) { try { sha256.start(); - sha256.update(jwt); + sha256.update(token); const result = { hash: sha256.digest().toHex() }; try { - const decoded = jwt.decode(jwt); + const decoded = jwt.decode(token); - return Object.assign(result, { + const result = Object.assign(result, { decodedWithErrors: decoded.errors, + encodedSize: token.length, + base64Format: getBase64Format(token), header: { alg: decoded.header.alg, }, payload: { - // TODO + registeredClaimsPresent: getRegisteredClaims(decoded.payload), + oidcScopesPresent: getOIDCScopes(decoded.payload), + numberOfScopes: getNumberOfScopes(decoded.payload), + numberOfClaims: Object.keys(decoded.payload).length, + issuer: decoded.payload.iss ? decoded.payload.iss : null } }); + + if(decoded.payload.amr) { + result.payload.amr = decoded.payload.amr; + } + + return result; } catch(e) { return Object.assign(result, { error: 'error decoding token', From f2b841adaf052fb4c537211d61b1aaa77be86d24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Salgado=20Napolitano?= Date: Thu, 13 Sep 2018 12:32:26 +0200 Subject: [PATCH 255/611] Update 13-Rust.json https://github.com/Keats/jsonwebtoken#algorithms --- views/website/libraries/13-Rust.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/views/website/libraries/13-Rust.json b/views/website/libraries/13-Rust.json index ae500fe8..6b8a3c5b 100644 --- a/views/website/libraries/13-Rust.json +++ b/views/website/libraries/13-Rust.json @@ -47,9 +47,9 @@ "hs256": true, "hs384": true, "hs512": true, - "rs256": false, - "rs384": false, - "rs512": false, + "rs256": true, + "rs384": true, + "rs512": true, "es256": false, "es384": false, "es512": false @@ -89,4 +89,4 @@ "installCommandHtml": "Cargo.toml: biscuit = \"*\"" } ] -} \ No newline at end of file +} From 357517c9e9d3dba932e30cb3f189172ccce5e35d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Thu, 27 Sep 2018 23:29:47 -0300 Subject: [PATCH 256/611] Metrics appear to be working locally. --- package-lock.json | 117 +-------------------------- package.json | 1 - src/editor/index.js | 16 ++-- src/editor/utils.js | 22 +++-- src/metrics.js | 92 +++++++++++++++++++-- src/website/index.js | 4 +- src/website/libraries.js | 4 +- views/website/libraries/template.pug | 8 +- webpack.website-dev.js | 1 + webpack.website-prod.js | 1 + 10 files changed, 125 insertions(+), 141 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b9308db..f3d048f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "3.1.2", + "version": "3.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -668,16 +668,6 @@ } } }, - "@segment/loosely-validate-event": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", - "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==", - "dev": true, - "requires": { - "component-type": "^1.2.1", - "join-component": "^1.1.0" - } - }, "@sinonjs/formatio": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", @@ -1286,31 +1276,6 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, - "analytics-node": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/analytics-node/-/analytics-node-3.3.0.tgz", - "integrity": "sha512-wxrsmibvZVysy5CfkLItYrYMGbNVXDBccWurz+hgLUg98pbijiS2/QQdRc0SjHWVEqByxReEJ2T2MGhgb4jk3A==", - "dev": true, - "requires": { - "@segment/loosely-validate-event": "^2.0.0", - "axios": "^0.17.1", - "axios-retry": "^3.0.2", - "commander": "^2.9.0", - "lodash.isstring": "^4.0.1", - "md5": "^2.2.1", - "ms": "^2.0.0", - "remove-trailing-slash": "^0.1.0", - "uuid": "^3.2.1" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - } - } - }, "anchor-markdown-header": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", @@ -1900,25 +1865,6 @@ "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", "dev": true }, - "axios": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz", - "integrity": "sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=", - "dev": true, - "requires": { - "follow-redirects": "^1.2.5", - "is-buffer": "^1.1.5" - } - }, - "axios-retry": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.1.1.tgz", - "integrity": "sha512-BeNOxa/CBQQLa9gVuMta1oWIhbL6UETKBfAmFjOXwiBxgcmrDBVVwz/gKZTpzKJlVjmi5DeYC+lP5Ng7ssc1pg==", - "dev": true, - "requires": { - "is-retry-allowed": "^1.1.0" - } - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -2904,12 +2850,6 @@ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", - "dev": true - }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -3314,12 +3254,6 @@ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, - "component-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.1.tgz", - "integrity": "sha1-ikeQFwAjjk/DIml3EjAibyS0Fak=", - "dev": true - }, "compress-commons": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", @@ -3582,12 +3516,6 @@ "integrity": "sha1-fu7tnt3JXiLBiTguNGJARKiaWm0=", "dev": true }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", - "dev": true - }, "cryptiles": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", @@ -5424,26 +5352,6 @@ "readable-stream": "^2.0.4" } }, - "follow-redirects": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.7.tgz", - "integrity": "sha512-NONJVIFiX7Z8k2WxfqBjtwqMifx7X42ORLFrOZ2LTKGj71G3C0kfdyTqGqr8fx5zSX6Foo/D95dgGWbPUiwnew==", - "dev": true, - "requires": { - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -7705,12 +7613,6 @@ "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", "dev": true }, - "join-component": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz", - "integrity": "sha1-uEF7dQZho5K+4sJTfGiyqdSXfNU=", - "dev": true - }, "jquery": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", @@ -8351,17 +8253,6 @@ "outlayer": "^2.1.0" } }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", - "dev": true, - "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" - } - }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", @@ -10571,12 +10462,6 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, - "remove-trailing-slash": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.0.tgz", - "integrity": "sha1-FJjl3wmEwn5Jt26/Boh8otARUNI=", - "dev": true - }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", diff --git a/package.json b/package.json index ecaf575b..31724242 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,6 @@ "@babel/core": "^7.0.0-beta.36", "@babel/polyfill": "^7.0.0-beta.37", "@babel/preset-env": "^7.0.0-beta.36", - "analytics-node": "^3.3.0", "babel-loader": "^8.0.0-beta.0", "babel-plugin-transform-async-to-generator": "^6.24.1", "bootstrap": "^3.3.7", diff --git a/src/editor/index.js b/src/editor/index.js index b0a07be6..7dcaf544 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -48,13 +48,13 @@ import log from 'loglevel'; // passed to the event manager. const eventManager = new EventManager(); -function trackToken(jwt, operation) { +function trackToken(jwt, operation, extra) { const tokenInfo = getSafeTokenInfo(jwt); - metric.track('editor-jwt-tracked', { + metrics.track('editor-jwt-tracked', Object.assign({ operation: operation, tokenInfo: tokenInfo - }); + }, extra)); return tokenInfo.hash; } @@ -238,7 +238,9 @@ function encodeToken() { sign(header, payload, key, secretBase64Checkbox.checked).then(encoded => { eventManager.withDisabledEvents(() => { tokenEditor.setValue(encoded); - trackToken(encoded, 'encode'); + trackToken(encoded, 'encode', { + secretBase64Checkbox: secretBase64Checkbox.checked + }); }); }).catch(e => { eventManager.withDisabledEvents(() => { @@ -324,13 +326,15 @@ function verifyToken() { if(valid) { markAsValid(); metrics.track('editor-jwt-verified', { - tokenHash: tokenHash + tokenHash: tokenHash, + secretBase64Checkbox: secretBase64Checkbox.checked }); } else { markAsInvalid(); metrics.track('editor-jwt-invalid', { reason: 'invalid signature', - tokenHash: tokenHash + tokenHash: tokenHash, + secretBase64Checkbox: secretBase64Checkbox.checked }); } }); diff --git a/src/editor/utils.js b/src/editor/utils.js index 3474a3c6..558f378e 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -55,11 +55,21 @@ export function isString(value) { } function getBase64Format(token) { - if(jwt.isValidBase64String(token, true)) { - return 'base64url'; - } else if(jwt.isValidBase64String(token, false)) { - return 'base64'; - } else { + try { + function getFormat(str) { + if(jwt.isValidBase64String(str, true)) { + return 'base64url'; + } else if(jwt.isValidBase64String(str, false)) { + return 'base64'; + } else { + return 'invalid'; + } + } + + const formats = token.split('.').map(getFormat); + return formats.every(r => r === formats[0]) ? + formats[0] : 'invalid'; + } catch(e) { return 'invalid'; } } @@ -112,7 +122,7 @@ export function getSafeTokenInfo(token) { try { const decoded = jwt.decode(token); - const result = Object.assign(result, { + Object.assign(result, { decodedWithErrors: decoded.errors, encodedSize: token.length, base64Format: getBase64Format(token), diff --git a/src/metrics.js b/src/metrics.js index cd3852bb..3458aadc 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -1,16 +1,96 @@ -import Analytics from 'analytics-node'; import log from 'loglevel'; -let analytics; +export function init(apiKey) { + // Create a queue, but don't obliterate an existing one! + var analytics = window.analytics = window.analytics || []; -export function init(key) { - analytics = new Analytics(key); + // If the real analytics.js is already on the page return. + if (analytics.initialize) return; + + // If the snippet was invoked already show an error. + if (analytics.invoked) { + if (window.console && console.error) { + console.error('Segment snippet included twice.'); + } + return; + } + + // Invoked flag, to make sure the snippet + // is never invoked twice. + analytics.invoked = true; + + // A list of the methods in Analytics.js to stub. + analytics.methods = [ + 'trackSubmit', + 'trackClick', + 'trackLink', + 'trackForm', + 'pageview', + 'identify', + 'reset', + 'group', + 'track', + 'ready', + 'alias', + 'debug', + 'page', + 'once', + 'off', + 'on' + ]; + + // Define a factory to create stubs. These are placeholders + // for methods in Analytics.js so that you never have to wait + // for it to load to actually record data. The `method` is + // stored as the first argument, so we can replay the data. + analytics.factory = function(method){ + return function(){ + var args = Array.prototype.slice.call(arguments); + args.unshift(method); + analytics.push(args); + return analytics; + }; + }; + + // For each of our methods, generate a queueing stub. + for (var i = 0; i < analytics.methods.length; i++) { + var key = analytics.methods[i]; + analytics[key] = analytics.factory(key); + } + + // Define a method to load Analytics.js from our CDN, + // and that will be sure to only ever load it once. + analytics.load = function(key, options){ + // Create an async script element based on your key. + var script = document.createElement('script'); + script.type = 'text/javascript'; + script.async = true; + script.src = 'https://cdn.segment.com/analytics.js/v1/' + + key + '/analytics.min.js'; + + // Insert our script next to the first script element. + var first = document.getElementsByTagName('script')[0]; + first.parentNode.insertBefore(script, first); + analytics._loadOptions = options; + }; + + // Add a version to keep track of what's in the wild. + analytics.SNIPPET_VERSION = '4.1.0'; + + // Load Analytics.js with your key, which will automatically + // load the tools you've enabled for your account. Boosh! + analytics.load(apiKey); + + // Make the first page call to load the integrations. If + // you'd like to manually name or tag the page, edit or + // move this call however you'd like. + analytics.page(); } export function track(event, data) { - if(analytics) { + if(window.analytics) { try { - analytics.track(event, data); + window.analytics.track(event, data); } catch(e) { log.error(`Metrics library error for event ${event}: ${e}`); } diff --git a/src/website/index.js b/src/website/index.js index 9db3a0d8..10fdcaaa 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -65,7 +65,9 @@ function pickEbookOrExtensionBanner() { } function setupMetrics() { - metrics.init(PRODUCTION ? 'PROD-KEY' : 'DEV-KEY'); + metrics.init(PRODUCTION ? + '693wciz6BgZdlmW0qDlbgxpyj7gtVxRR' : + 'xBxBArADMejN3aqs9NhISky9PHPXIr80'); // Section visible metrics window.addEventListener('scroll', e => { diff --git a/src/website/libraries.js b/src/website/libraries.js index 5a9eb143..78865482 100644 --- a/src/website/libraries.js +++ b/src/website/libraries.js @@ -94,7 +94,9 @@ function setupMetrics() { const els = document.querySelectorAll(t.selector); Array.prototype.forEach.call(els, el => { el.addEventListener('click', () => { - metrics.track(t.event); + metrics.track(t.event, { + id: el.dataset.metricsLibId + }); }); }); }); diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index d107f11f..512a3b97 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -6,8 +6,8 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) if lib.minimumVersion .version p Minimum Version #{lib.minimumVersion} - a(href='https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/', target='_blank') - img(src='http://github.com/img/ico_question.svg') + a(href='https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/', target='_blank', data-metrics-lib-id=lib.repoUrl) + img(src='http://github.com/img/ico_question.svg') div(class={ 'panel-body': true, mversion: !!lib.minimumVersion }) .column p @@ -76,7 +76,7 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) .author-info .maintainer if lib.authorUrl - a(href=lib.authorUrl) + a(href=lib.authorUrl, data-metrics-lib-id=lib.repoUrl) i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') | #{lib.authorName} else @@ -87,7 +87,7 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) i.icon-budicon-466 .repository i.icon-1392070209-icon-social-github - a(href=lib.repoUrl) View Repo + a(href=lib.repoUrl, data-metrics-lib-id=lib.repoUrl) View Repo .panel-footer code !{lib.installCommandHtml} diff --git a/webpack.website-dev.js b/webpack.website-dev.js index 79d83343..027b3812 100644 --- a/webpack.website-dev.js +++ b/webpack.website-dev.js @@ -1,3 +1,4 @@ +const webpack = require('webpack'); const merge = require('webpack-merge'); const common = require('./webpack.common.js'); diff --git a/webpack.website-prod.js b/webpack.website-prod.js index 4dc6d8af..56e29043 100644 --- a/webpack.website-prod.js +++ b/webpack.website-prod.js @@ -1,3 +1,4 @@ +const webpack = require('webpack'); const merge = require('webpack-merge'); const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); From 163df07cb909d122358592cdf03801c951b1d562 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 28 Sep 2018 16:22:32 -0300 Subject: [PATCH 257/611] Fix introduction counter and add metrics to introduction. --- src/website/counter.js | 6 +++--- src/website/dom-elements-common.js | 2 ++ src/website/dom-elements.js | 7 ++----- src/website/highlighting.js | 2 +- src/website/index.js | 5 ++--- src/website/introduction/index.js | 7 +++++++ src/website/metrics-api-key.js | 3 +++ 7 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 src/website/dom-elements-common.js create mode 100644 src/website/metrics-api-key.js diff --git a/src/website/counter.js b/src/website/counter.js index 6ce1502f..7eabe894 100644 --- a/src/website/counter.js +++ b/src/website/counter.js @@ -1,4 +1,4 @@ -import { counterElement } from './dom-elements.js'; +import { counterElement } from './dom-elements-common.js'; import { isInViewport } from './utils.js'; import { httpGet } from '../utils.js'; @@ -25,7 +25,7 @@ const flipCounter = $(counterElement).FlipClock(initialCount, { }); function getLoginCount() { - return baselineCount + + return baselineCount + Math.round((new Date() - baselineDate) / 1000 * loginsPerSecond); } @@ -37,5 +37,5 @@ function updateCounter() { export function setupJwtCounter() { updateCounter(); - setInterval(updateCounter, intervalMs); + setInterval(updateCounter, intervalMs); } diff --git a/src/website/dom-elements-common.js b/src/website/dom-elements-common.js new file mode 100644 index 00000000..9c3abe51 --- /dev/null +++ b/src/website/dom-elements-common.js @@ -0,0 +1,2 @@ +export const codeElements = document.querySelectorAll('.plain-text pre code'); +export const counterElement = document.querySelector('.counter'); diff --git a/src/website/dom-elements.js b/src/website/dom-elements.js index 15092a82..b88923b3 100644 --- a/src/website/dom-elements.js +++ b/src/website/dom-elements.js @@ -1,9 +1,10 @@ export * from '../dom-elements.js'; +export * from './dom-elements-common.js'; export const navbarElement = document.querySelector('nav.navbar'); export const menuTriggerElement = document.querySelector('.menu-trigger'); export const menuLinks = document.querySelectorAll('.navbar .menu a'); -export const menuScrollableLinks = +export const menuScrollableLinks = navbarElement.querySelectorAll('a.scrollto'); export const sectionElements = document.getElementsByTagName('section'); @@ -16,8 +17,6 @@ export const extensionButtonText = extensionButton ? extensionButton.querySelector('.button-text') : undefined; -export const codeElements = document.querySelectorAll('.plain-text pre code'); - export const debuggerSection = document.getElementById('debugger-io'); export const shareJwtButton = document.querySelector('.website-share button'); @@ -26,5 +25,3 @@ export const shareJwtTextElement = shareJwtButton.querySelector('span'); export const starsElements = document.getElementsByClassName('stars'); export const librariesElement = document.querySelector('.libraries-sv'); export const librariesSelect = document.getElementById('libraries-select'); - -export const counterElement = document.querySelector('.counter'); diff --git a/src/website/highlighting.js b/src/website/highlighting.js index 0607cae8..86c93aee 100644 --- a/src/website/highlighting.js +++ b/src/website/highlighting.js @@ -1,4 +1,4 @@ -import { codeElements } from './dom-elements.js'; +import { codeElements } from './dom-elements-common.js'; import hljs from 'highlight.js/lib/highlight.js'; import jsHighlight from 'highlight.js/lib/languages/javascript'; diff --git a/src/website/index.js b/src/website/index.js index 10fdcaaa..b0a6f0ef 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -1,5 +1,6 @@ import '../google-analytics.js'; import * as metrics from '../metrics.js'; +import metricsApiKey from './metrics-api-key.js'; import { setupNavbar } from './navbar.js'; import { setupExtensionButton } from './extension.js'; import { setupLibraries } from './libraries.js'; @@ -65,9 +66,7 @@ function pickEbookOrExtensionBanner() { } function setupMetrics() { - metrics.init(PRODUCTION ? - '693wciz6BgZdlmW0qDlbgxpyj7gtVxRR' : - 'xBxBArADMejN3aqs9NhISky9PHPXIr80'); + metrics.init(metricsApiKey); // Section visible metrics window.addEventListener('scroll', e => { diff --git a/src/website/introduction/index.js b/src/website/introduction/index.js index 8b070141..850b7dc0 100644 --- a/src/website/introduction/index.js +++ b/src/website/introduction/index.js @@ -1,6 +1,13 @@ import { setupHighlighting } from '../highlighting.js'; import { setupJwtCounter } from '../counter.js'; +import * as metrics from '../../metrics.js'; +import metricsApiKey from '../metrics-api-key.js'; + +function setupMetrics() { + metrics.init(metricsApiKey); +} // Initialization +setupMetrics(); setupHighlighting(); setupJwtCounter(); diff --git a/src/website/metrics-api-key.js b/src/website/metrics-api-key.js new file mode 100644 index 00000000..dc718777 --- /dev/null +++ b/src/website/metrics-api-key.js @@ -0,0 +1,3 @@ +export default PRODUCTION ? + '693wciz6BgZdlmW0qDlbgxpyj7gtVxRR' : + 'xBxBArADMejN3aqs9NhISky9PHPXIr80'; From d394a053c6497a23a2b36d4f81b0541528b8db19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 28 Sep 2018 17:29:12 -0300 Subject: [PATCH 258/611] Fix metrics key selection. --- src/website/metrics-api-key.js | 4 +++- webpack.website-dev.js | 3 --- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/website/metrics-api-key.js b/src/website/metrics-api-key.js index dc718777..5d39d90f 100644 --- a/src/website/metrics-api-key.js +++ b/src/website/metrics-api-key.js @@ -1,3 +1,5 @@ -export default PRODUCTION ? +const key = (typeof PRODUCTION !== 'undefined') && PRODUCTION ? '693wciz6BgZdlmW0qDlbgxpyj7gtVxRR' : 'xBxBArADMejN3aqs9NhISky9PHPXIr80'; + +export default key; diff --git a/webpack.website-dev.js b/webpack.website-dev.js index 027b3812..9ad98951 100644 --- a/webpack.website-dev.js +++ b/webpack.website-dev.js @@ -14,8 +14,5 @@ module.exports = merge(common, { path: __dirname + '/dist/website/js' }, plugins: [ - new webpack.DefinePlugin({ - PRODUCTION: false - }) ] }); From dd63f0eab49c1baf44f514e4863499a34f2806ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Fri, 28 Sep 2018 18:00:21 -0300 Subject: [PATCH 259/611] Increse functional test timeouts (CI failing). --- test/functional/editor.js | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/test/functional/editor.js b/test/functional/editor.js index 32ed24bd..742f4a63 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -23,6 +23,8 @@ const typingDelay = 0; const tokenProcessingWait = 200; describe('Editor', function() { + this.timeout(50000); + before(utils.launchBrowser); after(utils.closeBrowser); @@ -437,7 +439,7 @@ describe('Editor', function() { for(const alg of algs) { it(alg.toUpperCase(), async function() { - this.timeout(20000); + //this.timeout(20000); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); @@ -478,7 +480,7 @@ describe('Editor', function() { describe('Encodes RS/ES/PS tokens', function() { describe('RS/PS', async function() { before(async function() { - this.timeout(30000); + //this.timeout(30000); await this.page.select('#algorithm-select', 'RS256'); @@ -505,7 +507,7 @@ describe('Editor', function() { for(const alg of algs) { it(alg.toUpperCase(), async function() { - this.timeout(30000); + //this.timeout(30000); await this.page.evaluate(token => { window.test.tokenEditor.setValue(token); @@ -561,7 +563,7 @@ describe('Editor', function() { describe('ES', async function() { before(async function() { - this.timeout(30000); + //this.timeout(30000); await this.page.select('#algorithm-select', 'ES256'); @@ -587,7 +589,7 @@ describe('Editor', function() { for(const alg of algs) { it(alg.toUpperCase(), async function() { - this.timeout(30000); + //this.timeout(30000); await this.page.evaluate(token => { window.test.tokenEditor.setValue(token); @@ -670,7 +672,7 @@ describe('Editor', function() { }); it('iss URL + .well-known', async function() { - this.timeout(20000); + //this.timeout(20000); const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); const token = await jose.JWS.createSign({ @@ -711,7 +713,7 @@ describe('Editor', function() { }); it('jku', async function() { - this.timeout(20000); + //this.timeout(20000); const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); const token = await jose.JWS.createSign({ @@ -752,7 +754,7 @@ describe('Editor', function() { }); it('x5c', async function() { - this.timeout(35000); + //this.timeout(35000); const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); const token = await jose.JWS.createSign({ @@ -861,7 +863,7 @@ describe('Editor', function() { }); it('Marks token as invalid when there is no public key', async function() { - this.timeout(20000); + //this.timeout(20000); await this.page.select('#algorithm-select', 'RS256'); @@ -910,7 +912,7 @@ describe('Editor', function() { }); it('Marks token as invalid when the public key is wrong', async function() { - this.timeout(20000); + //this.timeout(20000); await this.page.select('#algorithm-select', 'RS256'); @@ -959,7 +961,7 @@ describe('Editor', function() { it('Marks token as valid when the public key is OK and private ' + 'key is wrong', async function() { - this.timeout(30000); + //this.timeout(30000); await this.page.select('#algorithm-select', 'RS256'); @@ -1005,7 +1007,7 @@ describe('Editor', function() { it('Marks token as valid when the public key is OK and private ' + 'key is missing', async function() { - this.timeout(30000); + //this.timeout(30000); await this.page.select('#algorithm-select', 'RS256'); @@ -1066,7 +1068,7 @@ describe('Editor', function() { }); it('Marks token as invalid when "alg" is "none"', async function() { - this.timeout(20000); + //this.timeout(20000); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); @@ -1172,7 +1174,7 @@ describe('Editor', function() { it('Copies an RSA token to the clipboard (with public-key)', async function() { - this.timeout(30000); + //this.timeout(30000); await this.page.select('#algorithm-select', 'RS256'); @@ -1253,7 +1255,7 @@ describe('Editor', function() { `/?foo=bar&${key}=${token}`, `/#foo=bar&${key}=${token}` ].forEach((searchStr, i) => { - this.timeout(20000); + //this.timeout(20000); it(`Should parse ${key} from window.location.href [${i}]`, async function () { @@ -1272,7 +1274,7 @@ describe('Editor', function() { }); it('Parses shared token', async function() { - this.timeout(20000); + //this.timeout(20000); const page = await this.browser.newPage(); From 6a0315c7b6774ffa6d959a8bc4af125348bc2940 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 1 Oct 2018 16:30:21 -0300 Subject: [PATCH 260/611] Deployment test --- .deployment-trigger | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.deployment-trigger b/.deployment-trigger index 931443ae..e6111d83 100644 --- a/.deployment-trigger +++ b/.deployment-trigger @@ -1 +1 @@ -This file is used to trigger running of CI in case of timeouts. We should fix this someday. +This file is used to trigger running of CI in case of timeouts. We should fix this someday From 74b3f8454cc8bdf372ad8fc6082127c4807ec670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 1 Oct 2018 16:37:19 -0300 Subject: [PATCH 261/611] Set node version. --- package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package.json b/package.json index 31724242..2f287bfc 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,10 @@ "express-sslify": "^1.2.0", "querystring": "^0.2.0" }, + "devEngines": { + "node": "^10.11.0", + "npm": "^6.4.1" + }, "devDependencies": { "@babel/core": "^7.0.0-beta.36", "@babel/polyfill": "^7.0.0-beta.37", From e492206136820e567f224325558d618cb585babf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Mon, 1 Oct 2018 16:39:32 -0300 Subject: [PATCH 262/611] Use LTS version of node --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2f287bfc..009ec6d9 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "querystring": "^0.2.0" }, "devEngines": { - "node": "^10.11.0", + "node": "^8.12.0", "npm": "^6.4.1" }, "devDependencies": { From 312bc909b6033ff08c3dd30d9003dd8e566164e2 Mon Sep 17 00:00:00 2001 From: Daniel DeGroff Date: Wed, 17 Oct 2018 18:58:29 -0600 Subject: [PATCH 263/611] prime-jwt --> fusionauth-jwt Repo moved for prime-jwt and was renamed to fusionauth-jwt --- views/website/libraries/3-Java.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index 8ec4bc09..f67af9ca 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -138,11 +138,11 @@ "es384": false, "es512": false }, - "authorUrl": "https://github.com/inversoft", - "authorName": "Inversoft", - "gitHubRepoPath": "inversoft/prime-jwt", - "repoUrl": "https://github.com/inversoft/prime-jwt", - "installCommandHtml": "maven: com.inversoft / prime-jwt / 1.3.1" + "authorUrl": "https://github.com/fusionauth", + "authorName": "FusionAuth", + "gitHubRepoPath": "fusionauth/fusionauth-jwt", + "repoUrl": "https://github.com/fusionauth/fusionauth-jwt", + "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 2.1.0" }, { "minimumVersion": null, From 991f51078c3e81782770251e254f74f4fcc577ec Mon Sep 17 00:00:00 2001 From: Nick Loadholtes Date: Mon, 22 Oct 2018 16:40:23 -0400 Subject: [PATCH 264/611] Update for clojure I added support for the subject with this PR: https://github.com/funcool/buddy-sign/pull/72 Also, I noticed the version number was pretty far behind the current tag/version for the repo so I have updated that also. --- views/website/libraries/17-Clojure.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/17-Clojure.json b/views/website/libraries/17-Clojure.json index c330e309..5acdb6e5 100644 --- a/views/website/libraries/17-Clojure.json +++ b/views/website/libraries/17-Clojure.json @@ -10,7 +10,7 @@ "sign": true, "verify": true, "iss": true, - "sub": false, + "sub": true, "aud": true, "exp": true, "nbf": true, @@ -30,7 +30,7 @@ "authorName": "Andrey Antukh", "gitHubRepoPath": "funcool/buddy", "repoUrl": "https://github.com/funcool/buddy/", - "installCommandHtml": "lein: [funcool/buddy \"0.6.0\"]" + "installCommandHtml": "lein: [funcool/buddy \"2.0.0\"]" } ] -} \ No newline at end of file +} From 699979e1af4a9074afe7e2cd0f5e12d67ad13c24 Mon Sep 17 00:00:00 2001 From: Nick Loadholtes Date: Mon, 22 Oct 2018 16:52:07 -0400 Subject: [PATCH 265/611] Quick typo fix --- views/extension/index.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/extension/index.pug b/views/extension/index.pug index e09012eb..28c92576 100644 --- a/views/extension/index.pug +++ b/views/extension/index.pug @@ -40,7 +40,7 @@ block content | Supported by   img(src="http://github.com/img/ico_logo.svg") a  -  - a.keep-deco(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/blob/master/LICENSE.txt', target="_blank") Licence + a.keep-deco(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/blob/master/LICENSE.txt', target="_blank") License .pull-right.save-back.hide a#save-back-link(href="#") Save back to localStorage From 4383c4c3c43cae804bf20553c7a94092823534ca Mon Sep 17 00:00:00 2001 From: Nick Loadholtes Date: Mon, 22 Oct 2018 16:55:00 -0400 Subject: [PATCH 266/611] Update layout.pug Quick Typo fix --- views/website/layout.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/layout.pug b/views/website/layout.pug index d9750d99..6753c072 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -63,7 +63,7 @@ html(lang='en') span Missing something? a(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/tree/master/views', target="_blank") Send a Pull Request a(style='text-decoration: none') - - a(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/blob/master/LICENSE.txt', target="_blank") Licence + a(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/blob/master/LICENSE.txt', target="_blank") License .column.social-counter a.twitter-follow-button(href='https://twitter.com/auth0', data-show-count='true') Follow @auth0 From 7bd1c806c628a9ac694115d10ec8c106f7710116 Mon Sep 17 00:00:00 2001 From: Sambego Date: Sat, 10 Nov 2018 06:51:12 -0800 Subject: [PATCH 267/611] Add disclaimer warning above the debugger --- stylus/website/index.styl | 32 ++++++++++++++++++++------------ views/website/libraries.pug | 12 ++++++------ views/website/token-editor.pug | 4 ++++ 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 37094a1b..61a451b4 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -660,23 +660,12 @@ body margin-left 10px .warning - background-color #FFFCD2 - font-size 11px - color #4A4A4A - text-align center - padding 10px margin 0 -15px + border-radius 0 line-height 1.8 - color: darken(#FFFCD2, 80%) +breakpoint("tablet") - font-size 14px margin 0 0 30px border-radius 3px - padding 20px 0 - a - color: darken(#FFFCD2, 80%) - font-weight bold - margin-left 5px svg height: 14px; width: 14px; @@ -1163,3 +1152,22 @@ footer .social-counter +breakpoint("tablet") text-align right + +.warning + display block + width 100% + padding 15px + margin 0 0 40px 0 + background #fff7c9 + border-radius 3px + font-size 14px + color #786600 + line-height 2 + + a + border-bottom 1px solid rgba(120,102,0,.4) + color #786600 + text-decoration none + + &:hover + opacity .7 diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 3fc76acf..dda33d78 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -9,21 +9,21 @@ section#libraries-io.libraries-jwt select#libraries-select option(value='*', selected='') All // Languages must be in alphabetic order - - - const sortedLangs = Array.from(languages); + - + const sortedLangs = Array.from(languages); sortedLangs.sort((a, b) => a.name.localeCompare(b.name)); each lang in sortedLangs option(value=`.${lang.uniqueClass}`) #{lang.name} .warning b Warning: - | Critical vulnerabilities in JSON Web Token libraries with asymmetric keys. + | Critical vulnerabilities in JSON Web Token libraries with asymmetric keys. a(href='https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/') | Learn more - svg(height='48', viewbox='0 0 48 48', width='48', xmlns='http://www.w3.org/2000/svg') - path(d='M-838-2232H562v3600H-838z', fill='none') - path(d='M16 10v28l22-14z') + svg(height='48', viewbox='0 0 48 48', width='48', xmlns='http://www.w3.org/2000/svg') + path(d='M-838-2232H562v3600H-838z', fill='none') + path(d='M16 10v28l22-14z') .libraries-sv(data-accordion-group) each lang in languages diff --git a/views/website/token-editor.pug b/views/website/token-editor.pug index 7fac2c59..76e5aef0 100644 --- a/views/website/token-editor.pug +++ b/views/website/token-editor.pug @@ -4,6 +4,10 @@ section#debugger-io.debugger-jwt h1 Debugger .jwt-playground + .warning + strong Warning: + | JWTs are credentials, which can grant access to resources. Be careful where you paste them! We do not record tokens, all validation and debugging is done on the client side. + .selections .algorithm span Algorithm From ea0ad57d91d9bece535dd1bbc6d2cfaa3b3d3bb9 Mon Sep 17 00:00:00 2001 From: Nathaniel Fischer Date: Sun, 11 Nov 2018 10:39:18 -0800 Subject: [PATCH 268/611] Added blackdoor jose scala library --- views/website/libraries/15-Scala.json | 30 ++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/15-Scala.json b/views/website/libraries/15-Scala.json index f5e157fe..4724b4b1 100644 --- a/views/website/libraries/15-Scala.json +++ b/views/website/libraries/15-Scala.json @@ -115,6 +115,34 @@ "gitHubRepoPath": "janjaali/spray-jwt", "repoUrl": "https://github.com/janjaali/spray-jwt", "installCommandHtml": "libraryDependencies += \"com.github.janjaali\" %% \"spray-jwt\" % \"1.0.0\"" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": false, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": true, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/blackdoor", + "authorName": "blackdoor software", + "gitHubRepoPath": "blackdoor/jose", + "repoUrl": "https://github.com/blackdoor/jose", + "installCommandHtml": "dependsOn(RootProject(uri(\"git://github.com/blackdoor/jose.git#0.1.0\")))" } ] -} \ No newline at end of file +} From 63dea2b73e1d87c6b8a4a3bf6c6ce96c05f79b23 Mon Sep 17 00:00:00 2001 From: Ian Partridge Date: Fri, 30 Nov 2018 21:32:40 +0000 Subject: [PATCH 269/611] vapor/jwt does not support ECDSA --- views/website/libraries/19-Swift.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/views/website/libraries/19-Swift.json b/views/website/libraries/19-Swift.json index e41a0a47..9bc6ad8d 100644 --- a/views/website/libraries/19-Swift.json +++ b/views/website/libraries/19-Swift.json @@ -50,9 +50,9 @@ "rs256": true, "rs384": true, "rs512": true, - "es256": true, - "es384": true, - "es512": true + "es256": false, + "es384": false, + "es512": false }, "authorUrl": "https://github.com/siemensikkema", "authorName": "Siemen Sikkema", @@ -117,4 +117,4 @@ "installCommandHtml": ".package(url:\"https://github.com/IBM-Swift/Swift-JWT/", from: \"1.0.0\")" } ] -} \ No newline at end of file +} From 1e07f15aba2be027a7eadf6b491505a9757c3b4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20E=2E=20Peyrott?= Date: Wed, 12 Dec 2018 21:42:54 -0300 Subject: [PATCH 270/611] Update Puppeteer to fix bug in tests. --- package-lock.json | 84 ++++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 54 insertions(+), 32 deletions(-) diff --git a/package-lock.json b/package-lock.json index f3d048f9..4b0c7aa6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5049,24 +5049,27 @@ } }, "extract-zip": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", - "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", "dev": true, "requires": { - "concat-stream": "1.6.0", + "concat-stream": "1.6.2", "debug": "2.6.9", - "mkdirp": "0.5.0", + "mkdirp": "0.5.1", "yauzl": "2.4.1" }, "dependencies": { - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "minimist": "0.0.8" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } } } @@ -9992,21 +9995,48 @@ "dev": true }, "puppeteer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.1.1.tgz", - "integrity": "sha1-rb8l5J9e8DRDwQq44JqVTKDHv+4=", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.11.0.tgz", + "integrity": "sha512-iG4iMOHixc2EpzqRV+pv7o3GgmU2dNYEMkvKwSaQO/vMZURakwSOn/EYJ6OIRFYOque1qorzIBvrytPIQB3YzQ==", "dev": true, "requires": { - "debug": "^2.6.8", - "extract-zip": "^1.6.5", - "https-proxy-agent": "^2.1.0", - "mime": "^1.3.4", - "progress": "^2.0.0", + "debug": "^4.1.0", + "extract-zip": "^1.6.6", + "https-proxy-agent": "^2.2.1", + "mime": "^2.0.3", + "progress": "^2.0.1", "proxy-from-env": "^1.0.0", "rimraf": "^2.6.1", - "ws": "^3.0.0" + "ws": "^6.1.0" }, "dependencies": { + "debug": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "mime": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -12424,12 +12454,6 @@ } } }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "dev": true - }, "undefsafe": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", @@ -13605,14 +13629,12 @@ } }, "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz", + "integrity": "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "async-limiter": "~1.0.0" } }, "xdg-basedir": { diff --git a/package.json b/package.json index 009ec6d9..a1b0c289 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "node-jose": "^1.0.0", "promise.any": "^0.1.1", "pug": "^2.0.0-rc.4", - "puppeteer": "^1.0.0", + "puppeteer": "^1.11.0", "request-promise-native": "^1.0.5", "sinon": "^4.2.2", "sinon-chai": "^2.14.0", From def94f905a9751890430cacaf4fc7be36141c787 Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Wed, 19 Dec 2018 16:48:01 +0000 Subject: [PATCH 271/611] Change wrong/confusing wording in the introduction --- views/website/md/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/md/introduction.md b/views/website/md/introduction.md index dda87a91..c1fd799f 100755 --- a/views/website/md/introduction.md +++ b/views/website/md/introduction.md @@ -27,7 +27,7 @@ Let's break down the different parts. ### Header -The header *typically* consists of two parts: the type of the token, which is JWT, and the hashing algorithm being used, such as HMAC SHA256 or RSA. +The header *typically* consists of two parts: the type of the token, which is JWT, and the signing algorithm being used, such as HMAC SHA256 or RSA. For example: From 1b893d38d58128ee95ec6673fc562f45a567f841 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 20 Dec 2018 13:36:34 +0200 Subject: [PATCH 272/611] Increase test timeout for token processing --- test/functional/editor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/functional/editor.js b/test/functional/editor.js index 742f4a63..2f9dcede 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -20,10 +20,10 @@ chai.use(chaiArrays); const expect = chai.expect; const typingDelay = 0; -const tokenProcessingWait = 200; +const tokenProcessingWait = 300; describe('Editor', function() { - this.timeout(50000); + this.timeout(75000); before(utils.launchBrowser); From cdeb51ba003041934f248255735d02349d55f3dd Mon Sep 17 00:00:00 2001 From: Milad Rahimi Date: Fri, 4 Jan 2019 22:14:03 +0330 Subject: [PATCH 273/611] Add miladrahimi/php-jwt to the library list --- views/website/libraries/24-PHP.json | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index cda695ea..bdaf91f1 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -283,6 +283,34 @@ "gitHubRepoPath": "adhocore/jwt", "repoUrl": "https://github.com/adhocore/jwt", "installCommandHtml": "composer require adhocore/jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/miladrahimi", + "authorName": "Milad Rahimi", + "gitHubRepoPath": "miladrahimi/php-jwt", + "repoUrl": "https://github.com/miladrahimi/php-jwt", + "installCommandHtml": "composer require miladrahimi/php-jwt" } ] } From 01e4a723c80430f719ca5a0cd3be91214dcc7655 Mon Sep 17 00:00:00 2001 From: Daniel DeGroff Date: Fri, 11 Jan 2019 22:52:25 -0700 Subject: [PATCH 274/611] update fusionauth-jwt to 3.0.0 Update fusionauth-jwt to 3.0.0 and update supported features. --- views/website/libraries/3-Java.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index f67af9ca..97261b50 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -127,22 +127,22 @@ "exp": true, "nbf": true, "iat": true, - "jti": false, + "jti": true, "hs256": true, "hs384": true, "hs512": true, "rs256": true, "rs384": true, "rs512": true, - "es256": false, - "es384": false, - "es512": false + "es256": true, + "es384": true, + "es512": true }, "authorUrl": "https://github.com/fusionauth", "authorName": "FusionAuth", "gitHubRepoPath": "fusionauth/fusionauth-jwt", "repoUrl": "https://github.com/fusionauth/fusionauth-jwt", - "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 2.1.0" + "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 3.0.0" }, { "minimumVersion": null, From 016caf7f12f8b92a66e301394559f247be494fa5 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 14 Jan 2019 14:38:13 +0100 Subject: [PATCH 275/611] Show support for the RSA-PSS signing algorithm --- stylus/website/index.styl | 26 +++++++++++++++++++++++--- views/website/libraries/0-.NET.json | 21 ++++++++++++++------- views/website/libraries/template.pug | 9 +++++++++ 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 61a451b4..f3942003 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -579,7 +579,7 @@ body textarea width 100% max-width 266px - resize none + resize none input[type="checkbox"] margin-right 5px position relative @@ -612,7 +612,7 @@ body .debugger-footer font-size 30px .website-validation - padding-left 0 + padding-left 0 .website-share padding-right 0 button @@ -621,7 +621,7 @@ body color white; font-weight 400; border-color #00b9f1; - + // libraries-jwt @@ -1171,3 +1171,23 @@ footer &:hover opacity .7 + +.icon-unknown { + display: inline-block; + width: 19px; + height: 19px; + margin-top: -2px; + border: 1px solid #000; + border-radius: 50%; + text-align: center; + line-height: 13px; + font-style: normal; +} +.icon-unknown::after { + content: '?'; + font-size: 14px; + line-height: 1; + padding: 0; + margin: 0; + display: inline; +} diff --git a/views/website/libraries/0-.NET.json b/views/website/libraries/0-.NET.json index 2427e487..a7e13f43 100644 --- a/views/website/libraries/0-.NET.json +++ b/views/website/libraries/0-.NET.json @@ -24,13 +24,18 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": false }, "authorUrl": "https://www.microsoft.com/", "authorName": "Microsoft", - "gitHubRepoPath": "AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet", - "repoUrl": "https://github.com/MSOpenTech/azure-activedirectory-identitymodel-extensions-for-dotnet", - "installCommandHtml": "Install-Package
    System.IdentityModel.Tokens.Jwt" + "gitHubRepoPath": + "AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet", + "repoUrl": + "https://github.com/MSOpenTech/azure-activedirectory-identitymodel-extensions-for-dotnet", + "installCommandHtml": + "Install-Package
    System.IdentityModel.Tokens.Jwt" }, { "minimumVersion": null, @@ -58,7 +63,8 @@ "authorName": "DV", "gitHubRepoPath": "dvsekhvalnov/jose-jwt", "repoUrl": "https://github.com/dvsekhvalnov/jose-jwt", - "installCommandHtml": "Install-Package
    jose-jwt" + "installCommandHtml": + "Install-Package
    jose-jwt" }, { "minimumVersion": null, @@ -86,7 +92,8 @@ "authorName": "DV", "gitHubRepoPath": "dvsekhvalnov/jose-rt", "repoUrl": "https://github.com/dvsekhvalnov/jose-rt", - "installCommandHtml": "Install-Package
    jose-rt" + "installCommandHtml": + "Install-Package
    jose-rt" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index 512a3b97..9c4fe215 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -72,6 +72,15 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) p i(class=lib.support.es512 ? 'icon-budicon-500' : 'icon-budicon-501') | ES512 + p + i(class=lib.support.ps256 ? 'icon-budicon-500' : (lib.support.ps256 !== undefined ? 'icon-budicon-501' : 'icon-unknown')) + | PS256 + p + i(class=lib.support.ps384 ? 'icon-budicon-500' : (lib.support.ps384 !== undefined ? 'icon-budicon-501' : 'icon-unknown')) + | PS384 + p + i(class=lib.support.ps512 ? 'icon-budicon-500' : (lib.support.ps512 !== undefined ? 'icon-budicon-501' : 'icon-unknown')) + | PS512 .author-info .maintainer From 1798b95e0eb1578c8a0faae0e70cf2320299e5e1 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 14 Jan 2019 14:39:57 +0100 Subject: [PATCH 276/611] Revert test data --- views/website/libraries/0-.NET.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/views/website/libraries/0-.NET.json b/views/website/libraries/0-.NET.json index a7e13f43..d07e0a7c 100644 --- a/views/website/libraries/0-.NET.json +++ b/views/website/libraries/0-.NET.json @@ -24,9 +24,7 @@ "rs512": true, "es256": true, "es384": true, - "es512": true, - "ps256": true, - "ps384": false + "es512": true }, "authorUrl": "https://www.microsoft.com/", "authorName": "Microsoft", From cd9010c6948010bda73156f7caababd55de5427e Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 14 Jan 2019 14:46:24 +0100 Subject: [PATCH 277/611] Update readme to include the RSA-PPS alg --- README.md | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c7471c70..86b5919f 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ [![Build Status](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io.png?branch=master)](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io) ### How to add a library + To add a library, simply edit the right JSON file located at `views/website/libraries`. Each language gets its own file. Multiple libraries share the same language file. To add a new language, simply add a JSON file in the same folder as the others. It will get automatically recognized. If you add a new language, you will need to provide a proper icon for it and place it in the `img` folder. @@ -19,15 +20,15 @@ Here's a commented example of the .NET language file (`0-.NET.json`). All fields // Unique identifier that will be used as a CSS class // for this language (only valid CSS class names). "uniqueClass": "net", - + // The language icon, SVG format preferred, should be placed // in /img directory. "image": "/img/1.svg", - + // The color of header that displays the name of the language // and the icon. This is a valid CSS color definition. "bgColor": "rgb(42, 168, 229)", - + // An array of libraries for this language. "libs": [ { @@ -35,7 +36,7 @@ Here's a commented example of the .NET language file (`0-.NET.json`). All fields // minimum version in which the vuln was fixed must be // listed here. Optional (can be null). "minimumVersion": "1.0.1", // or null - + // Supported features, true for supported, // false for not supported. "support": { @@ -56,23 +57,26 @@ Here's a commented example of the .NET language file (`0-.NET.json`). All fields "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, - + // Author URL, can be GitHub profile, personal page // company page, etc. Can be null. "authorUrl": "https://www.microsoft.com/", // or null - + // Author name. "authorName": "Microsoft", - + // For the star count, this is the GitHub repository path, // (usually user/repo). Can be null (no star count shown). "gitHubRepoPath": "AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet", // or null - + // URL for source code. "repoUrl": "https://github.com/MSOpenTech/azure-activedirectory-identitymodel-extensions-for-dotnet", - + // Install command, can be HTML or plain text. "installCommandHtml": "Install-Package
    System.IdentityModel.Tokens.Jwt" } From 079a090c78412526dceff343f39c0272bee11c39 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 14 Jan 2019 16:55:57 +0100 Subject: [PATCH 278/611] Update RSA-PSS library support --- views/website/libraries/0-.NET.json | 10 +++- views/website/libraries/1-Python.json | 12 +++-- views/website/libraries/10-Groovy.json | 10 ++-- views/website/libraries/11-Haskell.json | 12 +++-- views/website/libraries/12-Haxe.json | 7 ++- views/website/libraries/13-Rust.json | 15 ++++-- views/website/libraries/14-Lua.json | 10 ++-- views/website/libraries/15-Scala.json | 37 ++++++++++---- views/website/libraries/16-D.json | 12 +++-- views/website/libraries/17-Clojure.json | 5 +- views/website/libraries/18-Objective-C.json | 5 +- views/website/libraries/19-Swift.json | 32 +++++++++---- views/website/libraries/2-Node.js.json | 5 +- views/website/libraries/20-C.json | 12 +++-- views/website/libraries/21-C++.json | 17 +++++-- views/website/libraries/22-kdb+_Q.json | 7 ++- views/website/libraries/23-Delphi.json | 15 ++++-- views/website/libraries/24-PHP.json | 45 +++++++++++++---- views/website/libraries/25-Crystal.json | 10 ++-- views/website/libraries/26-1C.json | 7 ++- views/website/libraries/27-PostgreSQL.json | 7 ++- views/website/libraries/3-Java.json | 25 ++++++++-- views/website/libraries/4-JavaScript.json | 10 +++- views/website/libraries/5-Perl.json | 7 ++- views/website/libraries/6-Ruby.json | 17 +++++-- views/website/libraries/7-Elixir.json | 13 +++-- views/website/libraries/8-Erlang.json | 5 +- views/website/libraries/9-Go.json | 53 ++++++++++++++++----- 28 files changed, 322 insertions(+), 100 deletions(-) diff --git a/views/website/libraries/0-.NET.json b/views/website/libraries/0-.NET.json index d07e0a7c..6135c3bd 100644 --- a/views/website/libraries/0-.NET.json +++ b/views/website/libraries/0-.NET.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://www.microsoft.com/", "authorName": "Microsoft", @@ -55,7 +58,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/dvsekhvalnov/jose-jwt", "authorName": "DV", diff --git a/views/website/libraries/1-Python.json b/views/website/libraries/1-Python.json index ddb6003c..da1a1c2d 100644 --- a/views/website/libraries/1-Python.json +++ b/views/website/libraries/1-Python.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/jpadilla", "authorName": "José Padilla", @@ -52,7 +55,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/mpdavis", "authorName": "Michael Davis", @@ -117,4 +123,4 @@ "installCommandHtml": "pip install authlib" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/10-Groovy.json b/views/website/libraries/10-Groovy.json index 9d72d88c..97bb548b 100644 --- a/views/website/libraries/10-Groovy.json +++ b/views/website/libraries/10-Groovy.json @@ -24,13 +24,17 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/kaleidos", "authorName": "Kaleidos", "gitHubRepoPath": "kaleidos/grails-security-stateless", "repoUrl": "https://github.com/kaleidos/grails-security-stateless", - "installCommandHtml": "compile \"org.grails.plugins:security-stateless:0.0.9\"" + "installCommandHtml": + "compile \"org.grails.plugins:security-stateless:0.0.9\"" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/11-Haskell.json b/views/website/libraries/11-Haskell.json index bf1aa1c1..673889ba 100644 --- a/views/website/libraries/11-Haskell.json +++ b/views/website/libraries/11-Haskell.json @@ -24,7 +24,10 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://bitbucket.org/ssaasen", "authorName": "Stefan Saasen", @@ -52,7 +55,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/frasertweedale", "authorName": "Fraser Tweedale", @@ -61,4 +67,4 @@ "installCommandHtml": "cabal install jose" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/12-Haxe.json b/views/website/libraries/12-Haxe.json index 11816a1e..33011cb2 100644 --- a/views/website/libraries/12-Haxe.json +++ b/views/website/libraries/12-Haxe.json @@ -24,7 +24,10 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/kevinresol", "authorName": "Kevin Leung", @@ -33,4 +36,4 @@ "installCommandHtml": "haxelib install jsonwebtoken" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/13-Rust.json b/views/website/libraries/13-Rust.json index 6b8a3c5b..463ee618 100644 --- a/views/website/libraries/13-Rust.json +++ b/views/website/libraries/13-Rust.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/GildedHonour", "authorName": "GildedHonour", @@ -52,7 +55,10 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/Keats", "authorName": "Keats", @@ -80,7 +86,10 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/lawliet89", "authorName": "Yong Wen Chua", diff --git a/views/website/libraries/14-Lua.json b/views/website/libraries/14-Lua.json index bd8bd3e8..79d0c3b0 100644 --- a/views/website/libraries/14-Lua.json +++ b/views/website/libraries/14-Lua.json @@ -24,13 +24,17 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/SkyLothar", "authorName": "SkyLothar", "gitHubRepoPath": "SkyLothar/lua-resty-jwt", "repoUrl": "https://github.com/SkyLothar/lua-resty-jwt", - "installCommandHtml": "git clone https://github.com/SkyLothar/lua-resty-jwt.git" + "installCommandHtml": + "git clone https://github.com/SkyLothar/lua-resty-jwt.git" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/15-Scala.json b/views/website/libraries/15-Scala.json index 4724b4b1..92234e44 100644 --- a/views/website/libraries/15-Scala.json +++ b/views/website/libraries/15-Scala.json @@ -24,13 +24,17 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/jasongoodwin", "authorName": "jasongoodwin", "gitHubRepoPath": "jasongoodwin/authentikat-jwt", "repoUrl": "https://github.com/jasongoodwin/authentikat-jwt", - "installCommandHtml": "sbt: \"com.jason-goodwin\" %% \"authentikat-jwt\" % \"0.4.5\"" + "installCommandHtml": + "sbt: \"com.jason-goodwin\" %% \"authentikat-jwt\" % \"0.4.5\"" }, { "minimumVersion": null, @@ -52,7 +56,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/pauldijou", "authorName": "pauldijou", @@ -80,13 +87,17 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/iain-logan", "authorName": "iain-logan", "gitHubRepoPath": "iain-logan/jwt", "repoUrl": "https://github.com/iain-logan/jwt", - "installCommandHtml": "libraryDependencies += \"io.igl\" %% \"jwt\" % \"1.2.2\"" + "installCommandHtml": + "libraryDependencies += \"io.igl\" %% \"jwt\" % \"1.2.2\"" }, { "minimumVersion": null, @@ -108,13 +119,17 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/janjaali", "authorName": "janjaali", "gitHubRepoPath": "janjaali/spray-jwt", "repoUrl": "https://github.com/janjaali/spray-jwt", - "installCommandHtml": "libraryDependencies += \"com.github.janjaali\" %% \"spray-jwt\" % \"1.0.0\"" + "installCommandHtml": + "libraryDependencies += \"com.github.janjaali\" %% \"spray-jwt\" % \"1.0.0\"" }, { "minimumVersion": null, @@ -136,13 +151,17 @@ "rs512": false, "es256": true, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/blackdoor", "authorName": "blackdoor software", "gitHubRepoPath": "blackdoor/jose", "repoUrl": "https://github.com/blackdoor/jose", - "installCommandHtml": "dependsOn(RootProject(uri(\"git://github.com/blackdoor/jose.git#0.1.0\")))" + "installCommandHtml": + "dependsOn(RootProject(uri(\"git://github.com/blackdoor/jose.git#0.1.0\")))" } ] } diff --git a/views/website/libraries/16-D.json b/views/website/libraries/16-D.json index e94f208d..bf8534f8 100644 --- a/views/website/libraries/16-D.json +++ b/views/website/libraries/16-D.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/olehlong", "authorName": "olehlong", @@ -52,7 +55,10 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/zolamk", "authorName": "zolamk", @@ -61,4 +67,4 @@ "installCommandHtml": "dub fetch jwt" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/17-Clojure.json b/views/website/libraries/17-Clojure.json index 5acdb6e5..cf7314fd 100644 --- a/views/website/libraries/17-Clojure.json +++ b/views/website/libraries/17-Clojure.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/niwinz", "authorName": "Andrey Antukh", diff --git a/views/website/libraries/18-Objective-C.json b/views/website/libraries/18-Objective-C.json index 5b6def1c..d60a9717 100644 --- a/views/website/libraries/18-Objective-C.json +++ b/views/website/libraries/18-Objective-C.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": null, "authorName": "yourkarma & lolgear", diff --git a/views/website/libraries/19-Swift.json b/views/website/libraries/19-Swift.json index 9bc6ad8d..eaee3b08 100644 --- a/views/website/libraries/19-Swift.json +++ b/views/website/libraries/19-Swift.json @@ -24,7 +24,10 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/kylef", "authorName": "Kyle Fuller", @@ -52,13 +55,17 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/siemensikkema", "authorName": "Siemen Sikkema", "gitHubRepoPath": "vapor/jwt", "repoUrl": "https://github.com/vapor/jwt", - "installCommandHtml": ".Package(url:\"https://github.com/vapor/jwt.git/", majorVersion: 1)" + "installCommandHtml": + ".Package(url:\"https://github.com/vapor/jwt.git/", majorVersion: 1)" }, { "minimumVersion": null, @@ -80,7 +87,10 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/Wstunes", "authorName": "Wstunes", @@ -100,21 +110,25 @@ "nbf": true, "iat": true, "jti": true, - "hs256": false, - "hs384": false, - "hs512": false, + "hs256": true, + "hs384": true, + "hs512": true, "rs256": true, "rs384": true, "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/IBM-Swift", "authorName": "IBM Swift", "gitHubRepoPath": "IBM-Swift/Swift-JWT", "repoUrl": "https://github.com/IBM-Swift/Swift-JWT", - "installCommandHtml": ".package(url:\"https://github.com/IBM-Swift/Swift-JWT/", from: \"1.0.0\")" + "installCommandHtml": + ".package(url:\"https://github.com/IBM-Swift/Swift-JWT/", from: \"1.0.0\")" } ] } diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json index b15b546e..a4ad3651 100644 --- a/views/website/libraries/2-Node.js.json +++ b/views/website/libraries/2-Node.js.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/auth0", "authorName": "Auth0", diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index f71c0d3a..0f0acb72 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/benmcollins", "authorName": "benmcollins", @@ -52,7 +55,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/cisco/cjose", "authorName": "linuxwolf", @@ -61,4 +67,4 @@ "installCommandHtml": "go get github.com/cisco/cjose" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/21-C++.json b/views/website/libraries/21-C++.json index e59adc28..8550a81c 100644 --- a/views/website/libraries/21-C++.json +++ b/views/website/libraries/21-C++.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/troian", "authorName": "Artur Troian", @@ -52,7 +55,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/Thalhammer", "authorName": "Dominik Thalhammer", @@ -80,7 +86,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/arun11299", "authorName": "Arun Muralidharan", @@ -89,4 +98,4 @@ "installCommandHtml": "git clone https://github.com/arun11299/cpp-jwt" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/22-kdb+_Q.json b/views/website/libraries/22-kdb+_Q.json index 880ecf52..8f923d98 100644 --- a/views/website/libraries/22-kdb+_Q.json +++ b/views/website/libraries/22-kdb+_Q.json @@ -24,7 +24,10 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/tjcelaya", "authorName": "tjcelaya", @@ -33,4 +36,4 @@ "installCommandHtml": "git clone https://github.com/tjcelaya/jwt.q" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/23-Delphi.json b/views/website/libraries/23-Delphi.json index c185e2e9..fa8e50f3 100644 --- a/views/website/libraries/23-Delphi.json +++ b/views/website/libraries/23-Delphi.json @@ -24,13 +24,17 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/paolo-rossi", "authorName": "Paolo Rossi", "gitHubRepoPath": "paolo-rossi/delphi-jose-jwt", "repoUrl": "https://github.com/paolo-rossi/delphi-jose-jwt", - "installCommandHtml": "git clone https://github.com/paolo-rossi/delphi-jose-jwt" + "installCommandHtml": + "git clone https://github.com/paolo-rossi/delphi-jose-jwt" }, { "minimumVersion": null, @@ -52,7 +56,10 @@ "rs512": false, "es256": true, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/synopse", "authorName": "Synopse", @@ -61,4 +68,4 @@ "installCommandHtml": "git clone https://github.com/synopse/mORMot" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index cda695ea..b6366fdc 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -24,7 +24,10 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/firebase", "authorName": "Firebase", @@ -52,7 +55,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/lcobucci", "authorName": "Luís Cobucci", @@ -80,7 +86,10 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/emarref", "authorName": "Emarref", @@ -108,7 +117,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/Spomky-Labs/jose", "authorName": "Spomky", @@ -136,7 +148,10 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/nov", "authorName": "Nov Matake", @@ -164,7 +179,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/Spomky", "authorName": "Spomky", @@ -220,7 +238,10 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/lindelius", "authorName": "Tom Lindelius", @@ -248,7 +269,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/cdoco", "authorName": "ZiHang Gao", @@ -276,7 +300,10 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/adhocore", "authorName": "Jitendra Adhikari", diff --git a/views/website/libraries/25-Crystal.json b/views/website/libraries/25-Crystal.json index c8551f38..d7c86430 100644 --- a/views/website/libraries/25-Crystal.json +++ b/views/website/libraries/25-Crystal.json @@ -24,13 +24,17 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/greyblake", "authorName": "Sergey Potapov", "gitHubRepoPath": "crystal-community/jwt", "repoUrl": "https://github.com/crystal-community/jwt", - "installCommandHtml": "git clone https://github.com/crystal-community/jwt.git" + "installCommandHtml": + "git clone https://github.com/crystal-community/jwt.git" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/26-1C.json b/views/website/libraries/26-1C.json index a84938c2..e3181222 100644 --- a/views/website/libraries/26-1C.json +++ b/views/website/libraries/26-1C.json @@ -24,7 +24,10 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/pintov", "authorName": "Vasily Pintov", @@ -33,4 +36,4 @@ "installCommandHtml": "git clone https://github.com/pintov/1c-jwt" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/27-PostgreSQL.json b/views/website/libraries/27-PostgreSQL.json index 487589d5..7f7d8c7f 100644 --- a/views/website/libraries/27-PostgreSQL.json +++ b/views/website/libraries/27-PostgreSQL.json @@ -24,7 +24,10 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/michelp", "authorName": "Michel Pelletier", @@ -33,4 +36,4 @@ "installCommandHtml": "CREATE EXTENSION pgjwt;" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index f67af9ca..33de6a88 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/auth0", "authorName": "Auth0", @@ -52,7 +55,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://twitter.com/__b_c", "authorName": "Brian Campbell", @@ -80,7 +86,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/connect2id", "authorName": "connect2id", @@ -108,7 +117,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://twitter.com/lhazlewood", "authorName": "Les Hazlewood", @@ -136,7 +148,10 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/fusionauth", "authorName": "FusionAuth", diff --git a/views/website/libraries/4-JavaScript.json b/views/website/libraries/4-JavaScript.json index 0e21ca06..de69a760 100644 --- a/views/website/libraries/4-JavaScript.json +++ b/views/website/libraries/4-JavaScript.json @@ -52,7 +52,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/square", "authorName": "Square, Inc.", @@ -80,7 +83,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/cisco", "authorName": "Cisco Systems", diff --git a/views/website/libraries/5-Perl.json b/views/website/libraries/5-Perl.json index 1902baa6..13e28668 100644 --- a/views/website/libraries/5-Perl.json +++ b/views/website/libraries/5-Perl.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/DCIT", "authorName": "Karel Miko", @@ -33,4 +36,4 @@ "installCommandHtml": "cpanm Crypt::JWT" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/6-Ruby.json b/views/website/libraries/6-Ruby.json index 6b1fe8f2..090fe54a 100644 --- a/views/website/libraries/6-Ruby.json +++ b/views/website/libraries/6-Ruby.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": null, "authorName": "Lindsay & Rudat", @@ -52,7 +55,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": null, "authorName": "Fleshman", @@ -80,7 +86,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/nov", "authorName": "Nov Matake", @@ -117,4 +126,4 @@ "installCommandHtml": "gem install jose" } ] -} \ No newline at end of file +} diff --git a/views/website/libraries/7-Elixir.json b/views/website/libraries/7-Elixir.json index 43a75a26..1a7017bd 100644 --- a/views/website/libraries/7-Elixir.json +++ b/views/website/libraries/7-Elixir.json @@ -24,13 +24,17 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": null, "authorName": "Fleshman", "gitHubRepoPath": "garyf/json_web_token_ex", "repoUrl": "https://github.com/garyf/json_web_token_ex", - "installCommandHtml": "defp deps, do: [{:json_web_token, \"~> 0.2.5\"}]" + "installCommandHtml": + "defp deps, do: [{:json_web_token, \"~> 0.2.5\"}]" }, { "minimumVersion": null, @@ -52,7 +56,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": null, "authorName": "bryanjos", diff --git a/views/website/libraries/8-Erlang.json b/views/website/libraries/8-Erlang.json index aaac7b38..38ca8676 100644 --- a/views/website/libraries/8-Erlang.json +++ b/views/website/libraries/8-Erlang.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/glejeune", "authorName": "Gregoire Lejeune", diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 77ccf1f7..6719dcd6 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -24,7 +24,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/dgrijalva", "authorName": "dgrijalva", @@ -52,7 +55,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/dvsekhvalnov/jose2go", "authorName": "DV", @@ -80,13 +86,17 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/SermoDigital/jose", "authorName": "SermoDigital", "gitHubRepoPath": "SermoDigital/jose", "repoUrl": "https://github.com/SermoDigital/jose", - "installCommandHtml": "go get github.com/SermoDigital/jose" + "installCommandHtml": + "go get github.com/SermoDigital/jose" }, { "minimumVersion": null, @@ -108,7 +118,10 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/robbert229", "authorName": "robbert229", @@ -136,7 +149,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/square", "authorName": "DV", @@ -164,7 +180,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/lestrrat", "authorName": "lestrrat", @@ -220,7 +239,10 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/nickvellios", "authorName": "nickvellios", @@ -248,7 +270,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/gbrlsnchs", "authorName": "gbrlsnchs", @@ -276,7 +301,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/pascaldekloe", "authorName": "Pascal de Kloe", @@ -304,7 +332,10 @@ "rs512": false, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://gitlab.com/rucuriousyet", "authorName": "Seth Moeckel", From 336a9503da3f3d57dad6d62ec5ed47d30a7b08f0 Mon Sep 17 00:00:00 2001 From: "Pascal S. de Kloe" Date: Tue, 15 Jan 2019 20:47:02 +0100 Subject: [PATCH 279/611] Propagate PPS support for a Go library. --- views/website/libraries/9-Go.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 6719dcd6..b9f9aee6 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -302,9 +302,9 @@ "es256": true, "es384": true, "es512": true, - "ps256": false, - "ps384": false, - "ps512": false + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/pascaldekloe", "authorName": "Pascal de Kloe", From d1c289adf14313227fddf61fda674c66a42437c9 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 21 Jan 2019 13:26:12 +0100 Subject: [PATCH 280/611] Swap segement lib for auth0-metrics --- src/editor/event-manager.js | 27 ++-- src/editor/index.js | 249 +++++++++++++++++++----------------- src/metrics.js | 90 +++++++------ src/website/index.js | 68 +++++----- views/website/layout.pug | 5 +- 5 files changed, 234 insertions(+), 205 deletions(-) diff --git a/src/editor/event-manager.js b/src/editor/event-manager.js index 290bf1c4..3cbf7613 100644 --- a/src/editor/event-manager.js +++ b/src/editor/event-manager.js @@ -12,10 +12,10 @@ function enableAll(events) { function tryAsResult(func) { const result = {}; - + try { result.result = func(); - } catch(e) { + } catch (e) { result.exception = e; } @@ -36,22 +36,27 @@ export default class EventManager { event: event, handler: handler }); - + target[enable](event, handler); } addDomEvent(target, event, handler) { - this.addEvent(target, 'addEventListener', - 'removeEventListener', event,handler); + this.addEvent( + target, + "addEventListener", + "removeEventListener", + event, + handler + ); } addCodeMirrorEvent(target, event, handler) { - this.addEvent(target, 'on', 'off', event, handler); + this.addEvent(target, "on", "off", event, handler); } - + withDisabledEvents(func) { // Nested calls are supported - if(this.callDepth === 0) { + if (this.callDepth === 0) { disableAll(this.events); } @@ -59,13 +64,13 @@ export default class EventManager { const result = tryAsResult(func); --this.callDepth; - if(this.callDepth === 0) { + if (this.callDepth === 0) { enableAll(this.events); } - if(result.exception) { + if (result.exception) { throw result.exception; - } + } return result.result; } diff --git a/src/editor/index.js b/src/editor/index.js index 7dcaf544..4af2209d 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -1,9 +1,7 @@ -import { - deferToNextLoop -} from '../utils.js'; -import { downloadPublicKeyIfPossible } from './public-key-download.js'; -import { setupClaimsTooltip } from './claims-tooltip.js'; -import { tokenEditor, headerEditor, payloadEditor } from './instances.js'; +import { deferToNextLoop } from "../utils.js"; +import { downloadPublicKeyIfPossible } from "./public-key-download.js"; +import { setupClaimsTooltip } from "./claims-tooltip.js"; +import { tokenEditor, headerEditor, payloadEditor } from "./instances.js"; import { getTrimmedValue, stringify, @@ -11,16 +9,16 @@ import { getSelectedAlgorithm, disableUnsupportedAlgorithms, getSafeTokenInfo -} from './utils.js'; -import { sign, verify, decode } from './jwt.js'; -import EventManager from './event-manager.js'; -import strings from '../strings.js'; -import defaultTokens from './default-tokens.js'; +} from "./utils.js"; +import { sign, verify, decode } from "./jwt.js"; +import EventManager from "./event-manager.js"; +import strings from "../strings.js"; +import defaultTokens from "./default-tokens.js"; import { minSecretLengthCheck, setupSecretLengthTooltip -} from './secret-length-tooltip.js'; -import * as metrics from '../metrics.js'; +} from "./secret-length-tooltip.js"; +import * as metrics from "../metrics.js"; import { algorithmSelect, signatureStatusElement, @@ -39,9 +37,9 @@ import { decodedTabLink, encodedTabElement, decodedTabElement -} from '../dom-elements.js'; +} from "../dom-elements.js"; -import log from 'loglevel'; +import log from "loglevel"; // The event manager lets us enable/disable events as needed without // manually tracking them. Events that need to be disabled should be @@ -51,59 +49,67 @@ const eventManager = new EventManager(); function trackToken(jwt, operation, extra) { const tokenInfo = getSafeTokenInfo(jwt); - metrics.track('editor-jwt-tracked', Object.assign({ - operation: operation, - tokenInfo: tokenInfo - }, extra)); + metrics.track( + "editor-jwt-tracked", + Object.assign( + { + operation: operation, + tokenInfo: tokenInfo + }, + extra + ) + ); return tokenInfo.hash; } function isSharedSecretAlgorithm(algorithm) { - return algorithm && algorithm.indexOf('HS') === 0; + return algorithm && algorithm.indexOf("HS") === 0; } function isPublicKeyAlgorithm(algorithm) { - return algorithm && algorithm.indexOf('HS') === -1; + return algorithm && algorithm.indexOf("HS") === -1; } function markAsInvalid() { - signatureStatusElement.classList.remove('valid-token'); - signatureStatusElement.classList.add('invalid-token'); - signatureStatusElement.innerHTML = - ` ${strings.editor.signatureInvalid}`; + signatureStatusElement.classList.remove("valid-token"); + signatureStatusElement.classList.add("invalid-token"); + signatureStatusElement.innerHTML = ` ${ + strings.editor.signatureInvalid + }`; } function markAsValid() { - const elementsWithError = document.getElementsByClassName('error'); + const elementsWithError = document.getElementsByClassName("error"); Array.prototype.forEach.call(elementsWithError, element => { - element.classList.remove('error'); + element.classList.remove("error"); }); - signatureStatusElement.classList.remove('invalid-token'); - signatureStatusElement.classList.add('valid-token'); - signatureStatusElement.innerHTML = - ` ${strings.editor.signatureVerified}`; + signatureStatusElement.classList.remove("invalid-token"); + signatureStatusElement.classList.add("valid-token"); + signatureStatusElement.innerHTML = ` ${ + strings.editor.signatureVerified + }`; } function displaySecretOrKeys(algorithm) { const algoType = algorithm.substr(0, 2); const algoSize = algorithm.substr(2, 3); - if(algoType === 'HS') { + if (algoType === "HS") { hmacShaTextSpan.firstChild.textContent = `HMACSHA${algoSize}`; - secretEditorContainer.style.display = ''; - keyEditorContainer.style.display = 'none'; + secretEditorContainer.style.display = ""; + keyEditorContainer.style.display = "none"; } else { const texts = { - RS: 'RSASHA', - PS: 'RSAPSSSHA', - ES: 'ECDSASHA' + RS: "RSASHA", + PS: "RSAPSSSHA", + ES: "ECDSASHA" }; rsaShaTextSpan.firstChild.textContent = `${texts[algoType]}${algoSize}`; - secretEditorContainer.style.display = 'none'; - keyEditorContainer.style.display = ''; + secretEditorContainer.style.display = "none"; + keyEditorContainer.style.display = ""; } deferToNextLoop(fixEditorHeight); @@ -111,10 +117,11 @@ function displaySecretOrKeys(algorithm) { function selectAlgorithm(algorithm) { eventManager.withDisabledEvents(() => { - const selected = - algorithmSelect.querySelector(`option[value="${algorithm}"]`); + const selected = algorithmSelect.querySelector( + `option[value="${algorithm}"]` + ); - if(!selected) { + if (!selected) { log.info(`Invalid algorithm ${algorithm}, ignoring...`); return; } @@ -126,8 +133,8 @@ function selectAlgorithm(algorithm) { } function isDefaultToken(token) { - for(const algorithm of Object.keys(defaultTokens)) { - if(defaultTokens[algorithm].token === token) { + for (const algorithm of Object.keys(defaultTokens)) { + if (defaultTokens[algorithm].token === token) { return true; } } @@ -144,7 +151,7 @@ export function useDefaultToken(algorithm) { headerEditor.setValue(stringify(decoded.header)); payloadEditor.setValue(stringify(decoded.payload)); - if(isSharedSecretAlgorithm(algorithm)) { + if (isSharedSecretAlgorithm(algorithm)) { secretInput.value = defaults.secret; } else { publicKeyTextArea.value = defaults.publicKey; @@ -161,18 +168,18 @@ function setAlgorithmInHeader(algorithm) { const header = JSON.parse(headerEditor.getValue()); header.alg = algorithm; headerEditor.setValue(stringify(header)); - } catch(e) { + } catch (e) { // SyntaxError is expected while things are being edited, ignore those // errors. - if(!(e instanceof SyntaxError)) { + if (!(e instanceof SyntaxError)) { // If it's not a SyntaxError, log the error. - log.warn('Failed to encode token: ', e); + log.warn("Failed to encode token: ", e); } } try { encodeToken(); - } catch(e) { + } catch (e) { // Ignore error, this may fail in unexpected ways if the data // is being edited. } @@ -182,11 +189,11 @@ function setAlgorithmInHeader(algorithm) { function algorithmChangeHandler() { const algorithm = getSelectedAlgorithm(); - metrics.track('editor-algorithm-selected', { algorithm: algorithm }); + metrics.track("editor-algorithm-selected", { algorithm: algorithm }); displaySecretOrKeys(algorithm); - if(isDefaultToken(getTrimmedValue(tokenEditor))) { + if (isDefaultToken(getTrimmedValue(tokenEditor))) { useDefaultToken(algorithm); } else { setAlgorithmInHeader(algorithm); @@ -194,12 +201,12 @@ function algorithmChangeHandler() { } function markAsInvalidWithElement(element, clearTokenEditor = true) { - element.classList.add('error'); + element.classList.add("error"); markAsInvalid(); - if(clearTokenEditor) { + if (clearTokenEditor) { eventManager.withDisabledEvents(() => { - tokenEditor.setValue(''); + tokenEditor.setValue(""); }); } } @@ -211,12 +218,12 @@ function encodeToken() { let header; try { header = JSON.parse(headerEditor.getValue()); - } catch(e) { + } catch (e) { markAsInvalidWithElement(headerElement, true); return; } - if(!header.alg) { + if (!header.alg) { setAlgorithmInHeader(getSelectedAlgorithm()); return; } else { @@ -226,32 +233,35 @@ function encodeToken() { let payload; try { payload = JSON.parse(payloadEditor.getValue()); - } catch(e) { + } catch (e) { markAsInvalidWithElement(payloadElement, true); return; } - const key = isSharedSecretAlgorithm(header.alg) ? - secretInput.value : - privateKeyTextArea.value; + const key = isSharedSecretAlgorithm(header.alg) + ? secretInput.value + : privateKeyTextArea.value; - sign(header, payload, key, secretBase64Checkbox.checked).then(encoded => { - eventManager.withDisabledEvents(() => { - tokenEditor.setValue(encoded); - trackToken(encoded, 'encode', { - secretBase64Checkbox: secretBase64Checkbox.checked + sign(header, payload, key, secretBase64Checkbox.checked) + .then(encoded => { + eventManager.withDisabledEvents(() => { + tokenEditor.setValue(encoded); + trackToken(encoded, "encode", { + secretBase64Checkbox: secretBase64Checkbox.checked + }); }); + }) + .catch(e => { + eventManager.withDisabledEvents(() => { + log.warn("Failed to sign/encode token: ", e); + markAsInvalid(); + tokenEditor.setValue(""); + }); + metrics.track("editor-encoding-error"); + }) + .finally(() => { + verifyToken(); }); - }).catch(e => { - eventManager.withDisabledEvents(() => { - log.warn('Failed to sign/encode token: ', e); - markAsInvalid(); - tokenEditor.setValue(''); - }); - metrics.track('editor-encoding-error'); - }).finally(() => { - verifyToken(); - }); }); } @@ -263,12 +273,12 @@ function decodeToken() { const jwt = getTrimmedValue(tokenEditor); const decoded = decode(jwt); - const tokenHash = trackToken(jwt, 'decode'); + const tokenHash = trackToken(jwt, "decode"); selectAlgorithm(decoded.header.alg); - if(isPublicKeyAlgorithm(decoded.header.alg)) { + if (isPublicKeyAlgorithm(decoded.header.alg)) { downloadPublicKeyIfPossible(decoded).then(publicKey => { - metrics.track('editor-jwt-public-key-downloaded', { + metrics.track("editor-jwt-public-key-downloaded", { tokenHash: tokenHash }); @@ -282,19 +292,19 @@ function decodeToken() { headerEditor.setValue(stringify(decoded.header)); payloadEditor.setValue(stringify(decoded.payload)); - if(decoded.errors) { + if (decoded.errors) { markAsInvalidWithElement(editorElement, false); - metrics.track('editor-jwt-invalid', { + metrics.track("editor-jwt-invalid", { reason: `partial decode`, tokenHash: tokenHash }); } else { verifyToken(); } - } catch(e) { - log.warn('Failed to decode token: ', e); + } catch (e) { + log.warn("Failed to decode token: ", e); - metrics.track('editor-jwt-invalid', { + metrics.track("editor-jwt-invalid", { reason: `failed to decode token`, tokenHash: trackToken(jwt) }); @@ -306,33 +316,32 @@ function verifyToken() { const jwt = getTrimmedValue(tokenEditor); const decoded = decode(jwt); - const tokenHash = trackToken(jwt, 'verify'); + const tokenHash = trackToken(jwt, "verify"); - if(!decoded.header.alg || decoded.header.alg === 'none') { + if (!decoded.header.alg || decoded.header.alg === "none") { markAsInvalid(); - metrics.track('editor-jwt-invalid', { + metrics.track("editor-jwt-invalid", { reason: `header.alg value is ${decoded.header.alg}`, tokenHash: tokenHash }); return; } - const publicKeyOrSecret = - isSharedSecretAlgorithm(decoded.header.alg) ? - secretInput.value : - publicKeyTextArea.value; + const publicKeyOrSecret = isSharedSecretAlgorithm(decoded.header.alg) + ? secretInput.value + : publicKeyTextArea.value; verify(jwt, publicKeyOrSecret, secretBase64Checkbox.checked).then(valid => { - if(valid) { + if (valid) { markAsValid(); - metrics.track('editor-jwt-verified', { + metrics.track("editor-jwt-verified", { tokenHash: tokenHash, secretBase64Checkbox: secretBase64Checkbox.checked }); } else { markAsInvalid(); - metrics.track('editor-jwt-invalid', { - reason: 'invalid signature', + metrics.track("editor-jwt-invalid", { + reason: "invalid signature", tokenHash: tokenHash, secretBase64Checkbox: secretBase64Checkbox.checked }); @@ -345,29 +354,29 @@ function verifyToken() { // Once a considerable amount of time has passed since this was put in place, // it may be safe to remove it. Enabled at: 2018-06-12. function removeSavedTokens() { - localStorage.removeItem('lastToken'); - localStorage.removeItem('lastPublicKey'); + localStorage.removeItem("lastToken"); + localStorage.removeItem("lastPublicKey"); } function setupTabEvents() { // These are relevant for portrait or mobile screens. - encodedTabLink.addEventListener('click', event => { + encodedTabLink.addEventListener("click", event => { event.preventDefault(); - decodedTabLink.parentNode.classList.remove('current'); - encodedTabLink.parentNode.classList.add('current'); - decodedTabElement.classList.remove('current'); - encodedTabElement.classList.add('current'); + decodedTabLink.parentNode.classList.remove("current"); + encodedTabLink.parentNode.classList.add("current"); + decodedTabElement.classList.remove("current"); + encodedTabElement.classList.add("current"); }); - decodedTabLink.addEventListener('click', event => { + decodedTabLink.addEventListener("click", event => { event.preventDefault(); - encodedTabLink.parentNode.classList.remove('current'); - decodedTabLink.parentNode.classList.add('current'); - encodedTabElement.classList.remove('current'); - decodedTabElement.classList.add('current'); + encodedTabLink.parentNode.classList.remove("current"); + decodedTabLink.parentNode.classList.add("current"); + encodedTabElement.classList.remove("current"); + decodedTabElement.classList.add("current"); }); } @@ -376,25 +385,25 @@ function setupEvents() { // manually tracking them. Events that need to be disabled should be // passed to the event manager. - eventManager.addDomEvent(algorithmSelect, 'change', algorithmChangeHandler); + eventManager.addDomEvent(algorithmSelect, "change", algorithmChangeHandler); // When an encoded token is inserted, it must be decoded. - eventManager.addCodeMirrorEvent(tokenEditor, 'change', decodeToken); + eventManager.addCodeMirrorEvent(tokenEditor, "change", decodeToken); // When parts of the decoded token are changed, it must be reencoded. - eventManager.addCodeMirrorEvent(headerEditor, 'change', encodeToken); - eventManager.addCodeMirrorEvent(payloadEditor, 'change', encodeToken); + eventManager.addCodeMirrorEvent(headerEditor, "change", encodeToken); + eventManager.addCodeMirrorEvent(payloadEditor, "change", encodeToken); // HMAC secret, show tooltip if secret is too short. - eventManager.addDomEvent(secretInput, 'input', minSecretLengthCheck); + eventManager.addDomEvent(secretInput, "input", minSecretLengthCheck); // HMAC secret, when changed the encoded token must be updated. - eventManager.addDomEvent(secretInput, 'input', encodeToken); + eventManager.addDomEvent(secretInput, "input", encodeToken); // Base64 checkbox, when changes the encoded token must be updated. - eventManager.addDomEvent(secretBase64Checkbox, 'change', encodeToken); + eventManager.addDomEvent(secretBase64Checkbox, "change", encodeToken); // Private key, when changed the encoded token must be updated. - eventManager.addDomEvent(privateKeyTextArea, 'input', encodeToken); + eventManager.addDomEvent(privateKeyTextArea, "input", encodeToken); // Public key, when changed the encoded token must NOT be updated // (only verified). - eventManager.addDomEvent(publicKeyTextArea, 'input', verifyToken); + eventManager.addDomEvent(publicKeyTextArea, "input", verifyToken); // The following events are never disabled, so it is not necessary to go // through the event manager for them. @@ -408,17 +417,17 @@ export function setTokenEditorValue(value) { export function getTokenEditorValue() { return { token: getTrimmedValue(tokenEditor), - publicKey: isPublicKeyAlgorithm(getSelectedAlgorithm()) ? - publicKeyTextArea.value : - undefined + publicKey: isPublicKeyAlgorithm(getSelectedAlgorithm()) + ? publicKeyTextArea.value + : undefined }; } export function setupTokenEditor() { disableUnsupportedAlgorithms(); setupEvents(); - selectAlgorithm('HS256'); - useDefaultToken('HS256'); + selectAlgorithm("HS256"); + useDefaultToken("HS256"); fixEditorHeight(); setupSecretLengthTooltip(); setupClaimsTooltip(); diff --git a/src/metrics.js b/src/metrics.js index 3458aadc..f1bf82bb 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -1,8 +1,8 @@ -import log from 'loglevel'; +import log from "loglevel"; export function init(apiKey) { // Create a queue, but don't obliterate an existing one! - var analytics = window.analytics = window.analytics || []; + var analytics = (window.metrics = window.metrics || []); // If the real analytics.js is already on the page return. if (analytics.initialize) return; @@ -10,7 +10,7 @@ export function init(apiKey) { // If the snippet was invoked already show an error. if (analytics.invoked) { if (window.console && console.error) { - console.error('Segment snippet included twice.'); + console.error("Segment snippet included twice."); } return; } @@ -19,32 +19,32 @@ export function init(apiKey) { // is never invoked twice. analytics.invoked = true; - // A list of the methods in Analytics.js to stub. + // A list of the methods in Auth0-metrics to stub. analytics.methods = [ - 'trackSubmit', - 'trackClick', - 'trackLink', - 'trackForm', - 'pageview', - 'identify', - 'reset', - 'group', - 'track', - 'ready', - 'alias', - 'debug', - 'page', - 'once', - 'off', - 'on' + "trackSubmit", + "trackClick", + "trackLink", + "trackForm", + "pageview", + "identify", + "reset", + "group", + "track", + "ready", + "alias", + "debug", + "page", + "once", + "off", + "on" ]; // Define a factory to create stubs. These are placeholders - // for methods in Analytics.js so that you never have to wait + // for methods in Auth0-metrics so that you never have to wait // for it to load to actually record data. The `method` is // stored as the first argument, so we can replay the data. - analytics.factory = function(method){ - return function(){ + analytics.factory = function(method) { + return function() { var args = Array.prototype.slice.call(arguments); args.unshift(method); analytics.push(args); @@ -58,28 +58,43 @@ export function init(apiKey) { analytics[key] = analytics.factory(key); } - // Define a method to load Analytics.js from our CDN, + // Define a method to load Auth0-metrics from our CDN, // and that will be sure to only ever load it once. - analytics.load = function(key, options){ + analytics.load = function(key, options) { // Create an async script element based on your key. - var script = document.createElement('script'); - script.type = 'text/javascript'; + var script = document.createElement("script"); + script.type = "text/javascript"; script.async = true; - script.src = 'https://cdn.segment.com/analytics.js/v1/' - + key + '/analytics.min.js'; + script.src = "https://cdn.auth0.com/website/js/1.6.0/auth0-metrics-min.js"; + + script.onerror = function() { + console.error("No metrics"); + }; + + script.onload = function() { + // Grab analytics and make it private + window.metrics = new Auth0Metrics( + key, + "https://dwh-tracking.it.auth0.com/external", + "jwt.io" + ); + }; // Insert our script next to the first script element. - var first = document.getElementsByTagName('script')[0]; + var first = document.getElementsByTagName("script")[0]; first.parentNode.insertBefore(script, first); - analytics._loadOptions = options; }; // Add a version to keep track of what's in the wild. - analytics.SNIPPET_VERSION = '4.1.0'; + analytics.SNIPPET_VERSION = "4.1.0"; - // Load Analytics.js with your key, which will automatically + // Load Auth0-metrics with your key, which will automatically // load the tools you've enabled for your account. Boosh! - analytics.load(apiKey); + analytics.load( + apiKey, + "https://dwh-tracking.it.auth0.com/external", + "jwt.io" + ); // Make the first page call to load the integrations. If // you'd like to manually name or tag the page, edit or @@ -88,10 +103,11 @@ export function init(apiKey) { } export function track(event, data) { - if(window.analytics) { + if (window.metrics) { try { - window.analytics.track(event, data); - } catch(e) { + window.metrics.track(event, data); + console.log(); + } catch (e) { log.error(`Metrics library error for event ${event}: ${e}`); } } diff --git a/src/website/index.js b/src/website/index.js index b0a6f0ef..30afd6f1 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -1,15 +1,15 @@ -import '../google-analytics.js'; -import * as metrics from '../metrics.js'; -import metricsApiKey from './metrics-api-key.js'; -import { setupNavbar } from './navbar.js'; -import { setupExtensionButton } from './extension.js'; -import { setupLibraries } from './libraries.js'; -import { setupTokenEditor, setTokenEditorValue } from '../editor'; -import { setupJwtCounter } from './counter.js'; -import { setupSmoothScrolling } from './smooth-scrolling.js'; -import { setupHighlighting } from './highlighting.js'; -import { isChrome, isFirefox, isPartiallyInViewport, once } from './utils.js'; -import { setupShareJwtButton } from '../share-button.js'; +import "../google-analytics.js"; +import * as metrics from "../metrics.js"; +import metricsApiKey from "./metrics-api-key.js"; +import { setupNavbar } from "./navbar.js"; +import { setupExtensionButton } from "./extension.js"; +import { setupLibraries } from "./libraries.js"; +import { setupTokenEditor, setTokenEditorValue } from "../editor"; +import { setupJwtCounter } from "./counter.js"; +import { setupSmoothScrolling } from "./smooth-scrolling.js"; +import { setupHighlighting } from "./highlighting.js"; +import { isChrome, isFirefox, isPartiallyInViewport, once } from "./utils.js"; +import { setupShareJwtButton } from "../share-button.js"; import { publicKeyTextArea, debuggerSection, @@ -18,9 +18,9 @@ import { shareJwtButton, shareJwtTextElement, librariesElement -} from './dom-elements.js'; +} from "./dom-elements.js"; -import queryString from 'querystring'; +import queryString from "querystring"; /* For initialization, look at the end of this file */ @@ -29,22 +29,22 @@ function parseLocationQuery() { const locHash = queryString.parse(document.location.hash.substr(1)); const keys = [ - 'id_token', - 'access_token', - 'value', - 'token', - 'debugger-io?token' + "id_token", + "access_token", + "value", + "token", + "debugger-io?token" ]; - for(const key of keys) { + for (const key of keys) { const token = locSearch[key] || locHash[key]; - if(token) { - metrics.track('token-in-url', { type: key }); + if (token) { + metrics.track("token-in-url", { type: key }); setTokenEditorValue(token); - if(locSearch.publicKey || locHash.publicKey) { - metrics.track('pubkey-in-url'); + if (locSearch.publicKey || locHash.publicKey) { + metrics.track("pubkey-in-url"); publicKeyTextArea.value = locSearch.publicKey || locHash.publicKey; } @@ -56,12 +56,12 @@ function parseLocationQuery() { } function pickEbookOrExtensionBanner() { - if((isChrome() || isFirefox()) && (Math.random() >= 0.5)) { - metrics.track('extension-banner-shown'); - extensionSection.style.display = 'block'; + if ((isChrome() || isFirefox()) && Math.random() >= 0.5) { + metrics.track("extension-banner-shown"); + extensionSection.style.display = "block"; } else { - metrics.track('ebook-banner-shown'); - ebookSection.style.display = 'block'; + metrics.track("ebook-banner-shown"); + ebookSection.style.display = "block"; } } @@ -69,13 +69,13 @@ function setupMetrics() { metrics.init(metricsApiKey); // Section visible metrics - window.addEventListener('scroll', e => { - if(isPartiallyInViewport(librariesElement)) { - once('libraries-visible', () => metrics.track('libraries-visible-once')); + window.addEventListener("scroll", e => { + if (isPartiallyInViewport(librariesElement)) { + once("libraries-visible", () => metrics.track("libraries-visible-once")); } - if(isPartiallyInViewport(debuggerSection)) { - once('editor-visible', () => metrics.track('editor-visible-once')); + if (isPartiallyInViewport(debuggerSection)) { + once("editor-visible", () => metrics.track("editor-visible-once")); } }); } diff --git a/views/website/layout.pug b/views/website/layout.pug index 6753c072..28da8ad9 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -27,16 +27,15 @@ html(lang='en') meta(property='og:image:type', content='image/png') meta(property='og:image:width', content='1200') meta(property='og:image:height', content='630') - + include ../stylesheets.pug link(rel='search', type='application/opensearchdescription+xml', title='JWT.io', href='http://github.com/opensearch.xml') include ../icons.pug - + // Chrome extension link, required for inline installs link(rel="chrome-webstore-item", href="https://chrome.google.com/webstore/detail/ppmmlchacdbknfphdeafcbmklcghghmd") - body // Google Tag Manager From 07b7817cd3f3f61ce63f60bb33674ba60fae20b6 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 21 Jan 2019 14:14:05 +0100 Subject: [PATCH 281/611] Throttle editor changes --- src/editor/index.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/editor/index.js b/src/editor/index.js index 4af2209d..d6571ecb 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -40,6 +40,7 @@ import { } from "../dom-elements.js"; import log from "loglevel"; +import _ from "lodash"; // The event manager lets us enable/disable events as needed without // manually tracking them. Events that need to be disabled should be @@ -388,10 +389,22 @@ function setupEvents() { eventManager.addDomEvent(algorithmSelect, "change", algorithmChangeHandler); // When an encoded token is inserted, it must be decoded. - eventManager.addCodeMirrorEvent(tokenEditor, "change", decodeToken); + eventManager.addCodeMirrorEvent( + tokenEditor, + "change", + _.throttle(decodeToken, 1000) + ); // When parts of the decoded token are changed, it must be reencoded. - eventManager.addCodeMirrorEvent(headerEditor, "change", encodeToken); - eventManager.addCodeMirrorEvent(payloadEditor, "change", encodeToken); + eventManager.addCodeMirrorEvent( + headerEditor, + "change", + _.throttle(encodeToken, 1000) + ); + eventManager.addCodeMirrorEvent( + payloadEditor, + "change", + _.throttle(encodeToken, 1000) + ); // HMAC secret, show tooltip if secret is too short. eventManager.addDomEvent(secretInput, "input", minSecretLengthCheck); From 2fff713f5c267ea04f5a256b442a9ec758d89d2c Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 11 Feb 2019 11:33:43 +0100 Subject: [PATCH 282/611] Track metrics in our dwh --- src/metrics.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metrics.js b/src/metrics.js index f1bf82bb..90fbf097 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -75,7 +75,7 @@ export function init(apiKey) { // Grab analytics and make it private window.metrics = new Auth0Metrics( key, - "https://dwh-tracking.it.auth0.com/external", + "https://dwh-tracking.it.auth0.com/external-metrics", "jwt.io" ); }; From bbef06f060e56fe61343657fd6d49d6137b7a305 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 11 Feb 2019 12:03:45 +0100 Subject: [PATCH 283/611] Add Throttle to tests --- test/functional/editor.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/functional/editor.js b/test/functional/editor.js index 2f9dcede..423e3801 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -21,6 +21,7 @@ const expect = chai.expect; const typingDelay = 0; const tokenProcessingWait = 300; +const editorThrottle = 1000; describe('Editor', function() { this.timeout(75000); @@ -134,6 +135,7 @@ describe('Editor', function() { return window.test.tokenEditor.getValue() }); + await this.page.waitFor(editorThrottle); await this.page.click('.js-header'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); @@ -340,6 +342,7 @@ describe('Editor', function() { await secretInput.type(tokens[alg].secret, { delay: typingDelay }); + await this.page.waitFor(1250); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); From eae28239f2852fe49a2c8c1e7537cedcd3e61430 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 11 Feb 2019 12:20:26 +0100 Subject: [PATCH 284/611] Fix timeout --- test/functional/editor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/functional/editor.js b/test/functional/editor.js index 423e3801..f739aa0c 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -21,7 +21,7 @@ const expect = chai.expect; const typingDelay = 0; const tokenProcessingWait = 300; -const editorThrottle = 1000; +const editorThrottle = 1500; describe('Editor', function() { this.timeout(75000); @@ -342,7 +342,7 @@ describe('Editor', function() { await secretInput.type(tokens[alg].secret, { delay: typingDelay }); - await this.page.waitFor(1250); + await this.page.waitFor(editorThrottle); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); From de7da25528e80d5e01601e5f4138f74b49306b96 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 11 Feb 2019 13:51:33 +0100 Subject: [PATCH 285/611] Fix failing tests due to editor throttling --- test/functional/editor.js | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/test/functional/editor.js b/test/functional/editor.js index f739aa0c..f7ef213b 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -21,7 +21,7 @@ const expect = chai.expect; const typingDelay = 0; const tokenProcessingWait = 300; -const editorThrottle = 1500; +const tokenEditorThrottleWait = 1200; describe('Editor', function() { this.timeout(75000); @@ -135,7 +135,6 @@ describe('Editor', function() { return window.test.tokenEditor.getValue() }); - await this.page.waitFor(editorThrottle); await this.page.click('.js-header'); await this.page.keyboard.down('ControlLeft'); await this.page.keyboard.press('KeyA'); @@ -152,6 +151,7 @@ describe('Editor', function() { // Wait for token processing. await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); const newToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue(); @@ -190,6 +190,7 @@ describe('Editor', function() { // Wait for token processing. await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); const newToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue() @@ -224,6 +225,10 @@ describe('Editor', function() { delay: typingDelay }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); + const selectedAfter = await this.page.$eval('#algorithm-select', select => { return select.options[select.selectedIndex].value; @@ -234,6 +239,7 @@ describe('Editor', function() { // Wait for token processing. await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); const valid = await this.page.$eval('.validation-status', status => { return status.classList.contains('valid-token') && @@ -342,7 +348,6 @@ describe('Editor', function() { await secretInput.type(tokens[alg].secret, { delay: typingDelay }); - await this.page.waitFor(editorThrottle); await this.page.click('.js-input'); await this.page.keyboard.down('ControlLeft'); @@ -354,6 +359,7 @@ describe('Editor', function() { // Wait for token processing. await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); const valid = await this.page.$eval('.validation-status', status => { return status.classList.contains('valid-token') && @@ -463,6 +469,7 @@ describe('Editor', function() { // Wait for token processing. await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); const valid = await this.page.$eval('.validation-status', status => { return status.classList.contains('valid-token') && @@ -545,6 +552,7 @@ describe('Editor', function() { // Wait for token processing. await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); const newToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue(); @@ -627,6 +635,7 @@ describe('Editor', function() { // Wait for token processing. await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); const newToken = await this.page.evaluate(() => { return window.test.tokenEditor.getValue(); @@ -701,6 +710,7 @@ describe('Editor', function() { }); await this.page.waitFor(2000); + await this.page.waitFor(tokenEditorThrottleWait); const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); @@ -742,6 +752,7 @@ describe('Editor', function() { }); await this.page.waitFor(2000); + await this.page.waitFor(tokenEditorThrottleWait); const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); @@ -867,7 +878,7 @@ describe('Editor', function() { it('Marks token as invalid when there is no public key', async function() { //this.timeout(20000); - + await this.page.waitFor(tokenEditorThrottleWait); await this.page.select('#algorithm-select', 'RS256'); await this.page.click('.js-input'); @@ -889,6 +900,7 @@ describe('Editor', function() { // Wait for token processing. await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); const valid = await this.page.$eval('.validation-status', status => { return status.classList.contains('valid-token') && @@ -905,6 +917,7 @@ describe('Editor', function() { // Wait for token processing. await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); const invalid = await this.page.$eval('.validation-status', status => { return status.classList.contains('invalid-token') && @@ -938,6 +951,7 @@ describe('Editor', function() { // Wait for token processing. await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); const valid = await this.page.$eval('.validation-status', status => { return status.classList.contains('valid-token') && @@ -1150,6 +1164,8 @@ describe('Editor', function() { delay: typingDelay }); + await this.page.waitFor(tokenEditorThrottleWait); + const shareJwtButton = await this.page.$('.website-share button'); await shareJwtButton.click(); @@ -1220,6 +1236,8 @@ describe('Editor', function() { delay: typingDelay }); + await this.page.waitFor(tokenEditorThrottleWait); + const shareJwtButton = await this.page.$('.website-share button'); await shareJwtButton.click(); From 05f2aa43f0d67a8024dc4b5bfdc1490ea6a3c675 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 11 Feb 2019 21:57:13 +0100 Subject: [PATCH 286/611] Add heroku run build script to package.json --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index a1b0c289..20fd7df1 100644 --- a/package.json +++ b/package.json @@ -68,9 +68,9 @@ "xhr-mock": "^2.0.3" }, "scripts": { - "postinstall": "grunt build-website", "start": "node server.js", "test": "grunt test", - "build": "grunt build" - } + "build": "grunt build-website" + }, + "heroku-run-build-script": true } From 4b6aeaed929b9686a4b1127f37b9441020971c2f Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 11 Feb 2019 22:44:47 +0100 Subject: [PATCH 287/611] Remove console.log --- src/metrics.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/metrics.js b/src/metrics.js index 90fbf097..6e4d45ad 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -92,7 +92,7 @@ export function init(apiKey) { // load the tools you've enabled for your account. Boosh! analytics.load( apiKey, - "https://dwh-tracking.it.auth0.com/external", + "https://dwh-tracking.it.auth0.com/external-metrics", "jwt.io" ); @@ -106,7 +106,6 @@ export function track(event, data) { if (window.metrics) { try { window.metrics.track(event, data); - console.log(); } catch (e) { log.error(`Metrics library error for event ${event}: ${e}`); } From ce9c0ddf952a383ae343392943daa1645ee3dbc7 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 11 Feb 2019 22:46:10 +0100 Subject: [PATCH 288/611] Cleanup metrics --- src/metrics.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/metrics.js b/src/metrics.js index 6e4d45ad..3c962249 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -91,9 +91,7 @@ export function init(apiKey) { // Load Auth0-metrics with your key, which will automatically // load the tools you've enabled for your account. Boosh! analytics.load( - apiKey, - "https://dwh-tracking.it.auth0.com/external-metrics", - "jwt.io" + apiKey ); // Make the first page call to load the integrations. If From 46085d4e2ccff90d712fdbae55bdf1b21f5772e1 Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Wed, 20 Feb 2019 15:11:07 +0100 Subject: [PATCH 289/611] Update auth0/node-jsonwebtoken PS support --- views/website/libraries/2-Node.js.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json index a4ad3651..5e71f6b0 100644 --- a/views/website/libraries/2-Node.js.json +++ b/views/website/libraries/2-Node.js.json @@ -25,9 +25,9 @@ "es256": true, "es384": true, "es512": true, - "ps256": false, - "ps384": false, - "ps512": false + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/auth0", "authorName": "Auth0", From aab2869d648b84b57e97cb438ccb7d53b099a12f Mon Sep 17 00:00:00 2001 From: Gabriel Sanches Date: Thu, 21 Feb 2019 17:19:07 -0300 Subject: [PATCH 290/611] Update available signing methods for gbrlsnchs/jwt I have released a new major version for [gbrlsnchs/jwt](https://github.com/gbrlsnchs/jwt) and now it also supports all signing methods using RSA-PSS. --- views/website/libraries/9-Go.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index b9f9aee6..9bccf3de 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -271,15 +271,15 @@ "es256": true, "es384": true, "es512": true, - "ps256": false, - "ps384": false, - "ps512": false + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/gbrlsnchs", - "authorName": "gbrlsnchs", + "authorName": "Gabriel Sanches", "gitHubRepoPath": "gbrlsnchs/jwt", "repoUrl": "https://github.com/gbrlsnchs/jwt", - "installCommandHtml": "go get github.com/gbrlsnchs/jwt" + "installCommandHtml": "go get -u github.com/gbrlsnchs/jwt/v3" }, { "minimumVersion": null, From 893449cbf98d06e3c42701f5a4dbade78c16a240 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 28 Feb 2019 17:44:18 +0100 Subject: [PATCH 291/611] Remove segment key and strip tokens from url --- src/metrics.js | 32 ++++++++++++++++++++++++------- src/website/index.js | 3 +-- src/website/introduction/index.js | 9 ++++----- src/website/metrics-api-key.js | 5 ----- 4 files changed, 30 insertions(+), 19 deletions(-) delete mode 100644 src/website/metrics-api-key.js diff --git a/src/metrics.js b/src/metrics.js index 3c962249..c73b5d5f 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -1,6 +1,6 @@ import log from "loglevel"; -export function init(apiKey) { +export function init() { // Create a queue, but don't obliterate an existing one! var analytics = (window.metrics = window.metrics || []); @@ -60,7 +60,7 @@ export function init(apiKey) { // Define a method to load Auth0-metrics from our CDN, // and that will be sure to only ever load it once. - analytics.load = function(key, options) { + analytics.load = function() { // Create an async script element based on your key. var script = document.createElement("script"); script.type = "text/javascript"; @@ -74,9 +74,29 @@ export function init(apiKey) { script.onload = function() { // Grab analytics and make it private window.metrics = new Auth0Metrics( - key, + "", "https://dwh-tracking.it.auth0.com/external-metrics", - "jwt.io" + "jwt.io", + { + removeQueryParam: [ + { + key: "token", + value: "[a-z0-9._~-]+" + }, + { + key: "value", + value: "[a-z0-9._~-]+" + }, + { + key: "id_token", + value: "[a-z0-9._~-]+" + }, + { + key: "access_token", + value: "[a-z0-9._~-]+" + } + ] + } ); }; @@ -90,9 +110,7 @@ export function init(apiKey) { // Load Auth0-metrics with your key, which will automatically // load the tools you've enabled for your account. Boosh! - analytics.load( - apiKey - ); + analytics.load(); // Make the first page call to load the integrations. If // you'd like to manually name or tag the page, edit or diff --git a/src/website/index.js b/src/website/index.js index 30afd6f1..543c652b 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -1,6 +1,5 @@ import "../google-analytics.js"; import * as metrics from "../metrics.js"; -import metricsApiKey from "./metrics-api-key.js"; import { setupNavbar } from "./navbar.js"; import { setupExtensionButton } from "./extension.js"; import { setupLibraries } from "./libraries.js"; @@ -66,7 +65,7 @@ function pickEbookOrExtensionBanner() { } function setupMetrics() { - metrics.init(metricsApiKey); + metrics.init(); // Section visible metrics window.addEventListener("scroll", e => { diff --git a/src/website/introduction/index.js b/src/website/introduction/index.js index 850b7dc0..c41bde5e 100644 --- a/src/website/introduction/index.js +++ b/src/website/introduction/index.js @@ -1,10 +1,9 @@ -import { setupHighlighting } from '../highlighting.js'; -import { setupJwtCounter } from '../counter.js'; -import * as metrics from '../../metrics.js'; -import metricsApiKey from '../metrics-api-key.js'; +import { setupHighlighting } from "../highlighting.js"; +import { setupJwtCounter } from "../counter.js"; +import * as metrics from "../../metrics.js"; function setupMetrics() { - metrics.init(metricsApiKey); + metrics.init(); } // Initialization diff --git a/src/website/metrics-api-key.js b/src/website/metrics-api-key.js deleted file mode 100644 index 5d39d90f..00000000 --- a/src/website/metrics-api-key.js +++ /dev/null @@ -1,5 +0,0 @@ -const key = (typeof PRODUCTION !== 'undefined') && PRODUCTION ? - '693wciz6BgZdlmW0qDlbgxpyj7gtVxRR' : - 'xBxBArADMejN3aqs9NhISky9PHPXIr80'; - -export default key; From 0cd5059635620f17d55a5af3faebff1a7a57bddd Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 28 Feb 2019 18:08:43 +0100 Subject: [PATCH 292/611] Adjust query param filter args --- src/metrics.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/metrics.js b/src/metrics.js index c73b5d5f..990cab1a 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -79,10 +79,6 @@ export function init() { "jwt.io", { removeQueryParam: [ - { - key: "token", - value: "[a-z0-9._~-]+" - }, { key: "value", value: "[a-z0-9._~-]+" @@ -94,6 +90,10 @@ export function init() { { key: "access_token", value: "[a-z0-9._~-]+" + }, + { + key: "token", + value: "[a-z0-9._~-]+" } ] } From 02a658806093c9603a80c9ea8dd7b87400505ff5 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 28 Feb 2019 20:22:53 +0100 Subject: [PATCH 293/611] Upgrade auth0-metrics --- src/metrics.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/metrics.js b/src/metrics.js index 990cab1a..55964f84 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -65,7 +65,8 @@ export function init() { var script = document.createElement("script"); script.type = "text/javascript"; script.async = true; - script.src = "https://cdn.auth0.com/website/js/1.6.0/auth0-metrics-min.js"; + script.src = + "https://cdn.auth0.com/website/js/m/1.6.1/auth0-metrics.min.js"; script.onerror = function() { console.error("No metrics"); From 6b51485142b586b85c433ef8ce1e5b51dc3c157f Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 28 Feb 2019 21:12:47 +0100 Subject: [PATCH 294/611] Upgrade auth0-metrics --- src/metrics.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metrics.js b/src/metrics.js index 55964f84..a7b931b5 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -66,7 +66,7 @@ export function init() { script.type = "text/javascript"; script.async = true; script.src = - "https://cdn.auth0.com/website/js/m/1.6.1/auth0-metrics.min.js"; + "https://cdn.auth0.com/website/js/m/1.6.2/auth0-metrics.min.js"; script.onerror = function() { console.error("No metrics"); From 9897792e3d6e304d72c134b076aee43e05389494 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 1 Mar 2019 18:55:09 +0100 Subject: [PATCH 295/611] add @panva/jose --- views/website/libraries/2-Node.js.json | 31 ++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json index 5e71f6b0..3ee29448 100644 --- a/views/website/libraries/2-Node.js.json +++ b/views/website/libraries/2-Node.js.json @@ -34,6 +34,37 @@ "gitHubRepoPath": "auth0/node-jsonwebtoken", "repoUrl": "https://github.com/auth0/node-jsonwebtoken", "installCommandHtml": "npm install jsonwebtoken" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true + }, + "authorUrl": "https://github.com/panva", + "authorName": "Filip Skokan", + "gitHubRepoPath": "panva/jose", + "repoUrl": "https://github.com/panva/jose", + "installCommandHtml": "npm install @panva/jose" } ] } From 6cee8c5353aca45dbfd86bf24e1ff12142f5a5f4 Mon Sep 17 00:00:00 2001 From: Milad Rahimi Date: Tue, 5 Mar 2019 14:16:06 +0330 Subject: [PATCH 296/611] update miladrahimi/php-jwt info Add status of PS algorithms for `miladrahimi/php-jwt` --- views/website/libraries/24-PHP.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index ac01754b..08cf40bd 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -331,7 +331,10 @@ "rs512": true, "es256": false, "es384": false, - "es512": false + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false }, "authorUrl": "https://github.com/miladrahimi", "authorName": "Milad Rahimi", From fd36cf9bd62a3d51957e3bf87d911599daebf712 Mon Sep 17 00:00:00 2001 From: Ian Partridge Date: Tue, 5 Mar 2019 17:02:25 +0000 Subject: [PATCH 297/611] IBM-Swift/Swift-JWT supports ECDSA from v3.3 --- views/website/libraries/19-Swift.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/19-Swift.json b/views/website/libraries/19-Swift.json index eaee3b08..a4b41fd4 100644 --- a/views/website/libraries/19-Swift.json +++ b/views/website/libraries/19-Swift.json @@ -116,9 +116,9 @@ "rs256": true, "rs384": true, "rs512": true, - "es256": false, - "es384": false, - "es512": false, + "es256": true, + "es384": true, + "es512": true, "ps256": false, "ps384": false, "ps512": false From e98268321f2f2eaaa431b6749735086b9fa63a66 Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 6 Mar 2019 09:48:08 +0100 Subject: [PATCH 298/611] Remove hardcoded GA scripts --- src/extension/index.js | 17 ++++++++--------- src/google-analytics.js | 13 ------------- src/website/index.js | 1 - 3 files changed, 8 insertions(+), 23 deletions(-) diff --git a/src/extension/index.js b/src/extension/index.js index 188c3c3f..ae22ba0f 100644 --- a/src/extension/index.js +++ b/src/extension/index.js @@ -1,18 +1,17 @@ -import '../google-analytics.js'; -import { +import { setupTokenEditor, setTokenEditorValue, getTokenEditorValue -} from '../editor'; -import { setupTokenPageInspector } from './page-inspector.js'; -import { shareJwtLink, shareJwtTextElement } from './dom-elements.js'; -import { getTokenFromClipboardIfPossible } from './utils.js'; -import { setupShareJwtButton } from '../share-button.js'; -import strings from '../strings.js'; +} from "../editor"; +import { setupTokenPageInspector } from "./page-inspector.js"; +import { shareJwtLink, shareJwtTextElement } from "./dom-elements.js"; +import { getTokenFromClipboardIfPossible } from "./utils.js"; +import { setupShareJwtButton } from "../share-button.js"; +import strings from "../strings.js"; function loadFromClipboardIfPossible() { const token = getTokenFromClipboardIfPossible(); - if(token) { + if (token) { setTokenEditorValue(token); } } diff --git a/src/google-analytics.js b/src/google-analytics.js index a54f80ff..e69de29b 100644 --- a/src/google-analytics.js +++ b/src/google-analytics.js @@ -1,13 +0,0 @@ -//Google Analytics -var _gaq = _gaq || []; -_gaq.push(['_setAccount', 'UA-37952868-23']); -_gaq.push(['_trackPageview']); - -(function() { - var ga = document.createElement('script'); - ga.type = 'text/javascript'; - ga.async = true; - ga.src = 'https://ssl.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(ga, s); -})(); diff --git a/src/website/index.js b/src/website/index.js index 543c652b..a3aca97e 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -1,4 +1,3 @@ -import "../google-analytics.js"; import * as metrics from "../metrics.js"; import { setupNavbar } from "./navbar.js"; import { setupExtensionButton } from "./extension.js"; From f77a598f7d66a3bf592d36d3c7c80de021d071b7 Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 6 Mar 2019 09:50:00 +0100 Subject: [PATCH 299/611] Remove GA script from view --- views/website/layout.pug | 8 -------- 1 file changed, 8 deletions(-) diff --git a/views/website/layout.pug b/views/website/layout.pug index 28da8ad9..ebf32c0c 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -66,14 +66,6 @@ html(lang='en') .column.social-counter a.twitter-follow-button(href='https://twitter.com/auth0', data-show-count='true') Follow @auth0 - script. - (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ - (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), - m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) - })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - ga('create', 'UA-37952868-2', 'auto'); - ga('send', 'pageview'); - script. !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); From 94b30510e39194cdd73097ad6068f9cab0ddf87e Mon Sep 17 00:00:00 2001 From: Sambego Date: Fri, 15 Mar 2019 12:30:25 +0100 Subject: [PATCH 300/611] Temporary expose the JOSE lib for debugging purposes --- src/editor/jwt.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/editor/jwt.js b/src/editor/jwt.js index 022e9bd8..d6024cae 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -5,6 +5,8 @@ import { pki } from 'node-forge'; import log from 'loglevel'; +window.jose = jose; + // node-jose does not support keys shorter than block size. This is a // limitation from their implementation and could be resolved in the future. // See: https://github.com/cisco/node-jose/blob/master/lib/jwk/octkey.js#L141 From c7cc044e007322350785c51c3b52b01799833bb7 Mon Sep 17 00:00:00 2001 From: Sambego Date: Sat, 16 Mar 2019 10:00:38 +0100 Subject: [PATCH 301/611] Remove debug global jose access --- src/editor/jwt.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/editor/jwt.js b/src/editor/jwt.js index d6024cae..022e9bd8 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -5,8 +5,6 @@ import { pki } from 'node-forge'; import log from 'loglevel'; -window.jose = jose; - // node-jose does not support keys shorter than block size. This is a // limitation from their implementation and could be resolved in the future. // See: https://github.com/cisco/node-jose/blob/master/lib/jwk/octkey.js#L141 From dbae575bb4b0167a1155a301ed8c55669c06a082 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sat, 16 Mar 2019 12:00:01 +0100 Subject: [PATCH 302/611] use 2048 rsa keys by default --- src/editor/default-tokens.js | 49 +++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/src/editor/default-tokens.js b/src/editor/default-tokens.js index 337053aa..6c57c9ab 100644 --- a/src/editor/default-tokens.js +++ b/src/editor/default-tokens.js @@ -3,27 +3,42 @@ const rsaPrivateKey = `-----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY-----`; const rsaPublicKey = `-----BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd -UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs -HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D -o2kQ+X5xK9cipRgEKwIDAQAB +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnzyis1ZjfNB0bBgKFMSv +vkTtwlvBsaJq7S5wA+kzeVOVpVWwkWdVha4s38XM/pa/yr47av7+z3VTmvDRyAHc +aT92whREFpLv9cj5lTeJSibyr/Mrm/YtjCZVWgaOYIhwrXwKLqPr/11inWsAkfIy +tvHWTxZYEcXLgAXFuUuaS3uF9gEiNQwzGTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0 +e+lf4s4OxQawWD79J9/5d3Ry0vbV3Am1FtGJiJvOwRsIfVChDpYStTcHTCMqtvWb +V6L11BWkpzGXSW4Hv43qa+GSYOD2QU68Mb59oSk2OB+BtOLpJofmbGEGgvmwyCI9 +MwIDAQAB -----END PUBLIC KEY-----`; const ecPrivateKey256 = From 42f916a8a61332fa841e56818f59c990083a466c Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sat, 16 Mar 2019 12:09:24 +0100 Subject: [PATCH 303/611] update default tokens --- src/editor/default-tokens.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/editor/default-tokens.js b/src/editor/default-tokens.js index 6c57c9ab..3844f818 100644 --- a/src/editor/default-tokens.js +++ b/src/editor/default-tokens.js @@ -100,17 +100,17 @@ export default { secret: 'your-512-bit-secret' }, rs256: { - token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.TCYt5XsITJX1CxPCT8yAV-TVkIEq_PbChOMqsLfRoPsnsgw5WEuts01mq-pQy7UJiN5mgRxD-WUcX16dUEMGlv50aqzpqh4Qktb3rk-BuQy72IFLOqV0G_zS245-kronKb78cPN25DGlcTwLtjPAYuNzVBAh4vGHSrQyHUdBBPM', + token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.POstGetfAytaZS82wHcjoTyoqhMyxXiWdR7Nn7A29DNSl0EiXLdwJ6xC6AfgZWF1bOsS_TuYI3OG85AmiExREkrS6tDfTQ2B3WXlrr-wp5AokiRbz3_oB4OxG-W9KcEEbDRcZc0nH3L7LzYptiy1PtAylQGxHTWZXtGz4ht0bAecBgmpdgXMguEIcoqPJ1n3pIWk_dUZegpqx0Lka21H6XxUTxiy8OcaarA8zdnPUnV6AmNP3ecFawIFYdvJB_cm-GvpCSbr8G8y_Mllj8f4x9nBH8pQux89_6gUY618iYv7tuPWBFfEbLxtF2pZS6YC1aSfLQxeNe8djT9YjpvRZA', privateKey: rsaPrivateKey, publicKey: rsaPublicKey }, rs384: { - token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.CN9hqUMdVb5LGo06Geb8ap1qYfbJ4rEZIMqTE9gxA2m6GGmsXkznRxzoFpAzQUey9q5HehRTk_-TxYydN3QtFPfrTbAHep7PLhp3XhdvTJ1ok__UBjv4aP6UWTF-Rflr3qeC18LdlM4nyKL7ZwSGDzytWihGod5vn4GAXErUUE4', + token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.D4kXa3UspFjRA9ys5tsD4YDyxxam3l_XnOb3hMEdPDTfSLRHPv4HPwxvin-pIkEmfJshXPSK7O4zqSXWAXFO52X-upJjFc_gpGDswctNWpOJeXe1xBgJ--VuGDzUQCqkr9UBpN-Q7TE5u9cgIVisekSFSH5Ax6aXQC9vCO5LooNFx_WnbTLNZz7FUia9vyJ544kLB7UcacL-_idgRNIWPdd_d1vvnNGkknIMarRjCsjAEf6p5JGhYZ8_C18g-9DsfokfUfSpKgBR23R8v8ZAAmPPPiJ6MZXkefqE7p3jRbA--58z5TlHmH9nTB1DYE2872RYvyzG3LoQ-2s93VaVuw', privateKey: rsaPrivateKey, publicKey: rsaPublicKey }, rs512: { - token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.MejLezWY6hjGgbIXkq6Qbvx_-q5vWaTR6qPiNHphvla-XaZD3up1DN6Ib5AEOVtuB3fC9l-0L36noK4qQA79lhpSK3gozXO6XPIcCp4C8MU_ACzGtYe7IwGnnK3Emr6IHQE0bpGinHX1Ak1pAuwJNawaQ6Nvmz2ozZPsyxmiwoo', + token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.JlX3gXGyClTBFciHhknWrjo7SKqyJ5iBO0n-3S2_I7cIgfaZAeRDJ3SQEbaPxVC7X8aqGCOM-pQOjZPKUJN8DMFrlHTOdqMs0TwQ2PRBmVAxXTSOZOoEhD4ZNCHohYoyfoDhJDP4Qye_FCqu6POJzg0Jcun4d3KW04QTiGxv2PkYqmB7nHxYuJdnqE3704hIS56pc_8q6AW0WIT0W-nIvwzaSbtBU9RgaC7ZpBD2LiNE265UBIFraMDF8IAFw9itZSUCTKg1Q-q27NwwBZNGYStMdIBDor2Bsq5ge51EkWajzZ7ALisVp-bskzUsqUf77ejqX_CBAqkNdH1Zebn93A', privateKey: rsaPrivateKey, publicKey: rsaPublicKey }, @@ -130,19 +130,18 @@ export default { publicKey: ecPublicKey521 }, ps256: { - token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.P9_X1ctIxnnoUpKSWpYw3rF62e-d8LXe3sETuLn4Lhigw5OQhi-mBBKoBMneHy4kimS84zxnMby0FYo9wKM3I3pEg8Qrz0Q00tNhKCwOnZ7Q-e86sW1luK1z82tufF-sZ9_BY_LGQsym0lQmQaHFzLmEDXnOzWsjUThHGVJTI64', + token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.hZnl5amPk_I3tb4O-Otci_5XZdVWhPlFyVRvcqSwnDo_srcysDvhhKOD01DigPK1lJvTSTolyUgKGtpLqMfRDXQlekRsF4XhAjYZTmcynf-C-6wO5EI4wYewLNKFGGJzHAknMgotJFjDi_NCVSjHsW3a10nTao1lB82FRS305T226Q0VqNVJVWhE4G0JQvi2TssRtCxYTqzXVt22iDKkXeZJARZ1paXHGV5Kd1CljcZtkNZYIGcwnj65gvuCwohbkIxAnhZMJXCLaVvHqv9l-AAUV7esZvkQR1IpwBAiDQJh4qxPjFGylyXrHMqh5NlT_pWL2ZoULWTg_TJjMO9TuQ', privateKey: rsaPrivateKey, publicKey: rsaPublicKey }, ps384: { - token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.oywIg-I6w59yw9jiPxewn5n2BhrD7hSifWSmzFKGBMPEMd0qweVNjlyxu2TodunPzlh49OW8QA0ygNRL9VQrWA3GXzb5FubNF4s7Y15QePx52anlvebzihx5-hR0UhKbVC0UODwYNMiY-v0L7iMbT9UvuSj0GAuZMxndo2Y2VFQ', + token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.MqF1AKsJkijKnfqEI3VA1OnzAL2S4eIpAuievMgD3tEFyFMU67gCbg-fxsc5dLrxNwdZEXs9h0kkicJZ70mp6p5vdv-j2ycDKBWg05Un4OhEl7lYcdIsCsB8QUPmstF-lQWnNqnq3wra1GynJrOXDL27qIaJnnQKlXuayFntBF0j-82jpuVdMaSXvk3OGaOM-7rCRsBcSPmocaAO-uWJEGPw_OWVaC5RRdWDroPi4YL4lTkDEC-KEvVkqCnFm_40C-T_siXquh5FVbpJjb3W2_YvcqfDRj44TsRrpVhk6ohsHMNeUad_cxnFnpolIKnaXq_COv35e9EgeQIPAbgIeg', privateKey: rsaPrivateKey, publicKey: rsaPublicKey }/*, ps512: { - token: '', + token: 'eyJhbGciOiJQUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.lLFQm3WUmHanSiQZBDcwEX9CH34ROOlPtgH3icJxaiesfvRHFDWHnG7GZQ6_-c6MU1h2LmP-mCpWM2evj7arIQCS63vp6K869CUZROhwCGZK1dfbOlYFAPg-AO4bBIKpS4NHkBIoo4O2LIbaIQT2gpBsYr4vMOX5UPCULWz8V8GlNKDv_2TYoHlttVm-2fpqQCt-ZEeCvaWEbWmk_dagewuxlhR7fXjdaSHo_6oQe6vic2sBu8RGv_NyQ97sB6X2jv1sXo0WIWihmPzDOpP0J4dmAIyCiGWQa8jXQfPN8JYbBD9j2w3xkKs7HCSl7VX3JfzxmSpTaOcVIGRnEt3kZA', privateKey: rsaPrivateKey, publicKey: rsaPublicKey }*/ }; - From 9de942e93c7a8782aaafc6f74c691058814003f9 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sat, 16 Mar 2019 12:11:47 +0100 Subject: [PATCH 304/611] update publicKeyPlainRSA --- test/unit/editor/jwt.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index 362f8175..9969aee9 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -12,9 +12,12 @@ chai.should(); const publicKeyPlainRSA = `-----BEGIN RSA PUBLIC KEY----- -MIGJAoGBAN2Vq1GNGOiCjdaiOAYcUdgu6B1RYBj2JHd/LhqtY0DUqhLyRXDfdwmJ -tevxu/BQBSlqsLCW91sfp28Q5+i7T+AIVCwdR9CtIO/4y5JQwB7yPMoTipb6Mr7F -BT1rTcZScoeSSV75DSlf+DqNdnuvX/EArkOjaRD5fnEr1yKlGAQrAgMBAAE= +MIIBCgKCAQEAnzyis1ZjfNB0bBgKFMSvvkTtwlvBsaJq7S5wA+kzeVOVpVWwkWdV +ha4s38XM/pa/yr47av7+z3VTmvDRyAHcaT92whREFpLv9cj5lTeJSibyr/Mrm/Yt +jCZVWgaOYIhwrXwKLqPr/11inWsAkfIytvHWTxZYEcXLgAXFuUuaS3uF9gEiNQwz +GTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0e+lf4s4OxQawWD79J9/5d3Ry0vbV3Am1 +FtGJiJvOwRsIfVChDpYStTcHTCMqtvWbV6L11BWkpzGXSW4Hv43qa+GSYOD2QU68 +Mb59oSk2OB+BtOLpJofmbGEGgvmwyCI9MwIDAQAB -----END RSA PUBLIC KEY-----`; describe('JWT', function() { From 95bb53b4a0dbbaa90a53a0fb3de8d6bcad735a8e Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sat, 16 Mar 2019 12:37:19 +0100 Subject: [PATCH 305/611] update jwks.json --- test/functional/jwks.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/functional/jwks.json b/test/functional/jwks.json index 6cc07c10..969fd891 100644 --- a/test/functional/jwks.json +++ b/test/functional/jwks.json @@ -5,7 +5,7 @@ "kty": "RSA", "use": "sig", "x5c": [ - "MIICWzCCAcSgAwIBAgIJANbzPoQsRLVvMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTgwMjA5MTc1NDExWhcNMTgwMzExMTc1NDExWjBFMQswCQYDVQQGEwJVUzETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQABo1MwUTAdBgNVHQ4EFgQUe2Yz57fovxPFVMuLYp8YtPh+b20wHwYDVR0jBBgwFoAUe2Yz57fovxPFVMuLYp8YtPh+b20wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQBdQJdFYpWe05D6uGq4nHROscqiIgNv07VSkVtSZ6GTvaeAAgQMz9In9fh/LQw37bf2pwsusGAvL6m3EicI/XxrkaxagNRkcqMJeYi0lcx1Kw4tmbu7MGn8Az9K7Czi5SM0N1/3FowuVhVvMIPosfUDuC4CBMJ+tiQYk/NPOF2k+Q==" + "MIIDBjCCAe4CCQCu9p2owjWCFjANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJVUzETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMB4XDTE5MDMxNjExMzYyOVoXDTIwMDMxNTExMzYyOVowRTELMAkGA1UEBhMCVVMxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ88orNWY3zQdGwYChTEr75E7cJbwbGiau0ucAPpM3lTlaVVsJFnVYWuLN/FzP6Wv8q+O2r+/s91U5rw0cgB3Gk/dsIURBaS7/XI+ZU3iUom8q/zK5v2LYwmVVoGjmCIcK18Ci6j6/9dYp1rAJHyMrbx1k8WWBHFy4AFxblLmkt7hfYBIjUMMxk1Nb9BapKkwa+AfJ1txwjeO11LtLfGNHvpX+LODsUGsFg+/Sff+Xd0ctL21dwJtRbRiYibzsEbCH1QoQ6WErU3B0wjKrb1m1ei9dQVpKcxl0luB7+N6mvhkmDg9kFOvDG+faEpNjgfgbTi6SaH5mxhBoL5sMgiPTMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAQItHIdKxBhnG6yqZIq9inhwQZJ2D/YV/FJfhLsHcvj/OnOvu/sZPn2SEwsi4w4LobS1MH2bxX15m+pK0sUdLxWysLr3afDEOIlI1pHPxPv4sXeJ2g/N2Wzr7ZMTEXSlCWgU+4Q9aIvNOlaAS5EBhQXTDZqwLer+tgeC+7da8rihuOnQWQraWGGXpKVHb2kbBpVZi61cjmvic6Caun4AZjL+UOEWpzPtFnvgTKJRD7Vh0fUfhxnKXHLAV/kcdcRPEeTg+ZDAWTThj20rDyxkWU87bptvI9VmxaummGwD/iknuiu84x3fiuEtwHbTCA4bz8ce6jzKQ2qBllvgfcVf4Dw==" ], "kid": "1", "x5t": "1" From 1d709c25cf36facb75eefbb661effd8fdb742649 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sat, 16 Mar 2019 13:10:31 +0100 Subject: [PATCH 306/611] Properly handle `iss` in payload 1) resolve well-known openid-configuration 2) look and fetch jwks_uri 3) parse the jwks, look for a key based on kid, alg, use 4) if more than 1 or none match, fail 5) export key to pem as expected Resolves #367 --- src/editor/public-key-download.js | 35 +++++++++++++--- test/functional/editor.js | 9 +++- test/functional/jwks.json | 4 +- test/unit/editor/public-key-download.js | 56 +++++++++++++++---------- 4 files changed, 73 insertions(+), 31 deletions(-) diff --git a/src/editor/public-key-download.js b/src/editor/public-key-download.js index afb748d0..9cfee3df 100644 --- a/src/editor/public-key-download.js +++ b/src/editor/public-key-download.js @@ -1,3 +1,5 @@ +import jose from 'node-jose'; + import { httpGet } from '../utils.js'; function getKeyFromX5c(x5c) { @@ -28,13 +30,13 @@ function getKeyFromX5Claims(claims) { } else { reject('x5c or x5u claims not available'); } - }); + }); } function getKeyFromJwkKeySetUrl(kid, url) { return httpGet(url).then(data => { data = JSON.parse(data); - + if(!data || !data.keys || !(data.keys instanceof Array)) { throw new Error(`Could not get JWK key set from URL: ${url}`); } @@ -66,10 +68,31 @@ export function downloadPublicKeyIfPossible(decodedToken) { resolve(getKeyFromJwkKeySetUrl(header.kid, header.jku)); } else if(header.jwk) { resolve(getKeyFromX5Claims(header.jwk)); - } else if(header.kid && payload.iss) { - //Auth0-specific scheme - const url = payload.iss + '.well-known/jwks.json'; - resolve(getKeyFromJwkKeySetUrl(header.kid, url)); + } else if(payload.iss) { + const url = payload.iss + (payload.iss.substr(-1) === '/' ? '.well-known/openid-configuration' : '/.well-known/openid-configuration') + + httpGet(url).then(data => { + data = JSON.parse(data); + + if(!data || !data.jwks_uri || typeof data.jwks_uri !== 'string') { + throw new Error(`Could not get jwks_uri from URL: ${url}`); + } + + return httpGet(data.jwks_uri) + }).then(data => { + data = JSON.parse(data); + + return jose.JWK.asKeyStore(data); + }).then(jwks => { + + const keys = jwks.all({ alg: header.alg, kid: header.kid, use: 'sig' }) + + if (keys.length !== 1) { + throw new Error('Could not find a single definitive key in jwks_uri'); + } + + resolve(keys[0].toPEM()) + }).catch(reject); } else { reject('No details about key'); } diff --git a/test/functional/editor.js b/test/functional/editor.js index f7ef213b..bb9dfb29 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -660,6 +660,13 @@ describe('Editor', function() { before(async function() { this.app = express(); + this.app.get('/.well-known/openid-configuration', (req, res) => { + res.set('Access-Control-Allow-Origin', '*'); + res.json({ + jwks_uri: 'http://localhost:3000/.well-known/jwks.json' + }); + }); + this.app.get('/.well-known/jwks.json', (req, res) => { res.set('Access-Control-Allow-Origin', '*'); res.json(jwks); @@ -715,7 +722,7 @@ describe('Editor', function() { const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); - expect(publicKey).to.include(jwks.keys[0].x5c[0]); + expect(publicKey).to.include(`-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd\nUWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs\nHUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D\no2kQ+X5xK9cipRgEKwIDAQAB\n-----END PUBLIC KEY-----\n`); const valid = await this.page.$eval('.validation-status', status => { return status.classList.contains('valid-token') && diff --git a/test/functional/jwks.json b/test/functional/jwks.json index 6cc07c10..96528a4f 100644 --- a/test/functional/jwks.json +++ b/test/functional/jwks.json @@ -8,7 +8,9 @@ "MIICWzCCAcSgAwIBAgIJANbzPoQsRLVvMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTgwMjA5MTc1NDExWhcNMTgwMzExMTc1NDExWjBFMQswCQYDVQQGEwJVUzETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQABo1MwUTAdBgNVHQ4EFgQUe2Yz57fovxPFVMuLYp8YtPh+b20wHwYDVR0jBBgwFoAUe2Yz57fovxPFVMuLYp8YtPh+b20wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQBdQJdFYpWe05D6uGq4nHROscqiIgNv07VSkVtSZ6GTvaeAAgQMz9In9fh/LQw37bf2pwsusGAvL6m3EicI/XxrkaxagNRkcqMJeYi0lcx1Kw4tmbu7MGn8Az9K7Czi5SM0N1/3FowuVhVvMIPosfUDuC4CBMJ+tiQYk/NPOF2k+Q==" ], "kid": "1", - "x5t": "1" + "x5t": "1", + "e": "AQAB", + "n": "3ZWrUY0Y6IKN1qI4BhxR2C7oHVFgGPYkd38uGq1jQNSqEvJFcN93CYm16_G78FAFKWqwsJb3Wx-nbxDn6LtP4AhULB1H0K0g7_jLklDAHvI8yhOKlvoyvsUFPWtNxlJyh5JJXvkNKV_4Oo12e69f8QCuQ6NpEPl-cSvXIqUYBCs" } ] } diff --git a/test/unit/editor/public-key-download.js b/test/unit/editor/public-key-download.js index 8b9a453d..8ee23556 100644 --- a/test/unit/editor/public-key-download.js +++ b/test/unit/editor/public-key-download.js @@ -4,7 +4,7 @@ import _ from 'lodash'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; -import publicKeyDownloadInjector from +import publicKeyDownloadInjector from 'inject-loader!../../../src/editor/public-key-download.js'; chai.use(chaiAsPromised); @@ -26,11 +26,16 @@ describe('Public key downloader', function() { const jwks = { keys: [{ - kid: 1, - x5c: ['test-x5c-key'] + kty: 'RSA', + kid: '1', + e: 'AQAB', + n: '1GPz-Er5h7PCk4v3pSlnaLYNYrp4sVc6Tx7FVz9d8m4zIS2qzcTM_6dRbMgZ4hBdD35NpYzU4z-d8lN27-J_jOzHnCiMdkY-w52dCofAkICh6ftkFlG9bFQyH8Jz5UtpVkZyy1dxCRz_sbRAzUdjUYsGvrKXg-3UYCL5SBCnt0ycrvr3iKX9k8IlMrFRB8lBJ6eQVzkzGsuivPaThXjVZ_OpY7W-XsDjut7cFgPKIc843tW4CNaDJ6j3afm-RFOok__xLQH5uA7HXS_yqfEchvzXfYfMxJY2d-Eqw4xTurm3TT07RnwJuN9slDJUrTH9EKkJkjZ7dn7fZtGjGTpaDQ', + x5c: ['test-x5c-key'], }] }; + const keyAsPEM = `-----BEGIN PUBLIC KEY-----\r\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1GPz+Er5h7PCk4v3pSln\r\naLYNYrp4sVc6Tx7FVz9d8m4zIS2qzcTM/6dRbMgZ4hBdD35NpYzU4z+d8lN27+J/\r\njOzHnCiMdkY+w52dCofAkICh6ftkFlG9bFQyH8Jz5UtpVkZyy1dxCRz/sbRAzUdj\r\nUYsGvrKXg+3UYCL5SBCnt0ycrvr3iKX9k8IlMrFRB8lBJ6eQVzkzGsuivPaThXjV\r\nZ/OpY7W+XsDjut7cFgPKIc843tW4CNaDJ6j3afm+RFOok//xLQH5uA7HXS/yqfEc\r\nhvzXfYfMxJY2d+Eqw4xTurm3TT07RnwJuN9slDJUrTH9EKkJkjZ7dn7fZtGjGTpa\r\nDQIDAQAB\r\n-----END PUBLIC KEY-----\r\n`; + function httpGetMock(data) { return (url) => data ? Promise.resolve(data) : Promise.reject(); } @@ -38,14 +43,17 @@ describe('Public key downloader', function() { it('Finds keys in iss + .well-known URL', function(done) { const decodedToken = _.defaultsDeep({}, decodedBaseToken, { header: { - kid: 1 + kid: '1' }, payload: { iss: baseUrl } }); - const httpGetStub = sinon.stub().resolves(JSON.stringify(jwks)); + const httpGetStub = sinon.stub() + .onCall(0).resolves(JSON.stringify({ jwks_uri: '/.well-known/jwks.json' })) + .onCall(1).resolves(JSON.stringify(jwks)); + const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ '../utils.js': { httpGet: httpGetStub @@ -53,17 +61,19 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(jwks.keys[0].x5c[0]) + .should.eventually.include(keyAsPEM) .then(() => { + httpGetStub.should.have.been + .calledWith(baseUrl + '.well-known/openid-configuration'); httpGetStub.should.have.been .calledWith(baseUrl + '.well-known/jwks.json'); - }).should.notify(done); + }).should.notify(done); }); it('Finds keys in jwk header claim', function(done) { const decodedToken = _.defaultsDeep({}, decodedBaseToken, { header: { - kid: 1, + kid: '1', jwk: jwks.keys[0] } }); @@ -79,13 +89,13 @@ describe('Public key downloader', function() { .should.eventually.include(jwks.keys[0].x5c[0]) .then(() => { httpGetStub.should.have.callCount(0); - }).should.notify(done); + }).should.notify(done); }); it('Finds keys in jku header claim', function(done) { const decodedToken = _.defaultsDeep({}, decodedBaseToken, { header: { - kid: 1, + kid: '1', jku: baseUrl } }); @@ -101,7 +111,7 @@ describe('Public key downloader', function() { .should.eventually.include(jwks.keys[0].x5c[0]) .then(() => { httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); + }).should.notify(done); }); it('Finds keys in x5u header claim', function(done) { @@ -122,7 +132,7 @@ describe('Public key downloader', function() { .should.eventually.include(jwks.keys[0].x5c[0]) .then(() => { httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); + }).should.notify(done); }); it('Finds keys in x5c string header claim', function(done) { @@ -143,7 +153,7 @@ describe('Public key downloader', function() { .should.eventually.include(jwks.keys[0].x5c[0]) .then(() => { httpGetStub.should.have.callCount(0); - }).should.notify(done); + }).should.notify(done); }); it('Finds keys in x5c array header claim', function(done) { @@ -164,13 +174,13 @@ describe('Public key downloader', function() { .should.eventually.include(jwks.keys[0].x5c[0]) .then(() => { httpGetStub.should.have.callCount(0); - }).should.notify(done); + }).should.notify(done); }); it('Rejects the promise when HTTP request fails', function(done) { const decodedToken = _.defaultsDeep({}, decodedBaseToken, { header: { - kid: 1, + kid: '1', jku: baseUrl } }); @@ -186,14 +196,14 @@ describe('Public key downloader', function() { .should.be.rejected .then(() => { httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); + }).should.notify(done); }); - describe('Rejects the promise when invalid data ' + + describe('Rejects the promise when invalid data ' + 'is in jku claim URL', function() { const decodedToken = _.defaultsDeep({}, decodedBaseToken, { header: { - kid: 1, + kid: '1', jku: baseUrl } }); @@ -216,9 +226,9 @@ describe('Public key downloader', function() { httpGetStub.should.have.been.calledWith(baseUrl); }).should.notify(done); }); - + it('when the keys object does not exist', function(done) { - httpGetStub = sinon.stub().resolves({ + httpGetStub = sinon.stub().resolves({ }); downloadPublicKeyIfPossible(decodedToken) @@ -227,7 +237,7 @@ describe('Public key downloader', function() { httpGetStub.should.have.been.calledWith(baseUrl); }).should.notify(done); }); - + it('when there is no kid', function(done) { httpGetStub = sinon.stub().resolves({ keys: [{ @@ -241,11 +251,11 @@ describe('Public key downloader', function() { httpGetStub.should.have.been.calledWith(baseUrl); }).should.notify(done); }); - + it('when there are no x5u or x5c claims', function(done) { httpGetStub = sinon.stub().resolves({ keys: [{ - kid: 1 + kid: '1' }] }); From e0501f10139c02abee9b81f95159a1766b6126f4 Mon Sep 17 00:00:00 2001 From: samuela Date: Sun, 17 Mar 2019 23:03:57 -0700 Subject: [PATCH 307/611] Keats/jsonwebtoken supports some more claims --- views/website/libraries/13-Rust.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/views/website/libraries/13-Rust.json b/views/website/libraries/13-Rust.json index 463ee618..ce124804 100644 --- a/views/website/libraries/13-Rust.json +++ b/views/website/libraries/13-Rust.json @@ -40,12 +40,12 @@ "support": { "sign": true, "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, "jti": false, "hs256": true, "hs384": true, From 2c0737edb2ffe921ff2d9c2794cf517843ad7568 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Fri, 5 Apr 2019 17:05:01 -0400 Subject: [PATCH 308/611] Update jwcrypto signature algorithm support This adds also edDSA which is currently not contemplated (see RFC 8037) --- views/website/libraries/1-Python.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/1-Python.json b/views/website/libraries/1-Python.json index da1a1c2d..6ed53bd8 100644 --- a/views/website/libraries/1-Python.json +++ b/views/website/libraries/1-Python.json @@ -86,7 +86,11 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true, + "edDSA": true }, "authorUrl": "https://github.com/simo5", "authorName": "Simo Sorce", From dcd049f36ce87679735ca3d77c88e96415a44016 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Fri, 5 Apr 2019 17:09:02 -0400 Subject: [PATCH 309/611] Add EdDSA --- views/website/libraries/template.pug | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index 9c4fe215..e0e429d3 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -81,7 +81,10 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) p i(class=lib.support.ps512 ? 'icon-budicon-500' : (lib.support.ps512 !== undefined ? 'icon-budicon-501' : 'icon-unknown')) | PS512 - + p + i(class=lib.support.edDSA ? 'icon-budicon-500' : (lib.support.edDSA !== undefined ? 'icon-budicon-501' : 'icon-unknown')) + | EdDSA + .author-info .maintainer if lib.authorUrl From 3bbdd236ff672b83e248976882c692089b8be1fc Mon Sep 17 00:00:00 2001 From: Kingcean Tuan Date: Tue, 9 Apr 2019 13:17:41 +0800 Subject: [PATCH 310/611] Added a dotNet library Trivial. https://github.com/nuscien/trivial/wiki/oauth#jwt --- views/website/libraries/0-.NET.json | 46 ++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/views/website/libraries/0-.NET.json b/views/website/libraries/0-.NET.json index 6135c3bd..15a4bc26 100644 --- a/views/website/libraries/0-.NET.json +++ b/views/website/libraries/0-.NET.json @@ -31,12 +31,9 @@ }, "authorUrl": "https://www.microsoft.com/", "authorName": "Microsoft", - "gitHubRepoPath": - "AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet", - "repoUrl": - "https://github.com/MSOpenTech/azure-activedirectory-identitymodel-extensions-for-dotnet", - "installCommandHtml": - "Install-Package
    System.IdentityModel.Tokens.Jwt" + "gitHubRepoPath": "AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet", + "repoUrl": "https://github.com/MSOpenTech/azure-activedirectory-identitymodel-extensions-for-dotnet", + "installCommandHtml": "Install-Package
    System.IdentityModel.Tokens.Jwt" }, { "minimumVersion": null, @@ -67,8 +64,7 @@ "authorName": "DV", "gitHubRepoPath": "dvsekhvalnov/jose-jwt", "repoUrl": "https://github.com/dvsekhvalnov/jose-jwt", - "installCommandHtml": - "Install-Package
    jose-jwt" + "installCommandHtml": "Install-Package
    jose-jwt" }, { "minimumVersion": null, @@ -96,8 +92,38 @@ "authorName": "DV", "gitHubRepoPath": "dvsekhvalnov/jose-rt", "repoUrl": "https://github.com/dvsekhvalnov/jose-rt", - "installCommandHtml": - "Install-Package
    jose-rt" + "installCommandHtml": "Install-Package
    jose-rt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/nuscien/trivial/wiki/oauth", + "authorName": "Kingcean Tuan", + "gitHubRepoPath": "nuscien/trivial", + "repoUrl": "https://github.com/nuscien/trivial", + "installCommandHtml": "Install-Package
    Trivial" } ] } From d64a1ab8a2f9dded6141794de22c1458385d243b Mon Sep 17 00:00:00 2001 From: Nathaniel Fischer Date: Fri, 12 Apr 2019 15:45:14 -0700 Subject: [PATCH 311/611] Update jose library install command --- views/website/libraries/15-Scala.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/libraries/15-Scala.json b/views/website/libraries/15-Scala.json index 92234e44..c1896461 100644 --- a/views/website/libraries/15-Scala.json +++ b/views/website/libraries/15-Scala.json @@ -141,7 +141,7 @@ "aud": true, "exp": true, "nbf": true, - "iat": false, + "iat": true, "jti": true, "hs256": true, "hs384": true, @@ -161,7 +161,7 @@ "gitHubRepoPath": "blackdoor/jose", "repoUrl": "https://github.com/blackdoor/jose", "installCommandHtml": - "dependsOn(RootProject(uri(\"git://github.com/blackdoor/jose.git#0.1.0\")))" + "sbt: libraryDependencies += "black.door" %% "jose" % "0.2.2"\nmill: ivy"black.door::jose:0.2.2"" } ] } From 8de6363696af28ece7af00714a61c8146cfbec49 Mon Sep 17 00:00:00 2001 From: Daniel DeGroff Date: Fri, 26 Apr 2019 10:50:22 -0600 Subject: [PATCH 312/611] Update fusionauth-jwt to 3.1.0 --- views/website/libraries/3-Java.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index 20fd3fea..ce33a31f 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -157,7 +157,7 @@ "authorName": "FusionAuth", "gitHubRepoPath": "fusionauth/fusionauth-jwt", "repoUrl": "https://github.com/fusionauth/fusionauth-jwt", - "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 3.0.0" + "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 3.1.0" }, { "minimumVersion": null, From 1f44f3bd4ac993e227bcccbf45f41847b99827ef Mon Sep 17 00:00:00 2001 From: "thomas@vinylfetish.net" Date: Tue, 7 May 2019 16:35:32 -0500 Subject: [PATCH 313/611] added Jwt.Net --- views/website/libraries/0-.NET.json | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/views/website/libraries/0-.NET.json b/views/website/libraries/0-.NET.json index 15a4bc26..2e841745 100644 --- a/views/website/libraries/0-.NET.json +++ b/views/website/libraries/0-.NET.json @@ -124,6 +124,37 @@ "gitHubRepoPath": "nuscien/trivial", "repoUrl": "https://github.com/nuscien/trivial", "installCommandHtml": "Install-Package
    Trivial" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/jwt-dotnet/jwt", + "authorName": "Alexander Batishchev, John Sheehan, Michael Lehenbauer", + "gitHubRepoPath": "jwt-dotnet/jwt", + "repoUrl": "https://github.com/jwt-dotnet/jwt", + "installCommandHtml": "Install-Package
    JWT" } ] } From d5d5638b1f487f48c318253a5f566a81590230d7 Mon Sep 17 00:00:00 2001 From: Hsiaoming Yang Date: Sun, 12 May 2019 22:00:37 +0900 Subject: [PATCH 314/611] Authlib supports PS256, PS384, and PS512 --- views/website/libraries/1-Python.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/1-Python.json b/views/website/libraries/1-Python.json index 6ed53bd8..8eb06543 100644 --- a/views/website/libraries/1-Python.json +++ b/views/website/libraries/1-Python.json @@ -118,7 +118,10 @@ "rs512": true, "es256": true, "es384": true, - "es512": true + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/lepture", "authorName": "Hsiaoming Yang", From 7a706f4dc7f08911a0022de4363a4414d7598d82 Mon Sep 17 00:00:00 2001 From: andy Date: Tue, 14 May 2019 16:15:01 +0100 Subject: [PATCH 315/611] IBM-Swift/Swift-JWT supports RSA-PSS from 3.5.0 --- views/website/libraries/19-Swift.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/views/website/libraries/19-Swift.json b/views/website/libraries/19-Swift.json index a4b41fd4..c2373cef 100644 --- a/views/website/libraries/19-Swift.json +++ b/views/website/libraries/19-Swift.json @@ -119,16 +119,16 @@ "es256": true, "es384": true, "es512": true, - "ps256": false, - "ps384": false, - "ps512": false + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/IBM-Swift", "authorName": "IBM Swift", "gitHubRepoPath": "IBM-Swift/Swift-JWT", "repoUrl": "https://github.com/IBM-Swift/Swift-JWT", "installCommandHtml": - ".package(url:\"https://github.com/IBM-Swift/Swift-JWT/", from: \"1.0.0\")" + ".package(url:\"https://github.com/IBM-Swift/Swift-JWT/", from: \"3.5.0\")" } ] } From 49386e4fe9ac18fb103f4660935da0ba170f353d Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 29 May 2019 09:56:41 -0400 Subject: [PATCH 316/611] cisco/cjose: Not a Go package, I'm not sure why it mentioned `go get` --- views/website/libraries/20-C.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index 0f0acb72..b8e85af9 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -64,7 +64,7 @@ "authorName": "linuxwolf", "gitHubRepoPath": "cisco/cjose", "repoUrl": "https://github.com/cisco/cjose", - "installCommandHtml": "go get github.com/cisco/cjose" + "installCommandHtml": "git clone https://github.com/cisco/cjose.git && cd cjose && ./configure && make" } ] } From cd162ba9105618da470fda6ec54d382bcaba3d4b Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 29 May 2019 10:11:29 -0400 Subject: [PATCH 317/611] 9-Go.json: Normalize installCommandHtml Always use `go get NAME`; don't sometimes include `-u` and sometimes not. Have NAME be a hyperlink to the godocs. Exception: Because of the trailing `/v3` for gbrlsnchs/jwt, it MUST be installed using Go modules, so I prefixed it with `GO111MODULE=on`. The `/v3` is not present in the href because godoc.org does not yet suppot modules. Unfortunately, this means that the linked docs might disagree with the version they'd get from installing it. This can't be helped. --- views/website/libraries/9-Go.json | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 9bccf3de..da55886d 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -33,7 +33,7 @@ "authorName": "dgrijalva", "gitHubRepoPath": "dgrijalva/jwt-go", "repoUrl": "https://github.com/dgrijalva/jwt-go", - "installCommandHtml": "go get github.com/dgrijalva/jwt-go" + "installCommandHtml": "go get github.com/dgrijalva/jwt-go" }, { "minimumVersion": null, @@ -64,7 +64,7 @@ "authorName": "DV", "gitHubRepoPath": "dvsekhvalnov/jose2go", "repoUrl": "https://github.com/dvsekhvalnov/jose2go", - "installCommandHtml": "go get github.com/dvsekhvalnov/jose2go" + "installCommandHtml": "go get github.com/dvsekhvalnov/jose2go" }, { "minimumVersion": null, @@ -95,8 +95,7 @@ "authorName": "SermoDigital", "gitHubRepoPath": "SermoDigital/jose", "repoUrl": "https://github.com/SermoDigital/jose", - "installCommandHtml": - "go get github.com/SermoDigital/jose" + "installCommandHtml": "go get github.com/SermoDigital/jose" }, { "minimumVersion": null, @@ -127,7 +126,7 @@ "authorName": "robbert229", "gitHubRepoPath": "robbert229/jwt", "repoUrl": "https://github.com/robbert229/jwt", - "installCommandHtml": "go get github.com/robbert229/jwt" + "installCommandHtml": "go get github.com/robbert229/jwt" }, { "minimumVersion": null, @@ -158,7 +157,7 @@ "authorName": "DV", "gitHubRepoPath": "square/go-jose", "repoUrl": "https://github.com/square/go-jose", - "installCommandHtml": "go get github.com/square/go-jose" + "installCommandHtml": "go get github.com/square/go-jose" }, { "minimumVersion": null, @@ -189,7 +188,7 @@ "authorName": "lestrrat", "gitHubRepoPath": "lestrrat/go-jwx", "repoUrl": "https://github.com/lestrrat/go-jwx", - "installCommandHtml": "go get github.com/lestrrat/go-jwx" + "installCommandHtml": "go get github.com/lestrrat/go-jwx" }, { "minimumVersion": null, @@ -217,7 +216,7 @@ "authorName": "adam-hanna", "gitHubRepoPath": "adam-hanna/jwt-auth", "repoUrl": "https://github.com/adam-hanna/jwt-auth", - "installCommandHtml": "go get github.com/adam-hanna/jwt-auth" + "installCommandHtml": "go get github.com/adam-hanna/jwt-auth" }, { "minimumVersion": null, @@ -248,7 +247,7 @@ "authorName": "nickvellios", "gitHubRepoPath": "nickvellios/gojwt", "repoUrl": "https://github.com/nickvellios/gojwt", - "installCommandHtml": "go get github.com/nickvellios/gojwt" + "installCommandHtml": "go get github.com/nickvellios/gojwt" }, { "minimumVersion": null, @@ -279,7 +278,7 @@ "authorName": "Gabriel Sanches", "gitHubRepoPath": "gbrlsnchs/jwt", "repoUrl": "https://github.com/gbrlsnchs/jwt", - "installCommandHtml": "go get -u github.com/gbrlsnchs/jwt/v3" + "installCommandHtml": "GO111MODULE=on go get github.com/gbrlsnchs/jwt/v3" }, { "minimumVersion": null, @@ -310,7 +309,7 @@ "authorName": "Pascal de Kloe", "gitHubRepoPath": "pascaldekloe/jwt", "repoUrl": "https://github.com/pascaldekloe/jwt", - "installCommandHtml": "go get github.com/pascaldekloe/jwt" + "installCommandHtml": "go get github.com/pascaldekloe/jwt" }, { "minimumVersion": null, @@ -341,7 +340,7 @@ "authorName": "Seth Moeckel", "gitHubRepoPath": null, "repoUrl": "https://gitlab.com/rucuriousyet/jwt", - "installCommandHtml": "go get gitlab.com/rucuriousyet/jwt" + "installCommandHtml": "go get gitlab.com/rucuriousyet/jwt" } ] } From db6b8f856f0e03241485c8ac8a2e64aa7380621c Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 29 May 2019 10:16:26 -0400 Subject: [PATCH 318/611] lestrrat/go-jwx has moved to lestrrat-go/jwx --- views/website/libraries/9-Go.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index da55886d..d25ca855 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -186,9 +186,9 @@ }, "authorUrl": "https://github.com/lestrrat", "authorName": "lestrrat", - "gitHubRepoPath": "lestrrat/go-jwx", - "repoUrl": "https://github.com/lestrrat/go-jwx", - "installCommandHtml": "go get github.com/lestrrat/go-jwx" + "gitHubRepoPath": "lestrrat-go/jwx", + "repoUrl": "https://github.com/lestrrat-go/jwx", + "installCommandHtml": "go get github.com/lestrrat-go/jwx" }, { "minimumVersion": null, From 58a34e41c029b9a1740957eea4727c1867982472 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 5 Jun 2019 12:01:23 +0200 Subject: [PATCH 319/611] fix: ignore node-jose unsupported key types and EC curves during jwks_uri key fetch --- src/editor/public-key-download.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/editor/public-key-download.js b/src/editor/public-key-download.js index 9cfee3df..07b9209b 100644 --- a/src/editor/public-key-download.js +++ b/src/editor/public-key-download.js @@ -52,6 +52,19 @@ function getKeyFromJwkKeySetUrl(kid, url) { }); } +function supportedJwk({ kty, crv }) { + switch (kty) { + case 'RSA': + return true; + case 'EC': + return ['P-256', 'P-384', 'P-521'].includes(crv) + // node-jose does not support e.g. OKP keys or non-registered curves such as P-256K + // we also don't populate the HMAC secret + default: + return false; + } +} + export function downloadPublicKeyIfPossible(decodedToken) { return new Promise((resolve, reject) => { const header = decodedToken.header; @@ -80,9 +93,9 @@ export function downloadPublicKeyIfPossible(decodedToken) { return httpGet(data.jwks_uri) }).then(data => { - data = JSON.parse(data); + const { keys } = JSON.parse(data); - return jose.JWK.asKeyStore(data); + return jose.JWK.asKeyStore({ keys: keys.filter(supportedJwk) }); }).then(jwks => { const keys = jwks.all({ alg: header.alg, kid: header.kid, use: 'sig' }) From 8b84d6fa46974bfc000964de9ea00c92ea22879a Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 5 Jun 2019 13:07:57 +0200 Subject: [PATCH 320/611] test: fix CI and test suite for macOS users resolves #401 --- package-lock.json | 12052 +++++++++++++++++++----------------- package.json | 66 +- test/functional/editor.js | 204 +- test/functional/jwks.json | 4 +- test/functional/utils.js | 82 +- 5 files changed, 6417 insertions(+), 5991 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4b0c7aa6..4a9ed317 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,630 +5,942 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz", - "integrity": "sha512-eVXQSbu/RimU6OKcK2/gDJVTFcxXJI4sHbIqw2mhwMZeQ2as/8AhS9DGkEDoHMBBNJZ5B0US63lF56x+KDcxiA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.40" + "@babel/highlight": "^7.0.0" } }, "@babel/core": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.40.tgz", - "integrity": "sha512-jJMjn/EMg89xDGv7uq4BoFg+fHEchSeqNc9YUMnGuAi/FWKBkSsDbhh2y5euw4qaGOFD2jw1le0rvCu5gPUc6Q==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.40", - "@babel/generator": "7.0.0-beta.40", - "@babel/helpers": "7.0.0-beta.40", - "@babel/template": "7.0.0-beta.40", - "@babel/traverse": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40", - "babylon": "7.0.0-beta.40", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz", + "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helpers": "^7.4.4", + "@babel/parser": "^7.4.5", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.5", + "@babel/types": "^7.4.4", "convert-source-map": "^1.1.0", - "debug": "^3.0.1", - "json5": "^0.5.0", - "lodash": "^4.2.0", - "micromatch": "^2.3.11", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", "resolve": "^1.3.2", + "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" + } + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, "@babel/generator": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.40.tgz", - "integrity": "sha512-c91BQcXyTq/5aFV4afgOionxZS1dxWt8OghEx5Q52SKssdGRFSiMKnk9tGkev1pYULPJBqjSDZU2Pcuc58ffZw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", + "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.40", + "@babel/types": "^7.4.4", "jsesc": "^2.5.1", - "lodash": "^4.2.0", + "lodash": "^4.17.11", "source-map": "^0.5.0", "trim-right": "^1.0.1" } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.40.tgz", - "integrity": "sha512-bJd92d70QTlcqCO9WiE8C94r7NwVzJx1V6Yz7rYi4IQ53P0jbh9jjKL2zl8YoU2S8M/KX1jpu+yIgXbx+LOruQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.40" + "@babel/types": "^7.0.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.40.tgz", - "integrity": "sha512-rMfjqkQrfHsA3ppMc2MsICoMqXH1b0BD77fTr4Kf+aUzEt5GSx5ZP5aNYlCqaPzhafg3znEEg/LVeq2EyGY8JQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40" + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-call-delegate": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.40.tgz", - "integrity": "sha512-kfLlTpTayyCwj3/Rq4zDaK85GVPzRIR433QLhuNb0qjJfMQgLit2UEfBHUPPMRvKlb0FelrlXGTxXfsHLmfgzw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", + "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "7.0.0-beta.40", - "@babel/traverse": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40" + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/helper-define-map": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.40.tgz", - "integrity": "sha512-hDg3sFSAxYQ/CSXzIBzGeNRD4yp89MkC3wkwvGBH80LXobL6csEdQpzCPhwpL0K8RNB07awRnck1OtPqjeCpgA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", + "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40", - "lodash": "^4.2.0" + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.4.4", + "lodash": "^4.17.11" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.40.tgz", - "integrity": "sha512-EUbu+uVNtHVp9emICjYO5wYodqWnSTx/s4Hfk++7IdnPTQi7UA9F/tPXf1GS8BLazlWc9tDwQ2aHFQLheHEXHw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", "dev": true, "requires": { - "@babel/traverse": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40" + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-function-name": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.40.tgz", - "integrity": "sha512-cK9BVLtOfisSISTTHXKGvBc2OBh65tjEk4PgXhsSnnH0i8RP2v+5RCxoSlh2y/i+l2fxQqKqv++Qo5RMiwmRCA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.40", - "@babel/template": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40" + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.40.tgz", - "integrity": "sha512-MwquaPznI4cUoZEgHC/XGkddOXtqKqD4DvZDOyJK2LR9Qi6TbMbAhc6IaFoRX7CRTFCmtGeu8gdXW2dBotBBTA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.40" + "@babel/types": "^7.0.0" } }, "@babel/helper-hoist-variables": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.40.tgz", - "integrity": "sha512-ghnJxUUEmqK8mssF7Y7R5jNzF5xDu4hmWQ1aZghZtLNJSymmj3HrXCLl5m1dBYpq9gGk7TlZK8stIvIJsCGmTQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", + "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.40" + "@babel/types": "^7.0.0" } }, "@babel/helper-module-imports": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.40.tgz", - "integrity": "sha512-QFOskAKWbqJSBbGIl/Y1igJI4mW0A+wD5NFqsgDJj85KSvj/dHM4wNGIeqCi85nN9aMa4DgTBBrzUK4zSMsN2Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.40", - "lodash": "^4.2.0" + "@babel/types": "^7.0.0" } }, "@babel/helper-module-transforms": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.40.tgz", - "integrity": "sha512-1H7cBk7kUWJpTepPH77TIRGwKILRGpu1yXmz1OjOruR6y2z0qfbp7ZzzZ3/xg6NlLDENLArEyO2+J0mO+VyQsg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz", + "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==", "dev": true, "requires": { - "@babel/helper-module-imports": "7.0.0-beta.40", - "@babel/helper-simple-access": "7.0.0-beta.40", - "@babel/template": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40", - "lodash": "^4.2.0" + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/types": "^7.4.4", + "lodash": "^4.17.11" } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.40.tgz", - "integrity": "sha512-2f4ZKEkvdnKiTUA/Nhju+oEoRcyHcpf6lFuQI5cxbo1Toxqa8E9HBO5tiOWwlIwuak7RZPYSnxnrJQy/0d4YUw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.40" + "@babel/types": "^7.0.0" } }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, "@babel/helper-regex": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.40.tgz", - "integrity": "sha512-75zi8hZSdWLT7upmEyAemfN0hJ7522svItPGbIj4Pi2T/C5vbgNFXLy8o/iOCX4FzB+yVKhz0zWC3SzN9hyigA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz", + "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==", "dev": true, "requires": { - "lodash": "^4.2.0" + "lodash": "^4.17.11" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.40.tgz", - "integrity": "sha512-RISz7EebAqaf4ofdG9LdVNfeqhK+JlFYJxvqCGMcS+Pyz84dA41MxgtjrRQdT85be1lZLI2OArvD7zDrj1psag==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.40", - "@babel/helper-wrap-function": "7.0.0-beta.40", - "@babel/template": "7.0.0-beta.40", - "@babel/traverse": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40" + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-replace-supers": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.40.tgz", - "integrity": "sha512-Nu/5wpUV3rG35RzOq/upZlm61cP0lSAtmNkJLFfO5k2zOGCiHRczD1Y/xKqYOMl5f2iZmYw9fANi1jE4odMIIQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz", + "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==", "dev": true, "requires": { - "@babel/helper-optimise-call-expression": "7.0.0-beta.40", - "@babel/template": "7.0.0-beta.40", - "@babel/traverse": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40" + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/helper-simple-access": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.40.tgz", - "integrity": "sha512-hEKOIXUZFOiyqUPiGydGc+Jr0s8mVCFrD1OtAw2BDkXf1BaR+PxVEVcBAWcJVLOjqrr7oVZL9SENjR4B/Y+yEw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "dev": true, + "requires": { + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", "dev": true, "requires": { - "@babel/template": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40", - "lodash": "^4.2.0" + "@babel/types": "^7.4.4" } }, "@babel/helper-wrap-function": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.40.tgz", - "integrity": "sha512-VBXE/uGQuZC9IaYufa3eCoT5ZqcCPv21Uhs/vo4ZqNRDX5QemYEkgDj5SmV2p73bhC66jDwUHaQHKQIiW7ExxA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", + "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.40", - "@babel/template": "7.0.0-beta.40", - "@babel/traverse": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40" + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" } }, "@babel/helpers": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.40.tgz", - "integrity": "sha512-NK/mM/I16inThgXmKPxoqrg+N6OCLt+e9Zsmy8TJ93/zMx4Eddd679I231YwDP2J1Z12UgkfWCLbbvauU5TLlQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", + "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", "dev": true, "requires": { - "@babel/template": "7.0.0-beta.40", - "@babel/traverse": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40" + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/highlight": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.40.tgz", - "integrity": "sha512-mOhhTrzieV6VO7odgzFGFapiwRK0ei8RZRhfzHhb6cpX3QM8XXuCLXWjN8qBB7JReDdUR80V3LFfFrGUYevhNg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "js-tokens": "^4.0.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } } }, + "@babel/parser": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", + "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", + "dev": true + }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.40.tgz", - "integrity": "sha512-DU9JstbqQRAPhbW3Pk0yrEJA8GIiIDdylrnIuPI9x01jAwijxJfRwi6FbUAZUbS+3mzAAM5ALXUJkF1i1R5qbQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", "dev": true, "requires": { - "@babel/helper-remap-async-to-generator": "7.0.0-beta.40", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.40" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.40.tgz", - "integrity": "sha512-nsQEWEvBgDcxYPBhmeIHqIXVVkPLQJBTD/bAdCMFhVe0vQdOR/px5E+rMsbP+9CywqV3AJ7PngYadnPgiuu4sg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz", + "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==", "dev": true, "requires": { - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.40" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.40.tgz", - "integrity": "sha512-GKKY7LDS3Z2iAVsM0KP745LAML8jKUdFqD+rGLa6F4Q9pEqDh3pjbL8eqiWLv/g/phpuCdvjaj+4wmUHi/E5eg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", "dev": true, "requires": { - "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.40" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.40.tgz", - "integrity": "sha512-BJlgIZcqodpkgNLOsKtkprA3zeXhg0O9Hru+IIaDVhcrZnkIIMVsdIG6gY5cKCAnpKFVN4kloQRTB61qYdKueA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", + "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", "dev": true, "requires": { - "@babel/helper-regex": "7.0.0-beta.40", - "regexpu-core": "^4.1.3" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.40.tgz", - "integrity": "sha512-UczObsgk1A4DaSMqTj59iETtmtuiXdBMs/1WBpy6LvLtf8AdjO/bZ2IbvrwKR5gEp8xJxBgzNq2sfK8RUsQBsQ==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.40.tgz", - "integrity": "sha512-LY96LEXC+qxuiOcoqrkrsyEUaD95gS7AQE7nZJ/lZBGG14h4cJhc+T0FYdJpVKqhqNuEqVHsJV9xfCYHI4Ksug==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.40.tgz", - "integrity": "sha512-YP2Zqhi6r5mnp6LALz19pvF7szhEzBFybw4KqGFj6OwGmfF1nrvCG3h6cOTRhIKSwkfM7IlqGZm+GBhbYRYxGA==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.40.tgz", - "integrity": "sha512-B6wh62BErLWS3XInOUHhLcqBSK1QGdBph8E2K82EEFgJdQvphy30QXb0vwLUr8YU1efYyZXTsRA0JZ12jcm30Q==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.40.tgz", - "integrity": "sha512-4yTmjiZQw0S6dpnJqj0os0hom2czOAFKPhAuPplDay2zyqzDjbNt3zHFadIRTU4ekTonMb6ghTbMO1vlKcLMiQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz", + "integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==", "dev": true, "requires": { - "@babel/helper-module-imports": "7.0.0-beta.40", - "@babel/helper-remap-async-to-generator": "7.0.0-beta.40" + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.40.tgz", - "integrity": "sha512-GC64FqQfGJ5Wt3i0zSMcwRxmnZwgrx8fVLCeONNNm3BlK7Ui5Usuc7WubygM3bDq47UiHfeKo8ih54pr/POsFw==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-transform-block-scoping": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.40.tgz", - "integrity": "sha512-8QpOK9lXdzrq1QIrP3Hfx/BmGPaCKjBORd2QSjdghPNNRlQFZmO2l3kb0I6yC7w75U1M5q26KvUbAcPrE68E4w==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz", + "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==", "dev": true, "requires": { - "lodash": "^4.2.0" + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.11" } }, "@babel/plugin-transform-classes": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.40.tgz", - "integrity": "sha512-yjViyoOYJtt2vLDai8jluxl9quOtq/Xq4GTjT9uzy+mOfUTE77dcJySMGkWHE52Mu3n0TSI09ENBFYykpvXXDw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.40", - "@babel/helper-define-map": "7.0.0-beta.40", - "@babel/helper-function-name": "7.0.0-beta.40", - "@babel/helper-optimise-call-expression": "7.0.0-beta.40", - "@babel/helper-replace-supers": "7.0.0-beta.40", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz", + "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.4.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.4", + "@babel/helper-split-export-declaration": "^7.4.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.40.tgz", - "integrity": "sha512-1VBpE+6YN4bj72MtbQoIwXZxoI5VfPLutQ5uhOx/tIrjf1KbLKsFR0epPPGx4nZ13u++lUR8CjUFUHGJ6RJirA==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-transform-destructuring": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.40.tgz", - "integrity": "sha512-/FJq+WUAw4R5kg+2XWkmk0rDJqVs76rNNSIPpxeE0SiJvp8tvou7y8u0D1IhoO29ZgC+53jbdL+MkVN7mrH/iQ==", - "dev": true + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz", + "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.40.tgz", - "integrity": "sha512-5npi7X6QGNWWfXxVBMQl+fEAn0LceNNFT139yaGRkyWZtUXmueFLgXKsa9dY2DhuEis29KuZrwGcmGSQWnEmtg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", + "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", "dev": true, "requires": { - "@babel/helper-regex": "7.0.0-beta.40", - "regexpu-core": "^4.1.3" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.40.tgz", - "integrity": "sha512-rxEyRbU/iEGR99oBMoer5QeGWLMhT3Kq4a8B03DFLCBpGLv3XirpSGC/Ys1YhUKAmEio4jIcVVI8dRBbcVeyDw==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", + "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.40.tgz", - "integrity": "sha512-nh9qIA4P1wQczihazVOvTpkl2EBfoSMfkM6/21p8NBY4GxZJcEwT1O1nke/+RLludUekHqXHGH+9ekfEfLwKRQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.40" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-for-of": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.40.tgz", - "integrity": "sha512-ArDbLAGMzI++G5Ut8HIbLvnAxZNOC5tFzMXiud51JJTHRaeFB7AwX+duY9x/Hu/KypISXjels3BYVYCV/EH+ow==", - "dev": true + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", + "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-transform-function-name": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.40.tgz", - "integrity": "sha512-wvpswFciLQ2eAnHAs6/NSWymPg88LhHH87BljjXDxNnyGBzckip/iEa051Dz6lDumVUUjXLukw3D2fv5NBitVA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", + "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.40" + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-literals": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.40.tgz", - "integrity": "sha512-p7VlTod2r7srx0uKVrKqMJR1f6iyvDAnlLdTEDGrLHpP9pXXvIc/bP8xZTxVPn+IziSFh6FvOzHXXLMtnRKnow==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", + "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-transform-modules-amd": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.40.tgz", - "integrity": "sha512-o/XTve9C+M9203MVxGRBOXNx4f9DZGiPLbwPPeDobdtw3NKHUCymFNbh9xxMJy0MPMEe8JldxbVwGy2f8DY/3w==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", + "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.40" + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.40.tgz", - "integrity": "sha512-1kRhaQP3K9kRiJhhLpP7J5NsMV+SiKWSsli6TUR6uxbuHHNAleRtlsZ76JgCRMaufBgPMLxq5pp7yibUhwTn8w==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz", + "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.40", - "@babel/helper-simple-access": "7.0.0-beta.40" + "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.40.tgz", - "integrity": "sha512-q5IpFXNlzrK2ObpHkH5jzTCqRVzoNzmH8RoE8ZHQvLLiaIT346u8ynNv/BH1ltA49SPUPWyYpA+Z7OqCM4d3NA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz", + "integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "7.0.0-beta.40" + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.40.tgz", - "integrity": "sha512-LHKqJFwo7x/CeEwjLyUE99SlG/kbTl8LS1DQ26fWctVnW5JuPt3hwYrggnmo1L/g/dal7EP2IL56+UezDMpJUQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", + "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.40" + "regexp-tree": "^0.1.6" } }, "@babel/plugin-transform-new-target": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.40.tgz", - "integrity": "sha512-t4ivwZVGrVf1bhLgHcgaLhFH4loZhV5WmEKKNPEe7QnGikJBibrLmggOM1w5s6BMsHj03+j0rxUmcKLmGlC/fg==", - "dev": true + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", + "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-transform-object-super": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.40.tgz", - "integrity": "sha512-a9kXy4amuvAz7eFuntXiyjg0eKXej1FH++xQg37ugh24zozD0cmfr3pvRbYOGlmbmOeZWJnlq+O6X8BSfLSycw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", + "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", "dev": true, "requires": { - "@babel/helper-replace-supers": "7.0.0-beta.40" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.40.tgz", - "integrity": "sha512-JShFDeKEzwwTB+pHcUuLdX9zPi98sRekvtdCEOt8UoF5pzW02k1XdsVOckp/PzcEdoGAgZiiI1PFkJZ+xanfPg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", + "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.4.4", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", + "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", "dev": true, "requires": { - "@babel/helper-call-delegate": "7.0.0-beta.40", - "@babel/helper-get-function-arity": "7.0.0-beta.40" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-regenerator": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.40.tgz", - "integrity": "sha512-hFj52wAXbEpXwwfKsMol5Y967D3L8tz46Jin9n/gYPgcNWugvsw6d7g+HknBJ8FzaUESrDruFRkGPXgD+FyjvQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", + "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", + "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", "dev": true, "requires": { - "regenerator-transform": "^0.12.3" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.40.tgz", - "integrity": "sha512-1leHn9ST0PKFHwH7klJqGA76YPoqs3cR5zeJK6YGZETeX89YiAVtR+5JTSGhfI/1RR0Vcg9Tl1LnPpf7LmYlng==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-transform-spread": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.40.tgz", - "integrity": "sha512-RPrIpV+h8OqoqyMic7CNeM8TdSDk7ec+T6jM97vMb9XQQrRInAUWlwWvG6d36v72xobFtHoPA28VN/0aVsbQDg==", - "dev": true + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.40.tgz", - "integrity": "sha512-dJPUaV2D5SwSXypaDFRJd+LIhabeaWhZ3McmNo0COn+lBINJ9iL7mYuPxnqwhM/KoBNv+vYIoFFZzT/I27K6AQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", "dev": true, "requires": { - "@babel/helper-regex": "7.0.0-beta.40" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" } }, "@babel/plugin-transform-template-literals": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.40.tgz", - "integrity": "sha512-ScGHntym1y5FweT751OJxGW4rydxdLA9BwkHfJ5o6RcCoq+LRubDeGu2HeuX4SMEvAw0MnZeSk8vw5TwIOzEIQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", + "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.40" + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.40.tgz", - "integrity": "sha512-y+mXC0tIlTZj04ZD9326grEIvFjI/IeLSIVVKMIf8nSodLDCgipuM6zXhxqXVvjcTrvvUKuxPrvPeSuht0eeMg==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.40.tgz", - "integrity": "sha512-+eProDq93qiYnXOy+LDSMoKF2lEQVQ+r6DF3ZZXJV5QJ3f2+vwpSqGIQy61sSkVMEaoNtYL/Jy+G8HrWFw9p3w==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", + "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", "dev": true, "requires": { - "@babel/helper-regex": "7.0.0-beta.40", - "regexpu-core": "^4.1.3" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" } }, "@babel/polyfill": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0-beta.40.tgz", - "integrity": "sha512-aUO+KHYJDFAnyRU/g3sBofp9WVKI0ROriGpeKXBTq8DsMYnvbZkNQaEwrzKi6TzmVuRDBNpVAkArZQ9qbQrqRA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz", + "integrity": "sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==", "dev": true, "requires": { - "core-js": "^2.5.3", - "regenerator-runtime": "^0.11.1" + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.2" + }, + "dependencies": { + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==", + "dev": true + } } }, "@babel/preset-env": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.40.tgz", - "integrity": "sha512-IBnkVmaM/K2pHB8RR0tC5oHrPdS4y0RZXrGc+lmfDuj4tgyCAmDBuQ1EWVaLOpWw8fXPwXfX70Vdp65L2df+RQ==", - "dev": true, - "requires": { - "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.40", - "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.40", - "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.40", - "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.40", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.40", - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.40", - "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.40", - "@babel/plugin-transform-arrow-functions": "7.0.0-beta.40", - "@babel/plugin-transform-async-to-generator": "7.0.0-beta.40", - "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.40", - "@babel/plugin-transform-block-scoping": "7.0.0-beta.40", - "@babel/plugin-transform-classes": "7.0.0-beta.40", - "@babel/plugin-transform-computed-properties": "7.0.0-beta.40", - "@babel/plugin-transform-destructuring": "7.0.0-beta.40", - "@babel/plugin-transform-dotall-regex": "7.0.0-beta.40", - "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.40", - "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.40", - "@babel/plugin-transform-for-of": "7.0.0-beta.40", - "@babel/plugin-transform-function-name": "7.0.0-beta.40", - "@babel/plugin-transform-literals": "7.0.0-beta.40", - "@babel/plugin-transform-modules-amd": "7.0.0-beta.40", - "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.40", - "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.40", - "@babel/plugin-transform-modules-umd": "7.0.0-beta.40", - "@babel/plugin-transform-new-target": "7.0.0-beta.40", - "@babel/plugin-transform-object-super": "7.0.0-beta.40", - "@babel/plugin-transform-parameters": "7.0.0-beta.40", - "@babel/plugin-transform-regenerator": "7.0.0-beta.40", - "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.40", - "@babel/plugin-transform-spread": "7.0.0-beta.40", - "@babel/plugin-transform-sticky-regex": "7.0.0-beta.40", - "@babel/plugin-transform-template-literals": "7.0.0-beta.40", - "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.40", - "@babel/plugin-transform-unicode-regex": "7.0.0-beta.40", - "browserslist": "^3.0.0", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.5.tgz", + "integrity": "sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.4.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.4.4", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.4.4", + "@babel/plugin-transform-classes": "^7.4.4", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.4.4", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-member-expression-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-modules-systemjs": "^7.4.4", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", + "@babel/plugin-transform-new-target": "^7.4.4", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.4.4", + "@babel/plugin-transform-property-literals": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.4.5", + "@babel/plugin-transform-reserved-words": "^7.2.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.4.4", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "browserslist": "^4.6.0", + "core-js-compat": "^3.1.1", "invariant": "^2.2.2", - "semver": "^5.3.0" + "js-levenshtein": "^1.1.3", + "semver": "^5.5.0" + } + }, + "@babel/register": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0.tgz", + "integrity": "sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g==", + "dev": true, + "requires": { + "core-js": "^2.5.7", + "find-cache-dir": "^1.0.0", + "home-or-tmp": "^3.0.0", + "lodash": "^4.17.10", + "mkdirp": "^0.5.1", + "pirates": "^4.0.0", + "source-map-support": "^0.5.9" + }, + "dependencies": { + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "dev": true + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "home-or-tmp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", + "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + } } }, "@babel/template": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.40.tgz", - "integrity": "sha512-RlQiVB7eL7fxsKN6JvnCCwEwEL28CBYalXSgWWULuFlEHjtMoXBqQanSie3bNyhrANJx67sb+Sd/vuGivoMwLQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40", - "babylon": "7.0.0-beta.40", - "lodash": "^4.2.0" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/traverse": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.40.tgz", - "integrity": "sha512-h96SQorjvdSuxQ6hHFIuAa3oxnad1TA5bU1Zz88+XqzwmM5QM0/k2D+heXGGy/76gT5ajl7xYLKGiPA/KTyVhQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", + "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.40", - "@babel/generator": "7.0.0-beta.40", - "@babel/helper-function-name": "7.0.0-beta.40", - "@babel/types": "7.0.0-beta.40", - "babylon": "7.0.0-beta.40", - "debug": "^3.0.1", + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.4.5", + "@babel/types": "^7.4.4", + "debug": "^4.1.0", "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" + "lodash": "^4.17.11" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, "@babel/types": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.40.tgz", - "integrity": "sha512-uXCGCzTgMZxcSUzutCPtZmXbVC+cvENgS2e0tRuhn+Y1hZnMb8IHP0Trq7Q2MB/eFmG5pKrAeTIUfQIe5kA4Tg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", + "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", "dev": true, "requires": { "esutils": "^2.0.2", - "lodash": "^4.2.0", + "lodash": "^4.17.11", "to-fast-properties": "^2.0.0" } }, @@ -668,6 +980,15 @@ } } }, + "@sinonjs/commons": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.4.0.tgz", + "integrity": "sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, "@sinonjs/formatio": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", @@ -677,256 +998,238 @@ "samsam": "1.3.0" } }, + "@sinonjs/samsam": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.1.tgz", + "integrity": "sha512-wRSfmyd81swH0hA1bxJZJ57xr22kC07a1N4zuIL47yTS04bDk6AoCkczcqHEjcRPmJ+FruGJ9WBQiJwMtIElFw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.0.2", + "array-from": "^2.1.1", + "lodash": "^4.17.11" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true + }, "@types/babel-types": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.1.tgz", - "integrity": "sha512-EkcOk09rjhivbovP8WreGRbXW20YRfe/qdgXOGq3it3u3aAOWDRNsQhL/XPAWFF7zhZZ+uR+nT+3b+TCkIap1w==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz", + "integrity": "sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ==", "dev": true }, "@types/babylon": { - "version": "6.16.2", - "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.2.tgz", - "integrity": "sha512-+Jty46mPaWe1VAyZbfvgJM4BAdklLWxrT5tc/RjvCgLrtk6gzRY6AOnoWFv4p6hVxhJshDdr2hGVn56alBp97Q==", + "version": "6.16.5", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", + "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", "dev": true, "requires": { "@types/babel-types": "*" } }, "@types/node": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.4.tgz", - "integrity": "sha512-GpQxofkdlHYxjHad98UUdNoMO7JrmzQZoAaghtNg14Gwg7YkohcrCoJEcEMSgllx4VIZ+mYw7ZHjfaeIagP/rg==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.4.tgz", + "integrity": "sha512-j8YL2C0fXq7IONwl/Ud5Kt0PeXw22zGERt+HSSnwbKOJVsAGkEz3sFCYwaF9IOuoG1HOtE0vKCj6sXF7Q0+Vaw==", "dev": true }, "@webassemblyjs/ast": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.9.tgz", - "integrity": "sha512-xL3hC0TOc4ic1UNG8ZZNeaiPf1klozt6rqajcy7hfO/qqfkEhLff1AFt5g2LJkTjhw+QSEYVMt7qOaaApu7JzA==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.5.9", - "@webassemblyjs/helper-wasm-bytecode": "1.5.9", - "@webassemblyjs/wast-parser": "1.5.9", - "debug": "^3.1.0", - "mamacro": "^0.0.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.9.tgz", - "integrity": "sha512-naMJjuBqDqx4dPSzwpI9pkjdLds4tDTzvsOEzwxPDp655IfgLLP/QEvK/9PQp4p5DExqrR87rk8DWByoqWWlGA==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.9.tgz", - "integrity": "sha512-tzGdqBo7Xf3McJcXbwbwzwElRzF/nELJN+G4MGGfm0DGRQB6UTmMe44jFIOQYT1Za89Aiz5DMQJotdnnLheixw==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.9.tgz", - "integrity": "sha512-WYkys6y33viEY23tHJ+KkSd9yHZBd54Sy6gcSgwLGPP1or9pLqWBrjWWATHuDuIkpvSJSt/+3qjAV6zHd1nS0g==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", "dev": true, "requires": { - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.9.tgz", - "integrity": "sha512-SYjNAlqcRH+YynslbIhFYOnGvE3WBl82/XlcFXiNkqnWsvHWnNkJbtxAtzrT/dcf69O/2pt8j1Q0+qc/rtacVw==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.5.9" + "@webassemblyjs/wast-printer": "1.8.5" } }, "@webassemblyjs/helper-fsm": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.9.tgz", - "integrity": "sha512-8D+VVIJTRbsn31zt3eyidYyUkhH1jk2/58mrIPiMarflRsisItJa5WZVu/gw0l+ubFOJf9PivTJB6Kw/Kgxx3g==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.9.tgz", - "integrity": "sha512-DbeLbFOhioEeY7yAff12+n5sf7WP7Fmi0lnhCSzfW4xBsgwXKmRjAx7nVmsUf3z+BDnwHHVKIXBUM+ucccNUsw==", - "dev": true + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.9.tgz", - "integrity": "sha512-zHQuTMMd2nTyEa3fbmGfzlJW305py1sgf1gHNCO/LVN8nWlKysB/+6J68sP1Cd+9USnT1VS2vyD1z+YJPS6GqQ==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.9.tgz", - "integrity": "sha512-+ff+8Ju6sLCMFNygcDdLRNRsmuD0PHwq77d2mbfWj5YzUvFaKN2q2kRppJSEAixOnM2xLADuG5y/blpMo5G90A==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.9", - "@webassemblyjs/helper-buffer": "1.5.9", - "@webassemblyjs/helper-wasm-bytecode": "1.5.9", - "@webassemblyjs/wasm-gen": "1.5.9", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" } }, "@webassemblyjs/ieee754": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.9.tgz", - "integrity": "sha512-mhetZBDnpV3VYqZb5Aail9X01VyIqDDZrNYdYj8bfx/PsVPG2znX90wRyVNTeqC5ylqHCgGkJ63bPaPEyINfsw==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", "dev": true, "requires": { - "ieee754": "^1.1.11" + "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.9.tgz", - "integrity": "sha512-oZ3eUB9EViUtiuMwW/xeYamXgfFS2cmXl6aUIYBfpXJQ5v5aOC8ZuPpz2/LqlgNlT8ThpyFd6kfgkYVwKwkGvQ==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", "dev": true, "requires": { - "leb": "^0.3.0" + "@xtuc/long": "4.2.2" } }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, "@webassemblyjs/wasm-edit": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.9.tgz", - "integrity": "sha512-pMWe3HomnWAMZytJ5sSNBS6qTbSoULUHkvDrtcarmLBTclmupZe25INy1jxbWGKsuFxw6w0xQ+eLRPlC8HPjhg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.9", - "@webassemblyjs/helper-buffer": "1.5.9", - "@webassemblyjs/helper-wasm-bytecode": "1.5.9", - "@webassemblyjs/helper-wasm-section": "1.5.9", - "@webassemblyjs/wasm-gen": "1.5.9", - "@webassemblyjs/wasm-opt": "1.5.9", - "@webassemblyjs/wasm-parser": "1.5.9", - "@webassemblyjs/wast-printer": "1.5.9", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" } }, "@webassemblyjs/wasm-gen": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.9.tgz", - "integrity": "sha512-UEhymlxupBUJuwnD2N860MqkpE7LHt0tNKqAgT4YAVjbx+88P6MBBk+q+9wr2FJCXxMgsPTxMWifqC4wd2FzVg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.9", - "@webassemblyjs/helper-wasm-bytecode": "1.5.9", - "@webassemblyjs/ieee754": "1.5.9", - "@webassemblyjs/leb128": "1.5.9" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" } }, "@webassemblyjs/wasm-opt": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.9.tgz", - "integrity": "sha512-oQm84US3e36dPq5bOeybVKA2ZyzeWR4fereg9kJa0Y9XLKxHwlsBa2kFyNXwZNrhMP33iyXAW+ym7om1zPZeAg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.9", - "@webassemblyjs/helper-buffer": "1.5.9", - "@webassemblyjs/wasm-gen": "1.5.9", - "@webassemblyjs/wasm-parser": "1.5.9", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" } }, "@webassemblyjs/wasm-parser": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.9.tgz", - "integrity": "sha512-jBKBTKE4M/WYCSqLjRvK+/QD55E/HNcQjswbksof3GEXfkq0iMqYxoPfqR7uLAD9/jVf9HpBNW2FJOyfTTlYfw==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.9", - "@webassemblyjs/helper-api-error": "1.5.9", - "@webassemblyjs/helper-wasm-bytecode": "1.5.9", - "@webassemblyjs/ieee754": "1.5.9", - "@webassemblyjs/leb128": "1.5.9", - "@webassemblyjs/wasm-parser": "1.5.9" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" } }, "@webassemblyjs/wast-parser": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.9.tgz", - "integrity": "sha512-bDuYH/NR5D+MmwVZdGW2rUvu4UcKGpodiHBSueajon3oNPu+PAKG+7br3BVFKxDUtDoVtuHLUQvkqp1lTrqPCA==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.9", - "@webassemblyjs/floating-point-hex-parser": "1.5.9", - "@webassemblyjs/helper-api-error": "1.5.9", - "@webassemblyjs/helper-code-frame": "1.5.9", - "@webassemblyjs/helper-fsm": "1.5.9", - "long": "^3.2.0", - "mamacro": "^0.0.3" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.9.tgz", - "integrity": "sha512-04iV32TO69kZChP3DN6W8i6GCa5UtEn1Lnzb4sQGe5YNjIFz2k8+KZLxbovWIZgj9pk06k3Egq/wyD98lSKaLw==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.9", - "@webassemblyjs/wast-parser": "1.5.9", - "long": "^3.2.0" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" } }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, "JSONSelect": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.2.1.tgz", @@ -943,6 +1246,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, "requires": { "mime-types": "~2.1.18", "negotiator": "0.6.1" @@ -955,21 +1259,10 @@ "dev": true }, "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "^5.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.0.tgz", - "integrity": "sha512-QatFQ4C0n+PLqemyC6zXEv04tSqRR0hRqe+uGKPEVgKe2G8kl8wJvHzRYWwz6vqqEqt6idPVMFojZ4P1zlyAzQ==", - "dev": true - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true }, "acorn-globals": { "version": "3.1.0", @@ -989,13 +1282,10 @@ } }, "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "dev": true }, "adbkit": { "version": "2.11.0", @@ -1017,6 +1307,12 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g=", "dev": true + }, + "node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", + "dev": true } } }, @@ -1044,60 +1340,73 @@ } }, "addons-linter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-1.0.0.tgz", - "integrity": "sha512-6cC0Jcf0vMVgE86TV4A1lfjx78Fp0JltA1UH2icz/cALWMMfDZrD7YpB4dMrpobclsbKFPHexNOYhS4efAc5ng==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-1.4.1.tgz", + "integrity": "sha512-AX8nCD/gy/6DoX4B7vTMQV6pcP8tG0BjxB3Jv44VZrUTYG+ojHx26abRDyUn+fDqWGf8qzeVn0Vss/NMNjMouA==", "dev": true, "requires": { - "ajv": "6.5.0", - "ajv-merge-patch": "3.0.0", - "babel-register": "6.26.0", + "@babel/polyfill": "7.0.0", + "@babel/register": "7.0.0", + "ajv": "6.5.5", + "ajv-merge-patch": "4.1.0", "chalk": "2.4.0", "cheerio": "1.0.0-rc.2", "columnify": "1.5.4", - "common-tags": "1.7.2", + "common-tags": "1.8.0", "crx-parser": "0.1.2", - "deepmerge": "2.1.0", - "dispensary": "0.18.0", - "doctoc": "1.3.1", + "deepmerge": "2.2.1", + "dispensary": "0.27.0", "es6-promisify": "5.0.0", - "eslint": "4.19.1", + "eslint": "5.0.1", "eslint-plugin-no-unsafe-innerhtml": "1.0.16", + "eslint-visitor-keys": "1.0.0", + "espree": "4.1.0", "esprima": "3.1.3", "first-chunk-stream": "2.0.0", - "fluent-syntax": "^0.7.0", - "glob": "7.1.2", + "fluent-syntax": "0.7.0", + "fsevents": "2.0.1", + "glob": "7.1.3", "is-mergeable-object": "1.1.0", "jed": "1.1.1", - "os-locale": "2.1.0", - "pino": "4.16.1", + "os-locale": "3.0.1", + "pino": "5.9.0", "po2json": "0.4.5", - "postcss": "6.0.19", + "postcss": "7.0.6", "probe-image-size": "4.0.0", "relaxed-json": "1.0.1", - "semver": "5.5.0", - "shelljs": "0.8.1", - "snyk": "^1.78.1", + "semver": "5.6.0", + "shelljs": "0.8.3", + "snyk": "1.110.2", "source-map-support": "0.5.6", "strip-bom-stream": "3.0.0", "tosource": "1.0.0", - "upath": "1.0.5", - "whatwg-url": "6.4.1", + "upath": "1.1.0", + "whatwg-url": "7.0.0", "xmldom": "0.1.27", - "yargs": "11.0.0", - "yauzl": "2.9.1" + "yargs": "12.0.2", + "yauzl": "2.9.2" }, "dependencies": { + "@babel/polyfill": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz", + "integrity": "sha512-dnrMRkyyr74CRelJwvgnnSUDh2ge2NCTyHVwpOdvRMHtJUyxLtMAfhBN3s64pY41zdw0kgiLPh6S20eb1NcX6Q==", + "dev": true, + "requires": { + "core-js": "^2.5.7", + "regenerator-runtime": "^0.11.1" + } + }, "ajv": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", - "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0", - "uri-js": "^4.2.1" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-regex": { @@ -1106,6 +1415,12 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, "chalk": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", @@ -1128,22 +1443,40 @@ "wrap-ansi": "^2.0.0" } }, + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "dev": true + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "dev": true }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1154,6 +1487,12 @@ "path-is-absolute": "^1.0.0" } }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -1179,83 +1518,99 @@ "ansi-regex": "^3.0.0" } }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", "dev": true }, "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", "dev": true, "requires": { "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", + "os-locale": "^3.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", "string-width": "^2.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" } }, "yauzl": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz", - "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.2.tgz", + "integrity": "sha1-T7G8euH8L1cDe1SvasyP4QMcW3c=", "dev": true, "requires": { "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.0.1" + "fd-slicer": "~1.1.0" } } } }, "adm-zip": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.11.tgz", - "integrity": "sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA==", + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", "dev": true }, "agent-base": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz", - "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", "dev": true, "requires": { "es6-promisify": "^5.0.0" } }, "ajv": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.0.tgz", - "integrity": "sha1-r6wpW7qgFSRJ5SJ0LkVHwa6TKNI=", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", "dev": true, "requires": { - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, "ajv-keywords": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", - "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", + "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", "dev": true }, "ajv-merge-patch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ajv-merge-patch/-/ajv-merge-patch-3.0.0.tgz", - "integrity": "sha1-dvBx45H0Gf6f4/6n6SChrYJLK2E=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ajv-merge-patch/-/ajv-merge-patch-4.1.0.tgz", + "integrity": "sha512-0mAYXMSauA8RZ7r+B4+EAOYcZEcO9OK5EiQCR7W7Cv4E44pJj56ZnkKLJ9/PAcOc0dT+LlV9fdDcq2TxVJfOYw==", "dev": true, "requires": { - "fast-json-patch": "^1.0.0", + "fast-json-patch": "^2.0.6", "json-merge-patch": "^0.2.3" } }, @@ -1268,6 +1623,17 @@ "kind-of": "^3.0.2", "longest": "^1.0.1", "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "amdefine": { @@ -1276,15 +1642,6 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, - "anchor-markdown-header": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", - "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", - "dev": true, - "requires": { - "emoji-regex": "~6.1.0" - } - }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -1295,9 +1652,9 @@ } }, "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, "ansi-regex": { @@ -1335,314 +1692,38 @@ "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archiver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "dev": true, + "requires": { + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "walkdir": "^0.0.11", + "zip-stream": "^1.1.0" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "archiver": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", - "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", - "dev": true, - "requires": { - "archiver-utils": "^1.3.0", - "async": "^2.0.0", - "buffer-crc32": "^0.2.1", - "glob": "^7.0.0", - "lodash": "^4.8.0", - "readable-stream": "^2.0.0", - "tar-stream": "^1.5.0", - "walkdir": "^0.0.11", - "zip-stream": "^1.1.0" - }, - "dependencies": { - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dev": true, - "requires": { - "lodash": "^4.14.0" + "lodash": "^4.14.0" } } } @@ -1685,13 +1766,10 @@ } }, "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, "arr-flatten": { "version": "1.1.0", @@ -1705,6 +1783,18 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", @@ -1740,6 +1830,12 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -1756,9 +1852,9 @@ "dev": true }, "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "arrify": { @@ -1791,12 +1887,30 @@ } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } } }, "assert-plus": { @@ -1818,9 +1932,9 @@ "dev": true }, "ast-types": { - "version": "0.11.5", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.5.tgz", - "integrity": "sha512-oJjo+5e7/vEc2FBK8gUalV0pba4L3VdBIs2EKhOLHLcOd2FgQIVQN9xb0eZ9IjEWyAL7vq6fGJxOvVvdCHNyMw==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.1.tgz", + "integrity": "sha512-b+EeK0WlzrSmpMw5jktWvQGxblpWnvMrV+vOp69RLjzGiHwWV0vgq75DPKtUjppKni3yWwSW8WLGV3Ch/XIWcQ==", "dev": true }, "async": { @@ -1830,9 +1944,9 @@ "dev": true }, "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, "async-limiter": { @@ -1848,9 +1962,9 @@ "dev": true }, "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, "aws-sign2": { @@ -1860,9 +1974,9 @@ "dev": true }, "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, "babel-code-frame": { @@ -2009,14 +2123,15 @@ } }, "babel-loader": { - "version": "8.0.0-beta.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.0-beta.2.tgz", - "integrity": "sha512-P1zch1DvQy3RGmp/1CH78uPg5gTPQQ01S9r6ipCOWVamO0UIC8gnrx7m7LsUsXa470yB6IOZxhtEEwIUclRLNw==", + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", "dev": true, "requires": { - "find-cache-dir": "^1.0.0", + "find-cache-dir": "^2.0.0", "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1" + "mkdirp": "^0.5.1", + "pify": "^4.0.1" } }, "babel-messages": { @@ -2173,15 +2288,9 @@ } }, "babylon": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.40.tgz", - "integrity": "sha512-AVxF2EcxvGD5hhOuLTOLAXBb0VhwWpEX0HyHdAI2zU+AAP4qEwtQj8voz1JR3uclGai0rfcE+dCTHnNMOnimFg==", - "dev": true - }, - "bail": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", - "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { @@ -2242,31 +2351,19 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, "base64-js": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", - "integrity": "sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", "dev": true }, "base64url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.0.tgz", - "integrity": "sha512-LIVmqIrIWuiqTvn4RzcrwCOuHo2DD6tKmKBPXXlr4p4n4l6BZBkwFTIa3zu1XkX5MbZgro4a6BvPi+n2Mns5Gg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", "dev": true }, "basic-auth": { @@ -2285,25 +2382,24 @@ "dev": true }, "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, - "optional": true, "requires": { "tweetnacl": "^0.14.3" } }, "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, "bl": { @@ -2316,9 +2412,9 @@ } }, "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", "dev": true }, "bn.js": { @@ -2364,20 +2460,44 @@ } }, "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "requires": { - "bytes": "3.0.0", + "bytes": "3.1.0", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", - "iconv-lite": "0.4.19", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "~1.6.15" + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + } } }, "boolbase": { @@ -2386,35 +2506,10 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, - "requires": { - "hoek": "4.x.x" - } - }, "bootstrap": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz", - "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=", - "dev": true - }, - "bops": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/bops/-/bops-0.1.1.tgz", - "integrity": "sha1-Bi4CqNqoAfoQ8uXb5nQM/4Af4X4=", - "dev": true, - "requires": { - "base64-js": "0.0.2", - "to-utf8": "0.0.1" - } - }, - "boundary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", - "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", + "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", "dev": true }, "boxen": { @@ -2451,14 +2546,32 @@ } }, "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "brorand": { @@ -2468,9 +2581,9 @@ "dev": true }, "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, "browserify-aes": { @@ -2499,14 +2612,23 @@ } }, "browserify-des": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", - "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dev": true, "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", - "inherits": "^2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } } }, "browserify-rsa": { @@ -2544,13 +2666,14 @@ } }, "browserslist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.1.1.tgz", - "integrity": "sha512-zHGaPnTt70ywm+glR7uMJFZSl+ADGO67SgD2ae20L+Y3KJUeH4fVa89OkTqKCqAnXFE9mO4LTHBKBqKRlr7VNw==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.1.tgz", + "integrity": "sha512-1MC18ooMPRG2UuVFJTHFIAkk6mpByJfxCrnUyvSlu/hyQSFHMrlhM02SzNuCV+quTP4CKmqtOMAIjrifrpBJXQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000809", - "electron-to-chromium": "^1.3.33" + "caniuse-lite": "^1.0.30000971", + "electron-to-chromium": "^1.3.137", + "node-releases": "^1.1.21" } }, "buffer": { @@ -2562,14 +2685,6 @@ "base64-js": "^1.0.2", "ieee754": "^1.1.4", "isarray": "^1.0.0" - }, - "dependencies": { - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - } } }, "buffer-crc32": { @@ -2585,9 +2700,9 @@ "dev": true }, "buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, "buffer-xor": { @@ -2596,12 +2711,6 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -2621,9 +2730,9 @@ } }, "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cacache": { "version": "10.0.4", @@ -2647,9 +2756,9 @@ }, "dependencies": { "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -2659,15 +2768,6 @@ "once": "^1.3.0", "path-is-absolute": "^1.0.0" } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } } } }, @@ -2686,14 +2786,6 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "caller-path": { @@ -2728,15 +2820,15 @@ } }, "caniuse-lite": { - "version": "1.0.30000810", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000810.tgz", - "integrity": "sha512-/0Q00Oie9C72P8zQHtFvzmkrMC3oOFUnMWjCy5F2+BE8lzICm91hQPhh0+XIsAFPKOe2Dh3pKgbRmU3EKxfldA==", + "version": "1.0.30000973", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000973.tgz", + "integrity": "sha512-/F3t/Yo8LEdRSEPCmI15fLu5vepVh9UCg/9inJXF5AAfW7xRRJkbaM2ut52iRMQMnGCLQouLbFdbOA+VEFOIsg==", "dev": true }, "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", "dev": true }, "caseless": { @@ -2745,12 +2837,6 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "ccount": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz", - "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==", - "dev": true - }, "center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", @@ -2762,17 +2848,17 @@ } }, "chai": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", - "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", "dev": true, "requires": { - "assertion-error": "^1.0.1", - "check-error": "^1.0.1", - "deep-eql": "^3.0.0", + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", "get-func-name": "^2.0.0", - "pathval": "^1.0.0", - "type-detect": "^4.0.0" + "pathval": "^1.1.0", + "type-detect": "^4.0.5" } }, "chai-arrays": { @@ -2791,19 +2877,19 @@ } }, "chai-json-schema": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/chai-json-schema/-/chai-json-schema-1.5.0.tgz", - "integrity": "sha1-aWBxnkD3H9Wzd8koLlyaRnmUdPY=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/chai-json-schema/-/chai-json-schema-1.5.1.tgz", + "integrity": "sha512-TR/xPDxRhqwFFCWg1HgL8nNWbpNfUwaib6pBN++QKpnd0t+o3+MBvAn5CM1mpdUMaM76oJAtUjGKdjGad01lIA==", "dev": true, "requires": { "jsonpointer.js": "0.4.0", - "tv4": "~1.2.7" + "tv4": "^1.3.0" } }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -2811,24 +2897,6 @@ "supports-color": "^5.3.0" } }, - "character-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", - "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", - "dev": true - }, - "character-entities-html4": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz", - "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==", - "dev": true - }, - "character-entities-legacy": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", - "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", - "dev": true - }, "character-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", @@ -2838,12 +2906,6 @@ "is-regex": "^1.0.3" } }, - "character-reference-invalid": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", - "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", - "dev": true - }, "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", @@ -2871,2980 +2933,3177 @@ } }, "chokidar": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", - "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", "dev": true, "requires": { "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.1.2", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", "glob-parent": "^3.1.0", - "inherits": "^2.0.1", + "inherits": "^2.0.3", "is-binary-path": "^1.0.0", "is-glob": "^4.0.0", - "normalize-path": "^2.1.1", + "normalize-path": "^3.0.0", "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.0" + "readdirp": "^2.2.1", + "upath": "^1.1.1" }, "dependencies": { - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", "dev": true, + "optional": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, "dev": true, + "optional": true, "requires": { - "is-extglob": "^2.1.0" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } - } - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true - }, - "chrome-trace-event": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", - "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "clean-css": { - "version": "3.4.28", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", - "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", - "dev": true, - "requires": { - "commander": "2.8.x", - "source-map": "0.4.x" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "clipboard-polyfill": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/clipboard-polyfill/-/clipboard-polyfill-2.4.6.tgz", - "integrity": "sha1-n88q2eCjoOdsJWGCsVneDmebJwk=", - "dev": true, - "requires": { - "es6-promise": "4.1.1" - }, - "dependencies": { - "es6-promise": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", - "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==", - "dev": true - } - } - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-deep": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", - "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.1", - "kind-of": "^3.2.2", - "shallow-clone": "^0.1.2" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - } - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "codemirror": { - "version": "5.35.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.35.0.tgz", - "integrity": "sha512-8HQICjZlDfe1ai7bvU6m2uHxuZuFgsUCdDRU9OHVB+2RTRd+FftN1ezVCqbquG0Fyq+wETqyadKhUX46DswSUQ==", - "dev": true - }, - "coffeescript": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", - "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=", - "dev": true - }, - "collapse-white-space": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", - "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "^1.1.1" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "columnify": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", - "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", - "dev": true, - "requires": { - "strip-ansi": "^3.0.0", - "wcwidth": "^1.0.0" - } - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "common-tags": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.7.2.tgz", - "integrity": "sha512-joj9ZlUOjCrwdbmiLqafeUSgkUM74NqhLsZtSqDmhKudaIY197zTrb8JMl31fMnCUuxwFT23eC/oWvrZzDLRJQ==", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0" - } - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "compress-commons": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", - "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.1", - "crc32-stream": "^2.0.0", - "normalize-path": "^2.0.0", - "readable-stream": "^2.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - } - }, - "connect-livereload": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", - "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "constantinople": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", - "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", - "dev": true, - "requires": { - "@types/babel-types": "^7.0.0", - "@types/babylon": "^6.16.2", - "babel-types": "^6.26.0", - "babylon": "^6.18.0" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "continuable-cache": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - }, - "dependencies": { - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } - } - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "crc": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz", - "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=", - "dev": true - }, - "crc32-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", - "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", - "dev": true, - "requires": { - "crc": "^3.4.4", - "readable-stream": "^2.0.0" - } - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crx": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/crx/-/crx-3.2.1.tgz", - "integrity": "sha1-Fyk+51790IxtHIs+F0nS1XV89Cs=", - "dev": true, - "requires": { - "archiver": "^1.1.0", - "commander": "^2.5.0", - "es6-promise": "^3.0.0", - "node-rsa": "^0.2.10" - } - }, - "crx-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/crx-parser/-/crx-parser-0.1.2.tgz", - "integrity": "sha1-fu7tnt3JXiLBiTguNGJARKiaWm0=", - "dev": true - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, - "requires": { - "boom": "5.x.x" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "requires": { - "hoek": "4.x.x" - } - } - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, - "css-parse": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", - "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", - "dev": true - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-uri-to-buffer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", - "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", - "dev": true - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" - } - }, - "debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.1.0.tgz", - "integrity": "sha512-ZQVKfRVlwRfD150ndzEK8M90ABT+Y/JQKs4Y7U4MXdpuoUkkrr4DwKbVux3YjylA5bUMUj0Nc3pMxPJX6N2QQQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deep-for-each": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/deep-for-each/-/deep-for-each-1.0.6.tgz", - "integrity": "sha1-r6DOJJxYSSqXIFOUeKGNN+GxC64=", - "dev": true, - "requires": { - "is-plain-object": "^2.0.1" - } - }, - "deep-freeze": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", - "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "deepcopy": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-0.6.3.tgz", - "integrity": "sha1-Y0eA8vhlardxr4+oQx7RzO5Vx7A=", - "dev": true - }, - "deepmerge": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.0.tgz", - "integrity": "sha512-Q89Z26KAfA3lpPGhbF6XMfYAm3jIV3avViy6KOJ2JLzFbeWHOvPQUu5aSJIWXap3gDZC2y1eF5HXEPI2wGqgvw==", - "dev": true - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-extglob": "^2.1.1" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", "dev": true } } }, - "degenerator": { + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } } } }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", "dev": true, "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" + "source-map": "~0.6.0" }, "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, - "delayed-stream": { + "cli-boxes": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", "dev": true }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "restore-cursor": "^2.0.0" } }, - "desandro-matches-selector": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", - "integrity": "sha1-cXvu1NwT59jzdi9wem1YpndCGOE=", + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "clipboard-polyfill": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/clipboard-polyfill/-/clipboard-polyfill-2.8.1.tgz", + "integrity": "sha512-2qclMYSM/L5Wv8mNeF2rvvtaKFJiG3y5mI2wwsFIUt0yE2hWjNg6qvsRo6D8TTaLTNXDfEI47TyaxSxjwD8ADQ==", + "dev": true }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "requires": { - "repeating": "^2.0.0" + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" } }, - "diff": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", - "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dispensary": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.18.0.tgz", - "integrity": "sha512-ikVxjigcj4leoPgjqYcHV1YhmLEZ5eXMq30CIPTf1BniWrH1C0X35F5iVCa4U2/JXZYcQJyHWniSRSOpM+hiNw==", + "clone-deep": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", "dev": true, "requires": { - "array-from": "~2.1.1", - "async": "~2.6.0", - "natural-compare-lite": "~1.4.0", - "pino": "~4.16.1", - "request": "~2.85.0", - "semver": "~5.5.0", - "sha.js": "~2.4.4", - "source-map-support": "~0.5.4", - "yargs": "~11.0.0" + "for-own": "^1.0.0", + "is-plain-object": "^2.0.1", + "kind-of": "^3.2.2", + "shallow-clone": "^0.1.2" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", - "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "is-buffer": "^1.1.5" } } } }, - "doctoc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.3.1.tgz", - "integrity": "sha1-8BLjYD4xViVMLvIqyIxxkPVUJro=", + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codemirror": { + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.47.0.tgz", + "integrity": "sha512-kV49Fr+NGFHFc/Imsx6g180hSlkGhuHxTSDDmDHOuyln0MQYFLixDY4+bFkBVeCEiepYfDimAF/e++9jPJk4QA==", + "dev": true + }, + "coffeescript": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", + "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "columnify": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", + "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", "dev": true, "requires": { - "anchor-markdown-header": "^0.5.5", - "htmlparser2": "~3.9.2", - "markdown-to-ast": "~3.4.0", - "minimist": "~1.2.0", - "underscore": "~1.8.3", - "update-section": "^0.3.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" } }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { - "esutils": "^2.0.2" + "delayed-stream": "~1.0.0" } }, - "doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", - "dev": true - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true - } + "graceful-readlink": ">= 1.0.0" } }, - "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", "dev": true }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "domelementtype": { + "component-emitter": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", "dev": true, "requires": { - "domelementtype": "1" + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" } }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { - "is-obj": "^1.0.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, - "dtrace-provider": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz", - "integrity": "sha1-3JObTT4GIM/gwc2APQ0tftBP/QQ=", + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", "dev": true, - "optional": true, "requires": { - "nan": "^2.10.0" + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" } }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "connect-livereload": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", + "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", "dev": true }, - "duplexify": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", - "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "date-now": "^0.1.4" } }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "constantinople": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", + "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", "dev": true, - "optional": true, "requires": { - "jsbn": "~0.1.0" + "@types/babel-types": "^7.0.0", + "@types/babylon": "^6.16.2", + "babel-types": "^6.26.0", + "babylon": "^6.18.0" } }, - "ecdsa-sig-formatter": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", - "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", - "dev": true, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, - "electron-to-chromium": { - "version": "1.3.34", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz", - "integrity": "sha1-2TSY9AORuwwWpgPYJBuZUUBBV+0=", + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", "dev": true }, - "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" } }, - "email-validator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", - "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "emoji-regex": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", - "integrity": "sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=", + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "core-js-compat": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.3.tgz", + "integrity": "sha512-EP018pVhgwsKHz3YoN1hTq49aRe+h017Kjz0NQz3nXV0cCRMvH3fLQl+vEPGr4r4J5sk4sU3tUC7U1aqTCeJeA==", + "dev": true, + "requires": { + "browserslist": "^4.6.0", + "core-js-pure": "3.1.3", + "semver": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", + "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.3.tgz", + "integrity": "sha512-k3JWTrcQBKqjkjI0bkfXS0lbpWPxYuHWfMMjC1VDmzU4Q58IwSbuXSo99YO/hUHlw/EB4AlfA2PVxOGkrIq6dA==", "dev": true }, - "encodeurl": { + "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "crc": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz", + "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=", + "dev": true }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", "dev": true, "requires": { - "iconv-lite": "~0.4.13" + "crc": "^3.4.4", + "readable-stream": "^2.0.0" } }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { - "once": "^1.4.0" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, - "enhanced-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", - "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" + "capture-stack-trace": "^1.0.0" } }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { - "prr": "~1.0.1" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "error": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", - "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { - "string-template": "~0.2.1", - "xtend": "~4.0.0" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "es5-ext": { - "version": "0.10.44", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.44.tgz", - "integrity": "sha512-TO4Vt9IhW3FzDKLDOpoA8VS9BCV4b9WTf6BqvMOgfoa8wX73F3Kh3y2J7yTstTaXlQ0k1vq4DH2vw6RSs42z+g==", + "crx": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/crx/-/crx-3.2.1.tgz", + "integrity": "sha1-Fyk+51790IxtHIs+F0nS1XV89Cs=", "dev": true, "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" + "archiver": "^1.1.0", + "commander": "^2.5.0", + "es6-promise": "^3.0.0", + "node-rsa": "^0.2.10" } }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "crx-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/crx-parser/-/crx-parser-0.1.2.tgz", + "integrity": "sha1-fu7tnt3JXiLBiTguNGJARKiaWm0=", "dev": true }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "dev": true, "requires": { - "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" + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" } }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", "dev": true }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "es6-promise": "^4.0.3" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", - "dev": true - } + "array-find-index": "^1.0.1" } }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" + "es5-ext": "^0.10.9" } }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "assert-plus": "^1.0.0" } }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "data-uri-to-buffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.1.tgz", + "integrity": "sha512-OkVVLrerfAKZlW2ZZ3Ve2y65jgiWqBKsTfUIAFbn8nVbPcCZg6l6gikKlEYv0kXcmzqGm6mFq/Jf2vriuEkv8A==", "dev": true, "requires": { - "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" + "@types/node": "^8.0.7" + }, + "dependencies": { + "@types/node": { + "version": "8.10.49", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.49.tgz", + "integrity": "sha512-YX30JVx0PvSmJ3Eqr74fYLGeBxD+C7vIL20ek+GGGLJeUbVYRUW3EzyAXpIRA0K8c8o0UWqR/GwEFYiFoz1T8w==", + "dev": true + } } }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", "dev": true }, - "escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", "dev": true, "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } + "get-stdin": "^4.0.1", + "meow": "^3.3.0" } }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, + "debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.1.0.tgz", + "integrity": "sha512-ZQVKfRVlwRfD150ndzEK8M90ABT+Y/JQKs4Y7U4MXdpuoUkkrr4DwKbVux3YjylA5bUMUj0Nc3pMxPJX6N2QQQ==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "ms": "2.0.0" } }, - "eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", - "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "type-detect": "^4.0.0" } }, - "eslint-plugin-no-unsafe-innerhtml": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsafe-innerhtml/-/eslint-plugin-no-unsafe-innerhtml-1.0.16.tgz", - "integrity": "sha1-fQKHjI6b95FriINtWsEitC8VGTI=", + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deep-for-each": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/deep-for-each/-/deep-for-each-2.0.3.tgz", + "integrity": "sha512-Y9mu+rplGcNZ7veer+5rqcdI9w3aPb7/WyE/nYnsuPevaE2z5YuC2u7/Gz/hIKsa0zo8sE8gKoBimSNsO/sr+A==", "dev": true, "requires": { - "eslint": "^3.7.1" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true, - "requires": { - "babel-code-frame": "^6.16.0", - "chalk": "^1.1.3", - "concat-stream": "^1.5.2", - "debug": "^2.1.1", - "doctrine": "^2.0.0", - "escope": "^3.6.0", - "espree": "^3.4.0", - "esquery": "^1.0.0", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "glob": "^7.0.3", - "globals": "^9.14.0", - "ignore": "^3.2.0", - "imurmurhash": "^0.1.4", - "inquirer": "^0.12.0", - "is-my-json-valid": "^2.10.0", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.5.1", - "json-stable-stringify": "^1.0.0", - "levn": "^0.3.0", - "lodash": "^4.0.0", - "mkdirp": "^0.5.0", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.1", - "pluralize": "^1.2.1", - "progress": "^1.1.8", - "require-uncached": "^1.0.2", - "shelljs": "^0.7.5", - "strip-bom": "^3.0.0", - "strip-json-comments": "~2.0.1", - "table": "^3.7.8", - "text-table": "~0.2.0", - "user-home": "^2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "lodash.isplainobject": "^4.0.6" + } + }, + "deep-freeze": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", + "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepcopy": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-0.6.3.tgz", + "integrity": "sha1-Y0eA8vhlardxr4+oQx7RzO5Vx7A=", + "dev": true + }, + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "kind-of": "^6.0.0" } }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "ansi-escapes": "^1.1.0", - "ansi-regex": "^2.0.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", - "cli-width": "^2.0.0", - "figures": "^1.3.5", - "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", - "through": "^2.3.6" + "kind-of": "^6.0.0" } }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } - }, - "onetime": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + } + } + }, + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "dev": true, + "requires": { + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "dev": true - }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "desandro-matches-selector": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", + "integrity": "sha1-cXvu1NwT59jzdi9wem1YpndCGOE=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dispensary": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.27.0.tgz", + "integrity": "sha512-bG9pSBPH8wTEaugUIBAbBvBHynqOoGxefOT4YXlPoUc9AxQGDUO1uFHafDVWnsGWiSYvTUga0aZ9xThzfGQtlQ==", + "dev": true, + "requires": { + "array-from": "~2.1.1", + "async": "~2.6.0", + "natural-compare-lite": "~1.4.0", + "pino": "~5.8.0", + "request": "~2.88.0", + "sha.js": "~2.4.4", + "source-map-support": "~0.5.4", + "yargs": "~12.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", "dev": true, "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "lodash": "^4.17.11" } }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "once": "^1.3.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true - }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "pino": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-5.8.1.tgz", + "integrity": "sha512-7bVFzUw3ffIfOM3t7MuQ9KsH+wX5bdGdQhGfccKgleoY7qG4FO3CmVSjywlFmmYGyMOISi1LDGC6JMEH7XkZJg==", "dev": true, "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" + "fast-json-parse": "^1.0.3", + "fast-redact": "^1.2.0", + "fast-safe-stringify": "^2.0.6", + "flatstr": "^1.0.5", + "pino-std-serializers": "^2.3.0", + "pump": "^3.0.0", + "quick-format-unescaped": "^3.0.0", + "sonic-boom": "^0.6.1" } }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", "dev": true, "requires": { - "ajv": "^4.7.0", - "ajv-keywords": "^1.0.0", - "chalk": "^1.1.1", - "lodash": "^4.0.0", - "slice-ansi": "0.0.4", - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" } } } }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dockerfile-ast": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.0.12.tgz", + "integrity": "sha512-cIV8oXkAxpIuN5XgG0TGg07nLDgrj4olkfrdT77OTA3VypscsYHBUg/FjHxW9K3oA+CyH4Th/qtoMgTVpzSobw==", "dev": true, "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "vscode-languageserver-types": "^3.5.0" } }, - "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } }, - "esm": { - "version": "3.0.47", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.0.47.tgz", - "integrity": "sha512-SkYEU0ZR/4hj9QxMAIk1oU2Y20bJOby8QvCgQMHVBwWSNFXbB7z8q1I7lp4ppn1Nwbx9xLKbB+atRbMSMd7ICQ==", + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", "dev": true }, - "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "dev": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.0.tgz", - "integrity": "sha512-QatFQ4C0n+PLqemyC6zXEv04tSqRR0hRqe+uGKPEVgKe2G8kl8wJvHzRYWwz6vqqEqt6idPVMFojZ4P1zlyAzQ==", - "dev": true - } + "domelementtype": "^1.3.0", + "entities": "^1.1.1" } }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", "dev": true }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "domelementtype": "1" } }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { - "estraverse": "^4.1.0" + "dom-serializer": "0", + "domelementtype": "1" } }, - "estraverse": { + "dot-prop": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dtrace-provider": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz", + "integrity": "sha1-3JObTT4GIM/gwc2APQ0tftBP/QQ=", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.10.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } }, - "ev-emitter": { + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", - "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.146", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.146.tgz", + "integrity": "sha512-BrUq08sx7eR4PCwLbjFxXmjcbDro6DSoc1pN8VCxq76U+o9JQzJlWH/NVtcpAqcktwpE5CVvMyqHqTQfCETNoQ==", "dev": true }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, - "event-to-promise": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz", - "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=", + "email-validator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", + "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", "dev": true }, - "eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "dev": true, "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "iconv-lite": "~0.4.13" } }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "once": "^1.4.0" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" } }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "fill-range": "^2.1.0" + "prr": "~1.0.1" } }, - "express": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", - "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "dev": true, "requires": { - "accepts": "~1.3.4", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.1", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.0", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.2", - "qs": "6.5.1", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.1", - "serve-static": "1.13.1", - "setprototypeof": "1.1.0", - "statuses": "~1.3.1", - "type-is": "~1.6.15", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "string-template": "~0.2.1", + "xtend": "~4.0.0" } }, - "express-sslify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/express-sslify/-/express-sslify-1.2.0.tgz", - "integrity": "sha1-MOhLzu0VV+sYdnK74UMKCioQDZw=" - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "is-arrayish": "^0.2.1" } }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", "dev": true, "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" } }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, - "extract-zip": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", - "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "es5-ext": { + "version": "0.10.50", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", + "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", "dev": true, "requires": { - "concat-stream": "1.6.2", - "debug": "2.6.9", - "mkdirp": "0.5.1", - "yauzl": "2.4.1" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - } + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "^1.0.0" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "fast-json-parse": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", - "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", - "dev": true - }, - "fast-json-patch": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-1.2.2.tgz", - "integrity": "sha1-03fZfGkR290qHIC/rNoEik+Du/k=", + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "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" + } }, - "fast-safe-stringify": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz", - "integrity": "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==", + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", "dev": true }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { - "websocket-driver": ">=0.5.1" + "es6-promise": "^4.0.3" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", + "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "dev": true + } } }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "dev": true, "requires": { - "pend": "~1.2.0" + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "d": "1", + "es5-ext": "~0.10.14" } }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "dev": true, "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" } }, - "file-sync-cmp": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", - "dev": true - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } } }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "eslint": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.0.1.tgz", + "integrity": "sha512-D5nG2rErquLUstgUaxJlWB5+gu+U/3VDY0fk/Iuq8y9CUFy/7Y6oF4N2cR1tV8knzQvciIbfqfohd359xTLIKQ==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "ajv": "^6.5.0", + "babel-code-frame": "^6.26.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.5.0", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^5.2.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.11.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.1.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.0", + "string.prototype.matchall": "^2.0.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, - "findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "eslint-plugin-no-unsafe-innerhtml": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsafe-innerhtml/-/eslint-plugin-no-unsafe-innerhtml-1.0.16.tgz", + "integrity": "sha1-fQKHjI6b95FriINtWsEitC8VGTI=", "dev": true, "requires": { - "glob": "~5.0.0" + "eslint": "^3.7.1" }, "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "requires": { + "babel-code-frame": "^6.16.0", + "chalk": "^1.1.3", + "concat-stream": "^1.5.2", + "debug": "^2.1.1", + "doctrine": "^2.0.0", + "escope": "^3.6.0", + "espree": "^3.4.0", + "esquery": "^1.0.0", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "glob": "^7.0.3", + "globals": "^9.14.0", + "ignore": "^3.2.0", + "imurmurhash": "^0.1.4", + "inquirer": "^0.12.0", + "is-my-json-valid": "^2.10.0", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.5.1", + "json-stable-stringify": "^1.0.0", + "levn": "^0.3.0", + "lodash": "^4.0.0", + "mkdirp": "^0.5.0", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.1", + "pluralize": "^1.2.1", + "progress": "^1.1.8", + "require-uncached": "^1.0.2", + "shelljs": "^0.7.5", + "strip-bom": "^3.0.0", + "strip-json-comments": "~2.0.1", + "table": "^3.7.8", + "text-table": "~0.2.0", + "user-home": "^2.0.0" + } + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "number-is-nan": "^1.0.0" } - } - } - }, - "firefox-profile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-1.1.0.tgz", - "integrity": "sha512-wUIE4QeAjwoHvFbomWmXgKyYtV4/oZxDcJG4znxtGGa/0BhKkd3HzeOf3tAsMWPq1ExARZxCRRiNw1BL3FuPqA==", - "dev": true, - "requires": { - "adm-zip": "~0.4.x", - "archiver": "~2.1.0", - "async": "~2.5.0", - "fs-extra": "~4.0.2", - "ini": "~1.3.3", - "jetpack-id": "1.0.0", - "lazystream": "~1.0.0", - "lodash": "~4.17.2", - "minimist": "^1.1.1", - "uuid": "^3.0.0", - "xml2js": "~0.4.4" - }, - "dependencies": { - "archiver": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", - "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "^1.3.0" + } + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", "dev": true, "requires": { - "archiver-utils": "^1.3.0", - "async": "^2.0.0", - "buffer-crc32": "^0.2.1", "glob": "^7.0.0", - "lodash": "^4.8.0", - "readable-stream": "^2.0.0", - "tar-stream": "^1.5.0", - "zip-stream": "^1.2.0" + "interpret": "^1.0.0", + "rechoir": "^0.6.2" } }, - "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "lodash": "^4.14.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", + "slice-ansi": "0.0.4", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } } } }, - "first-chunk-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", - "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "requires": { - "readable-stream": "^2.0.2" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, - "fizzy-ui-utils": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz", - "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", - "dev": true, - "requires": { - "desandro-matches-selector": "^2.0.0" - } + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true }, - "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true + }, + "espree": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", "dev": true, "requires": { - "circular-json": "^0.3.1", - "del": "^2.0.2", - "graceful-fs": "^4.1.2", - "write": "^0.2.1" + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + } } }, - "flatstr": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.8.tgz", - "integrity": "sha512-YXblbv/vc1zuVVUtnKl1hPqqk7TalZCppnKE7Pr8FI/Rp48vzckS/4SJ4Y9O9RNiI82Vcw/FydmtqdQOg1Dpqw==", + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "flipclock": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/flipclock/-/flipclock-0.7.8.tgz", - "integrity": "sha1-838ffKkETZAsH+4fGuf0vR7vGlQ=", + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { - "jquery": ">=1.7" + "estraverse": "^4.0.0" } }, - "fluent-syntax": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.7.0.tgz", - "integrity": "sha512-T0iqfhC40jrs3aDjYOKgzIQjjhsH2Fa6LnXB6naPv0ymW3DeYMUFa89y9aLKMpi1P9nl2vEimK7blx4tVnUWBg==", - "dev": true - }, - "flush-write-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", - "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" + "estraverse": "^4.1.0" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==", "dev": true }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" + "d": "1", + "es5-ext": "~0.10.14" } }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + "event-to-promise": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz", + "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=", + "dev": true }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "dev": true }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", "dev": true }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, - "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "is-descriptor": "^0.1.0" } }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, - "optional": true, "requires": { - "ms": "2.0.0" + "is-extendable": "^0.1.0" } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "requires": { - "minipass": "^2.2.1" + "mime-types": "~2.1.24", + "negotiator": "0.6.2" } }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" } }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "optional": true, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" } }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "^2.1.0" - } + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "mime-db": "1.40.0" } }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" } }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { - "minipass": "^2.2.1" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" } }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + } + } + }, + "express-sslify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/express-sslify/-/express-sslify-1.2.0.tgz", + "integrity": "sha1-MOhLzu0VV+sYdnK74UMKCioQDZw=" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "minimist": "0.0.8" + "is-plain-object": "^2.0.4" } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, + } + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, - "optional": true, "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "is-descriptor": "^1.0.0" } }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, - "optional": true, "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "is-extendable": "^0.1.0" } }, - "nopt": { - "version": "4.0.1", - "bundled": true, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, - "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "kind-of": "^6.0.0" } }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, - "optional": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "kind-of": "^6.0.0" } }, - "npmlog": { - "version": "4.1.2", - "bundled": true, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, - "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, + } + } + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-parse": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", + "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", + "dev": true + }, + "fast-json-patch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.1.0.tgz", + "integrity": "sha512-PipOsAKamRw7+CXtKiieehyjUeDVPJ5J7b2kdJYerEf6TSUQoD2ijpVyZ88KQm5YXziff4h762bz3+vzf56khg==", + "dev": true, + "requires": { + "deep-equal": "^1.0.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-redact": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-1.5.0.tgz", + "integrity": "sha512-Afo61CgUjkzdvOKDHn08qnZ0kwck38AOGcMlvSGzvJbIab6soAP5rdoQayecGCDsD69AiF9vJBXyq31eoEO2tQ==", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz", + "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "dev": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "requires": { + "glob": "~5.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "wrappy": "1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, + } + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "firefox-profile": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-1.2.0.tgz", + "integrity": "sha512-TTEFfPOkyaz4EWx/5ZDQC1mJAe3a+JgVcchpIfD4Tvx1UspwlTJRJxOYA35x/z2iJcxaF6aW2rdh6oj6qwgd2g==", + "dev": true, + "requires": { + "adm-zip": "~0.4.x", + "archiver": "~2.1.0", + "async": "~2.5.0", + "fs-extra": "~4.0.2", + "ini": "~1.3.3", + "jetpack-id": "1.0.0", + "lazystream": "~1.0.0", + "lodash": "~4.17.2", + "minimist": "^1.1.1", + "uuid": "^3.0.0", + "xml2js": "~0.4.4" + }, + "dependencies": { + "archiver": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", + "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", "dev": true, - "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "zip-stream": "^1.2.0" } }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", "dev": true, - "optional": true, "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } + "lodash": "^4.14.0" } }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "fizzy-ui-utils": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz", + "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", + "dev": true, + "requires": { + "desandro-matches-selector": "^2.0.0" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } + }, + "flatstr": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", + "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==", + "dev": true + }, + "flipclock": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/flipclock/-/flipclock-0.7.8.tgz", + "integrity": "sha1-838ffKkETZAsH+4fGuf0vR7vGlQ=", + "dev": true, + "requires": { + "jquery": ">=1.7" + } + }, + "fluent-syntax": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.7.0.tgz", + "integrity": "sha512-T0iqfhC40jrs3aDjYOKgzIQjjhsH2Fa6LnXB6naPv0ymW3DeYMUFa89y9aLKMpi1P9nl2vEimK7blx4tVnUWBg==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, - "optional": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5855,125 +6114,114 @@ "util-deprecate": "~1.0.1" } }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "optional": true, "requires": { "safe-buffer": "~5.1.0" } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true } } }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.1.tgz", + "integrity": "sha512-p+CXqK/iLvDESUWdn3NA3JVO9HxdfI+iXx8xR3DqWgKZvQNiEVpAyUQo0lmwz8rqksb4xaGerG291xuwwhX2kA==", + "dev": true, + "optional": true + }, "ftp": { "version": "0.3.10", "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", @@ -6046,6 +6294,21 @@ "graceful-readlink": ">= 1.0.0" } }, + "is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "dev": true, + "requires": { + "is-relative": "^0.1.0" + } + }, + "is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", + "dev": true + }, "isexe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", @@ -6080,10 +6343,13 @@ } }, "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "requires": { + "is-property": "^1.0.2" + } }, "generate-object-property": { "version": "1.2.0", @@ -6095,9 +6361,9 @@ } }, "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, "get-func-name": { @@ -6107,9 +6373,9 @@ "dev": true }, "get-size": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.2.tgz", - "integrity": "sha1-VV6pirhzLgwCHp4j4iGa3L45jpg=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz", + "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==", "dev": true }, "get-stdin": { @@ -6125,17 +6391,54 @@ "dev": true }, "get-uri": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.2.tgz", - "integrity": "sha512-ZD325dMZOgerGqF/rF6vZXyFGTAay62svjQIT+X/oU2PtxYpFxvSkbsdi+oxIrsNxlZVd4y8wUDqkaExWTI/Cw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.3.tgz", + "integrity": "sha512-x5j6Ks7FOgLD/GlvjKwgu7wdmMR55iuRHhn8hj/+gA+eSbxQvZ+AEomq+3MgVEZj1vpi738QahGbCCSIDtXtkw==", "dev": true, "requires": { - "data-uri-to-buffer": "1", - "debug": "2", - "extend": "3", + "data-uri-to-buffer": "2", + "debug": "4", + "extend": "~3.0.2", "file-uri-to-path": "1", "ftp": "~0.3.10", - "readable-stream": "2" + "readable-stream": "3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "get-value": { @@ -6206,23 +6509,14 @@ "path-is-absolute": "^1.0.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "^2.0.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, "global": { @@ -6252,34 +6546,36 @@ "ini": "^1.3.4" } }, - "globals": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", - "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==", - "dev": true + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", "dev": true, "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" } }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, "globule": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", @@ -6345,18 +6641,18 @@ "dev": true }, "graphlib": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.5.tgz", - "integrity": "sha512-XvtbqCcw+EM5SqQrIetIKKD+uZVNQtDPD1goIg7K73RuRZtVI5rYMdcCVSHm/AS1sCBZ7vt0p5WgXouucHQaOA==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.7.tgz", + "integrity": "sha512-TyI9jIy2J4j0qgPmOOrHTCtpPqJGN/aurBwc6ZT+bRii+di1I+Wv3obRhVrmBEXet+qkMaEX67dXrwsd3QQM6w==", "dev": true, "requires": { - "lodash": "^4.11.1" + "lodash": "^4.17.5" } }, "growl": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", - "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, "growly": { @@ -6366,9 +6662,9 @@ "dev": true }, "grunt": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.2.tgz", - "integrity": "sha1-TmpeaVtwRy/VME9fqeNCNoNqc7w=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.4.tgz", + "integrity": "sha512-PYsMOrOC+MsdGEkFVwMaMyc6Ob7pKmq+deg1Sjr+vvMWp35sztfwKE7qoN51V+UEtHsyNuMcGdgMLFkBHvMxHQ==", "dev": true, "requires": { "coffeescript": "~1.10.0", @@ -6379,33 +6675,59 @@ "glob": "~7.0.0", "grunt-cli": "~1.2.0", "grunt-known-options": "~1.1.0", - "grunt-legacy-log": "~1.0.0", - "grunt-legacy-util": "~1.0.0", + "grunt-legacy-log": "~2.0.0", + "grunt-legacy-util": "~1.1.1", "iconv-lite": "~0.4.13", - "js-yaml": "~3.5.2", + "js-yaml": "~3.13.0", "minimatch": "~3.0.2", + "mkdirp": "~0.5.1", "nopt": "~3.0.6", "path-is-absolute": "~1.0.0", - "rimraf": "~2.2.8" + "rimraf": "~2.6.2" + }, + "dependencies": { + "grunt-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "dev": true, + "requires": { + "findup-sync": "~0.3.0", + "grunt-known-options": "~1.1.0", + "nopt": "~3.0.6", + "resolve": "~1.1.0" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } } }, "grunt-cli": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", - "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz", + "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==", "dev": true, "requires": { - "findup-sync": "~0.3.0", "grunt-known-options": "~1.1.0", - "nopt": "~3.0.6", - "resolve": "~1.1.0" + "interpret": "~1.1.0", + "liftoff": "~2.5.0", + "nopt": "~4.0.1", + "v8flags": "~3.1.1" }, "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } } } }, @@ -6610,93 +6932,46 @@ "dev": true }, "grunt-known-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", - "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", + "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", "dev": true }, "grunt-legacy-log": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.2.tgz", - "integrity": "sha512-WdedTJ/6zCXnI/coaouzqvkI19uwqbcPkdsXiDRKJyB5rOUlOxnCnTVbpeUdEckKVir2uHF3rDBYppj2p6N3+g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", + "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", "dev": true, "requires": { "colors": "~1.1.2", - "grunt-legacy-log-utils": "~1.0.0", + "grunt-legacy-log-utils": "~2.0.0", "hooker": "~0.2.3", "lodash": "~4.17.5" } }, "grunt-legacy-log-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", - "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", + "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", "dev": true, "requires": { - "chalk": "~1.1.1", - "lodash": "~4.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "lodash": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", - "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "chalk": "~2.4.1", + "lodash": "~4.17.10" } }, "grunt-legacy-util": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", - "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", + "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", "dev": true, "requires": { "async": "~1.5.2", "exit": "~0.1.1", "getobject": "~0.1.0", "hooker": "~0.2.3", - "lodash": "~4.3.0", - "underscore.string": "~3.2.3", - "which": "~1.2.1" - }, - "dependencies": { - "lodash": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", - "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", - "dev": true - }, - "underscore.string": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", - "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=", - "dev": true - } + "lodash": "~4.17.10", + "underscore.string": "~3.3.4", + "which": "~1.3.0" } }, "grunt-mocha-test": { @@ -6710,12 +6985,12 @@ } }, "grunt-webpack": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/grunt-webpack/-/grunt-webpack-3.0.2.tgz", - "integrity": "sha512-ghSkdCdvbF1SpI46qDT9FYqw5ZP5sSYbEQU/DwzoJE1K42xizAZ5Rv3kzpaRdJT4yvu8/6fO5+wne3/y0n74QA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/grunt-webpack/-/grunt-webpack-3.1.3.tgz", + "integrity": "sha512-SaZ8K8lG4iTxs7ClZxOWCf3kxqS2y+Eel8SbaEGgBKwhAp6e45beIu+vhBZRLX3vonKML2kjemKsQ21REaqNFQ==", "dev": true, "requires": { - "deep-for-each": "^1.0.5", + "deep-for-each": "^2.0.2", "lodash": "^4.7.0" } }, @@ -6726,36 +7001,22 @@ "dev": true }, "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "dev": true, "requires": { - "ajv": "^5.1.0", + "ajv": "^6.5.5", "har-schema": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - } } }, "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "function-bind": "^1.0.2" + "function-bind": "^1.1.1" } }, "has-ansi": { @@ -6779,6 +7040,12 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -6788,14 +7055,6 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "has-values": { @@ -6808,26 +7067,6 @@ "kind-of": "^4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -6859,25 +7098,13 @@ } }, "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, "requires": { "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "dev": true, - "requires": { - "boom": "4.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" + "minimalistic-assert": "^1.0.1" } }, "he": { @@ -6887,9 +7114,9 @@ "dev": true }, "highlight.js": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", - "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=", + "version": "9.15.8", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.8.tgz", + "integrity": "sha512-RrapkKQWwE+wKdF73VsOa2RQdIoO3mxwJ4P8mhbI6KYJUraUHRKM5w5zQQKXNk0xNL4UVRdulV9SBJcmzJNzVA==", "dev": true }, "hmac-drbg": { @@ -6903,12 +7130,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "dev": true - }, "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", @@ -6919,6 +7140,15 @@ "os-tmpdir": "^1.0.1" } }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, "hooker": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", @@ -6926,29 +7156,52 @@ "dev": true }, "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", "dev": true }, "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "dev": true, "requires": { - "domelementtype": "^1.3.0", + "domelementtype": "^1.3.1", "domhandler": "^2.3.0", "domutils": "^1.5.1", "entities": "^1.1.1", "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "http-errors": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, "requires": { "depd": "1.1.1", "inherits": "2.0.3", @@ -6959,12 +7212,14 @@ "depd": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true }, "setprototypeof": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true } } }, @@ -7029,25 +7284,34 @@ }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } }, "ieee754": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", - "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", "dev": true }, "iferr": { @@ -7057,9 +7321,15 @@ "dev": true }, "ignore": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", - "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", "dev": true }, "import-lazy": { @@ -7120,22 +7390,21 @@ } }, "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "dev": true, "requires": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.0", "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", - "external-editor": "^2.0.4", + "external-editor": "^2.1.0", "figures": "^2.0.0", "lodash": "^4.3.0", "mute-stream": "0.0.7", "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", + "rxjs": "^5.5.2", "string-width": "^2.1.0", "strip-ansi": "^4.0.0", "through": "^2.3.6" @@ -7174,9 +7443,9 @@ } }, "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, "ip": { @@ -7186,17 +7455,18 @@ "dev": true }, "ipaddr.js": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", - "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" }, "is-absolute": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", - "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "dev": true, "requires": { - "is-relative": "^0.1.0" + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" } }, "is-accessor-descriptor": { @@ -7206,22 +7476,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - } - }, - "is-alphabetical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", - "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", - "dev": true - }, - "is-alphanumerical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", - "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", - "dev": true, - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-arrayish": { @@ -7245,14 +7510,11 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true }, "is-data-descriptor": { "version": "0.1.4", @@ -7261,12 +7523,23 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "is-decimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", - "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, "is-descriptor": { @@ -7288,21 +7561,6 @@ } } }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, "is-expression": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", @@ -7328,9 +7586,9 @@ "dev": true }, "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, "is-finite": { @@ -7349,20 +7607,14 @@ "dev": true }, "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "^2.1.0" } }, - "is-hexadecimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", - "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", - "dev": true - }, "is-installed-globally": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", @@ -7386,9 +7638,9 @@ "dev": true }, "is-my-json-valid": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", - "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz", + "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==", "dev": true, "requires": { "generate-function": "^2.0.0", @@ -7405,12 +7657,23 @@ "dev": true }, "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-obj": { @@ -7419,38 +7682,6 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", @@ -7467,28 +7698,8 @@ "dev": true, "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", @@ -7517,10 +7728,13 @@ } }, "is-relative": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", - "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } }, "is-resolvable": { "version": "1.1.0", @@ -7540,12 +7754,30 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -7577,18 +7809,15 @@ "dev": true }, "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "isotope-layout": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/isotope-layout/-/isotope-layout-3.0.5.tgz", - "integrity": "sha512-qyZXlTaBilCJu5gxATAYskiZVa1LUCpWfs3hJLq/kFeOElLMH7RPMUk3u/+gGAl8QOgERU7zpzBM9jwrg+uEjg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/isotope-layout/-/isotope-layout-3.0.6.tgz", + "integrity": "sha512-z2ZKablhocXhoNyWwzJPFd7u7FWbYbVJA51Nvsqsod8jH2ExGc1SwDsSWKE54e3PhXzqf2yZPhFSq/c2MR1arw==", "dev": true, "requires": { "desandro-matches-selector": "^2.0.0", @@ -7617,9 +7846,15 @@ "dev": true }, "jquery": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", - "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", + "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==", + "dev": true + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", "dev": true }, "js-select": { @@ -7645,26 +7880,25 @@ "dev": true }, "js-yaml": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", - "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { - "argparse": "^1.0.2", - "esprima": "^2.6.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true + "dev": true }, "jsesc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, "json-merge-patch": { @@ -7689,9 +7923,9 @@ "dev": true }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json-stable-stringify": { @@ -7797,58 +8031,84 @@ } }, "jstransformer-markdown-it": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.0.0.tgz", - "integrity": "sha1-i0Su28lGXck10oC+kDObZxwWzrg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.1.0.tgz", + "integrity": "sha1-aewwzkUYvtWZezjwJ2SOjChekvc=", "dev": true, "requires": { "markdown-it": "^8.0.0" } }, "jszip": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", - "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.1.tgz", + "integrity": "sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw==", "dev": true, "requires": { - "pako": "~1.0.2" + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "just-extend": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", - "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz", + "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==", "dev": true }, "jwa": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", - "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dev": true, "requires": { "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", + "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "jws": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", - "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dev": true, "requires": { - "jwa": "^1.1.5", + "jwa": "^1.4.1", "safe-buffer": "^5.0.1" } }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true }, "latest-version": { "version": "3.1.0", @@ -7875,34 +8135,67 @@ } }, "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "^2.0.0" } }, - "leb": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz", - "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=", - "dev": true - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + } } }, "linkify-it": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz", - "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.1.0.tgz", + "integrity": "sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg==", "dev": true, "requires": { "uc.micro": "^1.0.1" @@ -7936,36 +8229,53 @@ } }, "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", "dev": true }, "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "dev": true, "requires": { - "big.js": "^3.1.3", + "big.js": "^5.2.2", "emojis-list": "^2.0.0", - "json5": "^0.5.0" + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^2.0.0", + "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, "lodash.assign": { @@ -7992,12 +8302,6 @@ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, - "lodash.fill": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/lodash.fill/-/lodash.fill-3.4.0.tgz", - "integrity": "sha1-o8dK5kDQU63w3CB5+HIHiOi/74U=", - "dev": true - }, "lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", @@ -8016,12 +8320,6 @@ "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", "dev": true }, - "lodash.intersection": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.intersection/-/lodash.intersection-4.4.0.tgz", - "integrity": "sha1-ChG6Yx0OlcI8fy9Mu5ppLtF45wU=", - "dev": true - }, "lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", @@ -8052,36 +8350,12 @@ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", "dev": true }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", - "dev": true - }, - "lodash.omit": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", - "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=", - "dev": true - }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", "dev": true }, - "lodash.partialright": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-4.2.1.tgz", - "integrity": "sha1-ATDYDoM2MmTUAHTzKbij56ihzEs=", - "dev": true - }, - "lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", - "dev": true - }, "lodash.set": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", @@ -8094,28 +8368,22 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.2.tgz", + "integrity": "sha512-Jt2MHrCNdtIe1W6co3tF5KXGRkzF+TYffiQstfXa04mrss9IKXzAAXYWak8LbZseAQY03sH2GzMCMU0ZOUc9bg==", "dev": true }, "lolex": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.2.tgz", - "integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==", + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", + "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", "dev": true }, "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", "dev": true }, "longest": { @@ -8124,12 +8392,6 @@ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, - "longest-streak": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-1.0.0.tgz", - "integrity": "sha1-0GWXxNTDG1LMsfXY+P5xSOr9aWU=", - "dev": true - }, "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", @@ -8156,9 +8418,9 @@ "dev": true }, "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -8172,12 +8434,22 @@ "dev": true }, "make-dir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", - "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", "dev": true, "requires": { - "pify": "^3.0.0" + "kind-of": "^6.0.2" } }, "mamacro": { @@ -8186,6 +8458,15 @@ "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", "dev": true }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -8208,9 +8489,9 @@ } }, "markdown-it": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.1.tgz", - "integrity": "sha512-CzzqSSNkFRUf9vlWvhK1awpJreMRqdCrBvZ8DIoDWTOkESMIF741UPAhuAmbyWmdiFPA6WARNhnu2M6Nrhwa+A==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -8220,36 +8501,10 @@ "uc.micro": "^1.0.5" } }, - "markdown-table": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.4.0.tgz", - "integrity": "sha1-iQwsGzv+g/sA5BKbjkz+ZFJw+dE=", - "dev": true - }, - "markdown-to-ast": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/markdown-to-ast/-/markdown-to-ast-3.4.0.tgz", - "integrity": "sha1-Diy6gTkLBUmpFT7DsNkVthwWS+c=", - "dev": true, - "requires": { - "debug": "^2.1.3", - "remark": "^5.0.1", - "structured-source": "^3.0.2", - "traverse": "^0.6.6" - }, - "dependencies": { - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", - "dev": true - } - } - }, "masonry-layout": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.1.tgz", - "integrity": "sha512-ngJmxszn+JSKreNnrwkjks9OUuwVL2JR8T4iVeE3+g+sJjyoxTLdUNRbYONA25y+nWZn+WZI2GvThRAV+z5Duw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz", + "integrity": "sha512-iGtAlrpHNyxaR19CvKC3npnEcAwszXoyJiI8ARV2ePi7fmYhIud25MHK8Zx4P0LCC4d3TNO9+rFa1KoK1OEOaA==", "dev": true, "requires": { "get-size": "^2.0.2", @@ -8257,13 +8512,22 @@ } }, "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, "requires": { "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } } }, "mdurl": { @@ -8278,12 +8542,14 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" } }, "memory-fs": { @@ -8333,24 +8599,24 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } }, "miller-rabin": { @@ -8366,25 +8632,28 @@ "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true }, "mime-db": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true }, "mime-types": { "version": "2.1.18", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, "requires": { "mime-db": "~1.33.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "min-document": { @@ -8490,27 +8759,28 @@ } }, "mocha": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.1.tgz", - "integrity": "sha512-SpwyojlnE/WRBNGtvJSNfllfm5PqEDFxcWluSIgLeSBJtXG4DmoX2NNAeEA7rP5kK+79VgtVq8nG6HskaL1ykg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", "dev": true, "requires": { - "browser-stdout": "1.3.0", - "commander": "2.11.0", + "browser-stdout": "1.3.1", + "commander": "2.15.1", "debug": "3.1.0", - "diff": "3.3.1", + "diff": "3.5.0", "escape-string-regexp": "1.0.5", "glob": "7.1.2", - "growl": "1.10.3", + "growl": "1.10.5", "he": "1.1.1", + "minimatch": "3.0.4", "mkdirp": "0.5.1", - "supports-color": "4.4.0" + "supports-color": "5.4.0" }, "dependencies": { "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, "debug": { @@ -8536,19 +8806,13 @@ "path-is-absolute": "^1.0.0" } }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "^2.0.0" + "has-flag": "^3.0.0" } } } @@ -8584,17 +8848,6 @@ "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } - } } }, "ms": { @@ -8602,6 +8855,18 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -8658,16 +8923,16 @@ } }, "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, "optional": true }, "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -8675,33 +8940,12 @@ "define-property": "^2.0.2", "extend-shallow": "^3.0.2", "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", "is-windows": "^1.0.2", "kind-of": "^6.0.2", "object.pick": "^1.3.0", "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } } }, "natural-compare": { @@ -8739,6 +8983,12 @@ "wrap-ansi": "^2.0.0" } }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -8748,6 +8998,15 @@ "number-is-nan": "^1.0.0" } }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", @@ -8805,16 +9064,31 @@ "optional": true }, "needle": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.1.tgz", - "integrity": "sha512-t/ZswCM9JTWjAdXS9VpvqhI2Ct2sL2MdY4fUXqGJaGBk13ge99ObqRksRTbBE56K+wxUXwwfZYOuZHifFW9q+Q==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", "dev": true, "requires": { - "debug": "^2.1.2", + "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" }, "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -8826,12 +9100,13 @@ "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true }, "neo-async": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", - "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, "netmask": { @@ -8855,25 +9130,47 @@ "stylus": "0.54.5" } }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, "nise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.0.tgz", - "integrity": "sha512-U+Krdzhsw4losPP/Rij5UGTLQgS9gaWmXdRIbZQIQWVsUGDBo+N0m9mrY9CCEnmwssgswwydxLJUZtFfouC0gA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.0.tgz", + "integrity": "sha512-Z3sfYEkLFzFmL8KY6xnSJLRxwQwYBjOXi/24lb62ZnZiGA0JUzGGTI6TBIgfCSMIDl9Jlu8SRmHNACLTemDHww==", "dev": true, "requires": { - "@sinonjs/formatio": "^2.0.0", - "just-extend": "^1.1.27", - "lolex": "^2.3.2", - "path-to-regexp": "^1.7.0", - "text-encoding": "^0.6.4" + "@sinonjs/formatio": "^3.1.0", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "lolex": "^4.1.0", + "path-to-regexp": "^1.7.0" }, "dependencies": { + "@sinonjs/formatio": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.1.tgz", + "integrity": "sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^3.1.0" + } + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, + "lolex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.1.0.tgz", + "integrity": "sha512-BYxIEXiVq5lGIXeVHnsFzqa1TxN5acnKnPCdlZSpzm8viNEOhiigupA4vTQ9HEFQ6nLTQ9wQOgBknJgzUYQ9Aw==", + "dev": true + }, "path-to-regexp": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", @@ -8886,52 +9183,37 @@ } }, "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.4.tgz", + "integrity": "sha512-UOfdpxivIYY4g5tqp5FNRNgROVNxRACUxxJREntJLFaJr1E0UEqFtUIk0F/jYx/E+Y6sVXd0KDi/m5My0yGCVw==", "dev": true }, "node-jose": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.0.0.tgz", - "integrity": "sha512-RE3P8l60Rj9ELrpPmvw6sOQ1hSyYfmQdNUMCa4EN7nCE1ux5JVX+GfXv+mfUTEMhZwNMwxBtI0+X1CKKeukSVQ==", - "dev": true, - "requires": { - "base64url": "^3.0.0", - "es6-promise": "^4.0.5", - "lodash.assign": "^4.0.8", - "lodash.clone": "^4.3.2", - "lodash.fill": "^3.2.2", - "lodash.flatten": "^4.2.0", - "lodash.intersection": "^4.1.2", - "lodash.merge": "^4.3.5", - "lodash.omit": "^4.2.1", - "lodash.partialright": "^4.1.3", - "lodash.pick": "^4.2.0", - "lodash.uniq": "^4.2.1", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.1.3.tgz", + "integrity": "sha512-kupfi4uGWhRjnOmtie2T64cLge5a1TZyalEa8uWWWBgtKBcu41A4IGKpI9twZAxRnmviamEUQRK7LSyfFb2w8A==", + "dev": true, + "requires": { + "base64url": "^3.0.1", + "es6-promise": "^4.2.6", + "lodash": "^4.17.11", "long": "^4.0.0", - "node-forge": "^0.7.1", - "uuid": "^3.0.1" + "node-forge": "^0.8.1", + "uuid": "^3.3.2" }, "dependencies": { "es6-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", - "dev": true - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", + "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", "dev": true } } }, "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", "dev": true, "requires": { "assert": "^1.1.1", @@ -8941,7 +9223,7 @@ "constants-browserify": "^1.0.0", "crypto-browserify": "^3.11.0", "domain-browser": "^1.1.1", - "events": "^1.0.0", + "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", "path-browserify": "0.0.0", @@ -8955,10 +9237,33 @@ "timers-browserify": "^2.0.4", "tty-browserify": "0.0.0", "url": "^0.11.0", - "util": "^0.10.3", + "util": "^0.11.0", "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } } }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, "node-notifier": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", @@ -8969,17 +9274,15 @@ "semver": "^5.4.1", "shellwords": "^0.1.1", "which": "^1.3.0" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + } + }, + "node-releases": { + "version": "1.1.23", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.23.tgz", + "integrity": "sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w==", + "dev": true, + "requires": { + "semver": "^5.3.0" } }, "node-rsa": { @@ -9032,12 +9335,6 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", "dev": true - }, - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true } } }, @@ -9051,13 +9348,13 @@ } }, "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } @@ -9081,9 +9378,9 @@ } }, "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "dev": true, "requires": { "boolbase": "~1.0.0" @@ -9096,9 +9393,9 @@ "dev": true }, "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, "object-assign": { @@ -9126,9 +9423,24 @@ "requires": { "is-descriptor": "^0.1.0" } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } } } }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -9136,24 +9448,28 @@ "dev": true, "requires": { "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", "dev": true, "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" } }, "object.pick": { @@ -9163,14 +9479,6 @@ "dev": true, "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "on-finished": { @@ -9203,6 +9511,14 @@ "dev": true, "requires": { "mimic-fn": "^1.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + } } }, "opn": { @@ -9250,14 +9566,14 @@ "dev": true }, "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", + "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", "dev": true, "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "execa": "^0.10.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" } }, "os-name": { @@ -9282,6 +9598,16 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "outlayer": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", @@ -9293,34 +9619,46 @@ "get-size": "^2.0.2" } }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.0.0" } }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "pac-proxy-agent": { @@ -9340,13 +9678,19 @@ }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, @@ -9376,9 +9720,9 @@ } }, "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", "dev": true }, "parallel-transform": { @@ -9393,42 +9737,28 @@ } }, "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", "dev": true, "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" - } - }, - "parse-entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.2.tgz", - "integrity": "sha512-5N9lmQ7tmxfXf+hO3X6KRG6w7uYO/HL9fHalSySTdyn63C3WNvTM/1R8tn1u1larNcEbo3Slcy2bsVDQqvEpUg==", - "dev": true, - "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", "dev": true, "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" } }, "parse-json": { @@ -9440,6 +9770,12 @@ "error-ex": "^1.2.0" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, "parse5": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", @@ -9452,7 +9788,8 @@ "parseurl": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true }, "pascalcase": { "version": "0.1.1", @@ -9507,9 +9844,24 @@ "dev": true }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", "dev": true }, "path-to-regexp": { @@ -9543,9 +9895,9 @@ "dev": true }, "pbkdf2": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", - "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -9568,9 +9920,9 @@ "dev": true }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, "pinkie": { @@ -9589,19 +9941,19 @@ } }, "pino": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/pino/-/pino-4.16.1.tgz", - "integrity": "sha512-ST/IC5RMyqrOZL+Hq6LDwz5h4fGKABXzx2/5Ze7rz5TjuPvE8uI72dzj409xkq9JjyWsKoOOApgXn8kEjJ73yg==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-5.9.0.tgz", + "integrity": "sha512-6sHy38gWsZbrmYq6vk343VCThy93ZdVfmLsHDVzbl/j621SjSaxCcS/ySmxK/hRmq8jpQb3n44dNRIeqbbQw6A==", "dev": true, "requires": { - "chalk": "^2.3.2", "fast-json-parse": "^1.0.3", - "fast-safe-stringify": "^1.2.3", + "fast-redact": "^1.4.0", + "fast-safe-stringify": "^2.0.6", "flatstr": "^1.0.5", - "pino-std-serializers": "^2.0.0", + "pino-std-serializers": "^2.3.0", "pump": "^3.0.0", - "quick-format-unescaped": "^1.1.2", - "split2": "^2.2.0" + "quick-format-unescaped": "^3.0.0", + "sonic-boom": "^0.6.3" }, "dependencies": { "pump": { @@ -9617,18 +9969,27 @@ } }, "pino-std-serializers": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.1.0.tgz", - "integrity": "sha512-NqWvrQD/GpY78ybiNBzi/dg8ylERhDo6nB33j5sfCKpUmWLc3lYzeoBjyRoCMvEpDpL9lmH6ufRd0jw6rcd1pQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz", + "integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ==", "dev": true }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "^3.0.0" } }, "pluralize": { @@ -9648,9 +10009,9 @@ } }, "popper.js": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.1.tgz", - "integrity": "sha1-uIFeXNpvYvwgQuR2GGSfdYZuZ1M=", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz", + "integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==", "dev": true }, "portscanner": { @@ -9669,14 +10030,14 @@ "dev": true }, "postcss": { - "version": "6.0.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.19.tgz", - "integrity": "sha512-f13HRz0HtVwVaEuW6J6cOUCBLFtymhgyLPV7t4QEk2UD3twRI9IluDcQNdzQdBpiixkXj2OmzejhhTbSbDxNTg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.6.tgz", + "integrity": "sha512-Nq/rNjnHFcKgCDDZYO0lNsl6YWe6U7tTy+ESN+PnLxebL8uBtYX59HZqvrj7YLK5UCyll2hqDsJOo3ndzEW8Ug==", "dev": true, "requires": { - "chalk": "^2.3.1", + "chalk": "^2.4.1", "source-map": "^0.6.1", - "supports-color": "^5.2.0" + "supports-color": "^5.5.0" }, "dependencies": { "source-map": { @@ -9699,12 +10060,6 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -9738,9 +10093,9 @@ "dev": true }, "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "promise": { @@ -9765,18 +10120,18 @@ "dev": true }, "proxy-addr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", - "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.6.0" + "ipaddr.js": "1.9.0" } }, "proxy-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.0.0.tgz", - "integrity": "sha512-g6n6vnk8fRf705ShN+FEXFG/SDJaW++lSs0d9KaJh4uBWW/wi7en4Cpo5VYQW3SZzAE121lhB/KLQrbURoubZw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz", + "integrity": "sha512-CNKuhC1jVtm8KJYFTS2ZRO71VCBx3QSA92So/e6NrY6GoJonkx3Irnk4047EsCcswczwqAekRj3s8qLRGahSKg==", "dev": true, "requires": { "agent-base": "^4.2.0", @@ -9790,23 +10145,19 @@ }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, @@ -9828,58 +10179,73 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "psl": { + "version": "1.1.32", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz", + "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==", + "dev": true + }, "public-encrypt": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } } }, "pug": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.0-rc.4.tgz", - "integrity": "sha512-SL7xovj6E2Loq9N0UgV6ynjMLW4urTFY/L/Fprhvz13Xc5vjzkjZjI1QHKq31200+6PSD8PyU6MqrtCTJj6/XA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", + "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", "dev": true, "requires": { - "pug-code-gen": "^2.0.0", - "pug-filters": "^2.1.5", - "pug-lexer": "^3.1.0", - "pug-linker": "^3.0.3", - "pug-load": "^2.0.9", - "pug-parser": "^4.0.0", - "pug-runtime": "^2.0.3", - "pug-strip-comments": "^1.0.2" + "pug-code-gen": "^2.0.1", + "pug-filters": "^3.1.0", + "pug-lexer": "^4.0.0", + "pug-linker": "^3.0.5", + "pug-load": "^2.0.11", + "pug-parser": "^5.0.0", + "pug-runtime": "^2.0.4", + "pug-strip-comments": "^1.0.3" } }, "pug-attrs": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.2.tgz", - "integrity": "sha1-i+KyIlVo/6ddG4Zpgr/59BEa/8s=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.3.tgz", + "integrity": "sha1-owlflw5kFR972tlX7vVftdeQXRU=", "dev": true, "requires": { "constantinople": "^3.0.1", "js-stringify": "^1.0.1", - "pug-runtime": "^2.0.3" + "pug-runtime": "^2.0.4" } }, "pug-code-gen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.0.tgz", - "integrity": "sha512-E4oiJT+Jn5tyEIloj8dIJQognbiNNp0i0cAJmYtQTFS0soJ917nlIuFtqVss3IXMEyQKUew3F4gIkBpn18KbVg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", + "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", "dev": true, "requires": { "constantinople": "^3.0.1", "doctypes": "^1.1.0", "js-stringify": "^1.0.1", - "pug-attrs": "^2.0.2", + "pug-attrs": "^2.0.3", "pug-error": "^1.3.2", - "pug-runtime": "^2.0.3", + "pug-runtime": "^2.0.4", "void-elements": "^2.0.1", "with": "^5.0.0" } @@ -9891,24 +10257,24 @@ "dev": true }, "pug-filters": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-2.1.5.tgz", - "integrity": "sha512-xkw71KtrC4sxleKiq+cUlQzsiLn8pM5+vCgkChW2E6oNOzaqTSIBKIQ5cl4oheuDzvJYCTSYzRaVinMUrV4YLQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", + "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", "dev": true, "requires": { - "clean-css": "^3.3.0", + "clean-css": "^4.1.11", "constantinople": "^3.0.1", "jstransformer": "1.0.0", "pug-error": "^1.3.2", - "pug-walk": "^1.1.5", + "pug-walk": "^1.1.7", "resolve": "^1.1.6", "uglify-js": "^2.6.1" } }, "pug-lexer": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-3.1.0.tgz", - "integrity": "sha1-/QhzdtSmdbT1n4/vQiiDQ06VgaI=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", + "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", "dev": true, "requires": { "character-parser": "^2.1.1", @@ -9917,29 +10283,29 @@ } }, "pug-linker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.3.tgz", - "integrity": "sha512-DCKczglCXOzJ1lr4xUj/lVHYvS+lGmR2+KTCjZjtIpdwaN7lNOoX2SW6KFX5X4ElvW+6ThwB+acSUg08UJFN5A==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", + "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", "dev": true, "requires": { "pug-error": "^1.3.2", - "pug-walk": "^1.1.5" + "pug-walk": "^1.1.7" } }, "pug-load": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.9.tgz", - "integrity": "sha512-BDdZOCru4mg+1MiZwRQZh25+NTRo/R6/qArrdWIf308rHtWA5N9kpoUskRe4H6FslaQujC+DigH9LqlBA4gf6Q==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.11.tgz", + "integrity": "sha1-5kjlftET/iwfRdV4WOorrWvAFSc=", "dev": true, "requires": { "object-assign": "^4.1.0", - "pug-walk": "^1.1.5" + "pug-walk": "^1.1.7" } }, "pug-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-4.0.0.tgz", - "integrity": "sha512-ocEUFPdLG9awwFj0sqi1uiZLNvfoodCMULZzkRqILryIWc/UUlDlxqrKhKjAIIGPX/1SNsvxy63+ayEGocGhQg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", + "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", "dev": true, "requires": { "pug-error": "^1.3.2", @@ -9947,24 +10313,24 @@ } }, "pug-runtime": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.3.tgz", - "integrity": "sha1-mBYmB7D86eJU1CfzOYelrucWi9o=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.4.tgz", + "integrity": "sha1-4XjhvaaKsujArPybztLFT9iM61g=", "dev": true }, "pug-strip-comments": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.2.tgz", - "integrity": "sha1-0xOvoBvMN0mA4TmeI+vy65vchRM=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.3.tgz", + "integrity": "sha1-8VWVkiBu3G+FMQ2s9K+0igJa9Z8=", "dev": true, "requires": { "pug-error": "^1.3.2" } }, "pug-walk": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.5.tgz", - "integrity": "sha512-rJlH1lXerCIAtImXBze3dtKq/ykZMA4rpO9FnPcIgsWcxZLOvd8zltaoeOVFyBSSqCkhhJWbEbTMga8UxWUUSA==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.7.tgz", + "integrity": "sha1-wA1cUSi6xYBr7BXSt+fNq+QlMfM=", "dev": true }, "pump": { @@ -9978,26 +10344,26 @@ } }, "pumpify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", - "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, "requires": { - "duplexify": "^3.5.3", + "duplexify": "^3.6.0", "inherits": "^2.0.3", "pump": "^2.0.0" } }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, "puppeteer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.11.0.tgz", - "integrity": "sha512-iG4iMOHixc2EpzqRV+pv7o3GgmU2dNYEMkvKwSaQO/vMZURakwSOn/EYJ6OIRFYOque1qorzIBvrytPIQB3YzQ==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.17.0.tgz", + "integrity": "sha512-3EXZSximCzxuVKpIHtyec8Wm2dWZn1fc5tQi34qWfiUgubEVYHjUvr0GOJojqf3mifI6oyKnCdrGxaOI+lWReA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -10011,18 +10377,18 @@ }, "dependencies": { "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz", + "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==", "dev": true }, "ms": { @@ -10030,28 +10396,14 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } } } }, "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true }, "querystring": { "version": "0.2.0", @@ -10065,59 +10417,15 @@ "dev": true }, "quick-format-unescaped": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-1.1.2.tgz", - "integrity": "sha1-DKWB3jF0vs7yWsPC6JVjQjgdtpg=", - "dev": true, - "requires": { - "fast-safe-stringify": "^1.0.8" - } - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.2.tgz", + "integrity": "sha512-FXTaCkwvpIlkdKeGDNgcq07SXWS383noQUuZjvdE1QcTt+eLuqof6/BDiEPqB59FWLie/l91+HtlJSw7iCViSA==", + "dev": true }, "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { "safe-buffer": "^5.1.0" @@ -10136,17 +10444,37 @@ "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true }, "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", "unpipe": "1.0.0" + }, + "dependencies": { + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + } } }, "rc": { @@ -10227,15 +10555,14 @@ } }, "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" } }, "readline2": { @@ -10295,18 +10622,18 @@ } }, "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, "regenerate-unicode-properties": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-5.1.3.tgz", - "integrity": "sha512-Yjy6t7jFQczDhYE+WVm7pg6gWYE258q4sUkk9qDErwXJIqx7jU9jGrMFHutJK/SRfcg7MEkXjGaYiVlOZyev/A==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", "dev": true, "requires": { - "regenerate": "^1.3.3" + "regenerate": "^1.4.0" } }, "regenerator-runtime": { @@ -10316,23 +10643,14 @@ "dev": true }, "regenerator-transform": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.12.3.tgz", - "integrity": "sha512-y2uxO/6u+tVmtEDIKo+tLCtI0GcbQr0OreosKgCd7HP4VypGjtTrw79DezuwT+W5QX0YWuvpeBOgumrepwM1kA==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz", + "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==", "dev": true, "requires": { "private": "^0.1.6" } }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -10343,6 +10661,21 @@ "safe-regex": "^1.1.0" } }, + "regexp-tree": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.10.tgz", + "integrity": "sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", + "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2" + } + }, "regexpp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", @@ -10350,23 +10683,23 @@ "dev": true }, "regexpu-core": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.3.tgz", - "integrity": "sha512-mB+njEzO7oezA57IbQxxd6fVPOeWKDmnGvJ485CwmfNchjHe5jWwqKepapmzUEj41yxIAqOg+C4LbXuJlkiO8A==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", "dev": true, "requires": { - "regenerate": "^1.3.3", - "regenerate-unicode-properties": "^5.1.1", - "regjsgen": "^0.3.0", - "regjsparser": "^0.2.1", - "unicode-match-property-ecmascript": "^1.0.3", - "unicode-match-property-value-ecmascript": "^1.0.1" + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" } }, "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", "dev": true, "requires": { "rc": "^1.1.6", @@ -10383,15 +10716,15 @@ } }, "regjsgen": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.3.0.tgz", - "integrity": "sha1-DuSj6SdkMM2iXx54nqbBW4ewy0M=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", "dev": true }, "regjsparser": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.2.1.tgz", - "integrity": "sha1-w3h1U/rwTndcMCEC7zRtmVAA7Bw=", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -10426,64 +10759,20 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "remark": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-5.1.0.tgz", - "integrity": "sha1-y0Y709vLS5l5STXu4c9x16jjBow=", - "dev": true, - "requires": { - "remark-parse": "^1.1.0", - "remark-stringify": "^1.1.0", - "unified": "^4.1.1" - } - }, - "remark-parse": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-1.1.0.tgz", - "integrity": "sha1-w8oQ+ajaBGFcKPCapOMEUQUm7CE=", - "dev": true, - "requires": { - "collapse-white-space": "^1.0.0", - "extend": "^3.0.0", - "parse-entities": "^1.0.2", - "repeat-string": "^1.5.4", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^1.0.0", - "vfile-location": "^2.0.0" - } - }, - "remark-stringify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-1.1.0.tgz", - "integrity": "sha1-pxBeJbnuK/mkm3XSxCPxGwauIJI=", - "dev": true, - "requires": { - "ccount": "^1.0.0", - "extend": "^3.0.0", - "longest-streak": "^1.0.0", - "markdown-table": "^0.4.0", - "parse-entities": "^1.0.2", - "repeat-string": "^1.5.4", - "stringify-entities": "^1.0.1", - "unherit": "^1.0.4" + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } } }, "remove-trailing-separator": { @@ -10493,9 +10782,9 @@ "dev": true }, "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", "dev": true }, "repeat-string": { @@ -10514,53 +10803,96 @@ } }, "request": { - "version": "2.85.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "dev": true, "requires": { "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", + "aws4": "^1.8.0", "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "hawk": "~6.0.2", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "stringstream": "~0.0.5", - "tough-cookie": "~2.3.3", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" + "uuid": "^3.3.2" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } } }, "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", "dev": true, "requires": { - "lodash": "^4.13.1" + "lodash": "^4.17.11" } }, "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", "dev": true, "requires": { - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" } }, "require-directory": { @@ -10586,12 +10918,22 @@ } }, "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", "dev": true, "requires": { - "path-parse": "^1.0.5" + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" } }, "resolve-from": { @@ -10632,10 +10974,29 @@ } }, "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", - "dev": true + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } }, "ripemd160": { "version": "2.0.2", @@ -10666,9 +11027,9 @@ } }, "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", "dev": true }, "rx-lite-aggregates": { @@ -10680,10 +11041,20 @@ "rx-lite": "*" } }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true }, "safe-json-parse": { "version": "1.0.1", @@ -10707,6 +11078,11 @@ "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "samsam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", @@ -10720,9 +11096,9 @@ "dev": true }, "schema-utils": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", - "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", "dev": true, "requires": { "ajv": "^6.1.0", @@ -10736,9 +11112,9 @@ "dev": true }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "dev": true }, "semver-diff": { @@ -10754,6 +11130,7 @@ "version": "0.16.1", "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "dev": true, "requires": { "debug": "2.6.9", "depd": "~1.1.1", @@ -10771,9 +11148,9 @@ } }, "serialize-javascript": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", - "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", "dev": true }, "serve-index": { @@ -10795,6 +11172,7 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "dev": true, "requires": { "encodeurl": "~1.0.1", "escape-html": "~1.0.3", @@ -10844,9 +11222,9 @@ "dev": true }, "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "sha.js": { "version": "2.4.11", @@ -10915,9 +11293,9 @@ } }, "shelljs": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.1.tgz", - "integrity": "sha512-YA/iYtZpzFe5HyWVGrb02FjPxc4EMCfpoU/Phg9fQoyMC72u9598OUBrsU8IrtwAKG0tO8IYaqbaLIw+k3IRGA==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", "dev": true, "requires": { "glob": "^7.0.0", @@ -10949,6 +11327,18 @@ "when": "3.7.7" }, "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, "babel-polyfill": { "version": "6.16.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", @@ -10966,6 +11356,28 @@ "integrity": "sha1-8JTHBB9mJZm7EnINoFnWucf/D0A=", "dev": true }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, "mz": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.5.0.tgz", @@ -10977,6 +11389,18 @@ "thenify-all": "^1.0.0" } }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, "regenerator-runtime": { "version": "0.9.6", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", @@ -11019,6 +11443,15 @@ "requires": { "source-map": "^0.5.3" } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "^1.4.1" + } } } }, @@ -11029,9 +11462,9 @@ "dev": true }, "sinon": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.4.2.tgz", - "integrity": "sha512-cpOHpnRyY3Dk9dTHBYMfVBB0HUCSKIpxW07X6OGW2NiYPovs4AkcL8Q8MzecbAROjbfRA9esJCmlZgikxDz7DA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.5.0.tgz", + "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", "dev": true, "requires": { "@sinonjs/formatio": "^2.0.0", @@ -11154,18 +11587,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -11176,21 +11597,23 @@ "dev": true, "requires": { "kind-of": "^3.2.0" - } - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "dev": true, - "requires": { - "hoek": "4.x.x" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "snyk": { - "version": "1.82.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.82.0.tgz", - "integrity": "sha512-UZuGBdh3PSK6Va9Sos+hFUnLImIShluHfOSvF3UdM0jmjOaIRvIywkUrqT7J38xQ0VRmbVCoJlrYA1g7vD1CeA==", + "version": "1.110.2", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.110.2.tgz", + "integrity": "sha512-SQE4sudrscd48EoRJqy5h5S6c8YBiOw0r0Se3rfg1l6ElJGgCB9je6XEzfe+UmfES06D7ueFYepiQPxTwH4Qww==", "dev": true, "requires": { "abbrev": "^1.1.1", @@ -11201,89 +11624,165 @@ "hasbin": "^1.2.3", "inquirer": "^3.0.0", "lodash": "^4.17.5", - "needle": "^2.0.1", + "needle": "^2.2.4", "opn": "^5.2.0", "os-name": "^2.0.1", - "proxy-agent": "^3.0.0", + "proxy-agent": "^2.0.0", "proxy-from-env": "^1.0.0", "recursive-readdir": "^2.2.2", "semver": "^5.5.0", - "snyk-config": "2.1.0", - "snyk-go-plugin": "1.5.1", - "snyk-gradle-plugin": "1.3.0", - "snyk-module": "1.8.2", - "snyk-mvn-plugin": "1.2.0", - "snyk-nuget-plugin": "1.6.2", + "snyk-config": "2.2.0", + "snyk-docker-plugin": "1.12.3", + "snyk-go-plugin": "1.6.0", + "snyk-gradle-plugin": "2.1.1", + "snyk-module": "1.9.1", + "snyk-mvn-plugin": "2.0.0", + "snyk-nodejs-lockfile-parser": "1.7.1", + "snyk-nuget-plugin": "1.6.5", "snyk-php-plugin": "1.5.1", - "snyk-policy": "1.12.0", - "snyk-python-plugin": "1.6.1", + "snyk-policy": "1.13.1", + "snyk-python-plugin": "1.9.0", "snyk-resolve": "1.0.1", - "snyk-resolve-deps": "3.1.0", - "snyk-sbt-plugin": "1.3.0", + "snyk-resolve-deps": "4.0.2", + "snyk-sbt-plugin": "2.0.0", "snyk-tree": "^1.0.0", - "snyk-try-require": "1.3.0", + "snyk-try-require": "1.3.1", + "source-map-support": "^0.5.9", "tempfile": "^2.0.0", "then-fs": "^2.0.0", "undefsafe": "^2.0.0", "uuid": "^3.2.1" }, "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ms": "^2.1.1" } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" } }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, "opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", "dev": true, "requires": { "is-wsl": "^1.1.0" } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } } } }, "snyk-config": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-2.1.0.tgz", - "integrity": "sha512-D1Xz1pZa9lwA9AHogmAigyJGo/iuEGH+rcPB77mFsneVfnuiK9c6IjnsHbEBUf1cePtZvWdGBjs6e75Cvc2AMg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-2.2.0.tgz", + "integrity": "sha512-mq0wbP/AgjcmRq5i5jg2akVVV3iSYUPTowZwKn7DChRLDL8ySOzWAwan+ImXiyNbrWo87FNI/15O6MpOnTxOIg==", "dev": true, "requires": { "debug": "^3.1.0", + "lodash": "^4.17.5", "nconf": "^0.10.0" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "snyk-docker-plugin": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.12.3.tgz", + "integrity": "sha512-ZbvaFCPCd0wxhqxjzU/iyf39tKlq2nvI9nPW32uZV3RGdHrkQH55BzCtBCF9d0dapxX+PKgae/4u2BKNw8hd9Q==", + "dev": true, + "requires": { + "debug": "^3", + "dockerfile-ast": "0.0.12", + "tslib": "^1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, "snyk-go-plugin": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.5.1.tgz", - "integrity": "sha512-8OPJOT05Z/UL5fFSXV6b/A6KjlS1Ahr2gpup1bhXtAGXlUUPyWidqkCIER9fexDXqYWgAoDAdn9YHIvmL/5bfw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.6.0.tgz", + "integrity": "sha512-E6aYw7XAXSs2wJR3fU+vGQ1lVyjAw8PHIQYQwBwMkTHByhJIWPcu6Hy/jT5LcjJHlhYXlpOuk53HeLVK+kcXrQ==", "dev": true, "requires": { "graphlib": "^2.1.1", @@ -11292,73 +11791,94 @@ } }, "snyk-gradle-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-1.3.0.tgz", - "integrity": "sha512-rKZcPwbDM9zk3pFcO0w77MIKOZTkk5ZBVBkBlTlUiFg+eNOKqPTmw2hBGF5NB4ASQmMnx3uB1C8+hrQ405CthA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-2.1.1.tgz", + "integrity": "sha512-aFeVC5y3XkJ5BxknHhtYo76as3xJbzSQlXACGZrQZGQ/w/UhNdM8VI1QB6Eq4uEzexleB/hcJwYxNmhI2CNCeA==", "dev": true, "requires": { "clone-deep": "^0.3.0" } }, "snyk-module": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/snyk-module/-/snyk-module-1.8.2.tgz", - "integrity": "sha512-XqhdbZ/CUuJ5gSaYdYfapLqx9qm2Mp6nyRMBCLXe9tJSiohOJsc9fQuUDbdOiRCqpA4BD6WLl+qlwOJmJoszBg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/snyk-module/-/snyk-module-1.9.1.tgz", + "integrity": "sha512-A+CCyBSa4IKok5uEhqT+hV/35RO6APFNLqk9DRRHg7xW2/j//nPX8wTSZUPF8QeRNEk/sX+6df7M1y6PBHGSHA==", "dev": true, "requires": { "debug": "^3.1.0", - "hosted-git-info": "^2.1.4" + "hosted-git-info": "^2.7.1" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, "snyk-mvn-plugin": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-1.2.0.tgz", - "integrity": "sha512-ieTWhn1MB88gEQ6nUtGCeUKQ6Xoxm+u+QmD9u3zfP1QS5ep9fWt3YYDUQjgUiDTJJy7QyVQdZ/fsz3RECnOA7w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.0.0.tgz", + "integrity": "sha512-9jAhZhv+7YcqtoQYCYlgMoxK+dWBKlk+wkX27Ebg3vNddNop9q5jZitRXTjsXwfSUZHRt+Ptw1f8vei9kjzZVg==", "dev": true }, + "snyk-nodejs-lockfile-parser": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.7.1.tgz", + "integrity": "sha512-0gHELqMhzUxb/t3Tg6d6G9LTDioOXCrEMt9aetOeV8wD/ZRL5VFNjwcdrm8qILLqzDFaFjFIyMc66c0OL4zFAQ==", + "dev": true, + "requires": { + "@yarnpkg/lockfile": "^1.0.2", + "graphlib": "^2.1.5", + "lodash": "4.17.10", + "source-map-support": "^0.5.7", + "tslib": "^1.9.3", + "uuid": "^3.3.2" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, "snyk-nuget-plugin": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.6.2.tgz", - "integrity": "sha512-8l8hS85esXyweTFgUFdwnGT94Ts42KcG5fdBX2wYosQkpUMePd+GTT9+64k/GvdH5hqcNt2OvtzW+Uf8JF+pbA==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.6.5.tgz", + "integrity": "sha512-3qIndzkxCxiaGvAwMkqChbChGdwhNePPyfi0WjhC/nJGwecqU3Fb/NeTW7lgyT+xoq/dFnzW0DgBJ4+AyNA2gA==", "dev": true, "requires": { "debug": "^3.1.0", - "es6-promise": "^4.1.1", + "jszip": "^3.1.5", "lodash": "^4.17.10", - "xml2js": "^0.4.17", - "zip": "^1.2.0" + "xml2js": "^0.4.17" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" - } - }, - "es6-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", - "dev": true - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true } } @@ -11375,48 +11895,60 @@ }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, "snyk-policy": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.12.0.tgz", - "integrity": "sha512-CEioNnDzccHyid7UIVl3bJ1dnG4co4ofI+KxuC1mo0IUXy64gxnBTeVoZF5gVLWbAyxGxSeW8f0+8GmWMHVb7w==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.13.1.tgz", + "integrity": "sha512-l9evS3Yk70xyvajjg+I6Ij7fr7gxpVRMZl0J1xNpWps/IVu4DSGih3aMmXi47VJozr4A/eFyj7R1lIr2GhqJCA==", "dev": true, "requires": { "debug": "^3.1.0", - "email-validator": "^2.0.3", - "js-yaml": "^3.5.3", - "lodash.clonedeep": "^4.3.1", - "semver": "^5.5.0", - "snyk-module": "^1.8.2", + "email-validator": "^2.0.4", + "js-yaml": "^3.12.0", + "lodash.clonedeep": "^4.5.0", + "semver": "^5.6.0", + "snyk-module": "^1.9.1", "snyk-resolve": "^1.0.1", - "snyk-try-require": "^1.1.1", + "snyk-try-require": "^1.3.1", "then-fs": "^2.0.0" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, "snyk-python-plugin": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.6.1.tgz", - "integrity": "sha512-6zr5jAB3p/bwMZQxZpdj+aPmioTgHB4DI6JMLInhZupss0x8Ome5YqzVzBbOvUKNrc3KaLtjGrJWcAuxDL6M/g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.9.0.tgz", + "integrity": "sha512-zlyOHoCpmyVym9AwkboeepzEGrY3gHsM7eWP/nJ85TgCnQO5H5orKm3RL57PNbWRY+BnDmoQQ+udQgjym2+3sg==", "dev": true, "requires": { "tmp": "0.0.33" @@ -11433,31 +11965,38 @@ }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, "snyk-resolve-deps": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/snyk-resolve-deps/-/snyk-resolve-deps-3.1.0.tgz", - "integrity": "sha512-YVAelR+dTpqLgfk6lf6WgOlw+MGmGI0r3/Dny8tUbJJ9uVTHTRAOdZCbUyTFqJG7oEmEZxUwmfjqgAuniYwx8Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/snyk-resolve-deps/-/snyk-resolve-deps-4.0.2.tgz", + "integrity": "sha512-nlw62wiWhGOTw3BD3jVIwrUkRR4iNxEkkO4Y/PWs8BsUWseGu1H6QgLesFXJb3qx7ANJ5UbUCJMgV+eL0Lf9cA==", "dev": true, "requires": { "ansicolors": "^0.3.2", - "debug": "^3.1.0", + "debug": "^3.2.5", "lodash.assign": "^4.2.0", "lodash.assignin": "^4.2.0", + "lodash.clone": "^4.5.0", "lodash.flatten": "^4.4.0", "lodash.get": "^4.4.2", "lodash.set": "^4.3.2", "lru-cache": "^4.0.0", - "semver": "^5.1.0", + "semver": "^5.5.1", "snyk-module": "^1.6.0", "snyk-resolve": "^1.0.0", "snyk-tree": "^1.0.0", @@ -11466,24 +12005,27 @@ }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, "snyk-sbt-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-1.3.0.tgz", - "integrity": "sha512-SRxPB16392dvN3Qv2RfUcHe0XETLWx2kNIOuoNXvc2Gl6DuPW+X+meDJY7xC/yQhU7bSPPKoM2B7awYaj9i2Bg==", - "dev": true, - "requires": { - "debug": "^2.2.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.0.0.tgz", + "integrity": "sha512-bOUqsQ1Lysnwfnvf4QQIBfC0M0ZVuhlshTKd7pNwgAJ41YEPJNrPEpzOePl/HfKtwilEEwHh5YHvjYGegEKx0A==", + "dev": true }, "snyk-tree": { "version": "1.0.0", @@ -11495,9 +12037,9 @@ } }, "snyk-try-require": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/snyk-try-require/-/snyk-try-require-1.3.0.tgz", - "integrity": "sha1-81cGrPkciveI1Y4fGta/D89sVJM=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/snyk-try-require/-/snyk-try-require-1.3.1.tgz", + "integrity": "sha1-bgJvkuZK9/zM6h7lPVJIQeQYohI=", "dev": true, "requires": { "debug": "^3.1.0", @@ -11507,13 +12049,19 @@ }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, @@ -11537,10 +12085,19 @@ "socks": "^1.1.10" } }, + "sonic-boom": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.6.3.tgz", + "integrity": "sha512-TMhj6kDJk9LLzCTTL8+HPCfFn4MwkE4P6k2Up89Rz949+DSRw90V62upRKC99rJEOmu4E9ljH5Otu2JSRmx+bg==", + "dev": true, + "requires": { + "flatstr": "^1.0.8" + } + }, "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", "dev": true }, "source-map": { @@ -11563,11 +12120,12 @@ } }, "source-map-support": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", - "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", "dev": true, "requires": { + "buffer-from": "^1.0.0", "source-map": "^0.6.0" }, "dependencies": { @@ -11596,9 +12154,9 @@ } }, "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -11606,9 +12164,9 @@ } }, "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", "dev": true }, "spdx-expression-parse": { @@ -11622,9 +12180,9 @@ } }, "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", "dev": true }, "split": { @@ -11645,19 +12203,16 @@ "extend-shallow": "^3.0.0" } }, - "split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "dev": true, - "requires": { - "through2": "^2.0.2" - } + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true }, "sshpk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -11667,13 +12222,14 @@ "ecc-jsbn": "~0.1.1", "getpass": "^0.1.1", "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" } }, "ssri": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.2.4.tgz", - "integrity": "sha512-UnEAgMZa15973iH7cUi0AHjJn1ACDIkaMyZILoqwN6yzt+4P81I8tBc5Hl+qwi5auMplZtPQsHrPBR5vJLcQtQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", "dev": true, "requires": { "safe-buffer": "^5.1.1" @@ -11703,7 +12259,8 @@ "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true }, "stealthy-require": { "version": "1.1.1", @@ -11712,9 +12269,9 @@ "dev": true }, "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, "requires": { "inherits": "~2.0.1", @@ -11722,9 +12279,9 @@ } }, "stream-each": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", - "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", "dev": true, "requires": { "end-of-stream": "^1.1.0", @@ -11732,9 +12289,9 @@ } }, "stream-http": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", - "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "dev": true, "requires": { "builtin-status-codes": "^3.0.0", @@ -11858,6 +12415,19 @@ } } }, + "string.prototype.matchall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-2.0.0.tgz", + "integrity": "sha512-WoZ+B2ypng1dp4iFLF2kmZlwwlE19gmjgKuhL1FJfDgCREWb3ye3SDVHSzLH6bxfnvYmkCxbzkmWcQZHA4P//Q==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.10.0", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "regexp.prototype.flags": "^1.2.0" + } + }, "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", @@ -11867,24 +12437,6 @@ "safe-buffer": "~5.1.0" } }, - "stringify-entities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", - "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", - "dev": true, - "requires": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "stringstream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", - "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", - "dev": true - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -11943,15 +12495,6 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, - "structured-source": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-3.0.2.tgz", - "integrity": "sha1-3YAkJeD1PcSm56yjdSkBoczaevU=", - "dev": true, - "requires": { - "boundary": "^1.0.1" - } - }, "stylus": { "version": "0.54.5", "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", @@ -11972,103 +12515,267 @@ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": ">=0.0.4" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, + "table": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "dev": true, + "requires": { + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar-stream": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", + "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "end-of-stream": "^1.0.0", + "readable-stream": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true + }, + "tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "dev": true, + "requires": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "^0.7.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } + }, + "terser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.0.tgz", + "integrity": "sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==", + "dev": true, + "requires": { + "cacache": "^11.3.2", + "find-cache-dir": "^2.0.0", + "is-wsl": "^1.1.0", + "loader-utils": "^1.2.3", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "source-map": "^0.6.1", + "terser": "^4.0.0", + "webpack-sources": "^1.3.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "cacache": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } - } - } - }, - "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", - "dev": true, - "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", "dev": true } } }, - "tapable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", - "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", - "dev": true - }, - "tar-stream": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", - "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", - "dev": true, - "requires": { - "bl": "^1.0.0", - "end-of-stream": "^1.0.0", - "readable-stream": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", - "dev": true - }, - "tempfile": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", - "dev": true, - "requires": { - "temp-dir": "^1.0.0", - "uuid": "^3.0.1" - } - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - } - }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", - "dev": true - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -12109,13 +12816,39 @@ "dev": true }, "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "readable-stream": "^2.1.5", + "readable-stream": "~2.3.6", "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "thunkify": { @@ -12165,12 +12898,12 @@ } }, "tippy.js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-2.3.0.tgz", - "integrity": "sha512-F1frIYVNJlXcl5M4dJrsonTqB19rXP8jj3CB/2K6EIKYszLtYAczGQNTtinNlCvZnS2/wiGo6zv9ex46KibrGA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-2.6.0.tgz", + "integrity": "sha512-hBcy6UXK3epiFwpkycy7Pn1SSLofUmawpPnlYg5ginbXMc/3EX2ivjzHfjvr/WPEpUg71/7ssiovhxDtCWvL2A==", "dev": true, "requires": { - "popper.js": "^1.13.0" + "popper.js": "^1.14.3" } }, "tmp": { @@ -12201,6 +12934,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "to-regex": { @@ -12223,24 +12967,12 @@ "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - } } }, - "to-utf8": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/to-utf8/-/to-utf8-0.0.1.tgz", - "integrity": "sha1-0Xrqcv8vujm55DYBvns/9y4ImFI=", - "dev": true + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, "token-stream": { "version": "0.0.1", @@ -12249,9 +12981,9 @@ "dev": true }, "toml": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.3.tgz", - "integrity": "sha512-O7L5hhSQHxuufWUdcTRPfuTh3phKfAZ/dqfxZFoxPCj2RYmpaSGLEIs016FCXItQwNr08yefUB5TSjzRYnajTA==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.6.tgz", + "integrity": "sha512-gVweAectJU3ebq//Ferr2JUY4WKSDe5N+z0FvjDncLGyHmIDoxgY/2Ie4qfEIDm4IS7OA6Rmdm7pdEEdMcV/xQ==", "dev": true }, "tosource": { @@ -12261,12 +12993,13 @@ "dev": true }, "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "punycode": "^1.4.1" + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "tr46": { @@ -12276,14 +13009,6 @@ "dev": true, "requires": { "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } } }, "traverse": { @@ -12292,12 +13017,6 @@ "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=", "dev": true }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", - "dev": true - }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -12310,16 +13029,10 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "trim-trailing-lines": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz", - "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==", - "dev": true - }, - "trough": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.2.tgz", - "integrity": "sha512-FHkoUZvG6Egrv9XZAyYGKEyb1JMsFphgPjoczkZC2y6W93U1jswcVURB8MUvtsahEPEVACyxD47JAL63vF4JsQ==", + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", "dev": true }, "tty-browserify": { @@ -12338,9 +13051,9 @@ } }, "tv4": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.2.7.tgz", - "integrity": "sha1-vSk4mvxzreSa5fSBQrXVRL9o0SA=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=", "dev": true }, "tv4-formats": { @@ -12357,8 +13070,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true + "dev": true }, "type-check": { "version": "0.3.2", @@ -12376,12 +13088,27 @@ "dev": true }, "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.18" + "mime-types": "~2.1.24" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + } } }, "typedarray": { @@ -12391,9 +13118,9 @@ "dev": true }, "uc.micro": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz", - "integrity": "sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, "uglify-js": { @@ -12415,14 +13142,14 @@ "optional": true }, "uglifyjs-webpack-plugin": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz", - "integrity": "sha512-CG/NvzXfemUAm5Y4Guh5eEaJYHtkG7kKNpXEJHp9QpxsFVB5/qKvYWoMaq4sa99ccZ0hM3MK8vQV9XPZB4357A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", "dev": true, "requires": { - "cacache": "^10.0.1", + "cacache": "^10.0.4", "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.2", + "schema-utils": "^0.4.5", "serialize-javascript": "^1.4.0", "source-map": "^0.6.1", "uglify-es": "^3.3.4", @@ -12436,6 +13163,84 @@ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", "dev": true }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -12454,6 +13259,12 @@ } } }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, "undefsafe": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", @@ -12464,63 +13275,49 @@ } }, "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", "dev": true }, - "unherit": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz", - "integrity": "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==", + "underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", "dev": true, "requires": { - "inherits": "^2.0.1", - "xtend": "^4.0.1" + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.3.tgz", - "integrity": "sha512-iG/2t0F2LAU8aZYPkX5gi7ebukHnr3sWFESpb+zPQeeaQwOkfoO6ZW17YX7MdRPNG9pCy+tjzGill+Ah0Em0HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.3.tgz", - "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.2", - "unicode-property-aliases-ecmascript": "^1.0.3" + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" } }, "unicode-match-property-value-ecmascript": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.1.tgz", - "integrity": "sha512-lM8B0FDZQh9yYGgiabRQcyWicB27VLOolSBRIxsO7FeQPtg+79Oe7sC8Mzr8BObDs+G9CeYmC/shHo6OggNEog==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.3.tgz", - "integrity": "sha512-TdDmDOTxEf2ad1g3ZBpM6cqKIb2nJpVlz1Q++casDryKz18tpeMBhSng9hjC1CTQCkOV9Rw2knlSB6iRo7ad1w==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", "dev": true }, - "unified": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/unified/-/unified-4.2.1.tgz", - "integrity": "sha1-dv9Dqo2kMPbn5KVchOusKtLPzS4=", - "dev": true, - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "has": "^1.0.1", - "once": "^1.3.3", - "trough": "^1.0.0", - "vfile": "^1.0.0" - } - }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", @@ -12557,18 +13354,18 @@ } }, "unique-filename": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", - "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, "requires": { "unique-slug": "^2.0.0" } }, "unique-slug": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", - "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -12583,34 +13380,10 @@ "crypto-random-string": "^1.0.0" } }, - "unist-util-is": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", - "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==", - "dev": true - }, - "unist-util-remove-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz", - "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==", - "dev": true, - "requires": { - "unist-util-visit": "^1.1.0" - } - }, - "unist-util-visit": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.3.1.tgz", - "integrity": "sha512-0fdB9EQJU0tho5tK0VzOJzAQpPv2LyLZ030b10GxuzAWEfvd54mpY7BMjQ1L69k2YNvL+SvxRzH0yUIehOO8aA==", - "dev": true, - "requires": { - "unist-util-is": "^2.1.1" - } - }, "universalify": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, "unpipe": { @@ -12653,13 +13426,7 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true } } @@ -12671,9 +13438,9 @@ "dev": true }, "upath": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.5.tgz", - "integrity": "sha512-qbKn90aDQ0YEwvXoLqj0oiuUYroLX2lVHZ+b+xwjozFasAOC4GneDq5+OaIG5Zj+jFmbz/uO+f7a9qxjktJQww==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", "dev": true }, "update-notifier": { @@ -12693,12 +13460,6 @@ "xdg-basedir": "^3.0.0" } }, - "update-section": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", - "integrity": "sha1-RY8Xgg03gg3GDiC4bZQ5GwASMVg=", - "dev": true - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -12706,14 +13467,6 @@ "dev": true, "requires": { "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } } }, "urix": { @@ -12750,21 +13503,10 @@ } }, "use": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true }, "user-home": { "version": "2.0.0", @@ -12776,20 +13518,12 @@ } }, "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", "dev": true, "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } + "inherits": "2.0.3" } }, "util-deprecate": { @@ -12804,15 +13538,24 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", "dev": true }, + "v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -12841,18 +13584,6 @@ "extsprintf": "^1.2.0" } }, - "vfile": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-1.4.0.tgz", - "integrity": "sha1-wP1vpIT43r23cfaMMe112I2pf+c=", - "dev": true - }, - "vfile-location": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.3.tgz", - "integrity": "sha512-zM5/l4lfw1CBoPx3Jimxoc5RNDAHHpk6AM6LM0pTIkm5SUSsx8ZekZ0PVdf0WEZ7kjlhSt7ZlqbRL6Cd6dBs6A==", - "dev": true - }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -12868,6 +13599,12 @@ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", "dev": true }, + "vscode-languageserver-types": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz", + "integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A==", + "dev": true + }, "walkdir": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", @@ -12895,15 +13632,15 @@ } }, "web-ext": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-2.7.0.tgz", - "integrity": "sha512-hXj/MV/x6G0oxplOirV4/j7BJ5MZJ2yZHml0gulBr7mH2BMNyTJHdRi+qzVBNPFdBMLV0/PS05YGZ7xr2YmwVA==", + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-2.9.3.tgz", + "integrity": "sha512-aZnlxuYOMUUBS5C8NBhhAj7T0ouJexlW5Cx5ObtOheoguG3fqXUl+KTY19L1Am/bJoyHC8otGTgew9Z0WHeTtg==", "dev": true, "requires": { "@cliqz-oss/firefox-client": "0.3.1", "@cliqz-oss/node-firefox-connect": "1.2.1", "adbkit": "2.11.0", - "addons-linter": "1.0.0", + "addons-linter": "1.4.1", "babel-polyfill": "6.26.0", "babel-runtime": "6.26.0", "bunyan": "1.8.12", @@ -12913,11 +13650,11 @@ "es6-error": "4.1.1", "es6-promisify": "5.0.0", "event-to-promise": "0.8.0", - "firefox-profile": "1.1.0", + "firefox-profile": "1.2.0", "fx-runner": "1.0.9", "git-rev-sync": "1.9.1", - "minimatch": "3.0.4", "mkdirp": "0.5.1", + "multimatch": "2.1.0", "mz": "2.7.0", "node-notifier": "5.2.1", "opn": "5.3.0", @@ -12961,6 +13698,12 @@ "xregexp": "4.0.0" } }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -12970,6 +13713,15 @@ "number-is-nan": "^1.0.0" } }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, "opn": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", @@ -12998,6 +13750,21 @@ "json-parse-better-errors": "^1.0.1" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", + "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", + "dev": true, + "requires": { + "source-map": "^0.6.0" + } + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -13088,22 +13855,22 @@ "dev": true }, "webpack": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.10.2.tgz", - "integrity": "sha512-S4yIBevM7DFSAOAvWSBgvuH5mtJ3HgjAS6tCGsTxxHtrVdbntdRVaPey2u9sCns6KV859Vwd2DwkvBLTcs6t6g==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.33.0.tgz", + "integrity": "sha512-ggWMb0B2QUuYso6FPZKUohOgfm+Z0sVFs8WwWuSH1IAvkWs428VDNmOlAxvHGTB9Dm/qOB/qtE5cRx5y01clxw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.9", - "@webassemblyjs/wasm-edit": "1.5.9", - "@webassemblyjs/wasm-opt": "1.5.9", - "@webassemblyjs/wasm-parser": "1.5.9", - "acorn": "^5.0.0", - "acorn-dynamic-import": "^3.0.0", + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", "ajv": "^6.1.0", "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^0.1.1", - "enhanced-resolve": "^4.0.0", - "eslint-scope": "^3.7.1", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.3.0", "loader-utils": "^1.1.0", @@ -13112,346 +13879,45 @@ "mkdirp": "~0.5.0", "neo-async": "^2.5.0", "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.0.0", - "uglifyjs-webpack-plugin": "^1.2.4", + "schema-utils": "^1.0.0", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", "watchpack": "^1.5.0", - "webpack-sources": "^1.0.1" + "webpack-sources": "^1.3.0" }, "dependencies": { "acorn": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.0.tgz", - "integrity": "sha512-QatFQ4C0n+PLqemyC6zXEv04tSqRR0hRqe+uGKPEVgKe2G8kl8wJvHzRYWwz6vqqEqt6idPVMFojZ4P1zlyAzQ==", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", "dev": true }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { + "schema-utils": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - } - }, - "uglifyjs-webpack-plugin": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz", - "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } } } }, "webpack-merge": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.2.tgz", - "integrity": "sha512-/0QYwW/H1N/CdXYA2PNPVbsxO3u2Fpz34vs72xm03SRfg6bMNGfMJIQEpQjKRvkG2JvT6oRJFpDtSrwbX8Jzvw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", "dev": true, "requires": { "lodash": "^4.17.5" } }, "webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", "dev": true, "requires": { "source-list-map": "^2.0.0", @@ -13483,9 +13949,9 @@ "dev": true }, "whatwg-url": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz", - "integrity": "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", @@ -13500,9 +13966,9 @@ "dev": true }, "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -13515,9 +13981,9 @@ "dev": true }, "widest-line": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", - "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", "dev": true, "requires": { "string-width": "^2.1.1" @@ -13561,13 +14027,12 @@ "dev": true }, "worker-farm": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.4.tgz", - "integrity": "sha512-ITyClEvcfv0ozqJl1vmWFWhvI+OIrkbInYqkEPE50wFPXj8J9Gd3FYf8+CkZJXJJsQBYe+2DvmoK9Zhx5w8W+w==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, "requires": { - "errno": "~0.1.7", - "xtend": "~4.0.1" + "errno": "~0.1.7" } }, "wrap-ansi": { @@ -13618,9 +14083,9 @@ } }, "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -13629,9 +14094,9 @@ } }, "ws": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz", - "integrity": "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", "dev": true, "requires": { "async-limiter": "~1.0.0" @@ -13644,9 +14109,9 @@ "dev": true }, "xhr-mock": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xhr-mock/-/xhr-mock-2.2.0.tgz", - "integrity": "sha1-TfIzjszRSRT62wHP4ieo+FrXvjU=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/xhr-mock/-/xhr-mock-2.4.1.tgz", + "integrity": "sha1-y1AuPVC4suwxvWF2bOUWv8HdBy8=", "dev": true, "requires": { "global": "^4.3.0", @@ -13728,18 +14193,19 @@ } }, "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "dependencies": { "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true } } @@ -13753,15 +14219,6 @@ "fd-slicer": "~1.0.1" } }, - "zip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zip/-/zip-1.2.0.tgz", - "integrity": "sha1-rQrUImUwm+QutW/IYZThfCTmapw=", - "dev": true, - "requires": { - "bops": "~0.1.1" - } - }, "zip-dir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-1.0.2.tgz", @@ -13770,6 +14227,17 @@ "requires": { "async": "^1.5.2", "jszip": "^2.4.0" + }, + "dependencies": { + "jszip": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", + "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", + "dev": true, + "requires": { + "pako": "~1.0.2" + } + } } }, "zip-stream": { diff --git a/package.json b/package.json index 20fd7df1..9d87f8e2 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" }, "dependencies": { - "express": "^4.16.2", + "express": "^4.17.1", "express-sslify": "^1.2.0", "querystring": "^0.2.0" }, @@ -15,23 +15,23 @@ "npm": "^6.4.1" }, "devDependencies": { - "@babel/core": "^7.0.0-beta.36", - "@babel/polyfill": "^7.0.0-beta.37", - "@babel/preset-env": "^7.0.0-beta.36", - "babel-loader": "^8.0.0-beta.0", + "@babel/core": "^7.4.5", + "@babel/polyfill": "^7.4.4", + "@babel/preset-env": "^7.4.5", + "babel-loader": "^8.0.6", "babel-plugin-transform-async-to-generator": "^6.24.1", - "bootstrap": "^3.3.7", - "chai": "^4.1.2", + "bootstrap": "^3.4.1", + "chai": "^4.2.0", "chai-arrays": "^2.0.0", "chai-as-promised": "^7.1.1", - "chai-json-schema": "^1.5.0", - "clipboard-polyfill": "^2.4.6", - "codemirror": "^5.33.0", + "chai-json-schema": "^1.5.1", + "clipboard-polyfill": "^2.8.1", + "codemirror": "^5.47.0", "deep-freeze": "0.0.1", - "esm": "^3.0.47", + "esm": "^3.2.25", "flipclock": "^0.7.8", - "grunt": "^1.0.1", - "grunt-cli": "^1.2.0", + "grunt": "^1.0.4", + "grunt-cli": "^1.3.2", "grunt-contrib-clean": "^1.1.0", "grunt-contrib-connect": "^1.0.2", "grunt-contrib-copy": "^1.0.0", @@ -41,31 +41,31 @@ "grunt-crx": "^1.0.5", "grunt-exec": "^3.0.0", "grunt-mocha-test": "^0.13.3", - "grunt-webpack": "^3.0.2", - "highlight.js": "^9.12.0", + "grunt-webpack": "^3.1.3", + "highlight.js": "^9.15.8", "inject-loader": "^3.0.1", - "isotope-layout": "^3.0.5", - "jquery": "^3.2.1", - "jstransformer-markdown-it": "^2.0.0", - "lodash": "^4.17.4", - "loglevel": "^1.6.1", - "mocha": "^5.0.0", - "node-jose": "^1.0.0", + "isotope-layout": "^3.0.6", + "jquery": "^3.4.1", + "jstransformer-markdown-it": "^2.1.0", + "lodash": "^4.17.11", + "loglevel": "^1.6.2", + "mocha": "^5.2.0", + "node-jose": "^1.1.3", "promise.any": "^0.1.1", - "pug": "^2.0.0-rc.4", - "puppeteer": "^1.11.0", - "request-promise-native": "^1.0.5", - "sinon": "^4.2.2", + "pug": "^2.0.3", + "puppeteer": "^1.17.0", + "request-promise-native": "^1.0.7", + "sinon": "^4.5.0", "sinon-chai": "^2.14.0", - "source-map-support": "^0.5.3", + "source-map-support": "^0.5.12", "stylus": "^0.54.5", - "tippy.js": "^2.3.0", + "tippy.js": "^2.6.0", "tv4-formats": "^3.0.3", - "uglifyjs-webpack-plugin": "^1.1.6", - "web-ext": "^2.7.0", - "webpack": "^4.10.2", - "webpack-merge": "^4.1.1", - "xhr-mock": "^2.0.3" + "uglifyjs-webpack-plugin": "^1.3.0", + "web-ext": "^2.9.3", + "webpack": "^4.33.0", + "webpack-merge": "^4.2.1", + "xhr-mock": "^2.4.1" }, "scripts": { "start": "node server.js", diff --git a/test/functional/editor.js b/test/functional/editor.js index bb9dfb29..897dea2d 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -13,7 +13,7 @@ const defaultTokens = require('esm')(module)('../../src/editor/default-tokens.js').default; const jwks = require('./jwks.json'); -const isVisible = utils.isVisible; +const { isVisible, selectAll } = utils; chai.use(chaiAsPromised); chai.use(chaiArrays); @@ -136,9 +136,7 @@ describe('Editor', function() { }); await this.page.click('.js-header'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); const header = { alg: 'HS256', @@ -173,9 +171,7 @@ describe('Editor', function() { }); await this.page.click('.js-payload'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); const payload = { "sub": "1234567890", @@ -213,9 +209,7 @@ describe('Editor', function() { }); await this.page.click('.js-header'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); const header = { alg: 'HS384', @@ -254,9 +248,7 @@ describe('Editor', function() { await this.page.select('#algorithm-select', 'HS256'); await this.page.click('.js-payload'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); const payload = { sub: 'test' @@ -342,17 +334,13 @@ describe('Editor', function() { it(`Decodes ${alg.toUpperCase()} tokens`, async function() { const secretInput = await this.page.$('input[name="secret"]'); await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await secretInput.type(tokens[alg].secret, { delay: typingDelay }); await this.page.click('.js-input'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(tokens[alg].token, { delay: typingDelay }); @@ -382,9 +370,7 @@ describe('Editor', function() { const secretInput = await this.page.$('input[name="secret"]'); await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await secretInput.type(secret, { delay: typingDelay }); @@ -401,9 +387,7 @@ describe('Editor', function() { secret += 'test'; await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await secretInput.type(secret, { delay: typingDelay }); @@ -424,9 +408,7 @@ describe('Editor', function() { it('Signs tokens with an empty secret', async function() { const secretInput = await this.page.$('input[name="secret"]'); await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.press('Delete'); // Wait for token processing. @@ -448,21 +430,15 @@ describe('Editor', function() { for(const alg of algs) { it(alg.toUpperCase(), async function() { - //this.timeout(20000); - await this.page.click('.js-input'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(tokens[alg].token, { delay: typingDelay }); const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await secretInput.type(tokens[alg].publicKey, { delay: typingDelay }); @@ -490,22 +466,16 @@ describe('Editor', function() { describe('Encodes RS/ES/PS tokens', function() { describe('RS/PS', async function() { before(async function() { - //this.timeout(30000); - await this.page.select('#algorithm-select', 'RS256'); await this.page.click('textarea[name="public-key"]'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(defaultTokens['rs256'].publicKey, { delay: typingDelay }); await this.page.click('textarea[name="private-key"]'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(defaultTokens['rs256'].privateKey, { delay: typingDelay }); @@ -530,9 +500,7 @@ describe('Editor', function() { }); await this.page.click('.js-header'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(JSON.stringify({ alg: alg.toUpperCase(), typ: 'JWT' @@ -541,9 +509,7 @@ describe('Editor', function() { }); await this.page.click('.js-payload'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(JSON.stringify({ sub: 'test' }, null, 2), { @@ -574,22 +540,16 @@ describe('Editor', function() { describe('ES', async function() { before(async function() { - //this.timeout(30000); - await this.page.select('#algorithm-select', 'ES256'); await this.page.click('textarea[name="public-key"]'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(defaultTokens['es256'].publicKey, { delay: typingDelay }); await this.page.click('textarea[name="private-key"]'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(defaultTokens['es256'].privateKey, { delay: typingDelay }); @@ -613,9 +573,7 @@ describe('Editor', function() { }); await this.page.click('.js-header'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(JSON.stringify({ alg: alg.toUpperCase(), typ: 'JWT' @@ -624,9 +582,7 @@ describe('Editor', function() { }); await this.page.click('.js-payload'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(JSON.stringify({ sub: 'test' }, null, 2), { @@ -680,9 +636,7 @@ describe('Editor', function() { beforeEach(async function() { const publicKeyInput = await this.page.$('textarea[name="public-key"]'); await publicKeyInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.press('Delete'); }); @@ -691,8 +645,6 @@ describe('Editor', function() { }); it('iss URL + .well-known', async function() { - //this.timeout(20000); - const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); const token = await jose.JWS.createSign({ fields: { @@ -709,9 +661,7 @@ describe('Editor', function() { }), 'utf8').final(); await this.page.click('.js-input'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(token, { delay: typingDelay }); @@ -722,7 +672,7 @@ describe('Editor', function() { const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); - expect(publicKey).to.include(`-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd\nUWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs\nHUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D\no2kQ+X5xK9cipRgEKwIDAQAB\n-----END PUBLIC KEY-----\n`); + expect(publicKey).to.include(`-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnzyis1ZjfNB0bBgKFMSv\nvkTtwlvBsaJq7S5wA+kzeVOVpVWwkWdVha4s38XM/pa/yr47av7+z3VTmvDRyAHc\naT92whREFpLv9cj5lTeJSibyr/Mrm/YtjCZVWgaOYIhwrXwKLqPr/11inWsAkfIy\ntvHWTxZYEcXLgAXFuUuaS3uF9gEiNQwzGTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0\ne+lf4s4OxQawWD79J9/5d3Ry0vbV3Am1FtGJiJvOwRsIfVChDpYStTcHTCMqtvWb\nV6L11BWkpzGXSW4Hv43qa+GSYOD2QU68Mb59oSk2OB+BtOLpJofmbGEGgvmwyCI9\nMwIDAQAB\n-----END PUBLIC KEY-----`); const valid = await this.page.$eval('.validation-status', status => { return status.classList.contains('valid-token') && @@ -751,9 +701,7 @@ describe('Editor', function() { }), 'utf8').final(); await this.page.click('.js-input'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(token, { delay: typingDelay }); @@ -792,9 +740,7 @@ describe('Editor', function() { }), 'utf8').final(); await this.page.click('.js-input'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(token, { delay: typingDelay }); @@ -821,15 +767,11 @@ describe('Editor', function() { const secretInput = await this.page.$('textarea[name="private-key"]'); await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.press('Delete'); await this.page.click('.js-header'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); const header = { alg: 'RS256', @@ -856,15 +798,11 @@ describe('Editor', function() { const secretInput = await this.page.$('textarea[name="private-key"]'); await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.press('Delete'); await this.page.click('.js-payload'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); const payload = { sub: 'test' @@ -889,18 +827,14 @@ describe('Editor', function() { await this.page.select('#algorithm-select', 'RS256'); await this.page.click('.js-input'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(tokens['rs256'].token, { delay: typingDelay }); const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await secretInput.type(tokens['rs256'].publicKey, { delay: typingDelay }); @@ -917,9 +851,7 @@ describe('Editor', function() { expect(valid).to.be.true; await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.press('Delete'); // Wait for token processing. @@ -940,18 +872,14 @@ describe('Editor', function() { await this.page.select('#algorithm-select', 'RS256'); await this.page.click('.js-input'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(tokens['rs256'].token, { delay: typingDelay }); const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await secretInput.type(tokens['rs256'].publicKey, { delay: typingDelay }); @@ -991,18 +919,14 @@ describe('Editor', function() { const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await secretInput.type(defaultTokens['rs256'].publicKey, { delay: typingDelay }); const privateKeyInput = await this.page.$('textarea[name="private-key"]'); await privateKeyInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); const head = defaultTokens['rs256'].privateKey.slice(0, 20); const tail = defaultTokens['rs256'].privateKey.slice(20); @@ -1012,9 +936,7 @@ describe('Editor', function() { }); await this.page.click('.js-input'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(defaultTokens['rs256'].token, { delay: typingDelay }); @@ -1037,24 +959,18 @@ describe('Editor', function() { const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await secretInput.type(tokens['rs256'].publicKey, { delay: typingDelay }); const privateKeyInput = await this.page.$('textarea[name="private-key"]'); await privateKeyInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.press('Delete'); await this.page.click('.js-input'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(tokens['rs256'].token, { delay: typingDelay }); @@ -1075,9 +991,7 @@ describe('Editor', function() { await this.page.select('#algorithm-select', 'HS256'); await this.page.click('.js-input'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(tokens.hs256.token, { delay: typingDelay }); @@ -1095,9 +1009,7 @@ describe('Editor', function() { //this.timeout(20000); await this.page.click('.js-input'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(tokens.none.token, { delay: typingDelay }); @@ -1118,17 +1030,13 @@ describe('Editor', function() { const secretInput = await this.page.$('input[name="secret"]'); await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await secretInput.type('secret-test', { delay: typingDelay }); await this.page.click('.js-payload'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); const payload = { sub: 'test' @@ -1152,17 +1060,13 @@ describe('Editor', function() { const secretInput = await this.page.$('input[name="secret"]'); await secretInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await secretInput.type('secret-test', { delay: typingDelay }); await this.page.click('.js-payload'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); const payload = { sub: 'test' @@ -1205,18 +1109,14 @@ describe('Editor', function() { await this.page.select('#algorithm-select', 'RS256'); await this.page.click('.js-input'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await this.page.keyboard.type(defaultTokens['rs256'].token, { delay: typingDelay }); const pubKeyInput = await this.page.$('textarea[name="public-key"]'); await pubKeyInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await pubKeyInput.type(defaultTokens['rs256'].publicKey, { delay: typingDelay }); @@ -1224,17 +1124,13 @@ describe('Editor', function() { const privateKeyInput = await this.page.$('textarea[name="private-key"]'); await privateKeyInput.click(); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); await privateKeyInput.type(defaultTokens['rs256'].privateKey, { delay: typingDelay }); await this.page.click('.js-payload'); - await this.page.keyboard.down('ControlLeft'); - await this.page.keyboard.press('KeyA'); - await this.page.keyboard.up('ControlLeft'); + await selectAll.call(this); const payload = { sub: 'test' diff --git a/test/functional/jwks.json b/test/functional/jwks.json index 65d6f481..8f57c7e7 100644 --- a/test/functional/jwks.json +++ b/test/functional/jwks.json @@ -5,12 +5,12 @@ "kty": "RSA", "use": "sig", "x5c": [ - "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" ], "kid": "1", "x5t": "1", "e": "AQAB", - "n": "3ZWrUY0Y6IKN1qI4BhxR2C7oHVFgGPYkd38uGq1jQNSqEvJFcN93CYm16_G78FAFKWqwsJb3Wx-nbxDn6LtP4AhULB1H0K0g7_jLklDAHvI8yhOKlvoyvsUFPWtNxlJyh5JJXvkNKV_4Oo12e69f8QCuQ6NpEPl-cSvXIqUYBCs" + "n": "nzyis1ZjfNB0bBgKFMSvvkTtwlvBsaJq7S5wA-kzeVOVpVWwkWdVha4s38XM_pa_yr47av7-z3VTmvDRyAHcaT92whREFpLv9cj5lTeJSibyr_Mrm_YtjCZVWgaOYIhwrXwKLqPr_11inWsAkfIytvHWTxZYEcXLgAXFuUuaS3uF9gEiNQwzGTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0e-lf4s4OxQawWD79J9_5d3Ry0vbV3Am1FtGJiJvOwRsIfVChDpYStTcHTCMqtvWbV6L11BWkpzGXSW4Hv43qa-GSYOD2QU68Mb59oSk2OB-BtOLpJofmbGEGgvmwyCI9Mw" } ] } diff --git a/test/functional/utils.js b/test/functional/utils.js index 53af74aa..d975720b 100644 --- a/test/functional/utils.js +++ b/test/functional/utils.js @@ -1,5 +1,4 @@ const puppeteer = require('puppeteer'); -const os = require('os'); // https://stackoverflow.com/questions/5353934/check-if-element-is-visible-on-screen function isVisible(elm) { @@ -19,14 +18,7 @@ async function launchBrowser() { // Initial navigation may take long due to outside requests. this.timeout(30000); - const options = os.hostname() === 'i7-4790K-LIN' ? { - //headless: false, - executablePath: '/usr/bin/chromium' - } : { - args: ['--no-sandbox'] - }; - - this.browser = await puppeteer.launch(options); + this.browser = await puppeteer.launch(); this.page = await this.browser.newPage(); await this.page.setViewport({ width: 1920, @@ -39,8 +31,78 @@ async function closeBrowser() { await this.browser.close(); } +/** + * Emulates a Ctrl+A SelectAll key combination by dispatching custom keyboard + * events and using the results of those events to determine whether to call + * `document.execCommand( 'selectall' );`. This is necessary because Puppeteer + * does not emulate Ctrl+A SelectAll in macOS. Events are dispatched to ensure + * that any `Event#preventDefault` which would have normally occurred in the + * application as a result of Ctrl+A is respected. + * + * @link https://github.com/GoogleChrome/puppeteer/issues/1313 + * @link https://w3c.github.io/uievents/tools/key-event-viewer.html + * + * @return {Promise} Promise resolving once the SelectAll emulation completes. + */ +async function selectAll() { + await this.page.evaluate(() => { + const isMac = /Mac|iPod|iPhone|iPad/.test(window.navigator.platform); + + document.activeElement.dispatchEvent( + new KeyboardEvent('keydown', { + bubbles: true, + cancelable: true, + key: isMac ? 'Meta' : 'Control', + code: isMac ? 'MetaLeft' : 'ControlLeft', + location: window.KeyboardEvent.DOM_KEY_LOCATION_LEFT, + getModifierState: (keyArg) => keyArg === (isMac ? 'Meta' : 'Control'), + ctrlKey: ! isMac, + metaKey: isMac, + charCode: 0, + keyCode: isMac ? 93 : 17, + which: isMac ? 93 : 17, + }) + ); + + const preventableEvent = new KeyboardEvent('keydown', { + bubbles: true, + cancelable: true, + key: 'a', + code: 'KeyA', + location: window.KeyboardEvent.DOM_KEY_LOCATION_STANDARD, + getModifierState: (keyArg) => keyArg === (isMac ? 'Meta' : 'Control'), + ctrlKey: ! isMac, + metaKey: isMac, + charCode: 0, + keyCode: 65, + which: 65, + }); + + const wasPrevented = (!document.activeElement.dispatchEvent(preventableEvent) || preventableEvent.defaultPrevented); + + if (!wasPrevented) { + document.execCommand('selectall', false, null); + } + + document.activeElement.dispatchEvent( + new KeyboardEvent('keyup', { + bubbles: true, + cancelable: true, + key: isMac ? 'Meta' : 'Control', + code: isMac ? 'MetaLeft' : 'ControlLeft', + location: window.KeyboardEvent.DOM_KEY_LOCATION_LEFT, + getModifierState: () => false, + charCode: 0, + keyCode: isMac ? 93 : 17, + which: isMac ? 93 : 17, + }), + ); + }); +} + module.exports = { isVisible: isVisible, launchBrowser: launchBrowser, - closeBrowser: closeBrowser + closeBrowser: closeBrowser, + selectAll: selectAll }; From 4e5946c898bb1dca86d3c00b1482ad61cb1abf13 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Thu, 20 Jun 2019 09:32:58 +0200 Subject: [PATCH 321/611] fix: first populate input, then verify signatures --- src/website/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/website/index.js b/src/website/index.js index a3aca97e..66ae0505 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -39,13 +39,13 @@ function parseLocationQuery() { if (token) { metrics.track("token-in-url", { type: key }); - setTokenEditorValue(token); - if (locSearch.publicKey || locHash.publicKey) { metrics.track("pubkey-in-url"); publicKeyTextArea.value = locSearch.publicKey || locHash.publicKey; } + setTokenEditorValue(token); + debuggerSection.scrollIntoView(true); break; From 2f8ca97e4dcc21e297756789770245805f615a77 Mon Sep 17 00:00:00 2001 From: Stephen von Takach Date: Fri, 21 Jun 2019 13:13:53 +1000 Subject: [PATCH 322/611] add RSA support to crystal-community/jwt --- views/website/libraries/25-Crystal.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/25-Crystal.json b/views/website/libraries/25-Crystal.json index d7c86430..585e6b98 100644 --- a/views/website/libraries/25-Crystal.json +++ b/views/website/libraries/25-Crystal.json @@ -19,9 +19,9 @@ "hs256": true, "hs384": true, "hs512": true, - "rs256": false, - "rs384": false, - "rs512": false, + "rs256": true, + "rs384": true, + "rs512": true, "es256": false, "es384": false, "es512": false, From 011237e884c81aefffee6cb55018530bd9d08e9f Mon Sep 17 00:00:00 2001 From: Brian Voelker Date: Mon, 24 Jun 2019 09:22:00 -0500 Subject: [PATCH 323/611] Update 9-Go.json --- views/website/libraries/9-Go.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 9bccf3de..55cd0893 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -342,6 +342,37 @@ "gitHubRepoPath": null, "repoUrl": "https://gitlab.com/rucuriousyet/jwt", "installCommandHtml": "go get gitlab.com/rucuriousyet/jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/brianvoe", + "authorName": "Brian Voelker", + "gitHubRepoPath": "brianvoe/sjwt", + "repoUrl": "https://github.com/brianvoe/sjwt", + "installCommandHtml": "go get github.com/brianvoe/sjwt" } ] } From 2a41c31e5887c2da42e6bbc720b3e7ae019f9da4 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Tue, 9 Jul 2019 20:49:44 +0200 Subject: [PATCH 324/611] fix: dont validate ill-formed tokens --- src/editor/jwt.js | 46 +++++++++++++---------------------------- src/editor/utils.js | 21 ------------------- test/unit/editor/jwt.js | 5 +---- 3 files changed, 15 insertions(+), 57 deletions(-) diff --git a/src/editor/jwt.js b/src/editor/jwt.js index 022e9bd8..d05fe1cd 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -102,7 +102,7 @@ export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { const decoded = decode(jwt); - if(!decoded.header.alg) { + if(!decoded.header.alg || decoded.errors) { return Promise.resolve(false); } @@ -133,51 +133,33 @@ export function decode(jwt) { const split = jwt.split('.'); + if (!isValidBase64String(split[2])) { + result.errors = true; + } + try { + if (!isValidBase64String(split[0])) { + result.errors = true; + } result.header = JSON.parse(b64u.decode(split[0])); } catch(e) { - result.header = {}; result.errors = true; } try { + if (!isValidBase64String(split[1])) { + result.errors = true; + } result.payload = JSON.parse(b64u.decode(split[1])); } catch(e) { - result.payload = {}; result.errors = true; } return result; } -export function isValidBase64String(s, urlOnly) { - try { - const validChars = urlOnly ? - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=' : - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_+/='; - - let hasPadding = false; - for(let i = 0; i < s.length; ++i) { - hasPadding |= s.charAt(i) === '='; - if(validChars.indexOf(s.charAt(i)) === -1) { - return false; - } - } - - if(hasPadding) { - for(let i = s.indexOf('='); i < s.length; ++i) { - if(s.charAt(i) !== '=') { - return false; - } - } - - return s.length % 4 === 0; - } - - return true; - } catch (e) { - return false; - } +export function isValidBase64String(s) { + return /^[a-zA-Z0-9_-]*$/.test(s); } export function isToken(jwt, checkTypClaim = false) { @@ -193,7 +175,7 @@ export function isToken(jwt, checkTypClaim = false) { const split = jwt.split('.'); let valid = true; - split.forEach(s => valid = valid && isValidBase64String(s, true)); + split.forEach(s => valid = valid && isValidBase64String(s)); return valid; } diff --git a/src/editor/utils.js b/src/editor/utils.js index 558f378e..fbaaaf3f 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -54,26 +54,6 @@ export function isString(value) { return typeof value === 'string' || value instanceof String; } -function getBase64Format(token) { - try { - function getFormat(str) { - if(jwt.isValidBase64String(str, true)) { - return 'base64url'; - } else if(jwt.isValidBase64String(str, false)) { - return 'base64'; - } else { - return 'invalid'; - } - } - - const formats = token.split('.').map(getFormat); - return formats.every(r => r === formats[0]) ? - formats[0] : 'invalid'; - } catch(e) { - return 'invalid'; - } -} - function getRegisteredClaims(payload) { const result = []; @@ -125,7 +105,6 @@ export function getSafeTokenInfo(token) { Object.assign(result, { decodedWithErrors: decoded.errors, encodedSize: token.length, - base64Format: getBase64Format(token), header: { alg: decoded.header.alg, }, diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index 9969aee9..0759b9ed 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -220,16 +220,13 @@ describe('JWT', function() { it('detects valid Base64 and Base64URL strings', function() { data.forEach(d => { - jwt.isValidBase64String(d.b64, false).should.be.true; - jwt.isValidBase64String(d.b64u, false).should.be.true; jwt.isValidBase64String(d.b64u).should.be.true; - jwt.isValidBase64String(d.b64u, true).should.be.true; }); }); it('fails on invalid Base64 and Base64 URL strings', function() { data.forEach(d => { - if(d.b64.match(/[\+\/]/)) { + if(d.b64.match(/[\+\/=]/)) { jwt.isValidBase64String(d.b64, true).should.be.false; } }); From 0a940a1824b0c4d03d4f5ade271542067408442e Mon Sep 17 00:00:00 2001 From: Radoslaw Nowakowski Date: Sat, 13 Jul 2019 14:41:39 +0200 Subject: [PATCH 325/611] Adding nowakowskir/php-jwt PHP library --- views/website/libraries/24-PHP.json | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index 08cf40bd..ef36d46a 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -341,6 +341,34 @@ "gitHubRepoPath": "miladrahimi/php-jwt", "repoUrl": "https://github.com/miladrahimi/php-jwt", "installCommandHtml": "composer require miladrahimi/php-jwt" + }, + { + "minimumVersion": "7.2.1", + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false + }, + "authorUrl": "https://github.com/nowakowskir", + "authorName": "Radosław Nowakowski", + "gitHubRepoPath": "nowakowskir/php-jwt", + "repoUrl": "https://github.com/nowakowskir/php-jwt", + "installCommandHtml": "composer require nowakowskir/php-jwt" } ] } From 4bd54b6a81107e403469555bbf9f430a80ecfe8e Mon Sep 17 00:00:00 2001 From: Sambego Date: Fri, 23 Aug 2019 08:41:16 +0200 Subject: [PATCH 326/611] Add localstorage warning --- views/website/md/introduction.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/views/website/md/introduction.md b/views/website/md/introduction.md index c1fd799f..77ee398d 100755 --- a/views/website/md/introduction.md +++ b/views/website/md/introduction.md @@ -95,6 +95,8 @@ If you want to play with JWT and put these concepts into practice, you can use [ ## How do JSON Web Tokens work? In authentication, when the user successfully logs in using their credentials, a JSON Web Token will be returned. Since tokens are credentials, great care must be taken to prevent security issues. In general, you should not keep tokens longer than required. +You also [should not store sensitive session data in browser storage due to lack of security](https://cheatsheetseries.owasp.org/cheatsheets/HTML5_Security_Cheat_Sheet.html#local-storage). + Whenever the user wants to access a protected route or resource, the user agent should send the JWT, typically in the **Authorization** header using the **Bearer** schema. The content of the header should look like the following: ``` From 3fceb9d929c4affa6a3e379e03df33926d4729f5 Mon Sep 17 00:00:00 2001 From: Sambego Date: Fri, 23 Aug 2019 12:58:30 +0200 Subject: [PATCH 327/611] Show a warning when a token with invalid base64 or padded base64 is being encoded --- src/dom-elements.js | 2 ++ src/editor/index.js | 63 ++++++++++++++++++++++++++++----- src/editor/jwt.js | 30 ++++++++++------ src/strings.js | 10 ++++-- stylus/website/codemirror.styl | 3 ++ stylus/website/index.styl | 27 ++++++++++++++ test/unit/editor/jwt.js | 18 +++++----- views/token-editor-common.pug | 1 + views/token-editor-warnings.pug | 1 + 9 files changed, 125 insertions(+), 30 deletions(-) create mode 100644 views/token-editor-warnings.pug diff --git a/src/dom-elements.js b/src/dom-elements.js index dd4fecff..e35beb2d 100644 --- a/src/dom-elements.js +++ b/src/dom-elements.js @@ -13,6 +13,8 @@ export const payloadElement = document.querySelector('.js-payload'); export const signatureStatusElement = document.querySelector('.validation-status.js-signature'); +export const editorWarnings = + document.querySelector('.js-editor-warnings'); export const algorithmSelect = document.getElementById('algorithm-select'); export const algorithmEs512 = diff --git a/src/editor/index.js b/src/editor/index.js index d6571ecb..3d432758 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -36,7 +36,8 @@ import { encodedTabLink, decodedTabLink, encodedTabElement, - decodedTabElement + decodedTabElement, + editorWarnings } from "../dom-elements.js"; import log from "loglevel"; @@ -80,6 +81,14 @@ function markAsInvalid() { }`; } +function markJWTAsInvalid() { + signatureStatusElement.classList.remove("valid-token"); + signatureStatusElement.classList.add("invalid-token"); + signatureStatusElement.innerHTML = ` ${ + strings.editor.jwtInvalid + }`; +} + function markAsValid() { const elementsWithError = document.getElementsByClassName("error"); Array.prototype.forEach.call(elementsWithError, element => { @@ -212,6 +221,28 @@ function markAsInvalidWithElement(element, clearTokenEditor = true) { } } +function showEditorWarnings(warnings) { + editorElement.classList.add("warning"); + editorWarnings.classList.remove("hidden"); + editorWarnings.innerHTML = ''; + + warnings.forEach(warning => { + const warningElement = document.createElement('p'); + const warningLabel = document.createElement('strong'); + const warningMessage = document.createTextNode(warning) + warningLabel.innerText = 'Warning: '; + warningElement.appendChild(warningLabel); + warningElement.appendChild(warningMessage); + editorWarnings.appendChild(warningElement) + }); +} + +function hideEditorWarnings() { + editorElement.classList.remove("warning"); + editorWarnings.classList.add("hidden"); + editorWarnings.innerHTML = ''; +} + function encodeToken() { deferToNextLoop(fixEditorHeight); @@ -300,6 +331,13 @@ function decodeToken() { tokenHash: tokenHash }); } else { + if (decoded.warnings && decoded.warnings.length > 0) { + showEditorWarnings(decoded.warnings); + markJWTAsInvalid(); + } else { + hideEditorWarnings(); + } + verifyToken(); } } catch (e) { @@ -332,13 +370,22 @@ function verifyToken() { ? secretInput.value : publicKeyTextArea.value; - verify(jwt, publicKeyOrSecret, secretBase64Checkbox.checked).then(valid => { - if (valid) { - markAsValid(); - metrics.track("editor-jwt-verified", { - tokenHash: tokenHash, - secretBase64Checkbox: secretBase64Checkbox.checked - }); + verify(jwt, publicKeyOrSecret, secretBase64Checkbox.checked).then(result => { + if (result.validSignature) { + if (!result.validBase64) { + markJWTAsInvalid(); + metrics.track("editor-jwt-invalid", { + reason: "invalid base64", + tokenHash: tokenHash, + secretBase64Checkbox: secretBase64Checkbox.checked + }); + } else { + markAsValid(); + metrics.track("editor-jwt-verified", { + tokenHash: tokenHash, + secretBase64Checkbox: secretBase64Checkbox.checked + }); + } } else { markAsInvalid(); metrics.track("editor-jwt-invalid", { diff --git a/src/editor/jwt.js b/src/editor/jwt.js index d05fe1cd..47710f08 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -2,7 +2,7 @@ import jose from 'node-jose'; import b64u from 'base64url'; import any from 'promise.any'; import { pki } from 'node-forge'; - +import strings from '../strings';strings import log from 'loglevel'; // node-jose does not support keys shorter than block size. This is a @@ -97,24 +97,27 @@ export function sign(header, export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { if(!isToken(jwt)) { - return Promise.resolve(false); + return Promise.resolve({validSignature: false}); } const decoded = decode(jwt); if(!decoded.header.alg || decoded.errors) { - return Promise.resolve(false); + return Promise.resolve({validSignature: false}); } return getJoseKey(decoded.header, secretOrPublicKeyString, base64Secret).then( key => { return jose.JWS.createVerify(key) .verify(jwt) - .then(() => true, () => false); + .then(() => ({ + validSignature: true, + validBase64: jwt.split('.').reduce((valid, s) => valid = valid && isValidBase64String(s), true) + }), () => ({validSignature: false})); }, e => { log.warn('Could not verify token, ' + 'probably due to bad data in it or the keys: ', e); - return false; + return {validSignature: false}; } ); } @@ -123,7 +126,8 @@ export function decode(jwt) { const result = { header: {}, payload: {}, - errors: false + errors: false, + warnings: [], }; if(!jwt) { @@ -134,12 +138,12 @@ export function decode(jwt) { const split = jwt.split('.'); if (!isValidBase64String(split[2])) { - result.errors = true; + result.warnings.push(strings.warnings.signatureBase64Invalid); } try { if (!isValidBase64String(split[0])) { - result.errors = true; + result.warnings.push(strings.warnings.headerBase64Invalid); } result.header = JSON.parse(b64u.decode(split[0])); } catch(e) { @@ -148,7 +152,7 @@ export function decode(jwt) { try { if (!isValidBase64String(split[1])) { - result.errors = true; + result.warnings.push(strings.warnings.payloadBase64Invalid); } result.payload = JSON.parse(b64u.decode(split[1])); } catch(e) { @@ -158,7 +162,11 @@ export function decode(jwt) { return result; } -export function isValidBase64String(s) { +export function isValidBase64String(s, allowPadding = false) { + if (allowPadding) { + return /^[a-zA-Z0-9_=-]*$/.test(s); + } + return /^[a-zA-Z0-9_-]*$/.test(s); } @@ -175,7 +183,7 @@ export function isToken(jwt, checkTypClaim = false) { const split = jwt.split('.'); let valid = true; - split.forEach(s => valid = valid && isValidBase64String(s)); + split.forEach(s => valid = valid && isValidBase64String(s, true)); return valid; } diff --git a/src/strings.js b/src/strings.js index c9f7ca68..030bd008 100644 --- a/src/strings.js +++ b/src/strings.js @@ -39,12 +39,18 @@ export default { }, extension: { alreadyInstalled: 'Already installed', - addToBrowser: 'Add to Browser', + addToBrowser: 'Add to Browser', noJwtsFound: 'No JWTs found', saveBackTo: 'Save back to ' }, editor: { signatureVerified: 'signature verified', - signatureInvalid: 'invalid signature' + signatureInvalid: 'invalid signature', + jwtInvalid: 'Invalid JWT' + }, + warnings: { + headerBase64Invalid: 'Looks like your JWT header is not encoded correctly using base64url (https://tools.ietf.org/html/rfc4648#section-5). Note that padding ("=") must be omitted as per https://tools.ietf.org/html/rfc7515#section-2', + payloadBase64Invalid: 'Looks like your JWT payload is not encoded correctly using base64url (https://tools.ietf.org/html/rfc4648#section-5). Note that padding ("=") must be omitted as per https://tools.ietf.org/html/rfc7515#section-2', + signatureBase64Invalid: 'Looks like your JWT signature is not encoded correctly using base64url (https://tools.ietf.org/html/rfc4648#section-5). Note that padding ("=") must be omitted as per https://tools.ietf.org/html/rfc7515#section-2', } }; diff --git a/stylus/website/codemirror.styl b/stylus/website/codemirror.styl index 48b81b2e..9793bb2f 100644 --- a/stylus/website/codemirror.styl +++ b/stylus/website/codemirror.styl @@ -16,6 +16,9 @@ .jwt-playground .input &.error background pink + &.warning + background #fff7c9 + margin: 0 .CodeMirror font-size 20px line-height 30px diff --git a/stylus/website/index.styl b/stylus/website/index.styl index f3942003..3eb2ff15 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -522,6 +522,9 @@ body .error .CodeMirror background-color #ffc0cb + .warning .CodeMirror + background-color #fff7c9 + .box-content height 0 overflow hidden @@ -536,6 +539,7 @@ body .input padding 10px + position relative +breakpoint("tablet") padding 20px // &[data-alg="HS256"] @@ -1191,3 +1195,26 @@ footer margin: 0; display: inline; } + +.editor-warning + position: absolute; + bottom: 0; + left: 0; + right: 0; + z-index: 1; + background: rgba(127,123,100,0.1) + margin: 0; + border-top: 1px solid rgba(155,155,155,0.5); + + &.hidden + display: none + + p + margin: 0 + + p + p + margin: 20px 0 0 + +.jwt-playground .algorithm-code .tab-content .input:hover + .editor-warning + display: none; diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index 0759b9ed..bda6e62e 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -43,7 +43,7 @@ describe('JWT', function() { const token = b64u.toBase64(tokens.hs256.token); jwt.isToken(token).should.be.false; - return jwt.verify(token, tokens.hs256.secret).should.eventually.be.false; + return jwt.verify(token, tokens.hs256.secret).should.eventually.include({validBase64: false}); }); describe('verifies valid tokens', function() { @@ -51,10 +51,10 @@ describe('JWT', function() { it(alg.toUpperCase(), function() { if(alg.indexOf('hs') !== -1) { return jwt.verify(tokens[alg].token, tokens[alg].secret) - .should.eventually.be.true; + .should.eventually.include({validSignature: true}); } else { return jwt.verify(tokens[alg].token, tokens[alg].publicKey) - .should.eventually.be.true; + .should.eventually.be.include({validSignature: true}); } }); }); @@ -97,7 +97,7 @@ describe('JWT', function() { return Promise.all(promises.map(p => p.then(v => !v, e => true))) .then(all => all.every(v => v)) .finally(() => log.enableAll()) - .should.eventually.be.true; + .should.eventually.include({validSignature: true}); }); it('signs/verifies tokens (HS256)', function() { @@ -118,7 +118,7 @@ describe('JWT', function() { decoded.header.should.deep.equal(header); decoded.payload.should.deep.equal(payload); - return jwt.verify(token, 'secret').should.eventually.be.true; + return jwt.verify(token, 'secret').should.eventually.include({validSignature: true}); }); }); @@ -141,7 +141,7 @@ describe('JWT', function() { decoded.payload.should.deep.equal(payload); return jwt.verify(token, tokens.rs256.publicKey) - .should.eventually.be.true; + .should.eventually.include({validSignature: true}); }); }); @@ -164,7 +164,7 @@ describe('JWT', function() { decoded.payload.should.deep.equal(payload); return jwt.verify(token, tokens.es256.publicKey) - .should.eventually.be.true; + .should.eventually.include({validSignature: true}); }); }); @@ -187,7 +187,7 @@ describe('JWT', function() { decoded.payload.should.deep.equal(payload); return jwt.verify(token, tokens.ps256.publicKey) - .should.eventually.be.true; + .should.eventually.include({validSignature: true}); }); }); @@ -200,7 +200,7 @@ describe('JWT', function() { }; return jwt.sign(header, payload, tokens.rs256.privateKey).then(token => { - return jwt.verify(token, publicKeyPlainRSA).should.eventually.be.true; + return jwt.verify(token, publicKeyPlainRSA).should.eventually.include({validSignature: true}); }); }); diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug index 93e3a32d..36637470 100644 --- a/views/token-editor-common.pug +++ b/views/token-editor-common.pug @@ -10,6 +10,7 @@ .tab-content #encoded-jwt.box-content.current .input.js-input + include token-editor-warnings.pug #decoded-jwt.box-content .output .jwt-explained.jwt-header diff --git a/views/token-editor-warnings.pug b/views/token-editor-warnings.pug new file mode 100644 index 00000000..6e635395 --- /dev/null +++ b/views/token-editor-warnings.pug @@ -0,0 +1 @@ +.editor-warning.warning.js-editor-warnings.hidden From cbc840b143ad125969ba09c3cc2f747328880215 Mon Sep 17 00:00:00 2001 From: Sambego Date: Fri, 23 Aug 2019 13:31:57 +0200 Subject: [PATCH 328/611] Fix unit tests --- test/unit/editor/jwt.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index bda6e62e..5af6542e 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -41,9 +41,8 @@ describe('JWT', function() { it('considers Base64 (not URL) encoded tokens invalid', function() { const token = b64u.toBase64(tokens.hs256.token); - jwt.isToken(token).should.be.false; - return jwt.verify(token, tokens.hs256.secret).should.eventually.include({validBase64: false}); + return jwt.verify(token, tokens.hs256.secret).should.eventually.include({validSignature: false}); }); describe('verifies valid tokens', function() { @@ -94,10 +93,10 @@ describe('JWT', function() { promises.push(jwt.verify(token3 + '.', 'whatever')); promises.push(jwt.verify(token3 + '.' + split[2], 'whatever')); - return Promise.all(promises.map(p => p.then(v => !v, e => true))) + return Promise.all(promises.map(p => p.then(v => !v.validSignature, e => true))) .then(all => all.every(v => v)) .finally(() => log.enableAll()) - .should.eventually.include({validSignature: true}); + .should.eventually.be.true; }); it('signs/verifies tokens (HS256)', function() { @@ -227,7 +226,7 @@ describe('JWT', function() { it('fails on invalid Base64 and Base64 URL strings', function() { data.forEach(d => { if(d.b64.match(/[\+\/=]/)) { - jwt.isValidBase64String(d.b64, true).should.be.false; + jwt.isValidBase64String(d.b64).should.be.false; } }); }); From 6a5579853d2884ed0f416fbc8feb1e2b3fa6a279 Mon Sep 17 00:00:00 2001 From: Sambego Date: Fri, 23 Aug 2019 14:01:54 +0200 Subject: [PATCH 329/611] Show library edDSA support when known --- README.md | 3 +- .../libraries/support/get-libs-data.js | 29 ++++++++++--------- .../libraries/support/language-schema.js | 4 +++ views/website/libraries/template.pug | 2 +- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 86b5919f..8a07450e 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,8 @@ Here's a commented example of the .NET language file (`0-.NET.json`). All fields "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": true }, // Author URL, can be GitHub profile, personal page diff --git a/views/website/libraries/support/get-libs-data.js b/views/website/libraries/support/get-libs-data.js index ad848ed9..bfbcc0e9 100644 --- a/views/website/libraries/support/get-libs-data.js +++ b/views/website/libraries/support/get-libs-data.js @@ -4,9 +4,9 @@ function getLibs() { const result = {}; Array.prototype.forEach.call(libraries, lib => { - try { + try { const uniqueClass = lib.classList.item(1); - + let image = lib.querySelector('img').src; image = image.substr(image.indexOf('/img')); @@ -22,7 +22,7 @@ function getLibs() { libs: [] }; } - + const r = {}; const minimumVersionElement = lib.querySelector('.version p'); @@ -31,14 +31,14 @@ function getLibs() { if(r.minimumVersion) { r.minimumVersion = r.minimumVersion.substr('Minimum Version '.length); } - + r.support = {}; const panelBodyChildren = lib.querySelector('.panel-body').children; - let orderedKeys = ['sign', 'verify', 'iss', + let orderedKeys = ['sign', 'verify', 'iss', 'sub', 'aud', 'exp', 'nbf', 'iat', 'jti']; - + for(let i = 0; i < orderedKeys.length; ++i) { r.support[orderedKeys[i]] = panelBodyChildren[0].children[i] @@ -47,10 +47,11 @@ function getLibs() { .contains('icon-budicon-500'); } - orderedKeys = ['hs256', 'hs384', 'hs512', + orderedKeys = ['hs256', 'hs384', 'hs512', 'rs256', 'rs384', 'rs512', - 'es256', 'es384', 'es512']; - + 'es256', 'es384', 'es512' + 'ps256', 'ps384', 'ps512', 'eddsa']; + for(let i = 0; i < orderedKeys.length; ++i) { r.support[orderedKeys[i]] = panelBodyChildren[1].children[i] @@ -61,21 +62,21 @@ function getLibs() { const maintainerA = lib.querySelector('.maintainer a'); if(maintainerA) { - r.authorUrl = lib.querySelector('.maintainer a').href; + r.authorUrl = lib.querySelector('.maintainer a').href; r.authorName = lib.querySelector('.maintainer a').textContent; } else { r.authorUrl = null; r.authorName = lib.querySelector('.maintainer').childNodes[1].textContent; } - + const spanStarsElement = lib.querySelector('.maintainer span'); - r.gitHubRepoPath = spanStarsElement ? + r.gitHubRepoPath = spanStarsElement ? lib.querySelector('.maintainer span').getAttribute('data-repo') : null; - + r.repoUrl = lib.querySelector('.repository a').href; r.installCommandHtml = lib.querySelector('.panel-footer code').innerHTML; - + result[langName].libs.push(r); } catch(e) { console.log(e); diff --git a/views/website/libraries/support/language-schema.js b/views/website/libraries/support/language-schema.js index 889ae949..52d579ec 100644 --- a/views/website/libraries/support/language-schema.js +++ b/views/website/libraries/support/language-schema.js @@ -82,6 +82,10 @@ module.exports = { es256: { type: 'boolean' }, es384: { type: 'boolean' }, es512: { type: 'boolean' }, + ps256: { type: 'boolean' }, + ps384: { type: 'boolean' }, + ps512: { type: 'boolean' }, + eddsa: { type: 'boolean' }, } } } diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index e0e429d3..568b9aa8 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -82,7 +82,7 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) i(class=lib.support.ps512 ? 'icon-budicon-500' : (lib.support.ps512 !== undefined ? 'icon-budicon-501' : 'icon-unknown')) | PS512 p - i(class=lib.support.edDSA ? 'icon-budicon-500' : (lib.support.edDSA !== undefined ? 'icon-budicon-501' : 'icon-unknown')) + i(class=lib.support.edDSA ? 'icon-budicon-500' : (lib.support.eddsa !== undefined ? 'icon-budicon-501' : 'icon-unknown')) | EdDSA .author-info From 97df68b649071d73d78be4f9a1b628c3f4a9b450 Mon Sep 17 00:00:00 2001 From: Sambego Date: Fri, 23 Aug 2019 14:06:57 +0200 Subject: [PATCH 330/611] Fix unkown icon margin --- stylus/website/index.styl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 3eb2ff15..765be031 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1180,7 +1180,7 @@ footer display: inline-block; width: 19px; height: 19px; - margin-top: -2px; + margin: 2px 0 7px; border: 1px solid #000; border-radius: 50%; text-align: center; From 2502848167264e9c986791bd212a9010a80d9049 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 23 Aug 2019 14:23:02 +0200 Subject: [PATCH 331/611] update @panva/jose with EdDSA support --- views/website/libraries/2-Node.js.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json index 3ee29448..88c8bc34 100644 --- a/views/website/libraries/2-Node.js.json +++ b/views/website/libraries/2-Node.js.json @@ -58,7 +58,8 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": true }, "authorUrl": "https://github.com/panva", "authorName": "Filip Skokan", From ce4b4edf3f6f0cfd672ddbc8ed3a092f024fe4d4 Mon Sep 17 00:00:00 2001 From: Sambego Date: Fri, 23 Aug 2019 14:25:10 +0200 Subject: [PATCH 332/611] Fix eddsa support indicator --- views/website/libraries/template.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index 568b9aa8..1fc80912 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -82,7 +82,7 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) i(class=lib.support.ps512 ? 'icon-budicon-500' : (lib.support.ps512 !== undefined ? 'icon-budicon-501' : 'icon-unknown')) | PS512 p - i(class=lib.support.edDSA ? 'icon-budicon-500' : (lib.support.eddsa !== undefined ? 'icon-budicon-501' : 'icon-unknown')) + i(class=lib.support.eddsa ? 'icon-budicon-500' : (lib.support.eddsa !== undefined ? 'icon-budicon-501' : 'icon-unknown')) | EdDSA .author-info From 9bb0b719a95e38567f7aa04bea42335aca9270b3 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 23 Aug 2019 14:25:10 +0200 Subject: [PATCH 333/611] update node-jsonwebtoken with EdDSA support --- views/website/libraries/2-Node.js.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json index 3ee29448..f3b23463 100644 --- a/views/website/libraries/2-Node.js.json +++ b/views/website/libraries/2-Node.js.json @@ -27,7 +27,8 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": false }, "authorUrl": "https://github.com/auth0", "authorName": "Auth0", From e69482707661330c53225996d53d9a9356186c2f Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 23 Aug 2019 14:25:44 +0200 Subject: [PATCH 334/611] update node-jose with EdDSA support --- views/website/libraries/4-JavaScript.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/4-JavaScript.json b/views/website/libraries/4-JavaScript.json index de69a760..f2abb58a 100644 --- a/views/website/libraries/4-JavaScript.json +++ b/views/website/libraries/4-JavaScript.json @@ -86,7 +86,8 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": false }, "authorUrl": "https://github.com/cisco", "authorName": "Cisco Systems", From 90f22771c07fa25efff20866ae890bc8cb789a27 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Fri, 23 Aug 2019 13:10:13 -0400 Subject: [PATCH 335/611] Fix EdDSA indicator for jwcrypto --- views/website/libraries/1-Python.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/1-Python.json b/views/website/libraries/1-Python.json index 8eb06543..f0de596c 100644 --- a/views/website/libraries/1-Python.json +++ b/views/website/libraries/1-Python.json @@ -90,7 +90,7 @@ "ps256": true, "ps384": true, "ps512": true, - "edDSA": true + "eddsa": true }, "authorUrl": "https://github.com/simo5", "authorName": "Simo Sorce", From b7eb22c5348f81337cb5020ad9bfe2a4f96cb189 Mon Sep 17 00:00:00 2001 From: Florent Morselli Date: Fri, 23 Aug 2019 19:35:45 +0200 Subject: [PATCH 336/611] EdDSA support for web-token/jwt-framework --- views/website/libraries/24-PHP.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index ef36d46a..c6a4508a 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -182,7 +182,8 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": true, }, "authorUrl": "https://github.com/Spomky", "authorName": "Spomky", From 9fd88c5cb7262b5b85ea04c51670e880b2b2fc0a Mon Sep 17 00:00:00 2001 From: Florent Morselli Date: Fri, 23 Aug 2019 19:48:38 +0200 Subject: [PATCH 337/611] Typo --- views/website/libraries/24-PHP.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index c6a4508a..bd4e4766 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -183,7 +183,7 @@ "ps256": true, "ps384": true, "ps512": true, - "eddsa": true, + "eddsa": true }, "authorUrl": "https://github.com/Spomky", "authorName": "Spomky", From 91585e2609641b261e3d6558c2d3329336b0f65c Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 27 Aug 2019 11:21:50 +0200 Subject: [PATCH 338/611] Debounce all tracking events --- src/editor/index.js | 7 +++---- src/metrics.js | 6 ++++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/editor/index.js b/src/editor/index.js index 3d432758..2c2854af 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -41,7 +41,6 @@ import { } from "../dom-elements.js"; import log from "loglevel"; -import _ from "lodash"; // The event manager lets us enable/disable events as needed without // manually tracking them. Events that need to be disabled should be @@ -439,18 +438,18 @@ function setupEvents() { eventManager.addCodeMirrorEvent( tokenEditor, "change", - _.throttle(decodeToken, 1000) + decodeToken ); // When parts of the decoded token are changed, it must be reencoded. eventManager.addCodeMirrorEvent( headerEditor, "change", - _.throttle(encodeToken, 1000) + encodeToken ); eventManager.addCodeMirrorEvent( payloadEditor, "change", - _.throttle(encodeToken, 1000) + encodeToken ); // HMAC secret, show tooltip if secret is too short. diff --git a/src/metrics.js b/src/metrics.js index a7b931b5..c5a38ee8 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -1,4 +1,6 @@ import log from "loglevel"; +import _ from "lodash"; + export function init() { // Create a queue, but don't obliterate an existing one! @@ -119,7 +121,7 @@ export function init() { analytics.page(); } -export function track(event, data) { +export const track = _.debounce((event, data) => { if (window.metrics) { try { window.metrics.track(event, data); @@ -127,4 +129,4 @@ export function track(event, data) { log.error(`Metrics library error for event ${event}: ${e}`); } } -} +}, 2000); From 6df9a0a1018f404047f0ed27b262c34735079a93 Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 27 Aug 2019 11:31:14 +0200 Subject: [PATCH 339/611] Only import debounce function from lodash instead of the whole lib --- package-lock.json | 46 ++++++++++++++++------------------------------ package.json | 2 ++ src/metrics.js | 6 +++--- 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4a9ed317..3ac6d0e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2972,8 +2972,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -2994,14 +2993,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3016,20 +3013,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -3146,8 +3140,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -3159,7 +3152,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3174,7 +3166,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3182,14 +3173,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3208,7 +3197,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -3289,8 +3277,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -3302,7 +3289,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -3388,8 +3374,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -3425,7 +3410,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3445,7 +3429,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3489,14 +3472,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -8302,6 +8283,11 @@ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, "lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", diff --git a/package.json b/package.json index 9d87f8e2..67adbfca 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "dependencies": { "express": "^4.17.1", "express-sslify": "^1.2.0", + "lodash.debounce": "^4.0.8", "querystring": "^0.2.0" }, "devEngines": { @@ -70,6 +71,7 @@ "scripts": { "start": "node server.js", "test": "grunt test", + "test:unit": "grunt unit-tests", "build": "grunt build-website" }, "heroku-run-build-script": true diff --git a/src/metrics.js b/src/metrics.js index c5a38ee8..e1f68cf1 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -1,5 +1,5 @@ import log from "loglevel"; -import _ from "lodash"; +import debounce from 'lodash.debounce'; export function init() { @@ -121,7 +121,7 @@ export function init() { analytics.page(); } -export const track = _.debounce((event, data) => { +export const track = debounce((event, data) => { if (window.metrics) { try { window.metrics.track(event, data); @@ -129,4 +129,4 @@ export const track = _.debounce((event, data) => { log.error(`Metrics library error for event ${event}: ${e}`); } } -}, 2000); +}, 1000); From 868a1811bd0e6d88bb0dcd7a15dbc0d70815ee2c Mon Sep 17 00:00:00 2001 From: "Pascal S. de Kloe" Date: Wed, 28 Aug 2019 02:43:49 +0200 Subject: [PATCH 340/611] EdDSA support on github.com/pascaldekloe/jwt. --- views/website/libraries/9-Go.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index cc1b1ce8..17ebd87c 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -303,7 +303,8 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": true }, "authorUrl": "https://github.com/pascaldekloe", "authorName": "Pascal de Kloe", From 81575839b011289d98c5a1698606954f51fdc687 Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Thu, 29 Aug 2019 19:23:59 +0200 Subject: [PATCH 341/611] FIx broken ask link in the navigation --- views/website/index.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/index.pug b/views/website/index.pug index bec27d75..7ea1e2d3 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -15,7 +15,7 @@ block content a(href='#debugger-io').scrollto Debugger a(href='#libraries-io').scrollto Libraries a(href='http://github.com/introduction') Introduction - a(href='https://auth0.com/forum/c/jwt', target='_blank') Ask + a(href='https://community.auth0.com/c/identity/jwt', target='_blank') Ask a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! .social From 577189cf3c8a61d6446c6034809e984576967ad7 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Tue, 1 Oct 2019 17:21:51 +0200 Subject: [PATCH 342/611] Update 2-Node.js.json --- views/website/libraries/2-Node.js.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json index a3078bbe..757a2f47 100644 --- a/views/website/libraries/2-Node.js.json +++ b/views/website/libraries/2-Node.js.json @@ -66,7 +66,7 @@ "authorName": "Filip Skokan", "gitHubRepoPath": "panva/jose", "repoUrl": "https://github.com/panva/jose", - "installCommandHtml": "npm install @panva/jose" + "installCommandHtml": "npm install jose" } ] } From b362ab19a9f37e337b5f8ea38987aa680aa6e0a9 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 7 Oct 2019 16:29:56 +0200 Subject: [PATCH 343/611] Remove metrics --- src/editor/index.js | 59 ------------- src/editor/utils.js | 2 - src/metrics.js | 132 ------------------------------ src/share-button.js | 3 - src/website/index.js | 22 ----- src/website/introduction/index.js | 6 -- src/website/libraries.js | 31 ------- 7 files changed, 255 deletions(-) delete mode 100644 src/metrics.js diff --git a/src/editor/index.js b/src/editor/index.js index 2c2854af..fda4c6d7 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -18,7 +18,6 @@ import { minSecretLengthCheck, setupSecretLengthTooltip } from "./secret-length-tooltip.js"; -import * as metrics from "../metrics.js"; import { algorithmSelect, signatureStatusElement, @@ -47,23 +46,6 @@ import log from "loglevel"; // passed to the event manager. const eventManager = new EventManager(); -function trackToken(jwt, operation, extra) { - const tokenInfo = getSafeTokenInfo(jwt); - - metrics.track( - "editor-jwt-tracked", - Object.assign( - { - operation: operation, - tokenInfo: tokenInfo - }, - extra - ) - ); - - return tokenInfo.hash; -} - function isSharedSecretAlgorithm(algorithm) { return algorithm && algorithm.indexOf("HS") === 0; } @@ -198,8 +180,6 @@ function setAlgorithmInHeader(algorithm) { function algorithmChangeHandler() { const algorithm = getSelectedAlgorithm(); - metrics.track("editor-algorithm-selected", { algorithm: algorithm }); - displaySecretOrKeys(algorithm); if (isDefaultToken(getTrimmedValue(tokenEditor))) { @@ -277,9 +257,6 @@ function encodeToken() { .then(encoded => { eventManager.withDisabledEvents(() => { tokenEditor.setValue(encoded); - trackToken(encoded, "encode", { - secretBase64Checkbox: secretBase64Checkbox.checked - }); }); }) .catch(e => { @@ -288,7 +265,6 @@ function encodeToken() { markAsInvalid(); tokenEditor.setValue(""); }); - metrics.track("editor-encoding-error"); }) .finally(() => { verifyToken(); @@ -304,15 +280,9 @@ function decodeToken() { const jwt = getTrimmedValue(tokenEditor); const decoded = decode(jwt); - const tokenHash = trackToken(jwt, "decode"); - selectAlgorithm(decoded.header.alg); if (isPublicKeyAlgorithm(decoded.header.alg)) { downloadPublicKeyIfPossible(decoded).then(publicKey => { - metrics.track("editor-jwt-public-key-downloaded", { - tokenHash: tokenHash - }); - eventManager.withDisabledEvents(() => { publicKeyTextArea.value = publicKey; verifyToken(); @@ -325,10 +295,6 @@ function decodeToken() { if (decoded.errors) { markAsInvalidWithElement(editorElement, false); - metrics.track("editor-jwt-invalid", { - reason: `partial decode`, - tokenHash: tokenHash - }); } else { if (decoded.warnings && decoded.warnings.length > 0) { showEditorWarnings(decoded.warnings); @@ -341,11 +307,6 @@ function decodeToken() { } } catch (e) { log.warn("Failed to decode token: ", e); - - metrics.track("editor-jwt-invalid", { - reason: `failed to decode token`, - tokenHash: trackToken(jwt) - }); } }); } @@ -354,14 +315,8 @@ function verifyToken() { const jwt = getTrimmedValue(tokenEditor); const decoded = decode(jwt); - const tokenHash = trackToken(jwt, "verify"); - if (!decoded.header.alg || decoded.header.alg === "none") { markAsInvalid(); - metrics.track("editor-jwt-invalid", { - reason: `header.alg value is ${decoded.header.alg}`, - tokenHash: tokenHash - }); return; } @@ -373,25 +328,11 @@ function verifyToken() { if (result.validSignature) { if (!result.validBase64) { markJWTAsInvalid(); - metrics.track("editor-jwt-invalid", { - reason: "invalid base64", - tokenHash: tokenHash, - secretBase64Checkbox: secretBase64Checkbox.checked - }); } else { markAsValid(); - metrics.track("editor-jwt-verified", { - tokenHash: tokenHash, - secretBase64Checkbox: secretBase64Checkbox.checked - }); } } else { markAsInvalid(); - metrics.track("editor-jwt-invalid", { - reason: "invalid signature", - tokenHash: tokenHash, - secretBase64Checkbox: secretBase64Checkbox.checked - }); } }); } diff --git a/src/editor/utils.js b/src/editor/utils.js index fbaaaf3f..e944ac14 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -1,5 +1,4 @@ import { isWideScreen } from '../utils.js'; -import * as metrics from '../metrics.js'; import * as jwt from './jwt.js'; import registeredClaims from './jwt-iana-registered-claims.js'; import forge from 'node-forge'; @@ -46,7 +45,6 @@ export function disableUnsupportedAlgorithms() { // TODO: test supported algorithms in runtime if(isSafari()) { algorithmEs512.disabled = true; - metrics.track('editor-disabled-es512-safari'); } } diff --git a/src/metrics.js b/src/metrics.js deleted file mode 100644 index e1f68cf1..00000000 --- a/src/metrics.js +++ /dev/null @@ -1,132 +0,0 @@ -import log from "loglevel"; -import debounce from 'lodash.debounce'; - - -export function init() { - // Create a queue, but don't obliterate an existing one! - var analytics = (window.metrics = window.metrics || []); - - // If the real analytics.js is already on the page return. - if (analytics.initialize) return; - - // If the snippet was invoked already show an error. - if (analytics.invoked) { - if (window.console && console.error) { - console.error("Segment snippet included twice."); - } - return; - } - - // Invoked flag, to make sure the snippet - // is never invoked twice. - analytics.invoked = true; - - // A list of the methods in Auth0-metrics to stub. - analytics.methods = [ - "trackSubmit", - "trackClick", - "trackLink", - "trackForm", - "pageview", - "identify", - "reset", - "group", - "track", - "ready", - "alias", - "debug", - "page", - "once", - "off", - "on" - ]; - - // Define a factory to create stubs. These are placeholders - // for methods in Auth0-metrics so that you never have to wait - // for it to load to actually record data. The `method` is - // stored as the first argument, so we can replay the data. - analytics.factory = function(method) { - return function() { - var args = Array.prototype.slice.call(arguments); - args.unshift(method); - analytics.push(args); - return analytics; - }; - }; - - // For each of our methods, generate a queueing stub. - for (var i = 0; i < analytics.methods.length; i++) { - var key = analytics.methods[i]; - analytics[key] = analytics.factory(key); - } - - // Define a method to load Auth0-metrics from our CDN, - // and that will be sure to only ever load it once. - analytics.load = function() { - // Create an async script element based on your key. - var script = document.createElement("script"); - script.type = "text/javascript"; - script.async = true; - script.src = - "https://cdn.auth0.com/website/js/m/1.6.2/auth0-metrics.min.js"; - - script.onerror = function() { - console.error("No metrics"); - }; - - script.onload = function() { - // Grab analytics and make it private - window.metrics = new Auth0Metrics( - "", - "https://dwh-tracking.it.auth0.com/external-metrics", - "jwt.io", - { - removeQueryParam: [ - { - key: "value", - value: "[a-z0-9._~-]+" - }, - { - key: "id_token", - value: "[a-z0-9._~-]+" - }, - { - key: "access_token", - value: "[a-z0-9._~-]+" - }, - { - key: "token", - value: "[a-z0-9._~-]+" - } - ] - } - ); - }; - - // Insert our script next to the first script element. - var first = document.getElementsByTagName("script")[0]; - first.parentNode.insertBefore(script, first); - }; - - // Add a version to keep track of what's in the wild. - analytics.SNIPPET_VERSION = "4.1.0"; - - // Load Auth0-metrics with your key, which will automatically - // load the tools you've enabled for your account. Boosh! - analytics.load(); - - // Make the first page call to load the integrations. If - // you'd like to manually name or tag the page, edit or - // move this call however you'd like. - analytics.page(); -} - -export const track = debounce((event, data) => { - if (window.metrics) { - try { - window.metrics.track(event, data); - } catch (e) { - log.error(`Metrics library error for event ${event}: ${e}`); - } - } -}, 1000); diff --git a/src/share-button.js b/src/share-button.js index 1f65f312..bd1b5328 100644 --- a/src/share-button.js +++ b/src/share-button.js @@ -1,6 +1,5 @@ import { copyTokenLink } from './utils.js'; import { getTokenEditorValue } from './editor'; -import * as metrics from './metrics.js'; import strings from './strings.js'; @@ -8,8 +7,6 @@ export function setupShareJwtButton(shareJwtElement, shareJwtTextElement) { shareJwtElement.addEventListener('click', event => { event.preventDefault(); - metrics.track('editor-share-button-clicked'); - const value = getTokenEditorValue(); if(value.token) { // If the selected algorithm does not use public keys, publicKey will be diff --git a/src/website/index.js b/src/website/index.js index 66ae0505..439dd0b3 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -1,4 +1,3 @@ -import * as metrics from "../metrics.js"; import { setupNavbar } from "./navbar.js"; import { setupExtensionButton } from "./extension.js"; import { setupLibraries } from "./libraries.js"; @@ -37,10 +36,7 @@ function parseLocationQuery() { const token = locSearch[key] || locHash[key]; if (token) { - metrics.track("token-in-url", { type: key }); - if (locSearch.publicKey || locHash.publicKey) { - metrics.track("pubkey-in-url"); publicKeyTextArea.value = locSearch.publicKey || locHash.publicKey; } @@ -55,31 +51,13 @@ function parseLocationQuery() { function pickEbookOrExtensionBanner() { if ((isChrome() || isFirefox()) && Math.random() >= 0.5) { - metrics.track("extension-banner-shown"); extensionSection.style.display = "block"; } else { - metrics.track("ebook-banner-shown"); ebookSection.style.display = "block"; } } -function setupMetrics() { - metrics.init(); - - // Section visible metrics - window.addEventListener("scroll", e => { - if (isPartiallyInViewport(librariesElement)) { - once("libraries-visible", () => metrics.track("libraries-visible-once")); - } - - if (isPartiallyInViewport(debuggerSection)) { - once("editor-visible", () => metrics.track("editor-visible-once")); - } - }); -} - // Initialization -setupMetrics(); setupNavbar(); setupExtensionButton(); setupSmoothScrolling(); diff --git a/src/website/introduction/index.js b/src/website/introduction/index.js index c41bde5e..2645aba5 100644 --- a/src/website/introduction/index.js +++ b/src/website/introduction/index.js @@ -1,12 +1,6 @@ import { setupHighlighting } from "../highlighting.js"; import { setupJwtCounter } from "../counter.js"; -import * as metrics from "../../metrics.js"; - -function setupMetrics() { - metrics.init(); -} // Initialization -setupMetrics(); setupHighlighting(); setupJwtCounter(); diff --git a/src/website/libraries.js b/src/website/libraries.js index 78865482..eeb9e3b8 100644 --- a/src/website/libraries.js +++ b/src/website/libraries.js @@ -1,6 +1,5 @@ import { safeLocalStorageSetItem } from '../utils.js'; import { httpGet } from '../utils.js'; -import * as metrics from '../metrics.js'; import { starsElements, librariesElement, @@ -78,40 +77,10 @@ function getStarsForGitHubRepos() { }); } -function setupMetrics() { - const tracked = [{ - selector: '.version p a', - event: 'libraries-jwt-vulns-link-clicked' - }, { - selector: '.maintainer a', - event: 'libraries-maintainer-link-clicked' - }, { - selector: '.repository a', - event: 'libraries-repository-link-clicked' - }]; - - tracked.forEach(t => { - const els = document.querySelectorAll(t.selector); - Array.prototype.forEach.call(els, el => { - el.addEventListener('click', () => { - metrics.track(t.event, { - id: el.dataset.metricsLibId - }); - }); - }); - }); -} - export function setupLibraries() { getStarsForGitHubRepos(); - setupMetrics(); - librariesSelect.addEventListener('change', event => { - metrics.track('libraries-filter-selected', { - selected: event.target.value - }); - librariesGrid.arrange({ filter: event.target.value }); From 8192704891887be1d69b62d2ce08186d2458bb51 Mon Sep 17 00:00:00 2001 From: Artur Troian Date: Thu, 17 Oct 2019 11:36:04 +0300 Subject: [PATCH 344/611] feat: add PSS support for github.com/troian/josepp Signed-off-by: Artur Troian --- views/website/libraries/21-C++.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/21-C++.json b/views/website/libraries/21-C++.json index 8550a81c..45660c59 100644 --- a/views/website/libraries/21-C++.json +++ b/views/website/libraries/21-C++.json @@ -25,9 +25,9 @@ "es256": true, "es384": true, "es512": true, - "ps256": false, - "ps384": false, - "ps512": false + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/troian", "authorName": "Artur Troian", From 5ceac1a1fca3127e37eaa8f6596e04cd2a087175 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 17 Oct 2019 13:50:14 +0200 Subject: [PATCH 345/611] Add ebook banner variation --- .gitignore | 4 ++- Gruntfile.js | 33 ++++++++++---------- img/website/ebook.png | Bin 0 -> 107722 bytes stylus/website/index.styl | 33 ++++++++++++++++++++ views/website/ebook-image.pug | 6 ++++ views/website/ebook.pug | 2 +- views/website/home.pug | 55 ++++++++++++++++++++++++++++++++++ 7 files changed, 115 insertions(+), 18 deletions(-) create mode 100644 img/website/ebook.png create mode 100644 views/website/ebook-image.pug create mode 100644 views/website/home.pug diff --git a/.gitignore b/.gitignore index 9871fe48..fee5fda1 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ dist .tmp .DS_Store npm-debug.log - +.dockerignore +Dockerfile +yarn.lock diff --git a/Gruntfile.js b/Gruntfile.js index 401478fe..87c68214 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -72,25 +72,25 @@ module.exports = grunt => { dest: 'dist/extension/css/' }] } - }, + }, crx: { pack: { src: "dist/extension/**/*", - dest: 'dist/chrome-jwt-debugger-extension-v' + + dest: 'dist/chrome-jwt-debugger-extension-v' + `${extensionManifest.version}.zip` } }, exec: { firefoxExtensionPack: { - command: 'node_modules/web-ext/bin/web-ext build ' + - '--source-dir=dist/extension --artifacts-dir=dist ' + + command: 'node_modules/web-ext/bin/web-ext build ' + + '--source-dir=dist/extension --artifacts-dir=dist ' + '--overwrite-dest' }, renameFirefoxExtension: { - command: `mv dist/jwt_debugger-${extensionManifest.version}.zip ` + - 'dist/firefox-jwt-debugger-extension-' + + command: `mv dist/jwt_debugger-${extensionManifest.version}.zip ` + + 'dist/firefox-jwt-debugger-extension-' + `v${extensionManifest.version}.zip` } }, @@ -118,13 +118,14 @@ module.exports = grunt => { }, files: { 'dist/website/index.html': 'views/website/index.pug', - 'dist/website/introduction/index.html': + 'dist/website/home/index.html': 'views/website/home.pug', + 'dist/website/introduction/index.html': 'views/website/introduction.pug' } }, extension: { files: { - 'dist/extension/index.html': 'views/extension/index.pug' + 'dist/extension/index.html': 'views/extension/index.pug' } } }, @@ -201,7 +202,7 @@ module.exports = grunt => { // Higher default timeout to account for some animations timeout: 10000 }, - src: ['test/functional/**.js'] + src: ['test/functional/**.js'] } }, @@ -248,30 +249,30 @@ module.exports = grunt => { 'exec:firefoxExtensionPack', 'exec:renameFirefoxExtension' ]); - + grunt.registerTask('build-extension-dev', [ 'clean:extension', - 'copy:extension', + 'copy:extension', 'build-extension-views', 'webpack:extensionDev' ]); - + grunt.registerTask('build', ['build-website', 'build-extension']); - + grunt.registerTask('build-dev', [ 'build-website-dev', 'build-extension-dev' ]); grunt.registerTask('unit-tests', ['webpack:unitTests', 'mochaTest:unit']); - + grunt.registerTask('functional-tests', [ 'build-website-dev', - 'connect:website', + 'connect:website', 'mochaTest:functional' ]); grunt.registerTask('test', ['unit-tests', 'functional-tests']); - + grunt.registerTask('default', ['build-dev', 'connect:website', 'watch']); }; diff --git a/img/website/ebook.png b/img/website/ebook.png new file mode 100644 index 0000000000000000000000000000000000000000..e176e43f6f84bad64ec29534c6fb3e06eba4e8df GIT binary patch literal 107722 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%0A_Osr{i;&@zSbWht~O@SwE)nQy5$Lc6Zn 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 z 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 literal 0 HcmV?d00001 diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 765be031..d2a1e4b6 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -423,6 +423,39 @@ body text-align: center; text-decoration: none; +.jwt-ebook-banner-image + position: relative; + padding: 45px 0 235px; + background: #E3E5E7 url('http://github.com/img/ebook.png') 100% 100% no-repeat; + + p + margin-top: 0; + + .btn-download-ebook + display: block; + + &::after + content: ''; + position: absolute + bottom: 202px; + left: 0; + right: 0; + width: 100%; + height: 35px; + background: linear-gradient(rgba(227, 229, 231,1), rgba(227, 229, 231,0)); + + + @media (min-width: 768px) + height: 235px; + padding: 65px 0; + text-align: left; + + .btn-download-ebook + display: inline-block; + + &::after + display: none; + // debugger-jwt .jwt-select diff --git a/views/website/ebook-image.pug b/views/website/ebook-image.pug new file mode 100644 index 00000000..c66c1d75 --- /dev/null +++ b/views/website/ebook-image.pug @@ -0,0 +1,6 @@ +section.jtw-ebook-banner.jwt-ebook-banner-image + .container + p + strong Get the JWT Handbook for free! + |  Download it now and get up-to-speed faster. + a.btn.btn-download-ebook(href='https://auth0.com/resources/ebooks/jwt-handbook?utm_source=jwtio&utm_medium=variation&utm_campaign=gc_jwt_test_10_2019', target='_blank') Download Ebook diff --git a/views/website/ebook.pug b/views/website/ebook.pug index 20950f54..ebddf537 100644 --- a/views/website/ebook.pug +++ b/views/website/ebook.pug @@ -2,4 +2,4 @@ section.jtw-ebook-banner span strong Get the JWT Handbook for free! |  Spread the word and download it now. - a.btn.btn-download-ebook(href='https://auth0.com/resources/ebooks/jwt-handbook?utm_source=jwtio&utm_medium=sc&utm_campaign=rotating_banner', target='_blank') Download Ebook + a.btn.btn-download-ebook(href='https://auth0.com/resources/ebooks/jwt-handbook?utm_source=jwtio&utm_medium=control&utm_campaign=gc_jwt_test_10_2019', target='_blank') Download Ebook diff --git a/views/website/home.pug b/views/website/home.pug new file mode 100644 index 00000000..ce096b7b --- /dev/null +++ b/views/website/home.pug @@ -0,0 +1,55 @@ +extends layout + +block content + nav.navbar.closed + .container + .top-mobile + .menu-trigger + span + + a.brand(href='http://github.com/') + img(src='http://github.com/img/pic_logo.svg').icon + img(src='http://github.com/img/logo.svg').logo + + nav.menu + a(href='#debugger-io').scrollto Debugger + a(href='#libraries-io').scrollto Libraries + a(href='http://github.com/introduction') Introduction + a(href='https://community.auth0.com/c/identity/jwt', target='_blank') Ask + a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! + + .social + a.a0(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target='_blank') + span.by-text Crafted by + img(src='http://github.com/img/pic_logo_ft.svg', alt='Token Based Authentication') + + a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") + | Supported by + img(src='http://github.com/img/ico_logo.svg', alt='Token Based Authentication') + + section.banner-jwt + .container + a.logo(href='http://github.com/') + img(src='http://github.com/img/pic_logo.svg', alt='Token Based Authentication') + + p + | JSON Web Tokens are an open, industry standard  + a(href='https://tools.ietf.org/html/rfc7519', target='_blank') RFC 7519 + | method for representing claims securely between two parties. + p JWT.IO allows you to decode, verify and generate JWT. + + a.btn.btn-lg(href="http://github.com/introduction") Learn more about jwt + + include extension.pug + + include ebook-image.pug + + include token-editor.pug + + include libraries.pug + + include assets.pug + + include counter.pug + + script(src='http://github.com/js/index.js') From 341b4b02028004324f1bed50f5b96537eb986373 Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 22 Oct 2019 12:32:25 +0200 Subject: [PATCH 346/611] Update jwt version B banner --- stylus/website/index.styl | 8 ++++++-- views/website/ebook-image.pug | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index d2a1e4b6..9e120e4f 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -425,7 +425,9 @@ body .jwt-ebook-banner-image position: relative; - padding: 45px 0 235px; + padding: 45px 45px 235px; + margin-left: -15px; + margin-right: -15px; background: #E3E5E7 url('http://github.com/img/ebook.png') 100% 100% no-repeat; p @@ -447,7 +449,9 @@ body @media (min-width: 768px) height: 235px; - padding: 65px 0; + margin-top: 70px + padding: 65px 235px 65px 65px; + box-shadow: 0 10px 20px 0 rgba(0,0,0,0.25) text-align: left; .btn-download-ebook diff --git a/views/website/ebook-image.pug b/views/website/ebook-image.pug index c66c1d75..213d6db3 100644 --- a/views/website/ebook-image.pug +++ b/views/website/ebook-image.pug @@ -1,5 +1,5 @@ -section.jtw-ebook-banner.jwt-ebook-banner-image - .container +section.container + .jtw-ebook-banner.jwt-ebook-banner-image p strong Get the JWT Handbook for free! |  Download it now and get up-to-speed faster. From 4ce333206f638cf679b04ed097f18643ca1e56f9 Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 30 Oct 2019 08:19:34 +0100 Subject: [PATCH 347/611] Stop AB test --- Gruntfile.js | 1 - server.js | 7 ++++- views/website/ebook-image.pug | 6 ---- views/website/ebook.pug | 11 +++---- views/website/home.pug | 55 ----------------------------------- 5 files changed, 12 insertions(+), 68 deletions(-) delete mode 100644 views/website/ebook-image.pug delete mode 100644 views/website/home.pug diff --git a/Gruntfile.js b/Gruntfile.js index 87c68214..3c2de48a 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -118,7 +118,6 @@ module.exports = grunt => { }, files: { 'dist/website/index.html': 'views/website/index.pug', - 'dist/website/home/index.html': 'views/website/home.pug', 'dist/website/introduction/index.html': 'views/website/introduction.pug' } diff --git a/server.js b/server.js index a8406200..8bc4e4fa 100644 --- a/server.js +++ b/server.js @@ -4,7 +4,7 @@ const enforce = require('express-sslify'); const app = express(); if(process.env.NODE_ENV === 'production') { - console.log('Redirecting to TLS endpoint.'); + console.log('Redirecting to TLS endpoint.'); app.use(enforce.HTTPS({ // Required for proper use under a reverse proxy (Heroku, etc.). trustProtoHeader: true @@ -13,6 +13,11 @@ if(process.env.NODE_ENV === 'production') { app.use('/', express.static('dist/website')); +// Fallback for the homepage JWT handbook CTA A/B experiment we ran +app.get('/home', function (req, res) { + res.redirect('/'); +}); + app.listen(process.env.PORT || 3000, function() { console.log('Started.'); }); diff --git a/views/website/ebook-image.pug b/views/website/ebook-image.pug deleted file mode 100644 index 213d6db3..00000000 --- a/views/website/ebook-image.pug +++ /dev/null @@ -1,6 +0,0 @@ -section.container - .jtw-ebook-banner.jwt-ebook-banner-image - p - strong Get the JWT Handbook for free! - |  Download it now and get up-to-speed faster. - a.btn.btn-download-ebook(href='https://auth0.com/resources/ebooks/jwt-handbook?utm_source=jwtio&utm_medium=variation&utm_campaign=gc_jwt_test_10_2019', target='_blank') Download Ebook diff --git a/views/website/ebook.pug b/views/website/ebook.pug index ebddf537..213d6db3 100644 --- a/views/website/ebook.pug +++ b/views/website/ebook.pug @@ -1,5 +1,6 @@ -section.jtw-ebook-banner - span - strong Get the JWT Handbook for free! - |  Spread the word and download it now. - a.btn.btn-download-ebook(href='https://auth0.com/resources/ebooks/jwt-handbook?utm_source=jwtio&utm_medium=control&utm_campaign=gc_jwt_test_10_2019', target='_blank') Download Ebook +section.container + .jtw-ebook-banner.jwt-ebook-banner-image + p + strong Get the JWT Handbook for free! + |  Download it now and get up-to-speed faster. + a.btn.btn-download-ebook(href='https://auth0.com/resources/ebooks/jwt-handbook?utm_source=jwtio&utm_medium=variation&utm_campaign=gc_jwt_test_10_2019', target='_blank') Download Ebook diff --git a/views/website/home.pug b/views/website/home.pug deleted file mode 100644 index ce096b7b..00000000 --- a/views/website/home.pug +++ /dev/null @@ -1,55 +0,0 @@ -extends layout - -block content - nav.navbar.closed - .container - .top-mobile - .menu-trigger - span - - a.brand(href='http://github.com/') - img(src='http://github.com/img/pic_logo.svg').icon - img(src='http://github.com/img/logo.svg').logo - - nav.menu - a(href='#debugger-io').scrollto Debugger - a(href='#libraries-io').scrollto Libraries - a(href='http://github.com/introduction') Introduction - a(href='https://community.auth0.com/c/identity/jwt', target='_blank') Ask - a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! - - .social - a.a0(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target='_blank') - span.by-text Crafted by - img(src='http://github.com/img/pic_logo_ft.svg', alt='Token Based Authentication') - - a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") - | Supported by - img(src='http://github.com/img/ico_logo.svg', alt='Token Based Authentication') - - section.banner-jwt - .container - a.logo(href='http://github.com/') - img(src='http://github.com/img/pic_logo.svg', alt='Token Based Authentication') - - p - | JSON Web Tokens are an open, industry standard  - a(href='https://tools.ietf.org/html/rfc7519', target='_blank') RFC 7519 - | method for representing claims securely between two parties. - p JWT.IO allows you to decode, verify and generate JWT. - - a.btn.btn-lg(href="http://github.com/introduction") Learn more about jwt - - include extension.pug - - include ebook-image.pug - - include token-editor.pug - - include libraries.pug - - include assets.pug - - include counter.pug - - script(src='http://github.com/js/index.js') From 941cf4631dfcf4ab59f8e32abef6c32fb400e5e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2019 07:21:04 +0000 Subject: [PATCH 348/611] Bump lodash from 4.17.11 to 4.17.13 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.11 to 4.17.13. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.11...4.17.13) Signed-off-by: dependabot[bot] --- package-lock.json | 47 +++++++++++++++++++++++++++++++++-------------- package.json | 2 +- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ac6d0e1..72d90fbb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2972,7 +2972,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2993,12 +2994,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3013,17 +3016,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3140,7 +3146,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3152,6 +3159,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3166,6 +3174,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3173,12 +3182,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3197,6 +3208,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3277,7 +3289,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3289,6 +3302,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3374,7 +3388,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3410,6 +3425,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3429,6 +3445,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3472,12 +3489,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -8254,9 +8273,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-vm3/XWXfWtRua0FkUyEHBZy8kCPjErNBT9fJx8Zvs+U6zjqPbTUOpkaoum3O5uiA8sm+yNMHXfYkTUHFoMxFNA==", "dev": true }, "lodash.assign": { diff --git a/package.json b/package.json index 67adbfca..17b078b7 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "isotope-layout": "^3.0.6", "jquery": "^3.4.1", "jstransformer-markdown-it": "^2.1.0", - "lodash": "^4.17.11", + "lodash": "^4.17.13", "loglevel": "^1.6.2", "mocha": "^5.2.0", "node-jose": "^1.1.3", From 2e75f89081509cfe530f5fd24aaaf8ac98f0a41e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2019 07:21:17 +0000 Subject: [PATCH 349/611] Bump morgan from 1.9.0 to 1.9.1 Bumps [morgan](https://github.com/expressjs/morgan) from 1.9.0 to 1.9.1. - [Release notes](https://github.com/expressjs/morgan/releases) - [Changelog](https://github.com/expressjs/morgan/blob/master/HISTORY.md) - [Commits](https://github.com/expressjs/morgan/compare/1.9.0...1.9.1) Signed-off-by: dependabot[bot] --- package-lock.json | 49 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ac6d0e1..eef6f0f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2972,7 +2972,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2993,12 +2994,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3013,17 +3016,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3140,7 +3146,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3152,6 +3159,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3166,6 +3174,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3173,12 +3182,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3197,6 +3208,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3277,7 +3289,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3289,6 +3302,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3374,7 +3388,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3410,6 +3425,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3429,6 +3445,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3472,12 +3489,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -8810,14 +8829,14 @@ "dev": true }, "morgan": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", - "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", "dev": true, "requires": { "basic-auth": "~2.0.0", "debug": "2.6.9", - "depd": "~1.1.1", + "depd": "~1.1.2", "on-finished": "~2.3.0", "on-headers": "~1.0.1" } From 8dfd47602c7c49245167e4b259cc3c818119a205 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2019 07:21:19 +0000 Subject: [PATCH 350/611] Bump mixin-deep from 1.3.1 to 1.3.2 Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2. - [Release notes](https://github.com/jonschlinkert/mixin-deep/releases) - [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2) Signed-off-by: dependabot[bot] --- package-lock.json | 47 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ac6d0e1..8885cf36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2972,7 +2972,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2993,12 +2994,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3013,17 +3016,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3140,7 +3146,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3152,6 +3159,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3166,6 +3174,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3173,12 +3182,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3197,6 +3208,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3277,7 +3289,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3289,6 +3302,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3374,7 +3388,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3410,6 +3425,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3429,6 +3445,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3472,12 +3489,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -8697,9 +8716,9 @@ } }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", From 99e3e1b0ab19e21cac18e393fa664cba409d093d Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 31 Oct 2019 16:52:37 +0100 Subject: [PATCH 351/611] Dont show extension banner --- src/website/index.js | 9 --------- views/website/ebook.pug | 2 +- views/website/index.pug | 2 -- 3 files changed, 1 insertion(+), 12 deletions(-) diff --git a/src/website/index.js b/src/website/index.js index 439dd0b3..1061643e 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -49,14 +49,6 @@ function parseLocationQuery() { } } -function pickEbookOrExtensionBanner() { - if ((isChrome() || isFirefox()) && Math.random() >= 0.5) { - extensionSection.style.display = "block"; - } else { - ebookSection.style.display = "block"; - } -} - // Initialization setupNavbar(); setupExtensionButton(); @@ -66,5 +58,4 @@ setupTokenEditor(); parseLocationQuery(); setupHighlighting(); setupJwtCounter(); -pickEbookOrExtensionBanner(); setupShareJwtButton(shareJwtButton, shareJwtTextElement); diff --git a/views/website/ebook.pug b/views/website/ebook.pug index 213d6db3..01dfb666 100644 --- a/views/website/ebook.pug +++ b/views/website/ebook.pug @@ -3,4 +3,4 @@ section.container p strong Get the JWT Handbook for free! |  Download it now and get up-to-speed faster. - a.btn.btn-download-ebook(href='https://auth0.com/resources/ebooks/jwt-handbook?utm_source=jwtio&utm_medium=variation&utm_campaign=gc_jwt_test_10_2019', target='_blank') Download Ebook + a.btn.btn-download-ebook(href='https://auth0.com/resources/ebooks/jwt-handbook?utm_source=jwtio&utm_medium=main_gc_banner&utm_campaign=gc_jwt_test_10_2019', target='_blank') Download Ebook diff --git a/views/website/index.pug b/views/website/index.pug index 7ea1e2d3..dae6e6cf 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -39,8 +39,6 @@ block content p JWT.IO allows you to decode, verify and generate JWT. a.btn.btn-lg(href="http://github.com/introduction") Learn more about jwt - - include extension.pug include ebook.pug From 96146d977ae16c56991e90381364b489e3227ac1 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 31 Oct 2019 16:56:12 +0100 Subject: [PATCH 352/611] Fix banner --- stylus/website/index.styl | 1 - 1 file changed, 1 deletion(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 9e120e4f..83eeec2b 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -401,7 +401,6 @@ body // jtw ebook banner .jtw-ebook-banner - display: none; background: #e3e5e7; padding: 30px 20px; font-size: 18px; From 8d4a1ad2e9f465c75a71fe70012f67aba85ff00d Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 31 Oct 2019 17:10:20 +0100 Subject: [PATCH 353/611] Fix extension button error --- src/website/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/website/index.js b/src/website/index.js index 1061643e..b0e52190 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -51,7 +51,7 @@ function parseLocationQuery() { // Initialization setupNavbar(); -setupExtensionButton(); +// setupExtensionButton(); setupSmoothScrolling(); setupLibraries(); setupTokenEditor(); From 1e3695c884033f9d53ae6eb8e3a6b05741e58e77 Mon Sep 17 00:00:00 2001 From: Winfried Dobbe Date: Mon, 11 Nov 2019 18:26:15 +0100 Subject: [PATCH 354/611] Add C++ library jwt-cpp by Erwin Jansen --- views/website/libraries/21-C++.json | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/views/website/libraries/21-C++.json b/views/website/libraries/21-C++.json index 45660c59..2d96bd88 100644 --- a/views/website/libraries/21-C++.json +++ b/views/website/libraries/21-C++.json @@ -96,6 +96,38 @@ "gitHubRepoPath": "arun11299/cpp-jwt", "repoUrl": "https://github.com/arun11299/cpp-jwt", "installCommandHtml": "git clone https://github.com/arun11299/cpp-jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false, + "eddsa": false + }, + "authorUrl": "https://github.com/pokowaka", + "authorName": "Erwin Jansen", + "gitHubRepoPath": "pokowaka/jwt-cpp", + "repoUrl": "https://github.com/pokowaka/jwt-cpp", + "installCommandHtml": "git clone https://github.com/pokowaka/jwt-cpp" } ] } From e6ff3ad112733ee95c8bc82a914835256b333bee Mon Sep 17 00:00:00 2001 From: Jesse Cooke Date: Tue, 12 Nov 2019 09:41:23 -0800 Subject: [PATCH 355/611] Add Joken's support for EdDSA Listed in https://github.com/potatosalad/erlang-jose#alg-rfc-7518-section-3 --- views/website/libraries/7-Elixir.json | 1 + 1 file changed, 1 insertion(+) diff --git a/views/website/libraries/7-Elixir.json b/views/website/libraries/7-Elixir.json index 1a7017bd..0faa43e7 100644 --- a/views/website/libraries/7-Elixir.json +++ b/views/website/libraries/7-Elixir.json @@ -54,6 +54,7 @@ "rs256": true, "rs384": true, "rs512": true, + "eddsa": true, "es256": true, "es384": true, "es512": true, From c6992f9a5d3fe4ab8bfe097896526cbcf0dc3773 Mon Sep 17 00:00:00 2001 From: Stephen von Takach Date: Tue, 10 Dec 2019 22:34:23 +1100 Subject: [PATCH 356/611] add ECDSA support to crystal-community/jwt --- views/website/libraries/25-Crystal.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/25-Crystal.json b/views/website/libraries/25-Crystal.json index 585e6b98..276a6ff3 100644 --- a/views/website/libraries/25-Crystal.json +++ b/views/website/libraries/25-Crystal.json @@ -22,9 +22,9 @@ "rs256": true, "rs384": true, "rs512": true, - "es256": false, - "es384": false, - "es512": false, + "es256": true, + "es384": true, + "es512": true, "ps256": false, "ps384": false, "ps512": false From a47322a1a39ccbbe7f6e10d48c7d230a7dc53c75 Mon Sep 17 00:00:00 2001 From: Pablo Alvarez Date: Tue, 10 Dec 2019 11:00:30 -0500 Subject: [PATCH 357/611] Adds the question mark and css rules for tooltip --- package-lock.json | 41 ++++++++++++++++++++++++++++----------- stylus/website/index.styl | 32 ++++++++++++++++++++++++++++++ views/website/index.pug | 5 +++-- 3 files changed, 65 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ac6d0e1..6b9d662c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2972,7 +2972,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2993,12 +2994,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3013,17 +3016,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3140,7 +3146,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3152,6 +3159,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3166,6 +3174,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3173,12 +3182,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3197,6 +3208,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3277,7 +3289,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3289,6 +3302,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3374,7 +3388,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3410,6 +3425,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3429,6 +3445,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3472,12 +3489,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 83eeec2b..e2a10979 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -234,6 +234,38 @@ body color white padding-right 10px + .crafted-by__question-mark + background-color #555 + color black + font-size 10px + border-radius 50% + width 14px + height 14px + display inline-block + margin-left 10px + vertical-align middle + transition background-color .5s + ../ + &:before + content "Learn more about Auth0" + position absolute + min-width 180px + top 32px + background-color #555 + color white + border-radius 3px + padding 4px + transition visibility 0s, opacity .5s + visibility hidden + opacity 0 + &:hover + .crafted-by__question-mark + background-color white + &:before + opacity 1 + visibility visible + + .supported display none diff --git a/views/website/index.pug b/views/website/index.pug index dae6e6cf..5550f574 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -22,8 +22,9 @@ block content a.a0(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target='_blank') span.by-text Crafted by img(src='http://github.com/img/pic_logo_ft.svg', alt='Token Based Authentication') + span.crafted-by__question-mark ? - a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") + a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") | Supported by img(src='http://github.com/img/ico_logo.svg', alt='Token Based Authentication') @@ -39,7 +40,7 @@ block content p JWT.IO allows you to decode, verify and generate JWT. a.btn.btn-lg(href="http://github.com/introduction") Learn more about jwt - + include ebook.pug include token-editor.pug From 93c7b50ce1356e785097f3c135d0b9ec95b1890d Mon Sep 17 00:00:00 2001 From: Pablo Alvarez Date: Tue, 10 Dec 2019 11:06:34 -0500 Subject: [PATCH 358/611] Adds the question mark to the /introduction page navbar --- views/website/introduction.pug | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/introduction.pug b/views/website/introduction.pug index fcbaa0db..b436c5d1 100644 --- a/views/website/introduction.pug +++ b/views/website/introduction.pug @@ -49,8 +49,9 @@ block content a.a0(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target='_blank') span.by-text Crafted by img(src='http://github.com/img/pic_logo_ft.svg', alt='Token Based Authentication') + span.crafted-by__question-mark ? - a.supported(href='https://auth0.com/', target="_blank") + a.supported(href='https://auth0.com/', target="_blank") | Supported by img(src='http://github.com/img/ico_logo.svg') From 02c9f3d5691f70e570e770c711fd98679422103e Mon Sep 17 00:00:00 2001 From: Pablo Alvarez Date: Tue, 10 Dec 2019 12:05:59 -0500 Subject: [PATCH 359/611] Changes the Crafted By Auth0 links and adds UTM --- views/website/index.pug | 2 +- views/website/introduction.pug | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/index.pug b/views/website/index.pug index 5550f574..2a6e7a90 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -19,7 +19,7 @@ block content a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! .social - a.a0(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target='_blank') + a.a0(href='https://auth0.com/why-auth0?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') span.by-text Crafted by img(src='http://github.com/img/pic_logo_ft.svg', alt='Token Based Authentication') span.crafted-by__question-mark ? diff --git a/views/website/introduction.pug b/views/website/introduction.pug index b436c5d1..900ea92c 100644 --- a/views/website/introduction.pug +++ b/views/website/introduction.pug @@ -46,7 +46,7 @@ block content a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! .social - a.a0(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target='_blank') + a.a0(href='https://auth0.com/why-auth0?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') span.by-text Crafted by img(src='http://github.com/img/pic_logo_ft.svg', alt='Token Based Authentication') span.crafted-by__question-mark ? From 1b86cb958e034327c943c010bb987ff6e51c3da8 Mon Sep 17 00:00:00 2001 From: Pablo Alvarez Date: Wed, 11 Dec 2019 13:40:33 -0500 Subject: [PATCH 360/611] Removes editor formatted delta --- views/website/index.pug | 2 +- views/website/introduction.pug | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/index.pug b/views/website/index.pug index 2a6e7a90..00cc1f5c 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -24,7 +24,7 @@ block content img(src='http://github.com/img/pic_logo_ft.svg', alt='Token Based Authentication') span.crafted-by__question-mark ? - a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") + a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") | Supported by img(src='http://github.com/img/ico_logo.svg', alt='Token Based Authentication') diff --git a/views/website/introduction.pug b/views/website/introduction.pug index 900ea92c..d7a74514 100644 --- a/views/website/introduction.pug +++ b/views/website/introduction.pug @@ -51,7 +51,7 @@ block content img(src='http://github.com/img/pic_logo_ft.svg', alt='Token Based Authentication') span.crafted-by__question-mark ? - a.supported(href='https://auth0.com/', target="_blank") + a.supported(href='https://auth0.com/', target="_blank") | Supported by img(src='http://github.com/img/ico_logo.svg') From 1967f9d83c61dfc0266e13aba5490c82c379f358 Mon Sep 17 00:00:00 2001 From: Pablo Alvarez Date: Wed, 11 Dec 2019 13:50:59 -0500 Subject: [PATCH 361/611] Simplifies styles --- stylus/website/index.styl | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index e2a10979..179fa90a 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -245,25 +245,24 @@ body margin-left 10px vertical-align middle transition background-color .5s - ../ - &:before - content "Learn more about Auth0" - position absolute - min-width 180px - top 32px - background-color #555 - color white - border-radius 3px - padding 4px - transition visibility 0s, opacity .5s - visibility hidden - opacity 0 - &:hover - .crafted-by__question-mark - background-color white - &:before - opacity 1 - visibility visible + &:before + content "Learn more about Auth0" + position fixed + width auto + padding 6px + top 64px + border-radius 3px + background-color #555 + color white + transition visibility 0s, opacity .5s + visibility hidden + opacity 0 + &:hover + .crafted-by__question-mark + background-color white + &:before + visibility visible + opacity 1 .supported From fe471fb90d2f1f1ff7967e040a23c7bb41561ca3 Mon Sep 17 00:00:00 2001 From: Pablo Alvarez Date: Tue, 17 Dec 2019 13:36:25 -0500 Subject: [PATCH 362/611] Changes tooltip positioning for Chrome based browsers --- stylus/website/index.styl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 179fa90a..3ca57a01 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -247,10 +247,10 @@ body transition background-color .5s &:before content "Learn more about Auth0" - position fixed - width auto + position absolute + width 164px padding 6px - top 64px + top 30px border-radius 3px background-color #555 color white From dd02008df51b68052032d7656f4834ced662cf3c Mon Sep 17 00:00:00 2001 From: Zandor Smith Date: Sat, 28 Dec 2019 18:49:07 +0100 Subject: [PATCH 363/611] Update that firebase/php-jwt now supports ES256. Support was added in https://github.com/firebase/php-jwt/pull/239. --- views/website/libraries/24-PHP.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index bd4e4766..bf0bc9b6 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -22,7 +22,7 @@ "rs256": true, "rs384": true, "rs512": true, - "es256": false, + "es256": true, "es384": false, "es512": false, "ps256": false, From af459e9a9fc07abc426ec6905a3fef3a60bcc0f7 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Sun, 29 Dec 2019 01:56:37 +0000 Subject: [PATCH 364/611] Add rib/jsonwebtokens to Rust libraries --- views/website/libraries/13-Rust.json | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/views/website/libraries/13-Rust.json b/views/website/libraries/13-Rust.json index ce124804..6b7cbcb6 100644 --- a/views/website/libraries/13-Rust.json +++ b/views/website/libraries/13-Rust.json @@ -96,6 +96,37 @@ "gitHubRepoPath": "lawliet89/biscuit", "repoUrl": "https://github.com/lawliet89/biscuit", "installCommandHtml": "Cargo.toml: biscuit = \"*\"" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": false, + "ps256": true, + "ps384": true, + "ps512": true + }, + "authorUrl": "https://github.com/rib", + "authorName": "Robert Bragg", + "gitHubRepoPath": "rib/jsonwebtokens", + "repoUrl": "https://github.com/rib/jsonwebtokens", + "installCommandHtml": "Cargo.toml: jsonwebtokens = \"*\"" } ] } From 4ee9afeefc117ad7cfd9f50def4eb2ac9cbd628d Mon Sep 17 00:00:00 2001 From: Oleg Kovalov Date: Thu, 9 Jan 2020 23:49:54 +0100 Subject: [PATCH 365/611] Update 9-Go.json --- views/website/libraries/9-Go.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 17ebd87c..ec0d4eee 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -373,6 +373,37 @@ "gitHubRepoPath": "brianvoe/sjwt", "repoUrl": "https://github.com/brianvoe/sjwt", "installCommandHtml": "go get github.com/brianvoe/sjwt" + }, + { + "minimumVersion": 1.12, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true + }, + "authorUrl": "https://github.com/cristalhq", + "authorName": "Oleg Kovalov", + "gitHubRepoPath": "cristalhq/jwt", + "repoUrl": "https://github.com/cristalhq/jwt", + "installCommandHtml": "go get github.com/cristalhq/jwt" } ] } From 8178e1e8e7ae3062fa6327dee32a01ed0efbd2f3 Mon Sep 17 00:00:00 2001 From: Oleg Kovalov Date: Thu, 16 Jan 2020 14:46:09 +0100 Subject: [PATCH 366/611] Update 9-Go.json --- views/website/libraries/9-Go.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index ec0d4eee..07c2853e 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -375,7 +375,7 @@ "installCommandHtml": "go get github.com/brianvoe/sjwt" }, { - "minimumVersion": 1.12, + "minimumVersion": "1.12", "support": { "sign": true, "verify": true, From 714781c65f7967d33f58918b846daf0656905955 Mon Sep 17 00:00:00 2001 From: Oleg Kovalov Date: Thu, 16 Jan 2020 19:20:17 +0100 Subject: [PATCH 367/611] Update 9-Go.json --- views/website/libraries/9-Go.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 07c2853e..ce46408e 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -397,7 +397,8 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": true }, "authorUrl": "https://github.com/cristalhq", "authorName": "Oleg Kovalov", From 79c0bcca372df43193e1142484f5081e604d5ae3 Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 21 Jan 2020 12:36:19 +0100 Subject: [PATCH 368/611] update browser plugin version --- jwtio-debugger-source.zip | Bin 0 -> 891747 bytes manifest.json | 2 +- package-lock.json | 41 ++++++++++++++++++++++++++++---------- package.json | 3 ++- 4 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 jwtio-debugger-source.zip diff --git a/jwtio-debugger-source.zip b/jwtio-debugger-source.zip new file mode 100644 index 0000000000000000000000000000000000000000..444a0697351d6b694f87521b16dbd2002a85687a GIT binary patch literal 891747 zcmeFX1yp2RkS2&j;qLAfE`>XVyE_!_?(XhTxI+PjTj36cySux)+hqRTGiPT{&z_w< zy|cZ$4fnnGy)WZ_HzIE2BZ-p=(%=y2ATWU60e=%&kbnJI09;`}h(QeO?HMec>}*w4 z5I~?!bhflxh@ka=R~L6U5KxGFP!JHnY!DF9*jmJ1V&u?Aenm~MZ4XZIm5p!lJZxMY9#Rc_{TkR? zr>V-=6S{t;4ZKtOQ+Rl&^8&dl0`-qFs`&e@LM#?ID`0U-R}besO|w5=!0W@a!U4_^Ah z+Mc*3kVAZbRMPt;YO=1SzmSAP`Ze;qhvG8-`vpSq%0)tXD*Pu-FYB9WB1#S?N7Nhf zmF`9x#afcWYb%LCuO0s4uJ1f&m5R8)P^*rQj2byfmaMRn-!ooJ65Um+jzmEr+FFPD zpLm23gkHem8i+{7+)YDz^!L6Cy#opisJ3=l5gPdVmefC*8jes4-RBp__^=@}t_rymRuA&|D3RpgN4Rx2kCp%jIcoqZ!(GU^pJ z#*u%O;_i*w_O=cYK*-o3Us%gC zmXe3c41+9>Rm=GcS;-q2GYtJfWyPJZzOPD3l{OuUt^dkF-nucbPmu4i-`*%BDZ;KD z@0F%1{HN0QG~Gan6Q+#3Jc|^zAhAzeyMs~LUUB$Wr z-sJzrJ7IrG-A(7vN9@|m2Nqije;P$%$7ho3l7ygN?y_T$0w+-f6$OT=TLJZ)6RxD` zZX+{W&${H%yYLnVEIyi!%d5Jg;)o$N&4ZIQOJG#53u#k;Z<%0ib8Y>?=ccHm151F9 zo7>mZ%kFa`$xGZ#ULLWEaQ$;@fA-MK%}#)e$JgX@+xGG4?I8xw?J`?ulXsb~-Q)e@ zxDZdh?G}&GcmBD}&-;ONv8kl(-Rg3l*5_!y@cg~7>7iQJ_pDw#bDj2eRot!d@xtbk zAd7z^=PZYR<3iu-{$~8);X~f;{^0oi_0m1*P@ogKx^1=N*2K+BzVUKdoZoM^XY{gl z18d{(ru2}?-Sw2CNgRpr!WQ5JpV!+%-(g$H;3^~U%S?%$=P}tMd)s)=Jgx89L-zT8 z`Fot7;lqa8-O=^&vaM5Ho9FiEpj)bXOGnf4`GlUw>wML9rtdUkD3Wv(2fLYgCR*lM zqun{8t665!Z8_tvrE}eT!SM6$`N93+q|Up$w{snz`_qmMQZ-@A8?u|8zzPBH=ifLv zc{ijuIYOO}VmVjw%-zEA=ZB5@<-%Ec{H&a=`%PD*33mC(OWRmR{f`sr4zG4DfzKza z*U8R?_s@8ciyH@ba6A~_oY z7F)-S6@E}MN@o|ji*H!orBmQ}nz$!#5y0H6&3d_|RO z=V$=ng8?womj%#^Q)(9v4R>)#Yv-rtv~I7SD z<@%BzX4Gqzzw8n z0B-=e;|Hc{5EvOJz;^-QT^zu@2g#+4#I|<`0GC?;h@Hy9>Qlk@=YV7L{Z8P5W9xlE zK?A;B$8QVzLv2P}tx?d$sFVfA-ur@}`)%2l9na}q9mEzrc+OPqDlD>z{jAgeU?;w# zXs3>&KqtOq`E4D$ms!rm!Vma~`!WG(r@rL-okRO7^>>e~Q&m6EL(h5rzb$(AsX)pE zNI?RregL%yq+BxaIx4Wb0-QQd>~?gjU$i+F%RkrwQe8m+>JmtK0V#d}<>wEeN-S)d z>h-*#04f4N;W(g*5kUA80!RUcCxMg`kOBixUB6mt$33sr0V=+jfcwd9fF{tnPh8-u zJ%9;z4uAJPbkWkOE?s_=22e9Vs!>I;3%a2w@`dj=z3SYhkWFcU zFOsD+#=VzUEpcN(2cfz@puP2Xr|Nf?y|EMYh9moJWF#nGO#XtwX{o_C>&;ePX z1OM+cHR>v-pI^EJg!0g~q7(y6_5XcT5I}zJ2Vli-z!edIEB;SV3SHt2MWHWzW%S?X zE){J`^L^t0BKKY@+LpgJ3s;mx-U;VZa8Dk8H_rY4#Iy*Q0s4P3Pzua|G%y2N|71W3 zn5-0FvKszL*8hR2Az(uqfEz*&+>j{X9{oq9l)B9R3Ang%?%xR#+FSbu+snMAviEhHU(hB|H~lo zF^vG+K5)SH&G-X$lAyJWLs--mCy;tdf!vC6w_WDhv-Aa4bb$AXt0^Zl>x4Vn!gQu;Y>5J_o zo(HhWs1E^9U|){2@gbcD4Fm+(efuA`rJ(?QIa51Z=l@M(x?yqh|9oQ_9S-!L#`M2v ze3z6Hv9mQcv2`*r7PhlCW^i^k{cnxw|3RDYtmBKf&b$kg?`7unn7LT}JIs-$Ci#mCpo{Xm(_;|_er&=k_l97&1*|X9 z9HOpkgYDwGsxbFuuvJyt*_Ld>&Fkl`O>i0#%1!<8DAL*b<~5gV7jl+>GZ))YXQ^b* zkn4a7EcG$${VjQX?Y)-ZJ$y5V0qEF*xr24ieXSOv344#zBrjH1> zQ-sSM7I~QmsGs{ywgBtU?plZw_c&ZeTmmOEa>$jReYRu42QOE?2VfcGs)AqpMEjpK zEkBP;z~5MVU4r?$PjEduZY&A{7P$+~f-f_l67*zVEEsd9NG@DhN&GlO4b4Wqs`YqU zV*g5&?jiu8C5fjvfB7#fFfK>K*c-}TmZ z$1XN4IeIXplo%JaBgW2})=N99>l2H&US?Y&(rtvO_35t%mZanc|%J;(unGTy?6Yfnn( zf&VeN0w4;sc7AX^b0O2G;J5?&$Rz=UW)j#F&y40sz4wUC{J+p6Br${ef?mNyTYeJ2 zeI@)J;P%SDMT#(JC+HEdbM(_aO+8QFs%8=%YaG(SAs5!nPq}uam1QKh1HMxh(jnv$ zX0V#r8shE!cB1d~FQku!>f2CYGqSkY=pqa5Q%fDvktKSSI4&5kR0e1}sNMlTV@||A z4RvmimDl!@G_`$hi=V$^qHl!zQip)>orHF@(U`=G0o#tkXamziO}h+xw?`O;z%ltJ zq|R2?);mA98_85a%tE;AEuFnVbM*miUcw{D1iv^hEQQ_+=8kD|m=nt4oih3F_5kA} z&8g3(`oz%0fW)G>#4K*iOYoP&GZ8W=i7RM#BQ-eCIfk&^XJfF5yLbUIr$2FWGfu~P zo@DQ=FNpinBdN)k7W~D}e-5tGXfeY@4I?xt7x1)EwDG*CFQTb-(%t2SC67=Sg2}e! zAW##&GuM(ZXLH8$Kl3t?`r|kjAa(nw&z?KuUc8prZ!-4!=-+ax^%zWKm6PWDqxsY{Q9M@%Uvauaqi)`(z;<+zZE>iAM?mX;zdOOVd zJUsk7exBt096luS{RlWz=XE8-nLBj4+FTLHHYEQp6`bOyl1v4w`9jo%Y7Dt01&!Jd;%p3|Hzhju7mRlj z%6m{K>#yjVzciygwZIn;c^FW?@ObJUB#3KVU)J~$bSR`9$&u!?AQ1IQ`2_Vlej$+y zhQRyNVUwz|$cXtzRgo7OW8jeO3X+u%lWT%&^>Wt{y01djC1lC6CyX1zNlZHpp)ZRy zCOHjz7(*+}K^jvni@GMk4T~BhwWR3?7Z2+lecJ5N?;+l(-C*tM?)mIh4~Gqb?~(2G z?G^4B?d|Rf-5`6Uy%9WXJO1Pq{s{0+^bX{eicOGDkWbp(BN{dvdK_-Z3&ST?k0(mR z8-^Yxam09ba|CZmeA9R2@j!YO*yD~5u1*{sB1%gA5&cf(k@1#@Pwpq&Dft04Fqs>~ z)*1Q+*1TFhImMzkfL7Hq5%md}DPZzc;!Ed82$| zw@1aq4f71z65$=kEAI=xGM&9QzQ^Dg+#a(gvLSatc}f1*i}yj%lKY0?!T4-;!?;It zBW|3+EBTS!p5qL)mG#zsM-qbTkS)22(Ai%5b9g5~B<32UFTn~v8w%h@v+0esH7a(o`C ziFFT1@0=!9UuQ#gg-XJu1}n%l@ux*VNVjICwQVU^=;j_8&eB3J<+IyDX?@I2(y8ZU&UtJwHn zpaVUPwN3d(pT8_>c?G@eSp}BG2kU*OioHwqLuaSU>hI?Jo@T3d`W!i%z|7Yb$#eRZ zL7tznDudq#J7dYXQ!lL7>tEuI^qJR|msdTO+#9dWii0hhj>Tr%Wa3=UIsCfcDvC^> zlU?fX(uF2=6v_ zv#&e%$U4*XuRoo(c79MkB`dgbqI_gtO_CNSc#-Btd{EfmK<|d3@zi1oXR_vob*0un9&RM-=YD#B^!JYT>$sJ@_9xb=P*+|quQ_>4j_wcN zV0m4h@vXS|Zi@H_oNTUr7Jm?_{z-m?hJso|>f~i(cYd96D+?=QM99TI)>PEEe!-wp zr&RmcADOK7_W0v>H!-cQ)?sA*U!8tnFZXkgS+ct zq;8dN?vl?&NGzOyL&9!B$)n6=i_hdN)}!9rsr1Qgy_Z0(o%1F%!?=#;XHosD%PZQe z+hx~-|8{pM_$AMk_4&XkX==xDofo6mRb92tL;Ways$JLH#Augi$a$oQ`rBmxAcL6UVNIC9T6VOD_yia*I$I4d8WKQ=b<^=phYdR5Q30w>% zq1(6E3T;rornVf8s=?eAG54Lm@MDdY*XkAsg&}aC4H?;!`m{7nYEF~iW4Jj!9a#J2 zsVU24d2XNKwz=UuAM1yE>4VWh5dR7>R3Lf4j$Kd9pMSvS$Faw<6sgw@EsIO{x`YGsiUU90lqgPAP%!@ z;zt;`0_|PN(aN6=3MA+Xlr^(HGJHKNOmoo{ul#t>B~VwhW+L%b7a%d+FiM*eKl#de z(gSzG62n*m)z8xdwA+Sjq#D?-wS+iZx3PnaD#lh5>)$#pI1&45VZ_Psr3-wL&GjpH z1R_A>+4ISR5YkG!i1SU@*$$VuzUbgV^9pPv|c%30`kxL93+Vf{cv3Px? zT8#Q@ipR=Mom z;4n*R^NS7r8)VBbp~?c$WypA{zM#iS9#HnF#6j>d=4%<)4^SxJU-#Bw#N5#G!fFkgOY{8^ zLMVr-yF)R&o$q?mhH9$va;yw=9Yoacm`nqHvkRMGp^K?N{eH^Z%Yzr0z6i+dYfznLZUlv&EbcU?-C7 zi{w4arJED^Qr~vZfpAqD6{A*;BHdU*1!p4gY5M0yRK)sbU$V&jo2rc31GAPy#e}n) znHm-BeMiB#WozMdnfLu1ljRFd_h#zPRsRC%sYR-|ppz=5g&y$(0h)R3bj%e( z&K4P0sokLvgSlum?7cO`pfbi3ly&|Qbg$*YC}~4rlyz5k8=ZebDAD*}W3ll$jHHSL z3YvAfeS$s9^*T7xP4cQu>Cxl22xj3~@TabaPP~n&4+$6`l4Ab~vTWqqM`L991e`n_ z&^Hia?rsEH*~cc2;#_<&>GK2Mijf7SaG z^klMb+2oOc?g;9Uv!lLn9++7>z=iN|rcDwr-R;%TmY8w4?iC#&PNJ}P{9JqA`_jB1 zM;Y6PfR0QAW`x_F2E|kis$fMvz~;})X(j)Mh@7dw{5r3X*P$G3ldd}#}lpj7hv*m^arPiE?f13iQ z>v(~4c1gok(}O9k=PwAKh0KbR`uVdFpOr7?ol_t0B$|pBIDFpj&Oe&D!v}j#nEW1D zU~YJQAeYvwpf;Xvxr4{1CntiO55aIp9S&%x%d*+?x{b0g&%uk4j-Y~r-ilUA?YzN1 zX4S8pBJcB=9;r1#zcq`vX%k^i%@7)KlZD?$YU}^*>8jr@u)P6qjk5Lk3N}lF&9_+F z=4>+GDh4TQ=Gl;yzOSA|`1WAUdEdatGn^Cic$DT9;*GZ#77D*p|80CyPiEJ0Ez!!u z&EFF8tpe}94C1Q(++Kjg{!bhM8BP2x33Vx@4JX7|-`_o?+I;Fk+%gf1`v`(3|5!-T z7bC%;z}u$)z!(RfDGsl}4?**xAvQoc;v|<*!Ix2!>L{QpzCi)bfPvMkEiqsW9clJf z*1I&5mn|I}+@%ony$rI8cR`p?9wv$<4R@kty=7bF-B9y3xR3CK06ai}`GiEU^MLlU46lE^)4?ZiLl> zWWKYO!s!lf7G`shnj}UQ67%n#{EK)c=7Zje z)(lUg!B9>t3I;q+eh5l#P_%4Rv~2$fx$f^&KMIogI2nHN#+OcYq;<=&e}}Fim+dEz z$FDa}mP?(*t9ZWYt6h^=sXC(5eIzWOl$(VEU#{UgtA%=_4K?b6^lSDb#gG^<+<0;N z7Kfyr<>9e+NQOyk|?Y=2l;o^O2WUx$1=rfl0Sby9imMGbPxoeO7%A%Wi|nB{pRki8x3yu^cFt-YiMgiRYaM2EX%7Ukau{j`|i5p(5m- znqddRL*AH|T1+NrD$F@1N&6C9iBU|^9b*|543U>=`09@&Sd4kX0W$Mwa zX^I(>I4F_PFr#@VY9c`;qJ``0)_0k0PxqT|!VtP%map+gP{?C5cn+=+-^2&OsQkYqyHmCuO*jt*k)Kia%R@Ph%Goi znf+Sv!&DH#4cmPU7M>>;WeiA|OY{pLJN|s2w57kaC3)%`Na|d7IN-cDV#Ao#rn%$E zy7jN4{_nkM_q}QCDWt60*oV(RovscN)sSf34q zsRhf@pi~iaThFiAp@pQIuO>qTh;596aS`_XJFL*X+y2W~!(m425qa~dBPveUhGVlB z5+&feIU3A4<)*@zR!q};QCRB{L~C|b`vQo0;!jJok+p*qc-~kK0*J8;sD^hlkTyO# z8|7p*QFjq2OS~5=5 z!)mnePl3B~c7N?&QXJHccPEZ?-Ph(fMTjg2-C!5XkHrphdD}GWQzm#V47O^WKxH#o zZ3x=LYQLSXyOw$_S~?pcyyVn9l#K9x#XhFtIQz26T7GYgZ+?tVol4BuP2vml zm7@>|GFi%341XfL568jdU#?1v_n>d>Ux`NRv_NxqFmfbW@kgVyX%Nn1wTWmX?`iU0 ze*Stvcm4{gk_%QQ&ukl#p%dV=jX6IiMgQ~IN@UkLnjM|fS@5p{g>|S02Vx@L~U1dy&*lmWIJ3Cq3I(4d`_gh1gSd5(LEY zjsj*d>q=vyjt|ZgdSgftS}0-NZcD3t%%3?3;PzJFzuBNzf~&q>EHlLuxPK6u>O%Ci z!bqKx!kj>JQw9Cdg}8QZ7stH_aGJAd7T4M!LwJ;6^;2WaYDvN2)y@Na%&%N{h*)8+ z!(^({?;qkM{n7q~ENF>oC@cb++MdiSJt{3f3f$CtnVpndgexUYh6W@X-Cr1%SQ%ES z7+tU!{re*aYTVHWF^-w;I*jf*e^hmk_SHAGJyO%rFZWS2Mn;jTT!A$M=R|KL1zV4n z{RP_>e?q?nzp*T@on5PyVT70}IS~6RQL?4on(%N(o9f#wZ2CNG^juptrj8yGYGto5 zF&{1M@K_CQj4be2(uyMGG!3s9vDSzsh_WZeuvu~z*pyM<0FuZ*ZDrE z)T?FCqTW}l>KfUZ&9rH`9xn~Z-W~opSFhG^ndjnrP*}*$JbF-j+-P)}&3r^~lh@_r z@?9SAM(3>R+oM$}^m%Q3D7r0I@CaajmpgD{1s$g=u4a2JVLp>T&xMw+ zBu|lEiT)EU;bVSSkQ3_~_uMMf3G1?&%Wys52ZQ;t?(ylliEoAak->mIk&poYRXfX9 zlbI?S82y~u=mV}sQu(oo0xc*e<;_-`-iq!1Zkp*qkYK|uzCD9zD;rxZPmxThX;M1IjT&$%!8h{gDlc8|rV>85yd)YY9gS4p@tN_gHig&Q|sE4fHKYH=9N*%IXxcdy*k*odX?Z3X>rCRVfsyszvr66~|8%0Fv5gJSg_ z5N3MqxS5pp{0R?z2&?kp2wPQ=qs_`OR;A z$Ft;zhHLY*YpU@lE;ywkT@+yx@-yD@+ZFVmw#)I6OomDt=&!FB5F6S@vVuKvb6rxe zr-wByM8cN_yO)*TZx&huM2~_T-n7{#uWu;>Yr>a(n_%KZokEYDkJJsvubP*WMMxr- zL}j^y=f*uwpKjy#zwsMl>e-(x-d%@<6AEYWu9H?vC7SF&yjKK;+Yx@j&i-m1jOq(s z7T2qZYoFo2scRY)!7*?IaiPVpK(#bb6A{2ua&vZQ*RJgu;i5T05=>SK3{|n|#mnb> zwapi`gcebnr|{a;O@o2Zp$zkS9}=uwz>-~J!?mJg`JHtYESyO>V%0lr{VwVmM7Bb3 zm%1Yt`k8v9*xiM|{prHs!V@yrAYykurcL7`OVF*_QawBYLD`AsnPSYQ@LTku@fiZI zPTd_e;VT;mBZ5K*)Nf(3QekkFd;>KNXfausk%Mm+qHNMq%-}_76h&zPN@IdFrg`YB zg+IT}hT=&&tQ1!v?|}n?&LrDRhhIA+i05XyRf{U6})9^aZnwb*#^nk{Wb z&&xEmNbRNVAcySSQHL$SCq zr~HoKmwx4=h@1HF;i=D^6-Z(Ww|9HUF%8xTzp^(WA6aF+>g5z#nPv9RQ-X}hrbsO_ zwcPgCg&^%l!uEGY#ETV=cs=>a_m{;}q{Ypb+|OYbId`F#!?6M0OU@A~u|?iqT<}lK zbEC}GX(pa)OOZk{80;9n=SChRTj;%Y%|eQojh8r!8sEGRmknrI@90|o?gmekraq$% zycZfm*{Dfb4#G)Qz7esk02&`&*g)CQ0AFjLH^q#Px5HEU3pKjgRk?TPjC+HAK!+$Z zTJJTEHC0P|_Q_U3)hRrw%3@}6;()x9i_7EleI&btJ1>)H7& zn52)_NeWH&4f<&&=*xruS*D!*ovQ#*Dx)WgFGUO(qRJANgG+CwDy`~aEZ~Ms7ro#oIgJudRyJE&kpTuWMvoys* z&~kJ$cBW`wWr5g;l4Rx^{{1h691_@fSUZ&n=4P~)neF>|EUs9okG@-(tLU&wzv2+D zTUwoQ$e`kFpR=<6n9K;5oS@flkA>+$U!8BXvl)ZsB;jW4FkUVZY{Im^}*7 z!#>+mG|2T%Y;HjCXM`Ok8Oo)p3&J@#j&Ji1h{Xw}w4p<@ILlC%67&c^(#rCJMd< ztD7ZW1NHXZnb>wKP8__6S4&srcKjRYUhw>I8eR?RDuz}JZfpsNx6>PjYFdtr@~%&w z40HZ0sqYb%;JPq(FtA_^hHKDa9>wE9q=iS!1%zZ8&L;eua}=gIPmUns=~f&{qe9i_ zmiEj24Icw{y5)lf0WA44^-$||J~eAB@GRfCQqE(tLD9J+gf$W_BGYTc$sC<@A*XW#^{N;@WIq`b{}U6SaOh)4Pe)nQPgMf@^-?e}^ctu$Cip{)3MK>sXPJKr7l#9^Z+RZEbMHKEX{2U)BL zw!++sw2A{jx)RIBL}LOdG^MBJ%{pq6+_ku0@0Biavk#F^*~+xN5*t5Dw**X_y!>Kg z;}61N_j(cWJeA3#xlzco&sRji&3h~Bm@L>Ue#sf&-a_YVIN4{G2KHJ|xKN=Pj2tkQ zy}#!;FY8}KSa0YQ66I>8R{gD<9j-4q;rY8n*R%AiIVa3kBs0b7n+|k{RjIWJ*Q*2s zV;{Ce&{cbyJ)y|l^o95(S`J#qzE1q)Mm`5IW7P#l%3Zh=hn}~P-7H>MEy>#4ls!=s z;t^u$#Z^n}eyk!|mUiM{%GMfcmUf_%^bPQ8c+(FuNzc3xXj=y=82~OA0GgEcBB5Lje+@nPNP$_VE-PnPyt-@`8aM5(3m4A+n01i!o0SVOXu{WW|ujYt(dX z#!pRJg4*A9T>?wkyHHWHb51AH0X>FO89LMNm7x$u%x}?1UJAY>RbwXnO|3N#KWt|R z$I2cAAyWlqd)%Nh0yQp|x(hURiY#GWzv%J^E;8g>K_9Jvwz~RP>CU5{(X-^1>h;=~ z$_GX_B_~eE{8fZ|>Lqlhcr7@P;8OGh?;uB)rZ^!=bx=3dJ?h*a6mF_BlQI*#7 z&une^2%aTJ$F2+3J&E4r=Z5;J{^vzXTfPxZ4Vl3BR&&;KOXy_;c;Bu|pE&O69^BoHC1b*)jC`p)?baI^m*JH{Fm-W!6G`^$Dt93a<%~s&w}j9 z8s+S_=tE-@VYLeb43+v8BE0?z{0K=BqZQ|e#s+blUvq1 zpZ^t;4iOX=Zi*utyd&F~ah2^dN+hQlWwNfpuq1`;)G8_Eu8g+Tkxj*b3@V*7p7KJ* z9lKgX{>lSIaa;a{vcaFg2WNL0uN5j|p|G057|ZfIYKcgP+tjvAILXN-O7i$oVg|``U{Sp)N7h7X1=+>#eQ_ER_pGXfrDL)er8Z z^u^(cDhSDxI#0}Q#3ibJNq%3=tezggWovi6`6I2$ytA=AS>MLY$kek7&v&fyEtt<& zp^n6Y(h^S67^f%vPg-ti#`0{n+26_LY^*&RoHl zP`om-admj`i`Ch<*f}Tfz8)EU)IYOqv_EAmuv^+-duMSX+=L)p^+G-OLb)4&x7UE` zE#;w> zP(Dfd=IW-CQ6$mAARMF)ZshP*I-#V=`WEzZOz)~OiGgfb=rxq2J_j`lwQCDC=Ae@Oj3)RoW=;r}FC1pR$tP|z59_E?5V zmq;JizJEvB!ex>0Y2&H9y4oO{^v$fSRyukWbl0`JnSjYQ6}t(1;5^!j&Df8Zi&}SL zJShrm0_{WiZdUu0==-$18}Y`$mJwrjo{z1=mv@unmj280&iySdlXD>^eSX=+x(M_F z_idbWr>Ge1NX=$;hFXXz-=LQM$4f%BP`6EYdl{T`TqQLEW4I;#O22@rzk&A8kls2V zKI{oy-5zW;f*QO{lE1E|em5XCEYMi4-Oh)Hpx*k}G;X1)OQr4Mg(un$WS$0r%KhjFOVE|(mxe>p3Qmf6q3H#%Xmw@lyz5ty~7B4Vp{Z5>k=j=++ zzccH(-MG+dG&l8+-;?g2(>|iAPh-67m5#~}>fF@1v32=QxJLbyIVP9ztX$C*2bOk= zIh0r@Wn5E^1U3BHmL3?&G=cuXhi`I&HqFqK)h^xbIsHbl^ z1)7Z?5BZEpU!h)5dNnfhgd>L37Z?9b^*zso4(jt>?@I6Kju0ojVRR?%46_!IB_b)X z2?)23%iK$p$RVMm)oFI;Lm53UV6TD~a>K@V_Ra=r=SQ9cOSn(M2qb%KMdOrPu*v8Bk_tr+9?fNgv8A(Q(yg6z^~gg>*G_uAPh47tnu z9P(_P5My-e%Q_+W;GToiJTp1v6)})7#jDJl1bfD` z)gr&Az<@ijVkQ~~fv3`3x2q{$kHSYpu)FJL6CU@SUgRS%QcGKjI%LpTh1sp?SG!RW z9kE~wr=#GlxHKln_?}f{j9Xp`i+6NTWtCjcYtdiW6-9rOrG%$k7x}Rs!nz`x$?aN+ z5X^I;KNVtgjgs0|o)yN-o(I>C;>0-BFgUH;Q{#fKzVd?!N#E$e~Tbf1#d$QOr>!D`0KSLQ4IH`>BAXEG!OT^P@2qHB$&p zN-|W47_KNXy}nr~5wwWB58nM(sY7wnx4ZEHL(tSgxW8kCeCeiI_l_Nqhl9|dO}wM> zGdeEZ1k1GretFm#4+DuL>WkZao=JU%m#(XYu?>1tZmnLUuJX&~Lo4Gc46|x4;={vI zu6+t)>DsDv`+-H%!meLkQ&!Ymizsbzn33f6A#v$*bkTY7XQ$>x)AO(#nz)j zW=JTPD;~9J1W|vn2bzu&dce>)<6kMcmA+Z0nm~|uGVk;hsWBy^mRlK_?CH3#7dL)f zvw!RH`h%S1Xz1{UJ#6-C*Xr$a%!99FY8g9IYmTR6dAj@Qz7Mvd(mVg5_(=5 zD(!P>L+deS-*o#;k}&xZYdM3v1Y+$i(r@;%@GOBO-o{q za1B~cO@5*%k_kIUBc$86P{%!jL~Dfnaf4wv-YMnyn)X8yLRaGghG-pQ~{`X;j9tthS)Q+!ZHI;d;_K& zYoNC^-|m^QZ{5e)d!CuKaH|LDSbXfqE!`*BT@iBHaF-dG~*3c{!<2L^-tgVjiOY5_y@%N>2nT$NG{>ll|R@<;mA}1QL zFrVr^qZvzr;cx-Nb0)3x-3ae*fDbzNqTskbsn<}ci@%tglSurA%I<%?ihOKDU$Po- zFxfwT*Lb?8~aum3FFh8$R^ICJ1*85+P!|@`ZR4Ck=D?JTR<>R{baz z(9}t|c6Eg;SQc~@9k7sxCqH>~FHoE;dg?g{%2A$x;=7VO<;92Ben=N8vi0apuZ8_~ry(&JH>*WIYsT_4{Ij<}AU z)x>-)uB5FC8Uk#AaRGCYrLWp=$feBc6xKG0REoUO#9yPRQwCpJ6~S8Rm{U5B;aPB} z7ec1ezE#&Mc$#NTXme)UYBH@CQfuGW-bA`@a`h!#O)Y%%wIZXUvz0P8m{#9%*K`e>(CTFkge81C491ZYMWCZ0tVjpMW7ZqmVVZ!b~$l@y54ycK-U~i~qYrG+vu;IY=5|2P&@G^mD zN}^cg-)Ie&Y+}&?Db&UR<+i`dm4*ln%BcQmFx@m?y1zhdL4etVfpX%2ZnY4i(3T#= zSRcyS1?zyoScgRZ^kX^BfzwhE1Tr z!NV(_)VGd5TnOfkrrz+~n@VMW)Qt8%cO_UCxXm7>mG}H54-J)sFMDjQSEcQj_k0Wh zm*>64_MOUnxUA0R)ilcGr6QS3m=-FqvC>bVk^ueU7L7D;F8Ol)@_d&}!_A`V7ZAUg z0jE%YgP3(qo9NIQRb70fcFXAuJ0@x41!KvdPU|>qZO{5+*(HgjSf1y5jFSMzB*kG+ zxz7#Y`#jyy>aSatxqHlC1g*d%C_&?7B`jq@8YrGT>5==4%!w4UYl@g2<8XFRD)hp<3Am&bMGdgK5wO{7dcm_$H z%Mmfla6D^|-|C>Oug}cP_Z-j^baT*RaZ)@&{{F^JZgqCO&jJzVIXQW<&9p542Cj8@~Av#LliFKVzxUZ9+_i`}Z3nVFh;6 zJa`g5r)bn(u(Ss{v+=|U%3HX#Y4@G~vIKDeF`-wQs>52#~Ea3(u|K`-P zp1BW$Yd68=<`c`Z(p;G?wX5;w&Q>OR+nR&+AuWlG5F3^UF=M__lxZDm@zj}@agYBQ zq1oTO2s(L6$Li=rpksR0>yjSPzi0xxcQkEhYqHV3Kk0hoR4B`3tDyy#jRC#`RX#p! zBlBY>&tmt8Mc1*9mBZ~wmomvnit9)YvI0|o4Fl=#8PO8col42__#OlQ zxt5r?g}onW`|LMdp4ev^gps{v0=KY%7o&I%7yXznBoLU@}H3!S|3~Gn9OyjddO}xcde6rFwpw z4Z)rMtVm=8`-oMZ?PkUjb4a>PLC?hJCN!u?=BxZ#zr)DEeA0tG9!_q2p0Ub!RDeA64(21ccYPxG=i7;<*2mlg!B(&&i3nFmMvc zo_2lYiKO)BFS86Oj ztZWvAu^ZP_QL<)tem^OXsFaw%YQ=f;Ux4K<1Yd!8Ncg@L@4=77BkUa}4i1)*E$uD& zYQ28vP_OYOYPRCE?%dG}_904i360p)!G!*zrJzX_G${r!WMHv!~`Rgxs_-Z1{tU;d<-I4{7089v#jAl)f( zxV&9?l^-!pX5Xnei_A}Wl2UJM%XZWew)Y8}?7uIOF!fupgXI`EyU7|hS!Rds%6yU* zNq5$pLny>)lI42`SM5qT*j63bO(r#PHs4mAnjD7s%t*Z`xg2 z;==G!!Lmt#Ae@>^#|v~ZD{L{f!kzixJFRvX2PsMkW62NKN_fZD(bBzqqLa^d+HTuN z>RjCqN91jC?TWXks*r8E)dM5Vjqzn*&GDVmO-%g|PX}qi@w@KSxq!xwYw?Hieq-FU@$+#bB;_q6^X=N5tDOhFv--om06BxKkNj*z!AFYvteK+LI6hrnyGnw#p z|E-pLN*I+Mv5)9Lj@1Nhgr^&|G;o`+!xy4+R3*I7pFkb{FeDMo_$Qlk2!jJ8R_$%L zTxBw}d*XJ1osx{~XS!8uw%SMmZK>jfOs7Q@N)*GRwZ%B5|wT*4H1lUkrkE zLxOcnz_}wMgh0w0477Yp%Q&tVqh&T2EQn}aCLOfEn^(XOS>cDT@>1x2@^`;LwyhZ5 zRl1{+mg+D~>bcbrKQXBmo^>g{{L z=fHcCm#fcCH+tIQX2*+er_E(LvxbJJ`zTQqAHJT~bbNj#B`zJB_Rk8##MKdCLKqIZ z!-q;uJ7SxssU13MhH`t;R_~dYsLCYjH@>5;6JCxzI=fS}p)ly9x0)9DseRaR+MUaB z7gLTce2sa{m(~ivZl=Fee-z`m!eyL*Tz|}Tqm=TIa8Lu1<s8dPL2n5_&?5! z(+4-VDF;gPPKPOvv8yOGP6>=`v!v9`X?ZM6aW#QkEV<1aByc0Ae;z-#LGOx19~<#x zrFNu_lC4n6Yf;rKw&>^7rmUQ6=6ARFr?v2VSY^0e_#1`L?b1ymMuz6-P@kVtg*i}{ z@&i*>_UTWa3^P4J*nJ_%CY+=fJ4CmD4V)2}F|ajDNZ-@r&H@(=61i~0pSk17({S5| zgq^z&wSKk#5N`E_)!l*|>sJWZb2q&xroJBjEilwCpl+x&)@yGMR;X3dUT;_^q%iIp z6xv4IzAH@angV2nWklh)LA_pAa){tG0DEtIXlG51JvMV5W+t&zT`i;6gCvt(;!2(8 zyUcj1EAY=2_~l1c_PQ(CD^AXN;OQLlvcF|bYpHR3Znksv9HaXqueB2ot^AC- z&7CdKO@Lk^obk!)?VEfaLe2XK!`NbINrtD?Uu2cQO4YJqAevGZnn1iSEZy^VTX+AX zdH-_o!>?ukI~`pq3(M4_nlZ>+)@S_6RwyR3gP&H2d{UsXlEfJjlW`H{?tY6YbYDHc#bD8Ca$4z^A1h$;k&2GEH@l408pN%jF!=T>x!I z835_);45i%$aP>)XYvK*?3L8d@svrFeeE#&@OMAA*lwRg0M<~aW{XC&=!7nw!yl&7 zj=uZtM`OC{nzhgh=%NrcEM4f3aE(y=m$d=DUTeA_2CYzMy2j`BM0KJufnOlrH8g~jYi{y9Ux@N8$wGP@O0(RZK*twE> zurwp7l8m|U4abDYjT$~yu4>V)FHX8qWvZvooOOLOK7uAg;bll?>vt7ukd6*Ll2%&fPb8aWM#!olM6@dn{II#R_}C5DDA$*QuM0<=iKCglokx&62kt=HULqY| zpB|r#Z-j=9xQv;lCN;iGwxIqZ@0jCmP8dUt2uYO=K2gQr7{2S9{O=S;pH#Z4%F57o z4tKB{CcSR_DlOc@uX^MwZA_R8w1d%;m3{XWT6eK{?`CvHcR0LV*DyBBdF^VCCyHNNN3DFJwVo`TN>jQ2%2?fgwuvvDfyW{6rvq$7vUgj#X;D zm#K#g5M?|ph5{QaFyXCWtb=-P@B6#Z^vrPzIts$s#sV{j?-Uptoqz2?8s=2Jk!cAh zFjAA&`Ym`0z-Okx_jGAyYatPJvx<0(mUVZ}^g%C2<-iQN>bPSjAF!g;WMn=aFfA1C z{N#1ylC%(E&`2hpM2h@>>~l{UwRT1;0Qx9`#?={he%qvw9sYpuZRDjxXN+U}jY0AX zV&DF&Hn+?B*pbyb+@8K@7rxn)hD=z6K&1P-glh(d$eV|rtpmd-Es+kNUDj?{|HnHR zmrB1mYhE-RM+iJvd)~i_4A{`bn!i}sqB{Dyy#6jcJaQE-hN%P|&my2n5W@jM6NJ)& zK=dT2GxJfC&D*>^ zECiT(`qLe!UT+AHt7TVD|u@mP+xXAF3zav1@UX6R=amGrAG%vJb&ePGo|TK9o^PFnZzcS?N6JTUNF-<+Lqal;Y>c{dcqI0Pn&&#oHUaJ zJohj#Dcek2@EX5wnlxwQeb4wKE5LyH{k%hME3GF-yFBys6d~HI6r^EmH7K&PWgC@pyvEx z)M-KA1ca%>fRYQkP7eLjd#^DtGs1ooe!;#TiFPqVjePXc#J*s*8kO!s_R)Il5B%^| zrs|)wfv;+pHMYXPS>_-YUsI(hy*lvPr7idG*;Vt?q*4x}bzA4QF)+&GA@{db(}B_1 z=2MD1q%ac(jbup0`|RE2!f9O53oC}nLl+@$8tiARw!Zaop91P;c(5&1R6oCq{B)AY zU~yG2{&MK@IuSJF*I9NX+aDt3R+%J-nKJyMp3;eRcoPskNouE2s$u?2>C%ID+h4F5bQShh@SkNE<9eC zQZS{ViQ)`2=abNM51Ieh?H|KCCk+jIBLF&^*1gYG1Te#P_xfXII%b-}WOFjFpEVvO zFU-7VI=9Xi#M6v$@jv57X1~?+ke&Li(**H&Ykg* zd13|@c7%iOTNhVt3a{B^Q_0~#r9tFu)t>NNEi^EhRJ1uogJ&1=IsK&+03F;T9asJM zIWz_)jV5%2?*gilK@yQxLEeW|1i>M*!B7p5od$Y@WZ2jOXzls_rU0&@=EHqMAmMBtla=nvq@C539Mp;q_bB)q8A7Y z%-%`H1~zm=b?z<##!fS>2|Da#9C?Ydr?*qwP5?TSOdF?_PUcp~_%jtt+E~1~W{W~5 z_i#!D_e4sU}VUC z>auYyyR~-^J2E2Fek&7w?bVc<>EWFpJEmQQ%*bmWcojhA0GF0$E>M#s30y$#FP$}>eNP~THOT7MvOu$}h2%Oc`F@u0gV2dD#GM>e{ z69k=rUHE9;kqETG$x2*6_;(((Z3?jpSY4E9dtu+tFReoJ^tPPHjYL8vE%JBK)mYHx z^V(a+T0K#h@Ij8~A&~Fyi{JU*=h}Z*UUVm($z4D&V1j2u#p2*tCKfdzqaV>?HY;^@ zzdxHpcUNX2v?QrL1~6b6*|v-6m!x(a?i(>iy>6>^sPNmAc%Eo~g%At0zl4T_6spQLReCq|La%dqhH z&J7nT(@0kNadqHFb$cHQx|!XQj4ISc!#W-qM;H4aUb+Wzgd`0;&i(KM?f;5nN=&2%t^uWGQX#a)L;5%Cs&^FQ9#3V_XBo zqi$~`ATQ)G6qL zD(LMMn=KB~(k&ArKd9$vM6h%#*VQ3kU|#C&BD)o{KJ-%r0)5^JmAU!UhbV!&h{<_HT%_HTx>7CU zoY-k@(JDECdtu6vMM_uaI-X`=ADXoznTIf2Q=HlR2Ujt8M#`#nk{1a`{vkJnmS~=7 zgpfKtoEFtTikPb9W;$UoY(Z%#Gi!0yQ#&{7kw=hRHM2=_5x_Bdq9aPH14cboV3%Rh zOeo+!0fP^jvR$zZ(OfCwhb71cv*ZRdkPX)Qm%oa32;G@c7U_OeNyx?Z5$%3tT9T$> zp2264@`nQ8Yd8vDzExlTq*oA>NnW0PM-$QbxHj*6*~;0zHM{rh`rG}W_Ip#sd|_Yx zjE`-RB$ihVA0RX8AHKtcS7{E1>xUEjF1gC$+n*U*42oKy{eDhP_vAV0?Aq&)O)y7z zU*&o3y>@0>ZI1hYC%&yykn3n0@@hoq<`qQ61g1<;k=7t8;!_e{*nu2U2kMa8hhip4 zUvUpKQ~!Jp^Jq(5eS~p6-<5pDeE+&Xz~&D1)38&YSVB$FipP6P)9@#wo+sqUr5dU; z#N@?$t@TzZZlNKx}>7><$^ zY*w8c;lfy_6WeusUWKOCbUa$ep^5&ur$oUAYbd)5MIRRc(^5GiEtVe13I#P&%%>*v z5$2aMVw5#FQ>Ts)E-sUwH1dJof!pw+&Ss%(RG|=VZzp^hd=-;1M9B=?z^1B^oMj~6goMgveNC(Of!H*{!t-jQTE58OvIw(hh-O00<rD*6C*&5eUy(*d@Y&auv9fQ{L>PN9FqnA62;W3iL+OdGZ} zdn}H@RPGu)F}?}n(<%6XeG|s+n6|J15_v4mz> zJ)b#sVn~q0ivAS3gd0tWxZO&|c95TWi3y1#wzG}!g~$(x+%p`_51T9TFgq>nZK#v6 zE*-ufR^A;4cgMi}K84s2dt7u7e=PQ-U17wiI87(y9@4C_ucQBlv5fxpr7KXYSc|G^tGJvGv-z*;wr3ODCsLz|&wr<>D_O^?kwL=D^MGSucMcG%VZ z1oOZh%_&N=slva%2?yGEPj648x|oB+?^1S-`&DPv`Z0D+Ru*|>6u;zr*01-cm_EUc zD)ro^%$KvKyMN_pkC~AlWrVDE6nU+U_61L;(q?Fx5BsuCraNbv)QG5Ea_vp!MEbY@ z>TPAZkMqO}AM4g~7|cp(5c4K9hJNn@wo?wxKe$umrHq64NOpZ9T^(QUl$Vc9xDHT< zPN-Io*~`ZW7_L{Gz1%ZfXTWV1uqpN=|FPu*WnKRg8VEkxun#6 z>vDasO_AP(#e4OH5_x#$=*~k|h<^FHNmv`LXb}VA3|DJPYj&YaNrB)%=J*<#aq(gjOG%8JIxo*1p2GYC*{nC)&L%@5rj@*bEO-yWMwtmb67MqCkr1ZGq zK2+p2Vm~M&FM>5A)+P7d)KfT;5KVRQAv=bNn-AM7mau!XGxZdr$+Vz>=AGUIG6Ylf z79|b|!n?-HcD`el!fK4JAWl^=#{fE;IqH<=-;2dNp)XyhU&eqE5w;1!@4WX})lG!q zov}cE1YF$x;AN9WAa4B%@}bAWGo@)95zXqzW+HiwQ7ZrwcfBHgCvT3^9 zQ;pEo|M5K$X%QM|io8vnNT_*4XJV$pllz{ijLQ#^AXv zVfu=Sy_0`73poZ|rE1j6H+8|1PNAnH2u9CoAfW*B$j3 z<0Cgy=m~^mq223^$-g+ZndvcC9oECJSQI;|&5=!+b=UmLjRt zBp(yW;Hrq8_eBJEFW53g6pIbLj%6AIYT$e$Z=*rLY!|-~&YIGXl+5u>wWAEN?OOV) zMd~-rmezSmd*V#+WN-|vKj?!r7>S|{qI$$d<|QmRT$nz%n(WZpPxK-Oceh;uY|K{n zHp3dZdXv!9DEmy=0nYMz&deyp9GIo4B1q~cV4*JxsyoCMd*D<~lFT5(iDBx-Kk0_h z_GEh{covd6!7`sa*FU1TtHFcUL}tAG9?xg>RQ%Q343E*;c3F^vuCn8D-+Afwq~g|7 zyV2!k*&^3u#r@KY?de)OT}J8#4||=XX@I>e^7H%M?%Vb05U?P+TazAutus;s({lkC zyM~2$6SGATv!2un>Nkxz(;gv{J}g%8_;;QQB8VLt%uQPk z-kgh;`BwRfwCi55Xu9|noU4nPN|L#{$WQBcbtmO!O;>ZG_a^jG>iDv@uQPwy`pnV3 z2XrFte9{>g2HhzNrQxtQgl@I#tkc3H_asDQX0iLuDv!G^|80zC0tMy6nQ<&n4 zR9c?|yy|tyGP2HjdBxJrkss%{ z-u!wr)#O&k$5VGQAhhmk51xkrA8Iz+E7=nBYspRThbgP5a#OUvaAU|E$a%^!pUqPN zIVWEjy!+x$cU#1j=1Xi2^fU@huMrs$cf)=hkH@J^+jZ#g)66#C+us`{e3EG&`$V?3 z`Gmc|oC8-|KF~nHMKDi;RkITfvUO$lC-u z&?m(5xuK4u()*(>O+@D=qbqe!d_%A6tW7d!zi0?qgFV&C7OT939>ibS{DO$$!Z={? z!$4~?#w75#b|p<9)M&6i6tuJbU%q$8Cz7kVXa9ZiTUZk~xh4Wn)=|Mc3I%jK?YX}b zpEgMYPLP?+)^oD!lPnbA{$V7b>AvuLyK-aZ%z#C%O;!)6AZG_dA5$fr zSwdiyWMEH?2H#`GL35F5C69J0csC!69v!~*MX`FlFHsHNO!JX3>Ajis-%Qi@qXrF+ zsmp}7fMA@oZL^2lXd9$6-d1=SrsHiLSj@Cuu!^O=PP8xDB1t9qj9IX1)J44-*YT*I zPd74iZLK<-ACAWEC+3t?aP?GTWxMsI)&cR6$^8?ed%U$ZLA;8u~fRkx_;ie zp>9-2k>3n+=ullML_ zmq61$Md8upFm%|b%(Psh#-A)nnCRIhtK|0|X`I6-Fe#kfx~E+pFSSqIo{k75k{Zam z_JJ15sYK8Hsf@byohnz$we=gVGdHm0vYU*G)|*%LJ8x)C&v0`*y-ruy{>_2Pc{a6k zbc^Q`h$)iXa7O_Y62gF!3Lj8ba|Hi{XryJJrhrmWQq`1GLwgTT)e#x)<7guJJhl+B zY?=wUNQ@9;7y*o6XyX9W{|nzw#HlyQ@=&!!1YE$E+bB)J8A9^wTbj%T?=jMm}& zTam6WoH2P~>xXkLV3VaT#ftX%XFSy!H*Xl#yPj5KVMDyg6jx;19M&+M7G_kq!~(n6 zZr|Qo=V6O_3T|t?55;M1CTq^c=;v&wm-FGz3O?Bm4k$4>m6k|aP*Gv8QK6Z;o9>|#n&toeZqDcxUBeLIeBld`7`tG-523jD zG{E1%TU=5UFfp`m4x25W9yDn16yEqi2xx>a&?$qhO1)JUP3`@k! zm(JR=yxgU~b{!SW9>o(9HuTd&{R6=Psq}m6bJ*k8gStbl!T0m!fET(eO*)6q38yq1 z!*90=)n?O-DP#VT!9Cp{3C1uGsjvG`G4L%JNp-#B9(F2h+=)oakscVO3|g)g)CTz{93_mSuHo=f%d+|7gc43$fyz;#(gCrskq%v|@} zzw_~f^>iYZsj?GX;m*Zk(5<5CcI(wT4Yf5UynVP4CGB*vJp*HNt|A-0%+e2r-Tolf zs{u1OVZV_xHFS&-AES%RO3q>^BKJAxIS zHS-Q;(sAop zDhBqR2eD9dpKfUVYYXpFVS_?-eW5tf{>46u5%?8p{VXh3N?4%S-=B?X&^uo}z& z%cLT+*1F^C`e9Ql4ekdpLixt-U~&>%Zty`5+V;N+OSU2V$abUetfvI;H5@S^4s7B~;i88g*E zyW>g9B>OJ<%x#|q((yXrZmP78AN-S#w<;$w$Z8mIkYHDVR~s*&aEZQaGD4 zuS_{br6gXZq_dh*M20G)n)07g8YQo1GY~6ZyMH!G&1~;(G_k<%0+Dow4nRq|IZ3+n zgVhuRU5+RAeP~biAAIHv?=VcJ2PV;W2+%grxP#D2tQ9JAySX`*cI%iBTB347VuThc z$u^g!nT}Y^v@2U;9Ba2oBya)k)BD4Fz-;V@EFep|S%mZx*aalQKcG&2!8L=ReGA4lU|9=b}{=Z-OM z!IEn6wok~MltXh|EI2KN;JA#pCCW~yE@i>MqIZ$dx);>GV6IqWMW4uq- z%Sk(gI$5Jw4NEBG{$-;;+{kK2@g?eIY9%LS-AK(io1zwP7T#b=j6G+i(0GST9b=bE z)U4xS)~ZIxo7j03kY#&HrgJ$3Y^fI2#qbzF&uh0eHAWM1OA<#(cx{$;e+hB6ngJ0S80%mP}q7sztMUdM1ciksx&=aNmYqoci1eTgIE zjJCao$=Lm~EAoNK2&d6&_r;8<8-K8XMatc@UDvksZC>&DoZ5-6S@A#m?L1YMfmA6T zpn7!_$IsEp&eY82(d?s>kq{ThWFeqf$40f$$i%|Wn~;ZMA~of}(LiPbyIGNelr1)6w+p2%Inz+EQ`P)3zVSS{{>PU;tkydm1pFm4R^_hFF z%?Z2F-C4a9W-^G%9KR7K16+vWH`JDc7`z=k>UD^n&dW&gEYWiTTxt2=7>s5{o79Gw zo;-FwWWfv7?1<{=W7X^5MV@MD<4c6fIP+!;8^6mt)h!paADG&Q9!Gf>_1i~t4ZC#| z4}qF4?$@a zO`J@g!6ZIX(}d5|bzrAsJciR_js()=)11UyTF$``>5`Ll>|)c87K*Zj{VI7|kb>rz z;!wm12UtO!B=V2oUjyfP(;qzntmCiaRj|`v+rUmM@ z9L*B{q&Y_m;R>)nJ`~pDAte2&z~lY?u80bXf0ySM+k)X&TR;47S2@tHl{sWheu}bK zm4PN)nvDBqa9fGDW^*^&fg@~$O^Y|w-pu}1)URiI@xzJAYa27Q*3Jdz-b0%7lbrqW zySGPeCBKkQzJo))iAMgg%6y~gcw~x8RT{OOITUk;q?xBqNlXmwxlKzINj>MBqg_5; zfQrAwOrqWf@!}4#QB@h^8uNiHD%&ijooyvNa}C^58VlRN31@6rhcd96&Ttsjky+xB zThAXu9&s!HQVZi}p_Zw?J^VkPCW_hx|0cG>#A*?%YPaxjWC375UpRUKv9o?g_qrs^ zSg8mLK);&GiakpcQzz6q6N5qas$Iq&QiF==R>qj-q0issCV<2>XeXTPAVQTE=9acS zek%Pco0_9S)_R{&%}n+YfusCORbRpJ&+4@Nf;^B(xVEaf8xjfT)xtpx>wmhh_r&h? zjUc(twOx})g>Kj>QWoCyF`Cu3lL4nas<-THafpxIcd&q-rcyG}!ltP61$O{&UCM%O z1zF`vDVS4A=be+k8ND?@GYeD7VO8GNwE9gf&s4pi*vwgdl1}_N+X^x~xu%QW5iX$5 zWHrUz=C_^UX$m~_v(8ZMBX$+Bc_epB{6uYR(7`_7dc?5L@Iw^R&+yH`Z3^%g z!T0|CZWH*By8t)a6bY-y(k(ibcS@T({Bv^o=f>j$@;lmB(rzy63DfZy-8o>V@Kk}T zFQ4p8?TPgpDdW@YqDbsaYfPqgH)br|PayOQ_MsV6qZ!P@ldh&@ci!g-!0}`A34sSf z5U;P%*p4BfL?g#Qm^2WUJ&O{tJ`Eay3M5A}cu$T!b5O2XdK=eflP-nW2og!zV$ z);Z>eSlm3TXQFN}p)GR5fUWN0(%xgrN3)lR@#Ti;?FCB}5Dn}!&3w(I7Er*Pk+IX_ zUeHs#nl9n(d&x#m^%lF4j8s#Lt%Z1WSEqi-C!bRemn+(eXQUi&sPmYAnQwmtqXtkkUq0M@bxC$|l^K$hnqs7g7qEz7zPc?ku1Kw)9y32VnXZrWqMZvFA6 z@{XCqnwQ3b8i;1*(m&oHtXjeXiQ@a3cWf}DRwu0x#|1#i?Bc9KF{% znm28)vN$AiPo#{5T4ORd33M%Z9o!p)&cf(i)c1r{c}*e-uNZkav|Jr!QVJu9^gfmb z&Q)omKKwSw7Gk$JwEwHYD?$F=v`F{4Sfo*)oIEu>I%`;v-h(`xbb~*n0Z!QDp}hx= z@8l2INDX94;M#Jog(FwQvfK0nc5wZCHM<~ zSCHNu?-o4RZXw(r{nTtg5;y)AU9uGs?(m~TK63cH;Pt#;+AMl38iTdFRFdDp;2HWl{r9y7oD~2&K!zW?9&-&SIy8!{0xG%g z?;_6D>Y)d4J>nWjGhkK#O}{`lABZ!+?BDOlet3VPeuXt$;8{)hdLd&GB0_K|A4Ky?5){T%%g9^z6d zU#Y%BOLEYNzpPt%Ag#b${$>7U0YUu)`M~VdeFgXo&qSsF4v0(tKvd#0ybzQA4zKt( zxM&gV0mcsf$nghM`RXql+(;AWGKJFUu74VB+$WnGvi#OxJ zE~GOsW_X{LuLtObGpaoBCP(`$INHIsr~d!C$CmOYY~NSlFn=OOx32h9+Ts%E^D`io zPW}{H`4VW9b1;!kmPqG&TbV>c9&s6X#f6~cC*3s4u7K};f<1Eke;nR!knDd6Q-GSk z>>ke52tlasbr#(O(o~5XZ@v6NA3DP`VX5xWQdGJpq7t3qMbF9WP2lb}KUY2Y8u%6X zlcFC6hVDd1a2}8@m@c3!Q8tsmWLVT(&lA%9vZGr8wTY!VoQ4;r342<<%GGKO54iD~ zS{*~#{wqvB%dmq;&X?7a7~C?U)WNePwr18G{isBZ;&FZ@>AymM?Qu4~KOzkhaIabo zF=?1WJ5CgR2cxrZ3k9s#5Z|-y39Z`?onyZb9>q}!tmtuSX)Z3e;l! z(a0V7mDLs%PydG42cTsto-}ylfvPYJ(cUMjl|6(C^L|Gh;0vO{aXc9nAJotW8_ROC zUyPZAp!sm&D94!f7M042KWCa?&iE5zi2zkL1=HipYk2TP5$~tfyabVfRU{n-i8YMa ze!7%yVmURJ!nGf@SUk2w&IoFn0Yp%C({N-`!9{L$I@UUkD0D%8Ep#6`(8Uz3Yz=*$z48Z@{U~B*Yu>Y^W+W+T` z=4NO5|IE=q{($S6XzyvcxI+T~f;9)3(Q$>m8JM*R%Q;kDG0RUmIOk)rz-WLM_h7thk?sr{S zB*nxR=F2y<{a0X{N>ol-UHC~X?V0HC7aoNl!SKORlCM)10N@D?z~7Y|ChiAGN%0*P zz<>374dDme0Nuijg9PjZfBPz~`T^L-OmGW|$O@PX03Z+v0KgRpfZs59#ONYMJKNVg z|0gQoo3A*~BXc7|6i2C-@8a86Ut;g1`Sy z6WDj&)8bZRrIIUk%CNkcr#h!}43>mY|0?vGJkk5_9LjvkEg4)R+G~kAnGq5n$|UF` z55k|Fp0vrZ$59F-7jbIrI)wNd(1gS+TG$AAR>nIO1=pS{FxOxUt5{iWyh+-mMw$x7 z&>3r|tPEKvPF)$(m`Js$4(EAl>lr>0wfqPaq=`B#7r!5`zFZbN?&z`+*tGBM&e0M zwp!g@!`K>V{W;@4fQM`qogzF?OLEEc$Y zclAyyFr!7X42%*Ii}YjzR~dI>qfXv$f9hl-Z)hagKThfJ7hnqt&S=4}s#_5K8hO5A zoaZ^IeULKx!6fHQk-dW<_X-21H%nS5%K<-`Yz$LVhap{QtCg$Oie*fek(PqGsmf&x zei}#o4i<>b8&a z=uxTHpxb(8e|AKU(x7?&Rh8Tw6E53Lytq3-snnWCa{gnz;7OJ6u19$^mc=ZRsVtV| z5J)^k0JO{+h1YW@d!Te(&*7sy6&`~arY|mF}m|~={lKpg& z1@NZ(O4|_$+heHr%0B^{TL4|jV_5*6Sp0D343};qdQ>NiUtn)$>2BSm4)lRKNxEq?ePLhi{hC?Zc{q8w)3YXG zND2HIO*?fXx#E#K|6o=Jqdqav8)~^;C2fy>l zhTrR*Zz^i|Cfk0%Hp?*@IW8_oE9Jo-Aj03D28d6}guN&qf~aflU<@HfExMt{kP{qy zXWK6`QY9vaOhs|IBbN>*%N2s9Ln7M_wGh7(iopU%xe@yw-@SKF^HhZJn+zSLc~`qY zuK+A1M@-MIVtZ5D90I_@k1oQ+^3(x7 z3g$ZYP-5Jv3DTV$IMzd^X|Di_bL=5-TeDn_ zy-EwDSzJlA@mfuKHO>YnT9yAgUYf4%p>^vxK4#6X@~$4dwz;PTSye;R3z|C0Bw6^N z11hRM*(Thodnscpe$*4&l`dT$JgF!`>`R+1Zy+nZP)J8Z?!szFFkX+3f>uwdMGRL? zR+_7THAgY&9z;Ggi4qn&FiBQIT4so{44yQP({ncpnZ&FxZvll#Q8K`#m?(Fcuu$hc zgY=^*)vUdM)Jkrs4!%twI<><$q<}|+n! zSl#S`PK$H##|(iyJq4|Wf_oR!)62BdMIEiYN?o?ohlcT11d6oUtFGnoezpi*-|AQiHc-r743mXBHf5HvV=b^zOYfL z(^vX=+A-{8Gug2qW@hTTpYYr?A*N}oF(x@fnN#!7cp#Bx`Vy;RR)Cl$Yh|drB3M;H zE~S4aspG}-sUe_xvQW%}L=Akp3QEgm?^$boS6UcZly0+<~AP96{);-5ScsJ9Y7WHB8> zEFdQvPW`yQDErQ=Mb-$>Cr5(8jV6e>dt%fVC=VhbKuiSlu(G2qB*UR{dtXa2$PGR6z=#E~o|G6Pi(k8I3ABEE#WB9C|1k zv5q5PezYYdSm@w{bLbR>G}@fMU21RJ;r16tOeA(*pLxVz<+90FC1X#e7Lu&}I-+xl zL>Ft*Bvkfhfv;`G{BZZf;T1sH^&|~#3~=w4Cyvvh zyD=y_{4WtsbJ*U&8Kg6FIdcoyaU{+@^O?{Sa$%NQ zm_}`x>|go(?df|C+fMsvJ1-1Sk0Nx>zZb%W<6Eyy*sr+vRJXa$fl`Tx5}ku<8FS{#`bcU9>fL&$SCEf zYQPNa0}lnwv|jyLH>UIC{*6o0$l#FCG6JxOY$yqg22y;?iS}QlY&sc^S9iL}l8TjZ zpb55{-4&&!9@ks0(`{xw$A~2U-zSOV6yg49VaZX*7;V?A_Uy7KEU+!_tVEWKH?AD2 zIqGC2cES6%(^bfYF2?gQR_pOP+}LPhb_A`V=TNN(ULHAwc81?eH(DfblnP-6R~ah5 z_r5}?ze6s=Z%ZgHB^Dab?$f-%9p}vQ#vI?1R;r)7 zB|UEft7=z9xjqKO63k!RH929fP024=81=xe_!N_8$X>L6UpTIWp^)lMkx zuzS-9EpI{_mtIrL3b*SVU9=JCZkjyH(h%Lr?QgT^kfZy}Lc&IZ*Ng4xBvI^Dy(@Sz z<7(ut-i?vC8G_0Yl2UrD0oa-P7;E=vf!E-p9>&MFXlTaQluBjmIRUGu_Xh9^38c2E z&-g=H(N9|&(G;8B6i#lDC`dd=eJEzTvZz z43`+b2sO9Yp@XlOlRb&Q%(&NFBBN8%qXB`Hoaccv40>2Q7`B)2vKIj}-3ME0;I$ub zD?NPg+iSIv2yeH~z=N0P1bH*Rg7!XjjB`R};t)G!{bbsq#Jt`X?2L^T5ZX97;QVq+ za0J``kYWrF#P-S8=rscGZHQxvVhzLUI)74catW0Ds&I~6iRd>2@G0G-TiiIV{qou2 z@sb@dL*ui)(LgzV4!e)U{%U}{u_BO!b}L|vV#O2lycxvr7T+x=r9sc(aWEH?u?KZJ zC<5}8f1H|oGS;EOJ`3S(3^rRI;>yZ6Yt-@&B9d*m9Q)0bM-B_rqr?R9_d47y>sEE# zq|Q^P+Nl)v0-Pkhc>S(VwL}Tl2_#;!q(D=9EnQN|J;s_id4k)Mpk6vUm_;zP{CQQ} z%1W(0NlB{Yn!9l2g4e6#ayCC+*qWLxzvL`s#uImKILGi&pMu4Ktmdcus^J%@RqPhW z6&N#_C+aAVI4ng(7%;{RPsVH7qa3iq4pBifs-&hR)Um7rzG5z#@~gwCX=1r(LIS}) z1c4kDAjm7d9dz0Wht4T`5cI*wSshXnLs=H~mjO$`xBpuXs!wgI-XNe1vA2tj8C6DW zhZvv`zyxP>=+VmQ#U8%X)E`c&V1R1iq#vb?z|H}HmLPFokE zfLV*8k_C!Q2mWAN%7E;*CC}wwo&Unc{Ky1)S%qUuod_vZuf;Ifob+vI>)#i)I2|J^ zKKt8pLH}gboS;D)6^(|@lDsXmpEcoA>!bR*Mzo&fUUE!ze`*$(dbd54t%!lQwi zW@jSXhtydIB@1DIsxRHA&(KK#AG80w7o2S;6SFtDrcdJpt$LEAov$PSp(KE>1W2Q5 z{*7{j6>!Zjc_sjbJOD17nvdX%#S_2xau2j@in$Ey7hW(ZjKrv5{LRG(N*>`CPR!%o zneIAoRZ_DX(dW!k+DMKp*=x&8QMRryWzjq;utUW~MJSlf(uf6r;$>K$l}25@ko;#k zGkvmzf_b|wq896PlAycjy~{$gdR4A$OncS{&O?l(0y|TZ^!F0)>y{b@bn22}wHITY zwJ>=N-5>)4E;jdV#PiXH{W13{S9V0ylt!=B@ z9&z!MF_f3P;V0gqee1Fi`gAWGDk1@}5qNJJ5ThwT9*1-o){p6B`EkH?MP0VpMu5W^ zKNg}eU%CL@wJp(z>FA<*$KB^SQBAF5ro+0^`Tbs2`DN4l<|B0NK6R$I;nl(nRUZJ& zC=SgC0K@bHhV}amq9t2c*X+H%j=rBcB_xugM%fH1cMmstV9FO=uhnQSpHSpFN3)7c zKJ7=UDvwfL@Bpq0zZu+re1a{x0;dV%YuU8QOhT3xY0+#%?-J1=7eyPD6}IK&D2-2v zFu83%a&hQX8l8JN&FcFM4tdAy4ZXVci);JkKI-?sv=ugi_4e@LfUrX8uD!(Oyk4V3 z0$bn(2q%z!!LRxFuoI;_eF)&u*+fmp}O>+zV496V3&vR!LK*k?mj7rjw+6hib_kd zS5t{lOYw*7h&qFfrSbFJhHEvW=$d%7iH-Y{Wr^p?gO1GD(P4+}C@(jis1PY-jy>2% z3-x*Mi>`-q1A2N9pw9<{;cp)e5Uo%R{`xlCa>~?qVcrT z6n7_7%J*dQ&t4LNs3R4kiJQ)HiJ?^Ok&AW_IyzN0C%;yZo}Pn{dtQ!Nup}93CBb(R z>F+2}T1d9@G9ZZlIV zyQS-+cj+?&QljML+7eP=aL3L z;IIFGM$pgae85S9dHZ#3)xtg`_>lg>h(6Lsx`E?d-S$5`E59Sj)k-t;F(PKo7++A(d zOw_oOq(ub?T(Gc6t8Nb1)JbIT6zd#uvXok9ZFGe~NG=74Cn*nc3ooKX^anl%Q)tHg zDR6Pm$PEhntaphk5m8)B&71two7MyNd>?OjIA52w+NVsP-ABx8OL@LtZja5K9MSFW zM$HvXH{rrFr{HWC*JBvT z(-?^OkE56G@x z>QoFHo^8DZ-ct@w%m5R#LQ#rVK~Yfrt9xC1yFBpqVnusLQc!7J-L%AsT z-`_l&*AJ#Fza(gd%z%37mP|2*p+G-P+2P7XIZCes;NP(xA+}m8z*1QOsjTAk<^Xzg zKeV5IEP2EJ<;o!Ze8BJj2zezGXeE@h2BJkIst}z^WZP$cEnK_R z@NSikyj2{4e?UB#e*;zD(q&e%*Ft*IA(nNLtGP4VU)#^SqWR`~u25^#76K>v-R*l! z>9XDD`+Mci$uro@*2!I>_pequcomey=U6fzG7xQvCqE?lF%M} z-`H1uRF#j*1HtbuI~A|G(zbV4=1NaS_`YtF2`0Y)d-H@n;7`k4RyEXf1f6rDeZFvS zsJie6+sUcbRm1_;$zt-8nqu|_bB5%h{UXA+?@k-B`%j0cx$R9&&tX?E=J8|tckh`T8UR9$p)HkRqZsd43 zYpd&$b4}bf-iM@1$9`vy31^Os<+$?R@MU}>t!NewXw$(E$}AYpiY2u&Qwy9GGZlCr5n;bknSQ)Tg1gJx}xtQXpCeCl_+ zBk^`kAW-r#o-IUhveo=1bwE}+hoIhLSc_Vt^dYJ+xH>~IPkjo?9&EI|)pU9D>Z7Rb z6|H6izkkZATC-&l)T+p`M*4z0pFBrq=pV5s=6Q60_s%YsXOo2CIzH6%FrD8Lx4SJC zizl^L`(@7l@+63ZOXdkk)MlBHITkYQdO#dUuJM%_3K$IEn86W`#mT;J@_JQN*o<-n zIgtu2FA-W^9L!i!WIPFaG$|tOOAr}#!8XyIZ7Gm(X=3H(*9(>x97tQtn#1o;!|~Ou z0%kEpeEWBZ?>PCJXW0q!-7D5D?B71=m;89jTG=VTVcJ*`1*#D(Q-6yT&i#Xo#uzZd z*jdc+{W^*sMq|*Pq+@98N)4jt@=!V-?b_OEXz9L60O@fzDz)F8S1w^KSY2|Hm1%_FK32b+#}HUF`YbGrGUwF8|RJSqpTWUsJ~tN=#}#uMA_rF`=7r#i~|^4IMi6hW?w z>dAxK0%{~j@6OhVPHDhvQg9_w+~lIOV?Y5*yCio4eMMt*#fWjfI5X4KCq?&*gDmbZvgx<%99J^2BZZ|Dj_Xw&y|P~G za|&D;zuq920tB%e?8z>nNT1&#{bb_~6zm@)S z;l|9`Op%+72jj|e`8Jn#!5<^gd7Q0MF$i<+B9J)DG(*LX&NKl~XeC zaerY28@p`c6g3>ULuB*=2cGZ6V)=-N<@nlx9^coI&G&uv$@Ti}y)%c^lh+7!rCDg~A*>ZI7nOlN%?E>#5* zyvXJ@6Q!@r$=i?AtD+A6@+XugDLa>A!}iB&)8|h8^Q;}pea3yStQXs44h4yxeR%$V#n0tjWI2M1!|41G3J=og0=>HyH+fMy+zsb6_@Xk8m z4&&3EJQh3bVxK9~wVY!Wc|1^Nob8~ z#|hnvo7{>ErXBNSU-r8`F)zy7Q$AbRF;=X90JE@aK83GHJ)dMXjya zxgns}6V97c{)VKBVLp7jnD$BN1jOpIE2ox!p!e+n|Ib#7;nMc;apONWPl7M>*0&qD zVcAZZQ+!{D%ulq3LdN${Pc;W_jhoGH^?Lm1LU?=C?A#|^8VyPZKMXe)|13_zI)T?3@jj_s4E+&{P((rjU!I3Jz>84|5XF?XUH?gnjdG_|R zP#+-jB&h_AGT8FTDMfd(8zp)5#Vy(oU$kgo;=^{X;BeE@FI+OmqBivHijl34tQgU` z8)sK>X3#zPOI$q?jppp=E{$Hkp?JYwTn7$&`ipB+#B~rRmj^nN=U0qDYsS50@W~l( zvu7Jf8~hDH{<@A*luhXFfeBYI0y<#@(7^Mc1B;+Rq(pF|L$WjM<7@@EZer5E>Cf6(kbB{X6y#3Vpjb?ts~+fsq~@io83Gx1 zOfI*(HGjs9ejgNWdG8RQXU_1uALP(`XVa+0h)&oa-!jbTpnxGUPouKW=KFL zP6h)+A$5$g;w@HRHm#+zHeIhwY|o4I3LDG5tUFNZ7h!UJzZacwu4)6FE5{|=Ac&1r z!jb<#Q=2vsT4h^7u{x zpVBWbREtqWJewMuHnQKFeu(UZgK&`cQbDaiL|1U&1`{N1o{`Tbku4Xa@d!u9kqm zK-=NNokDATJf0@$pTyhHHmI~~iciT(ksfed)${I%Wm=9ybr#Fe@f^%N7sMkxOMb?( zMBBE(pK`oKuE>8EIJ(|<2_zJH@7xr%ZEvLBP+j{pdZ*rv&u`z4J+0GF4C3D`4NSE> zfqxU`e$CVk5BAU{2{29@zWY38BFSHcmi z=W-=BvWDwY-4pl$R=5(*GFfbTp|!)M@>t4|{ubbakDmAvSzPSeDb#koxu-F(Dj+Lw zoosJ7u#78I+J9RDP5L;M+@U5tuC}&G%h>Wf)|L(`M(}iR|7wVSsy0t4FZgLSP`A4& zIZiPB^-$?H1BI;uO`B@E=arJ#&*d zs5VEj!awbmSUFk7 zW+}e;6=N7rQ2*Mb6+vT^Sa_Lg0ZGQHuGUy4(2N6LpKwR&(V>0FO3|A#vvJm@*~ zv!aJp>#XZsE5w*HXM!}`6hsH+0TLS6*iG>tEf$-+H5I^aPs%TJFmiH5QSVgw>GH%E!UDtR<#firg@ z?k3LG04qZt9%AOT7X{UR9vH?M$uu*de;R)7==wQJ)-mO>k!ycwQDgl1qq7<|5#1Rp zhP@@(cOm+%FYedr&^ui9NVt_?>$I!bgNd=^EY=Ailjpz24j~c~znrL)v!}=pZeIwu zxWwa!fuP~wyArhS;Go(Hv`n=n((a6cj1+sh8bZtgJc8xDRlHvHz$ADd+@_Oz5tNp7 z=-R@i`=mMIPe6JIsbMIFxe(lYj@P&(670{FEGHX)H#R759O-%R*%qLO*I_gYzW7s8 zjkKs}1$#5X^WM<-W}hO^CG?1Lh~G%Rz?E@YhyKA0d)*^d4jDTp-G_&Wox1Gg(i$7( z!jU=VZ>L`Hm6~j_D7-40&0od}56I;XT(X%H!7yS!n&3w>NB%*zLAbN@8l2p`aZ5tx zAts^3dY)GYH=QV?W`w5ti)iVjpGBD>^oJ;nu3UUc*GvMe?3b74w)S$n;c)$Ce)t+j?Gc2^<| z_Kg&I`Dx}9^kAk;i1E}umq~13EE1<4+6003r@#6yr}>#`f=b%(haly0=ccJezTLVE z$eMK4-xm=xL*g{sAe_g+y#bxK_~g%5)pchc&s)jsGWE<~>Y1p|_p=kTB}dwD&w_ip z)UHCJ1mU|TX&~lEIT+l-OoL48pC{h^*MrL(7>9G*58z2dO9%Z4IddnXLm0~M+Z-_z z``#2z&$qh)Y?98QBU~=+qL(*Y86P%q-CBXy%ex)FUbnElT80lJ!E&^Ws=&646BB?b z{DCRRz+{2{kNzg(1!l_reXJ@#z%Qf}4-0fE>z70?F|xN?;}WVYeu)_-$0er#7Z*5L& zp62$pr`?kUeB6vD0kBj786qd3jDXeaG9v}6+j&;7*q|DSyz}_kM}QMAKnFo!rO+HY z2Pl0;nPHFZ-dJ$B!%{(iD%Y0Vij(^LSJwrXkh(aM_-I1 zgJ_^Ilby!bUS!tTV&V6SY}B7ZbjY*T+8FS-yf%?XhmveZy$K%p{!w_H29E?ioL(}L z8*dVGEt;p#$&Qp$_iTH=X6oAMpxnMyU3=9(C)?`Xfv2g%UyRBzb6k<~mA>b2Fa}rv z(B5%rX^nr%`=42YfE~FUJ7t0gsRQYADe!Dv?t1kQj2g;OXN|iqK=|O(V+o{&PKtSZ-A~2&2)RPBc6w zo@}WS+*C2%RMD@gVo+UCr>at~Di%)NZ2xe6GEnISX>HYY(HtFtOWYTB0G&A3L z977zo#?)E`C3<8|k1&>--}w8|9XD_iF*eZyAH0EY@bM~Xw!>tS_GsC=m>Fh{DUTPS ztEeVEFAd#+6&^Bn;L$#=(4I={fKco}`d@}iR(=>0OZf$~lq|KqwX=Y9NqTe1x%EX@ zIw{AAiL}P~!p3So&QkLX(-xd_E_xwaW9h-h+5!;~OjLhNv$h~uS@3sRT{Gnee-Ey#9SO)(Z;yb42 zT%h1)8zJA}fi(Gvh!uyUkuQPEa=3H%Vb8Ac7WjW}O*N}Yg(jNzNJ}&^Sz@X~ezWc_ z+ziR9Tx=7o40`k^1zLtKJhXYoz)iELfO${$v?&a8H*YU+30JrGjf5`{>#YJaSj96~ z`C~Nq!f5RV(_!0dzKzoM9%zjoB{Ue(w{Yh^fP`j76w78@#7q8tMoTk>bldnF@b1tv z;96Tro3b)%x^w+*(P}c8AZ4x{2}Oiahb^q@Ra&kPRz_df7FG4fMg0i)Dcmi1^H5Ad zLP&uF3k*8~7*2!?PQ*W?fQO}0woQsjf+>R@HUzzarZ);N?A|+;{4+m{g^ycFMQY)6 zP?__0EY6}EBTf|i2zUOSGV>Ze=;>v=`22O$x=`OhlX5BY9fm2izcvrD_-fa7q-MD+ zQyDt<^JZ>`hmnM@rbIkJr~PEER_DO;`6&))MEs*%9-id@;6u#Zm5(*?%k?_p;^g?n0= z*3W@&+DE*0H>oAdkdT=O^vYkv4%f9MpH|hQ7%gVF34-|y80Ph}j~#4Y8eba@{09`8=n@AgW# zGV(_)D7%T;TP^UBLJG#&N8SKjnuXDIpRYDDdtaDP94DnGQ<=<2H2Z&^ZkwIj;6kSQ z1`w$AWnCV+GRA&3e@BzRkP01rp`DM3 z-J8m*wu_R%O4||!w;wbNgra54PmZQymNi4i8CMG@n2zhdqgR@oG2N%SuM&vmAC>)i zTG<92IwY00<91FFHmnR@Al*wPI~QD;8-c)GZ@j| zf-auq350=RszVWp%h}C_QRw}`xaY+AlZ3-Mi#g?1yC;<*Vs)kGNyF_85r)HO@|dOq zX1zwDvrX<5A2JH(2idSNj$t>G^naZlGGE+riV4B{ zuGZ&$Biq+$nw--)V4vWrT~FFo|0O~vOslakjv$Hdnmt$;s4qE|6jFkmxTQ#XH3C&<7{Q_oJD=wQ=8@6+fLqiK!-kHfT z;ZrQG99|a(Fe1`u=CI2|uC+`?_0=GwvWMSZF&2H32XU_O6x7h5i7+TBfbco^@^B=4 z?^cK;Q%$ok)H%+fN;;-LYuCw9a9Z>{yJhx%51YVx@t9uzg}Sdl&kMV()5+*?5_g;7 z9p762tf91-opbA{awIuf52Ul3tnTT5#T}Rf9a7EGx&WT&{({efRwhOUhN;BN>BEnU zYmx(3GhBHQY&tY&&b-k}Dz7bL&yk62fa^23qT~tJ5_Fr*<&hkc4=DgAxA^9_*%NIA zo`|^WRk)7sN7*22ullQgh9D5gr#$FQ5b9BiY!Tt*ArSctf^2anX%gmnE20c zDk?@uR0F3v2Xr+_=)5GOr@r6XI`xR)QmDF@j|V8 zR+F^tw{zAJF;Rl_a{D_a^roH#GSxo~qm~j&KM6}8ADMYn?gA$o=u_DDPJo|#slhVn z$R5aM?ubC#L_zoYe2Zap z>-IM1)DxT>gZRl^evR28_Q@&N7H4vGz$26qAKbh%sYEDp2|)ITb0ByohGX%-vZv(?(TY z(Ui~skZMGsx}tgIOd6Lw3oxd`^5OW_xy`yJM+(Mr51m+k$DAjhb?kEj5ff2Q0x@s1 zj#d zkH)4FdZ!W`C|sag|42B@A=}L%*ERq237g@(K+kD@p3=R%)tuFhE&7o51nj`wua!=Hw4PbN8djaA zp+5%L(xg{2-9W~}kjWFD(?-LsE0CB#-W1$;Q@t35ij9QS6q|2^-87D|qi|euUOZkM zv7?5iXk1-lxSHQtnP-XYN&cM_=*17qP(0Pqn42oU{ZkpMpIln!J~?eT%;-b#uS zNPHZ|%(hCn@w0zOPby~8vt3eGkd#wk=U&wF5T9vrs!96P#}5i)Jvzy4shK%N%tz7e z+=hwc=j7=hmedr^U`9S=r@yTa5xqe^=^cNqrVlbQh6_$vie^Gwr zG4#CtyE2M(UX#;Jj9VFHOgNm~Ry%}J6zIoWxNM}5>RIzd_qGV0u6pnhA7!Zq<0!a= zk9tuV;t4LMGvYLdbmW? z%Jsu{&*Bc5ummi@#mPZpr^GF$08OTtO|ot8G#_m7|1!LJOxbf*t5-mnEq{r9z_$9d zC?hppGuCq;>f%B&OhekXcpjt4ly5rEGotZ`JdIEKnsc>g=sMDW2*5&S+{M}-+?k_qy2KitU_veuHh5me=`2k+j zj@vPcE7p`x$5ux{7VIH0y&2`DoS0&cD}$W((pf_#eal92l3f@xhjapd%k5l-)w4p4 z?hMmtp8uoWYl^^Rlo98$B`&y$LB75&?v-A~ygsrhV$eGyxAN6*)B)xR;MhdiC7b8z z3GI%iR;iFR*t*nXh_@$&}?m+QVXJ1>m2=Xlpm)hx>VaWyXW~fdFf5@&F z$h>K6N(T<)sF}p__HRI|;+0LtQD)pH`WhF~p;|g$(^k+YMVKol&Ku+^WS{1lOyD2V zM;_Z7LuAh8ZB*6PvbydMx1`1oo*lFPzOZ;_1W_WzAIlhtV#?ufeo{WeNb(8~f5iVI zS%(cNz!x%)?Z;%Z!Nb718?kO!%IKK!MvmokOG3Cg0pWQg#rO6TBS;Jnp_p}OX5>~3 z$!7G&H<=094wYP6wx%im@g^Vm=Fd^l3E?c}x74m#HRVdSVWAq!tI?VQ z;&lC7XfJFmSy!coQQ~!ZJYcojHn&FImR4GQ46Q}&Ux>MO9-CCLL&wb{JV3Q(DT<}g z&{k}J9IwQCz6?>t?)S(UQ-DGcI_Nj`1soRVgsKP$mj#o5)&T-@{#VW4T^K9541sp0up=n3O zybqRkr)tHfz;QKB;S4}Z1Koz@!CnQynA?8VApstH$}+*D2C} zZdzT>Uf2}Dcue5PRc+RJlEtelbi31+eXx-v_T&^sZ?EWn>=(BgxFwHK+2q<4>!PVb zwdiX14?EQ-QQ&Ec>pV57=!2Txrbfl>yl8X*Mw4!Y!-c>>)cAnX6Ts6G{G=t^{y`At z!*Ol_aidlEbmYv)R=ls>nZ7Il+Jj68|#pfAp^Vv+Ov!{m2U1hvR0d<+Ehaf3tc_iKfuCK%8MNrCf6tBQdD?JHL;A zQ9K-Qy0TI%PQ4#L@XjtgQeo*j@UJmaFtlBzPmT4xeExIX_nK&Ewzr}F_wPaO`jS11 zm7K=+kZ2E;{5h$TkT=9S?=|9|^(1F9fE_l^u3|cBz8Y$0A-$Uh@$F*}9GDW6J{^ zupA;#yp37fnH>At+w7xlBCb8bR3At@Q=l|Hd0ZoJg~JZturAL8 za$A3acP5xo22sHVNOd>Tu$F-rB)DY%%z&NtOv6T?oZX9k zZqOo1{PJ7%+9JvgCW-_QQt|FS>Z%~sZt{OLA8bz%<*CmDc>u!52Xru_&k=l8YCJmERV6gN~&rR5k4m(wbnn_5GF!`@-^DnLl!I5G3rY30`=1O zBIkAlN?U?m69V~dKGSTEy@sKdYxYBEk%4KF=7;<2fmU?KJRsGkp562TEwvM*?HB7T z;!jSA`!q|qAO#8xCiX_1Ah)y_jG!f?BraV z)fziRD$7Tv93N_MKReQoOrn5A z$I!~seRSu3*gL!>`=#WVY&EALW-?8cm0H6tWZA4T*9(208kqFl8b9sc4*|5ff6t6> zFs~o-P^Y=MsUPd6_xHM^A5JF5?_jm%WFYs(7U675nQgKKGw7(ufoa!FLLx>TiX5fh2FrLht*tA(DC!v*5{Z6{`iK1;-hubnuojGGi1mPX0#jvYn~c+@ zajq23Pcs)^9FN7rPkS0J1N;m;-Z63GcoN+rWxjX?C>|%_c?eH>i%P%UM}q#D?=dGv z=_udivN;+j>VOXA`dm62k*&0V{(Z?081yGFU2dn$_WVrtxNTKQT1`%|6gx(%pqoxx+7AOD}k1_-Pq=e)3Mn>$4;kXn;rIwZQHhO+qTmk z+jg?z_3!V3W!U);8$jp9gHv%tGD3ouk}sBEzezu=ylK8_v{G^3M!aU-9F(!|zCQR$Hi7&<4Q| zi*KxndAEt7tFE>EdW$DxVSi0pNBdDUZCk^hSZYsH8q;1nyhXGUnrGJZUbKUSzN#bsyyphYM3Fb#e1*?4O^?Mlgm;J7bVco5+H&cY#P z2E$(Kv2$sJgnW~Q@fN8OhboBBO-jTdwZOG~0SB3a3z6hidobR!{9@q~BaNlxG4CW6 z_KXtVjmSJ=Z1J*xhDu+PsH&|Zk)bZmYVyjMvF-_hmOG-Nd#A1@m04BI)D%MUZv<1M zjXc_~LvV;v&f6*BK3Q2Y>L$#}tFg&o*xj66g+Wfs+C5tzDFx|oO)_OeVgpL5qztM~65~LvK5u z&?jCX_0+FHT=fp%iG_#VrZwR0wVS7$glOkoNQs-<<0j75{RZ%3O0)cH`>p_lW_5Gr zba8V%zfA48W(&y znGvX>>$|}UDOy{>YuV3+9fxUL9mHWI>=WPUi|mzVUt*w65_iwh_l!R%8ZEhw;QcC{ zxNGoU*pZ>BqqWc@-!=aSeeOFW35K2%=m3bGpp zfA=}C;%I^dbAsVsPV%}rQO4d532R@}+e_4ML(U+3>o0^!)vFsnvy(1sbGWRBzfewt z&%F4lQ?lAg+r|Ivz4Ef;r&%ys0DAPq;*3r5#qffibdAyUtP2@6AE;3!(B`LAmcKBTZe1}EFW02G zK2J|-XGIa250oExBD;OtqzrLF^a6^Y)tE4j;Uqa;GYXrCGY+?|AIfhcgY!CNTNMw3 zeEhE_oQ%7PM|;?|kq*S!NJH*C0O_dQ?=XGf0IunR<45Na&cZTv@W#%ET!2lZ;=>IF(bv?LsJ@e*{%hYf1y*r|gUezysnww6NMQLa% z;$?9L&$|(VLmS)9P*@e8I>|Y9V{1(ZNR*p-7sS4Q;;)BS<_*`=H1>{3njqK!jnxbR;eDw~%W#5<0o&HVV z1hi7~mRKAS%~CN3r^3UKNf=|o_whu7(N1N7XMmk1CX-^Bu9yDy>mbGth61ek-%B@H zCT7!Kz(fYCgr_QZ5};*5E=$O%mO$EuNNmPg;`xKS_v-GxLC+n=bB|0zFAscq&b4N}*cUWlA^yhg2 z1o>|uf+FJ0F>xvi4&}t z_d0>+aM6DglAi1C7DOu5elhG9Fg#}&B9PA4c?$^;^Lc<4J?=#E+`w=G-_O3M*@uTk zAP+)=NkG)ayuwq>#tmB?) zZ0T^;)4=#7K6BOJ%`S|5lWkE%#mSIPr5M#ksQT81=|p<6L_j@&?qbJ3uiLF8L$9|X z@`by{C6w^rGiaF|QR#f56F0Yds`FxcYYxjVyd2fRc&^7kSBS|bn)a^oLCc#CdjH6mw85W8pWx9r4M;7;pyn|@KgLpulYUH z%P6C9H|7)FrLcIb;@b!#lYIzmZT&c7>kJfWWvmyZc0X0!FXe+*wfa~aP*=}q+1-VOK)(E;ELMpDL!#{OJq#5yBMlR5&>zjyriZs>O()2#?M$AY{!u#gWp~t&Yb}j2cUy&pI&E3X zuF-#ap{W|;K#b9|9DB-B&IL|!@b;dp(D){KE&`wWBCQ*Ah&4b#Cu2$vue&?S{2?AW zr>H0;Sa&trUTb(MWe?x1wOUU$WRq^s0f;s#_xUtMh@x zz6gfJpqdf(ah}KJ3GCL>PQR7ocn(o#$!OQfNOoO6B0CLNUF%b%?LvbS>S;`cv+w#J z3-wd!q$C&EV%mG>;V2(tQ`bOqLk`Ft$efI2%|ShMpq&9`%>i>Ejxh5*d55Su3RP<^3QDlCYa9w}Pa8QLU>D4@tt#%1eQ0b8ltP6PMo=dp0}oc%Vv=TqyB^G)nhVYP5>AzX5Iar? z_gmT`6P{=teHGr$^30jrmWNZMjednN0Ccc=olYD-g4LbO1h|i4is$*5$%gfqf93-L zyqmgYA~=+ercVk3pYB4J%?N6hy(X_RIlhFb=<$0!Y?idl5+9+%3;x$WeedWg-Lq~H z(XI&HUSZICklbq6{SeUI4ENtr<`=@MU*<21&v!L8?A>+!7zeO1Kvy>+ppL(#hmc13 z%IA0_foce<9bbx1%)<>xGF#f<>H&r*s0Rq-%eY7Ih&tzcJt`*pX*+29Pv+I(^WS5@HTmC?}?U70+A-dWt=;SCzljrA74O7 z4!I<1B|jsH`gG2aesEVD-mnFF;!Nj>KnHF|`)urT0&;YvP|N#?k}~J-o_?oCr1Y^O zTSpXIGnGD8w97Dr<9{jKV^AujYa{ud=>bPqh4i48x^o&i%H^EeA|yfP(WBcQMF?Bn zYfa;dnwgDUGt2gtMl~#a?Dgl{!JDvJ2{SAQfD_MmmuEh0tiFZq1eDR7g}vrc+e z>ut!2anxkSy^?h1^eZ9S=)8rwzl1M#CZ zxB`aR9)6zyHLyZ=Vgv#ify>=fU`P%ds92Fta;YnAKah-T={aEK@tOTq&JTS7X1s~t zSpF@z)#U7^KBFx}{eIX>=0f{excY<#Ygxv8;+@<3J_}suB4epobR=CjZMMpJ_GsWq z)*MI1g1aH1VhX6(vHC%qHdXCSE;98U2^m)3cT{2x@4R~41cBhijS!0#e;|sMD3I+g(viI#(gxA zcqxWfyy0PnzO0=mj|lxGm7vD0>V8E#MI_r5(^&NkK$mRm07+0`CnZUsxwWShXBlRa z#>mp2lfF*Twrd_H`!U0!HOVmD%|dYXc*m5T)K#%Iv+(S7r-lfa>cx2_NOgbQ-bS zE<;MF#ImQmVdUp8V>*%uarg00%y33X9u+ z71;(7(L3k&D)05hHCfj_Y`iaAwN$B9XBAVwE=|Z1E^-!rNik-zcXBh`Ld?9K8aWRr%aH^AQjzAhY-1W(7@!d=%juM)% zHT~_hC89gLCQO35qqOqsYN6dj{*TYPIk`GA%tF;zPzlPrrtTIkB2?*DtS7Iyav?c= zvlYrR+Zo=N>n{hXW>r7FXK&Vu*<;H?VWu(iSP$=$Jw@T?zWeBK3g_RW&KC)YN^wyq z;p9O5I2S?$F7;UXc$h$!!q>gP6A;}}R7`4x+hb@~+6)Sd#sV?IdeLP1qG3CtaC+Y) zSb#a))(d~0dyB^}jC6}VqRfZu@z8DrGlLJ88IG#+?Lq-|t&b&1=h~aTO4qu(6rU}6 z&#@dIZ&0!j#S)^d$ww-S2l2$mN~I%02}f2=x0~`?KhbNKV{ED_o2-#GjmE_dHO7Vg zuTHv!JV$mMvUrb`nD~uup-n>T{V8ds_fW_qaRtN-qCC83q}}lGk@6Ckeuo~UuTg^! zYd&bXFJsaGZJoiV^SKGHu4+M)uq%O?qsFMDKaNgjI7M1fZbm8x>fB+hHK1p9G6%3? zbWD$8HVdR`BF*m77&D*~W(C#-wcuGM<2ElA%XNWp=xrYtiQON@XtUEg>@xLr>og0M zd}|skV6+PUoulK1{JI_J^j&S7E=bj#r^%9slMrN5op#;JoQm6_8;YJ9_ zeMq0fYw7LwoT``ik``v9>?Gx9IKkj{!~1KnreXJ$a_udzZ_VPi;O1OVruhXkh4VLQ zQN!b{=J+p_kiepP-;CSN_KX`+6)}(N{uky3NsQtZ1m?Qj%q%^K?|8coYF1hl*M}0e z9R!s;1ped9T+KDqbv!|ewGoaKeeknF&END_kS=IV^MA=jg2-~>54B7ynOHcv^@XNK zNm_&H)yjQUGwoe9{(bjT*xMjn)o4241Q9sV$psP<)ij;r1poLWRtzOR{Qp4D%WPpN zcO6Kc=xdiJReY-R8V6`gzUQY?Qoo z`W(G&`3}h)v?5r#i!k(ltpt}stF$?ub%b!gA*^Q_K6^5eM%lGfzoHV+P#QY}c8{+V zf{xNEMDO-ao#di|_^c1BkWs0o{|?;&;L z6JRan5nx4(yt|sOoSEIZ)TJs}5G`YMgDr~P2^)AJkm$p)iR$LIXlE|>u zJbSnU@?Sp>rXNc$NMBxR9A>7@r$=RjP_UND7Hk8_&xHr=@P{V`oh4ky$_uF& zZcvTV^h>}v-VVu|AEF+YnOb63zOBySWqsRI2xFZ#u!CWyGw`uL8>_#tiEBb3ok=ss z#Ow=n$8MJRp+5NcJ9zvu8MR=5H+<6p;LlMsol=7a(KD9kskA~9-{|KT1xN;9h^ya2 zhZ!F0qc^Wd{n8CW^+|=YZ0(5j`Il$G{Kmw{vR*^ATDw_YM5;~8H*l(N(xZ!|MdLx8 zB`b_+Mxv2V`q%MELL#W47zcPmKo_bSSWF;Y;h4Jm)l#}H+V^kkIE>J${Xe!cv@PF> z(x&!(yT2B~GJ1HX%k73(qO;3(%hTT?6HD9&ea6V`#>h4|5b(bxbdC|Zw;^xi17`0c zUrJpr5JT4q6HfszE<~a0?@F*wx1DN#D&*qVD)D$PmE5@{u>L)}4w26HLEU^A3VD&z zZoj5mZmiEinci1qF}ttJ)D6Tr5nXo(O?u$u%+wp8U0Sd^UbLHh8K?szGBIbc6z8Ab z;AS>1D~#c`Oige&uKf;;sk7LEy(?`|LO!mb>+3n{u?`?O&&>su2c_Iq>;HQ9px|R= z=26&Q#PaZefbK^|^4U#2SjxHuD7xnPHqr+xT!4t6Pm6uK6+FLLT;!>GE_Ty^^vV8y zs=MqvqN3m+vzBA$7k<|~Cj3BaY^N^bhQIO!w6C1-n3WB^z^$(eVD(1aLQw7pSzTd9 zvX?2w{v)_pEyWU8l7{zR!=PZKseYsV%;G(My8b8&`YVhBP0T0*U<)eMtElbzGVUy! z(A%5<&F+Emr5Ph|#+__LTGGa@rVTaoP%w4jihEtoByD2C8COkf+K--(!fJFZp009> zsR|{?Xk-CbweADEp;+i#^>^mm5TgNgQfUkh`-g5*Xyy0v4l~&mroD(1>CwcQ2~841 z>L}x|Bu8@ItfyOC-85nf!;_4KLF2>PTbA(!Z4$cEO3s$@*~C49?Io>}%KvsV|2x}VB{qtqoAc!y~@h<;iM^|C)CZ}@e6vLYeSTsG+ zAh$qwYsg>%4wJX;W2}y7xSkOwgDfO8_GP-M?`KYOlIM5};SeeSwaGP3lN9m~T#T37 zi0yM)=vbsUPnu&ix65&}8q#xT!0#cCR4^bRCeD?=%JdTIN zu@4e+A4|BhYs4SYS)8Zv=UW->?C^#62q`OM#9*WtG+VHAqbj%_67YKPtuvs@U)SBM zZhUxm!UaVx|HJ}mnsBtXOLZ=sGZRV8iB@AKm7VAwR$awEv-L*75I9xG|KN!?+C1F9 z^B=K2>B%S@_qWg!4F0R$We%$huH%(exELa5)h$CqiR#&~eByiJLxSS*YkfWHdcOaer2o4~EMBv{t|TuNKJIYjRnZcioEEavAWHF9GI z1a;fe4!6;Yl-iVK^;4_yN4L&DxbQcK`8BhpkBz4w#nJu|21m#swT+f-sNazqy-3Q@ z!M-lhOhx6#A3pcm!Y(xtQIh+AaZ}{ipYK!CgEoBbGKM?BNmXVUSd+NyJzOE2M91AM zzeu)*Hiu8ld8db?Y@~Q9Knq7D0y&Id+m_ga^KotfCxoR~_Aj$1W$(SQa|0OnhGp^I zb|~M%ZF77B+RxF#s)aoz<7&MJ907V7RU5Mzp*z7rv$*7X>bHj}eWH zXch3K&Lt8FKVFsDxGpU5ff2iVJdZCJ9ZD5u9A8b`JMPKTm)c)T)#MVcnKug9=%pck z&D`WLVhaYO@7swn8W}+q#M->v8d$&$qLG zfW`;m&h>x1ixH}(UA&hlDhep&&9h|AR!S0*B7#y_a9yA&qogxfs+bT=DQHMV_;GMO z@5z9aVfkB=wVb3fZa?)1S9jCFCZ^9*U?*}z=?63ZTtb1pvA#-908eZJJ*g@#ICG{Z za_cDM&Fo|!A8ARHp@x--dUD+%aK(jv&Ug05%$&HBFm9%4+68n) znBs?=(1~sq5S8k8$f2POX{#&>gKyO1K;F}thO=+bzszwmNJ+MfxpdH?>O^R2!?7JJ zzr~Z$f9m*>u1a~xZ9v6}sPo+x&xOrRC4*+uYb{k*=5#_0In82CcO;0RNDQu3x)e>8 z`bAM-t0>D^iw(%{(r&@6hrg@t>uh?m9~TE|B^#`_TYe% zMlP8{&5FV}i*18_pn^q0r(R_PuwyDUA)VfrcJoV}HXxj4X5*qMq6)U1v~UwM=zHN` z0)X(s_JYwE)s$6sqQ+sqv`-A~7Xw(n1l%D~QY{q9g4?O4!O_HJ0?SCG?LU*CigVK$ z{NnI1LQ-;yDCOq2%zEXor}#|1)@dPdzW}wNfg@nVLpL)`j%Fut5O!8P3b$C^{NgM1 zdL0rusm^1gEwRZ?V?)2)GBXzR#=muNXW&Qd%fyPftZ z&yf(St5u;&bzczEz(R|x*7a1Sb}>R!MgK_iLYl^DV6?l!CJm!CF@En>;u9+0T@+b` zJvMld+m5qo;f7DDAWqPsj)azSBMgnkob2<6t!_zUO=5v>8ta1&qn_}N*R^mi*;*f^ z&`5@ouLCDm2f@iisH#u_o+YYmZxa@ z{L90+aCjeX#&oFqvE71%iLDu=!SZetVc`CMe~@&JfjEd1zj;|QzkP3?KPw$TmXwEA zUMUkCt0DB)Y&Bz7S+}HaaPL4CTitwSGj$4!qx`qk$yeYqyE96C4zqR~0`@*{4@-H= zOF@GBh?v+D01(1vVPvarh<~O@LI*qj%a%$^)~!9<$li_RUR~oFVuCNx*F6NNP6#@I zepQB53dlvU%t#J%X0^i`0?{(Y?tf_zjcg*qKGna~FeW%L@F2cI)eRyBOQhjBtJN7W z^2aX!JN|yH$->6M%E)v(TT$7cTH`AYKkgl*2D`cXJ|Z&ndhmKY;QyOvM*4$>0V|F| z6$YRSm3-^xJ%2BL)?IP)w?ooSt(k)&Nx{>BK`?p1eLo3su}e8OT1{{o`%v`24d2QK z!^b|OHcyXJdyY8S;DK(4aS4HRSx-jlO=H9eEUz0X$4 z=W!tz4(|JRT)tTQ&Xz9FO6HT?F0c+EJg^zbib?yf@k5WIE+32{{)2y@k4>sbjs3W8 zRjO1MdI+3fESt?@L~{y$@7V>L0HGr?h5XQn4-zESYIRM3RVsyRd0O49h!8qA-!z7I z`0AW}4J7~=N*7)`9!qQhwSf&&b^MB37*y#B?t`W?nS|UqG}MnEp#GH!&N9-;soha& zWuqmGSKAc=hq}Rbg=&PZJ$g_b+Z|>{pW+)1HSfjwAy8 z)rDo4PzYP?vb>R(x|!5CMcsz)`goS3jmH;6or%;qX2q!A8vJh|^uDdr*_K5ICnYKi zv@Locvd+iusF@sELZ9)>Pn1RfqQPv|ZAdNLd-s;2k;@N~2{k7u>pyv%L@xdk+G3k0 zEOjGa-WHrmLMW7ZQT26nhq8J-#THM})+2^JX}aSl-qg(X2TJ~>Gz5jy^F z(sLqN5=x@FZ&R5;0c06!zHG@a#m_?O($J#RqSzAOf`Rw5Jj0;e%YP$yicK?gIx?`g7;r!l%= zyy>24;~D2Ep0}WoxPX}?`^3CJfegR&ZzX>bLakjnMy1oPS^Yf?Bs?WhC3Ys#1_wvX zI~6D=DC-F2amfnFv$4Do=A6Fwqx{1VR14H;H0u=P6u4xTlr+_!oQ10GQu^ZZ(h%Ds z>ltfX%WJb^bC&C(OM^?+Q~jgbQ_SPglll)?iXXNw`Zy*_4pjEuZvim<#b*y~E^Sz8 zd~OkH@Vr2~VzaTi6}U(|OT1J#Z?wKYk398zgn8X*8G2}9+v+wBauyU5k{0|~J8T`u zrrY+;X6G{U>iH_-O7(K;3gn9C3IWdy&jU{e?LX6lC4umSL=L`k@3pv1PYBK^g)DRYAG;+82bRUqR zJ{wbu&AqkJt{YQ$$14ygj^OwtU6vL}Q6J@Z{3-=O6bpWn$ZNha)wwF1zlB6(yD9kM zX?088@egUa;)*xlR{eIyk?mV7@1n7}`#d~k+jIMJMhxZ9vK-~Pk&g1rdaU~JeeNiA zusq=IPQ!;{>0uL3Md(zi>tz9A5%1`M^+@zLB=T+p!_HmfR^1!-C1e30_|vD{6c;ok zyv&qYIqE9_dQ{sW=P;!ILi4hijXFbiMmWy9x^z%&mQS#HjXzS@mW>I&2d^iFi|1z0 z9d&0V!^m1s=?5DdEj7+xl_6Fz)$F8TXJ_Bo8;+Zv)g!d@M{O{A1)JfZe{Cfr>)s%> zot(n7Ktb{M+;(+faaV62?Z_}6khYa}YQcr;Ce^sMur9Nw#URH9tDPQl(QSP8IRpuA zLqwX{fa93mUDBc+hLi0!aaXVciDdZAP5LiGoY+ya4o?+e>9TT5wgJ9K9Rl_SoW-C# z1wAoJIwznD^@4Lx%Uf4tG~;NAfKK!}qTJ}sm9y6HK@p3s=AtEzxVf)K&B}_D>SR=} zf%2f{EM=Fl{KUfVF9?>*XFpvB@#|v^q>5gjqC%Kx!+{0M;bNoL2toR|fPadyhN5R- zl|5E)K{V%UyWe=JOvvbru&S8TY9^o&Ah$+S9KaFpfFfzF{=A&)wYLF}#7WAXhZb?? ze^Dw1G)cq6@>s^~85$@;n+aSUq$@CNNli2Z*}6J~1-sZ4na-Cw3yt{$en-rGg8eVX zQeMk!Zmkc^%oo^DFFP1f)^rsVdBikN)!IP!3-{@VI70#>(F~mZ6;g=MFZJ{Bxl%mj zFe`;vQQDBk(ZWI7gFe9yZ014m;04ciK%ml6;o`7n@65$q?`}#^<=h1@N?lG zyb1dmxte-d+j2-mvPXDt+0P^_IjMs)(ykfojekGB{}uH6lJ!vmA{Q2C3BcjWqTJ;J z3PF)4n1+=HpT>ZPho2&UR1V(t3gDk$m1dhb;uZk%FM>EMUJhbR7F7Yv;C(~eA75X67*W^O;{|G=DG_CR^-EV(lJ-ek@F zvk-5(`RKJ~O%$J(Y^5Dzj332ir^B-OPLhU65KTo**otRc0eWG$5o zPgn?M&oZ7DWhEto0&ZjrK9)!mcuPdspL3tq-Tr4ms!1-D^!(E1eX`Z@koqyr^Fj4xI1Cno9CGW2w=X$frn!)M7Kh?AxyHmSx2XTxC;JY!LuUJJWWu*5+M3{c=z6Ht zn1|~>bFt?vkP)03W6)J2!3!@FHG-@j@#6>$c6m&CuIMrda%WH@8#biCMW$-97rZ2n_n#=Y5GMQ zu6`-;(>!~b7YqV_oNEAIettMa$0ET1o8w3juNQak*ewRo69ipgxK4Yk-?yK<-s3d2 zT;2r=RivIua!i*P3*@11{fkI3^1URh_?=)(N`az^HpUUj+xTws#1J(c17-qGE} zd4l??@{Ebfr;~*g+Iz<66MpfA=R}U4>8JVWr?6+mI}pN|WI>0T^9UnSbtFosB3SFt zk5k1sakJaNClvXxktC_prJY)1O zdA?aU7Z7e#3}y~TIlbCAn%wDbdxsu8_)26S+;|moL2hY)HoXsN9{LP+%#Tmd2=YB9 z0W%Hq>L@&$${O%F4`-pmfMVB6zk2H^GPwoMNTN_38l z*#Hbgx>U_Se%{Yz0r=)pnA2|x76^k+@a_D?s1Z`=!F)j<#9|%McreuXq54>H^)KpYU@@k^93AtZ&Ha=cCOVlXVtZhF<-i<6ZXieN2yH+CpD@!y zAH!fima2fUz;;9l@yQh?>{kX;g4rcXoj6v|Kgp~he?Yqb`RVbZOe!n#L##Xx-eD;2 z@;~??9Fcw^-_?8h1)nCgVveS#JPuh57o=VoR2zC^*aSbo)A-IyeWA4X`wf2hxO@@k zgW%L4WgTno4m#*hr3jMT0B8He{y~-Qexw_oazHpCu01Q0RP+EDpKZ$jwl^n(BLg9m zAt2*&rQL>joLLJKPmbS3xcys={;OOUc=TZ$H2aLmPx#o9AgB0bzUPtro#GL1A}yJL zW@o`$_Q7)MfJvPeF=`mOLAIKsmAaMxS#c9fVVLDEH#l*YtQtyUFb9&9IKs%t*ofSb z(C6O6Kop4OP?W&`qqcO8KsXMEl|82De-%>AA(74km6nq~w(E}M3Ip3ltt?l0%ecRnwBcCO-b&dV7N zcl#RrxJM+zlOgH8v8h9aQ@=;+KsABe=L1BUfbg&aFkFyWC?V90Kza`d<@bs0`b#i4 zlL=HJ2@SYpiAkX~!a>~Sf3+!qsE;S&j)SzI2MnbNHc*13yaa%j#{AZ(I&-`iXuNEAay4 z0>mF>eD}O> zOcoOEi5v-CV@UVxP6!@69a-H;n=tmT7>B<1X@@KT=%4J826s{aQCkF zs=pXSIynePauzW7h0nISV&~p|ZWlvw!0c>kdcV2FE!=6@U60<2T)=xNw`LW?MdW@m zGY%?A+w}*7hqbE-s|j)+al`DxwX0p<(DLV}+qgWH)23P=G?2c@4h;MpNPM!cSlqpx#Ji$4TrOnZ zUpGX(1SD|`7WpQIL%|k6lDl|pXBEbesg}ut$-Z9kpVN!_lzeuA|X$+nou4dFCGM(8TPM#$&6R*TPB`qXLGfm#|Y_pEsL~$&2|mjmY;>Tc~_1bahIRZ z+COdElALyq*g0+OPPGUf?(O!jeWy?!c8}hFWxA8LgSNf8o3_)uhcO;#zWktdkpF@9 zA)muj4Eo`HX_~M)DIBuQ^#RF$82}UuDIC3=SUv0~(ztn^1hvw(6MK0+C!^_{WsVpMR@A3pEX_K^?E+gPOdTDVBXN< zJ+Uv_Y4}XMx>@_0!mGf0$@aSP*gEksKe;-|a~HY}G-uFhnQXa0>6+;pbDX1~chdnp z=4SA<-FUnwZp-+(TKbsT-B3KoTz~YNW=vl9+1T~j`5Ap*f3Dy$;;#PL^?}H(*>dqX zyywvKy*WbA`%0Pga|=0cn&7*Vfl*7Z1@@aweNKlf4ZyE})d^#$zOuDsU16qU zu&WD7*a91NIbr%q!kqdWH32hC2@TvRs^?~awZaqkUt?yNVmxHZ*I+GWO4YbVU~fWP z8~T7>gGhX^NM0*r47NGlGUYo=t9#W7Xqi())#4GX#;5$B^K`Jae?j=#39zwc?M8%?tmjx_iA| z=uJOx66nF!D#LnOFBFF70V`k3@bb(>lUdxmFAu+yc!jWNH4&lAkgaR{5*tMS>FjtT z6A%Iv+^h&oJ&Zrp@WI@?jz2^pQuB~OmRCIjPRCA2N|{|9kae1WdQy*ZZGtB4?fJfZ zW_dI`S0tfH0Cf4Nbt-~beC&19({-z+EBDfB7*tbH0Bk>p*dGeSjvK~P09Zzk1NlWY zW@npFBnRX3lb+6#b!ZMRGLG$QmH}L69GrZJdO^PH%bh1J9U6qBMCPJ#1Xb~$1s^1x zgsgcnc%u(ez3a;g z8CNo&`o4o1+W83;r>ZVc0q0s5dGdQZ`&yrFK=-0m$9S__6Nd^ee<k^Z4tiDxUxx7)-S>(=!2ps)&k|aBd6q)X)ag&Wh4NqyXx^s@@Qd0MCb!oVl8&{6tIR zr)V9GFItnZQciIVECeY9n3|uGi*iV@*=zUM!47riDmavqvQJ6Tq3CvkF!QA!j$QD` zn{oo*8;fHuDvc_ha@68`7MnX>irmEz`j4#1?uKH?4#Jh77!5DLH@myX(PfrI@lcCv1Y@ z2O#khNn9XL4IsyiA%R$i#VtU80H@zfj4;V*WT9-~^l~U)$gAwfm%!-3O>K+O)m`}iz{QH3t+Ys2qpoq8A*z!DNw5iQ_^&qZ{?^QNBhj!~J zB9ahZ*G}H^J}7JEMWrI;wK?vT|6M5iN5ahcrFTUj9v@cw`UQSo=*FOa0Vk3tr-8Mt z16&BdCu6*5(b2G)j{L0s&mOU9{5Udahu@d)J*bW~1nEC}WTP&pg2 zF?K&@c1zjkHT9&_vjw9362)L{J_8a}NKLDSyCj$6+e>YY&-dzZ&sX}I52iTP)sopoT5KCr6369V*TDCnDItMtSwQmra<@D1M^zsuH|&9 z@8!wXDSy6OP$FedNbcnOtRF5Zlhw8)xz?hHf0rVs+f;#zZhp&c+p`&sXECVHa#r*DM!y$k$a`KNu+^j}}l{xJB{l+;rS0JSbr{KXsfRgnydvB1h1@&9!%%=jzZ%U0&wssMBZ36VU zd3x0HL~9Rse=9IRHO^Bd=xr08g8+v^a~vKC zRr~`HWd*q{C+OwS@F7A&0p%!mrHJKI1m3HEteDulvEW$X!)w5grv5X@PVPWXfD0f% zw}Cn0q}Gr@){v7L$-t}Gz<=hCFb1_H|C&HVngc2aSLgF{WP*eH6k|jy!TNZYh4B?2 zqnOjNr#rSf_EbKRH6Mb9@ZX65r~oi?$n>N3j5vfCgCfWzu0gk-)&bB-<|>Q% zGw%adBe~uTM!!4$JPb?`DpE395ANm>{?u4UST9QzxM(R}>|?LC_5%vfjrz4#&vn@V4yXz>9s=`g_ajD={A;xR?#vd8B2|WR7?!V_+7a5NcBGOhth5L= zykRZr-{WHy>pa6>@K+tQO9N~a2$w>&oD&f;mb~1>ScKz*Yc&c=95NQoT4*%}N?3!V zbFZ=z7e*BmMwLA1P9Zvk`bSBFQ=M@@B@*Y=`~63(>P{W>p!t6G3e2Z)p4PpC4%Lb+ zm^C?g*iAbJ5AIahIdi+XbRVIeLoN9$IEy@mzMg#)?hO>l^)*^}c++qD&-8xX*^)1! zd}h{!YiUx#H8jbsC2DADaPNh4K&L~?@Zb^hukF}>!$SZ>s~x7(RMi$7GekoPZiGl? zs7|r;%SMQ+^?Xf-lFY_I86vtAHmvP%I*U}p!4aBTLH+-zg97&io`&-Xyk7#e^!2YQ zv9#)F6nL4OQ=~a4fGFZ{Nj&~;#kXtj?3#JBYns8wB#ugEw#;)qikV7Mh-hK^x)0st zIM9~!O&dWp$?>%s1ckh`gXCfx^G&aF!i?hlm4r}#v7tE%C!9>YW}0Zxnm)>GfExx@ ziEkb~i%m+s-tE^)SqkaV^P9DGb2&@dVlC0RYaiiaa+785k|acge-k*5b#c>deoPI8 z*iWeVKIn*qH9&<9l(Wjx9vlmC`G5`0rA&kP>M%K$S)B~V9}P8#}3Tp>YG~UM+sC+5{h_m^G$mi}boh z%SQFeRyl>d_`i@1T5;Kg?SzdWW@R6U*pc9pIBeEF&j#V$vp&^h;COP8#{h*!Mtp@wVGSt}^h%8oxw$7j&R3jy>B)tED?EJRUk>8H6vQP;x=*KJAn z1Q4?%-j`@2s|Sg2y)YjH5E2+rOrB?ft^D*iOGv9?@57Kb`0loey=&tCp!qU+NSbO6 z;O~|}{#+#dxd85d0^0Tjvggx5m~8d$07J+$sY>zno^veY*yr$>Y^P~-G=HS$zdpYy zh+~c83AtEuL3vQf-Ky4#PW!5&qa~yQlS8 zXqqndqkqi32QZ{`2YxB6{Mx8PS@N(dy?!*%8egd^b6;|OM0g{watF^fP^j)`LHaJCKDimHy_@MZs+~)Cv3&VJCLtl zN}Q=?4Uobe^h_~U>`_Tga;V#AOggoQLhhi+2k%RgK_U-z7STZ3G;0#}oUxuTnj^E30g4#)>z?Ic zCFVmwo9jT-F#)gzRgqrouqG6_ePNmyLiO~4^PP}^?*Y@}gc=w^ym&VWp@C&DW?a^wmXy>Uhgd^&cW#{nfPO%az$WXzB%uj}b zJN90Sg)drL$$E0n>v4Agtm7TscZ4mMvdhDAx4uuWceFKL#jc;vO~%=5-BP5fP2x;P zkU43M9Kw}#Hw;A6G#mp44z;TGvCD3xo=er`#9&G`&*9Xyy*-=gIC{z09QOV+`i-(x zE$jHm$MGe*o{)F;EcLY6ZU9PshPD<~WMlPvsR+PgFBspTmn?RAZGFxF*eZGkvVBQ! zTe5;IGG{b!0x=ehMnMgG?M#pXMaGf%mCV?)2RY+5zw-c*^ZFZ24?kt3+9Yi6Rz324 zZdR{bH=&cBduw%J=3V~4sAE1l(%=~`HV&zT`I{5%{&w&u`+>vMW^D1O^?0st`Ll0x zT4#Fe*89WY6gO_aPapp*U}ib`@7SK|mIb~YhEyTN|66qR2`*&ml&ngmk90v)jSG-X zcjlZ_C`7Khc!}&f8`$0?OX?i&sM=w~8kfo>klDF*n_N0u zHzp_9JEp&4bSq(WYd)^65a$1ieLdcf{Ln(C|9>?$m+C*4y322N*4z+fI8bJ)C{_R9 z2pS5{cX^|i0~z-$?z3e*KR##YM~5{18YES;vZm_g=iQ9jY)bKddi9#r$C^7$M!a>T z^2tyL)+8uQJuZ&CG>goqR*{-S%87+nVvo3JN-k6G@*ErLRs2b zJVs!nKjm0Paj#2iCY+wW<9Ih-q^xNx3`$e=LKt!5MGL;2LD@%06P zkK*gQQ}Id^XaZO8_AKR>2qt(&^MondVQ_pGlWUs|&ZtGND^hNu1R0D%K^onkzvl~q zquL%~WYK8|ldNEuT4K+)$||D+b7(L^C)JC1ri~I)dlt2LU!aIT`K&NbPNtSk>&bhYAYGC)?(*pd=(c@%*s^Z$ zux;yKy1=U095F1Vb8e?)L#Z>>Kz%>OEwg)&HanRK&LKJ4xMPU$>uC|F_*wsoep)x* zEHdgUf8!2$fbs849ZGm~cw~w7EI*rsjF7^jaDNle%41$1kYeDPPn7nY@!RrugG-2D zg!Y?a5Z1srtbw&(CbnPx(s5&RESGJ?F8IlQ(y(6A$Q^zxbC<~(YM0H})_l4;b#th= zD5O_=n)8-(hI6M9g!Z~7Sfjtc#>m8#n8x@n8w`S@ywDf%E2N9hQ(57DO-F*8RBXdR zDsF3fU4$Xv*AgSgE>yfDT=1No9_|fgxqj{yK07nFup|&3u>Wsa`Ke}gr z0G-3*9*)b6SKRNcj=ZNYop;8^uYz}vO?hBpF^;ZF`6q92CpvOWF&G3#kRo#>H>5#w#OzSSBbR0 zU1&Jf*-3$4Kq^#Z7LrTk-AIv5H|Sc$Zj7X=x{WVeArXT8rcUh~(XfkFK6AlxMGb$6 zgC?L9D4RVByXmw4E$bI^a2IX~`B7b)y!u7pg8?@3AM{Utw<$~N{siWyyHn;@7J+qA zJ~A(54fc5o%%#LZLbOcmvlQxyyh1P#D}+IA=Ydo${Ha+JsaXZlu+2hT4Hkp*ZS)TG zM4O6HSrj8Re@9|bj=&}xflD*7NLLW+sx+zAk;a$=xj6J{1+#A^A!P7)fn!E2lFn(2 zLWuV)F{*uY=PZ_v?n6@~fkUAcrZn)E1wk35xcwIZbwG;0-p6>opL_sA%W&i}deH&B z=p?=92!?Ovp^TuCw1>|+nbAK{ma`%{6~@R*ymOp)237cqDUrpz=c2)f4L(jx=-%-# zVluPwEQm?cPPWpIH05OM;@(xkm|cg)$6)P&Ph|V9J$UJw8a-kS<%7X|*fR6v*sdUm zkY1*^fer;csu20BZNd6hwFzekiP z<<6Vt`4tYRGHr^0p|7vSv+kf(r|I&#wqZ<|Bfq{cJ<$_{_CVOG)tbG|O_L=cmF~=V z$wy!HCM!07+~E$pZH6d|11oK<#sa0WR3;WGS%W!WDCMyjBEenjavKMtp`MWl=r*SS z$mak}>B(9i#n~*I8*vzm2ny*;aSEB#M+h7HbG%XFI?+v9IqC3M@A;9?JLQ>UXcD7voX&*j|$8%MWvJq!sN*|AcVAFD-A6p-P zl%_xb`TCQ)70b-_Q$L+yeONVrKlvu3*Z$+orPk3jz8h549O9&Fn)I`?If-vhPTqgN za_6ZnqnhrPn4r=ugOO71NJSad}8!hPvJfLX;8_qSel8`S$g_~NY`^5D?-Vo6=%{!lhic%?db;} zoM!6nx%G!RZpr+c=*#n;WWLE+X4GiFD#e)%45Q!Nk7MF#WsJN}d4k6c5(fRncxwaN z*~j#vUFify;8RY# z>JJ87wt?zD7W(bI5l;`j)R&6-z7R@gqD1N*GYUqQe*xoYI9#&;G3Q*f9->n%s;G!V zhzZ`DQz0u<#Rec7aYHM$Ik~<{BH4H?DPf)jm?tI7lK}H1z&r^sPd03hp=yQM zXlyDRC;n7&PI5!!-k>+^RBCP)5N>(B!(=d+9P7);k*u4=V!gu`NZ4b;F1IficMU{8 z8Xa)ObH3teG8zttTj|zJvNQ}(D0ArLY?5zC$YpIZ;!47l*Ab3U0qevZh5_&Zr3|z7 z@WnEWbnthKn8Oi~S79xCN`tifqpIYy#3?pJ5fHv;sH68c8y zq!FNR1nBdHD;9hr(@B!h86%_OYD?6C6KC3*k>c@IP)yz93wT37weAB(hbQD54|E!I zMsq$LDchA=?ZeSbGV}#sH07&*&E&KgdhPv%f2Hn;a@=m=?!s6a04u%S0a!l)BL(%G&(G=L`DDvOh5!%FHD zrZImIiZutfnJOrpR#SH}5vFYZqT1i@NtgZQp2(IhHTpNxQ|U_FI+Hwmy1rA4%@T}F zitBmkcC=|ZSHpEsxR%ORma~sU@G^{nGzia&3Fk3H9qoSfKH)i`InD+7>>YXo^5W`V zVM&jubmPSr^ftY57#qS(4Gs5k>wxZ%>JFdlSm_uw!MP=QZVApU!MPQ_t0R#?*Ty-RY$fn=y4cp_ROlBx4#(es7aZ%+7XNT_WOg4F>bIpO+BZ+6c{W9 zt;tp0-)cxO7Q@f@um|NA;>uj+bE}JM59TKA!K`WzRB#E@6ntl(DTwus4J?W!UaF>G zm(aBXbnOzlc7U!Oplb){+Eq=#-Ximv>LuJ}_9V!7TPf+xL>#q%FYG~AvM*|mloRzg z&`U$HRHFVjGVV&O3*EQ!Sg5v@9c^}K^Quj)YFaTjy^N8fuhu)16Ks9z{EPDy!hP~q za>c@abcyGi#j$N(p$)uk#wQyjTuH!LNsH`_OP3tvvqRXaOEx)+ja zH*_oocI2lS99J?w*YG`YV0gT4RP0kQu#o*LCr*7S?AFYfqQl)B24Dw*?L^mbt$XqD zf*1=uvsOc%Lm&7asFY>p9$A@SmBzS2PqgzHcB+$~@tmwo$jUvef@(JRW22arBQYst zOqcr7{Z9+@d|Vy<|fpK`|}lXc!P4hU>#1N5fK%hCz;onatI#I6@KU z%%rj_EIFyf4SHL|WSnVh4ZV%km`Q?#ZfD9`litRvHdNcb#B?{*eJYGr(4G!2XHWZt zEa(t+v{7x99tBA;t}+^>gsJnq)zf5M8HwQ-f=V!}Q7~#|Gz_UIl&3f3i@< zo0neG+D5GngO3xZLB6m7Uf3XC*Z?nVfEPBv3ma78G>!o6m0{my3>eTWz*<)CC-F zC=@%WGX)CK`q!b8KHzN|6b&@yS8bv=1etq ziE%q%+zuGG1IFzV<95KfopFtZ?2ji0rOUZ_a`B=C!e5Af`sVrvQS{TDh_`w8*b6Xd zpIcl;e_4KR@q4>(J-A+3e-O-KP zHDaN}d|#U_xQx|v+BwNA&Pg&`Cwbi;9vmM(c=MkgoSHgFHNU*)o?q5az4yHgw;(GK zw@#p&rMPoru}kZtJMht%afh&s99_&F3{sqbv}jnE_n1=ET)jb=y7C={aHi-Dd95D1 zrSq)-#?RByQx7LfLDP&OIM_{pgtEg99|h>kna@i$y0-FpN&AQ2MY}%y;rdUu)9KyY z>yPqzNzMHI zK1*ECLYmUM3^6~Oj)%;%1U)VfYsxUmtO=!7<%S$Sm&N5b8vStaIfinpQX#s1yzgCu zt45R2`{Lz@O;HqUq&M--SaNjL;C+<|J|}qAypG(byaX@dZn9?^vxDeRIBR-ZdFfZa z1u!_w*ZrFr44io6A^(C0;(N$8)btS|+7^fi_qa(eiR2k#vciRn*AubaE^6b-5OjyZ zLC4n#!0Q7M4PqK23?d)o%YZ$V?=~RfGnsr%5OGgb?n8*g-kIo)SOFroNI8CA6e04i zzH!3VWgbGGLfe)B}*OTf%>mCaYkF`#!Gy(8_p%Gy|fV7eU( z-9b*avg*?Q>@DV6jcz{m0&@uAdghPN9m*ECdpG$qzrTe+J<7(`aa0RLFgOw3SQ)7l z6<*ko@C)Etk(6jJi0?fMGc2{Kyo(RZW~E4Ei7*g1V5)FX?jG9kg0i$$6sMW8cKF8q^?G;mfi8m~lo_$1U1uA~!g=~$ zt<~cGR?1k@WWr$5Jp|TWIHTRXxntM*K)9p+1zp${A8|Rn%6S-L1G>PUV(taH{y2In z7`Be%N*fI3;cLviEWc?6%8(3>pMuIx=GowCyqCSusHhzyqh$;N#nBXo)|i;a;Wa*< z2Ip`|7+#*IRIYd=PNUv-~8@Rj1RD9V_|=ilG^AEE#fj9p0liIV|>Ww>|1u z?*)CQySHrjl#Pb0-E8SHZKHpXoUCLw4#k|gHN{dcSQ;&4r(p+(9cIN@@_JSW*}R69{4G7C1OX{k^7njRqeskZNc|627U+4*V-MLamkM`6#SbM9 zWrT$kz?Cds0Og0Y_uaNeoP(wbrWz6RaQZx2{2n8ibtezVj4(8Jv6TjFO#;vSmaU5H z09CJ^!&k(DX0rNhRjkyLEBAVAPKPa@&)WwhkwHg3m$x~bR{7nY&u_9vvR+RvVz)1V{FKT%SCy-2Vlf1q`gCMNf%GO zQNaXDBIv3jmKPL23wiqDtmcHm9Znw{o*vuZ4JcF>Ewc;u@-c{Ee?#j|6=oV&? z5n-<~X@Y7Mw>nGc)K0%Y=2DCf`(B5~q}4i-5r4$mVYJ%E6ZvY~vNP(71~mFEy)L;jFe>q+;A{Jk09XTok==Vlplb$;`i^yaKeBC9BCfG<+Q7 zjHJG($jEsdDTBpaF>V%xp%n#g76on=mE0@}+$<_rV&{O1<|G%*0T;!T;5p!;Ik^(M zAMVi)_vnXv^viqn!#(;LN8Dg*&egFNNp5Wu4GN-UqA{gvepaXj*qg7FGrLHaC7{ca zq{|Y}VF|iX0=g_QmcIE6G8)m=h0vHaudz^iXq+xsIGt`;Fx{gl+w`&Ws(9Zy!;$dN zw*JJL-dM+^))mRP;{z$DD?J!1uF-#_XWLbyqgQR~k;hYqNA}&idGoFNM&yx3ldJNc z(tuFOcv5%rq=#gTY)RVg@-nObvjx?G+)kAg1 zNV&|TX(VSsFBp#l#AU%kj^zPsdB9qpC3X~8%LCT(3~SO8i_!DQar46K?Gf>SGBO}x z!z^7$u?ZnD<8bU<7(v49jv`A*BSm6Hth!E+B4Z^9TjQx+;;B}#hT16!zzGE4lmy@e z0&oHWIDr71i~#UlkBF62^G3FY^$kfaNBH27$-GA~2Yg)tkF{q^Z!uXNW{)zd35L7f znXr9hN2k^kirJm?F}p+Ohy@0QDD_$0W_x!a(B(_{o_Z6dPJh^C;r!o7Hq*Q5bIjFX zViH5cBnH)c-Px*@;wQcPz=0>8cnm-2&HMM)PM)l>Po9&I=g8v zd|pz=<|7+f@rdL!$v|@}963*D2 zqfI$(SXv966$9c1tIf%6OkmQWY2)ZJU3%j)w{+-TCX-`YIp|IWtQKF~6%WMhAJ{nb zRHxJAwc2dfsDwk1!C`>Zxs8w3dXB>&FDw*{i^KIx zLn=)C2m*f-X4}$Th-6rLnc#7Nq1t9!d75jRI`5KTHiN9KEIf|+L92s}RF6Xv)I5R6 zVtN1ehuzd>v00|a`a`*(*%AcZI9Ld~a#82B&0@B@qDsi@E|~4^&Ood%WDlntc~9J8 zN%$*{bjV@!qyh=A)!{S^crEOuL&_NFGfy<~(rOmTOS@QJWqtC-gSSp9Pu#_E%I2Tx ztHei%n0a1w&Isp|TUS5I^@36lk#qh?^8vL7ZL=P2VUNNX?pS(Wq|G0<%u;LaK6gqy zI^j`Hz@roJ=#+SL0v?@ACTgBR%h|x}NIC6<0rV(q7R)^9?FPHuZB%Mv?#bfTn~hH@ zCz|G-hyh@EH_Op{h_5ohc~?ghpJ+td5H;&fYmVr)C24Ko5yOEs7#opoLQh{!c{+zj z<70i1*vNF>LmM}4q}#&%>$80ud%eH9TC?w0@58=^$&2JK=~eLhYx%k%BJCX=3|<{b z9UVv=os>E{kUBaM(!%C~IG63@dJgV5XY>C#A0uCeTAUn2 z1w&-II&B`SStg-)R0&3rBp2p=W%D{7T#;QwMKZ#U3LHBaPFGXCh$32$9Rf$MKD)E0 z$6z&pU2O2Citcc~#cqq)4NjXWWOqC4qm){_pui?QMoULQ*Qx2W!2s2}5Pm_B2@k*4 ze8c+F%?4xispRsKg>G=9vFX`26cC8m5EYPc1~H~GqKoWb^r46xje z!>AbU-;`Nxn`h&AR6j~-lkjZY#1tf#N~qxC?6^}L8*8~6vt_LgZT-S&1g3!4#iR_b zg!8HMsy;EB>J!Oq_*}bNNJI}ygie!!1UgzX<Oin;1Cp_~lknpysE=|&wDK<@j`S}}Bkuf`_CwirB z^K27@e%erHQib7$nzImI!{jV_X=A43IL2KG$W1|QM9i_;Se`PR2hoe1)ku37bA@sL zn8^@lKuU8Qq5}ZQHE`_|yJifoo?_SFyu>)1GlkZfIBrs5+qNX2ZRPd`Y}nAgf`=(b zsL|`cBOa zED*&?&UyM9xBLO-5mMSViuytz+51UioaXMm_mX|v)~(yt(!)zHZS?T~>tmK2 zZC&|@x!?j~9iz-n9uRrRaS^9q)ruQ&t7rChQISc7JIn1$zGqamT+#m_=QS7533q`r z$0$ZrFwb|jg>nveSbPazSH3&b>Gsfy*2=$S4e+fAI0w8aldNXH3oB-8m)}MBLV1AI zZb4&C@^?JvAx8DOn)+vBLG&`8v|Y_7ZElGPw%Ho-+W1E9*9bxLGBnGhXKZtPWx1n` zPWYrtGlaIV3795O>}LC-$anu3d-o_Q(q80cJRZGUeRtqf-vNR4BAbw38wAZF12mFh zj`@qC;8FPQh)BUela9Aw;GQ~3&gGf$d%XZ9eC z`Yt{!l4k;QzoPzj;rocOe5_~FGS~9>#99Sv>!o$N9<0;#(mGual(!!6vK}aJJ+n?7 zaIEm<`(-&o(Xg|NCH;KmFpk9(Xn;la7i`(GbcP<`jbFwo(j1dCjkqS9nS-*g$J(iFddKBRvy=1g!}jK^_`#`ESCtDXVzZM@_sxxR17SZ zCDxVf3m2C$%5{n>J62jUg=}|ts5_z?Uea=xIlyK>h9bwkvORk$E>S1UAYV})*M`!u z@{F#SrbNx^`V{6X;lzo0#|rvqJ(K=56p%CMAE+W~{~khrA@3h5Ak|dmnsTcq4HQrw<-d@}vXbbMYg;CY1VW!tA^O)xJ7wrB<^r*@E<5G0O zJTxnMQU{Sqj(Cz%`9ww~@KCL!5B6NtRsq5DFTm%Im=1=4@oy42dWB9!aFr_VXNyZw z7lxp)c_n^=ft|o}hc1&hbn#6kFu^a*Pw8xYM?CDcj9-CnZx%R*UUP)AJ?>dPINX!; zEj%ZvL9DBlyTxeK`~@-xkU{kghL_$yt9iHGMs!U;U9{p5b7))yTZHT1CiVe#t2wmM zLbR*7weQ`qfhW_h^@`-$^aGQ1o>05~e;r`TrvndNH*`vI+oPc`NOxu06Yr~jvrhJUeHp8!(CAr;*SS*X{GDbvGcGty?2sP&`y?7Z5qB$Y#;x>ea=ZJ-|gE?Ze zn*gyxr?qip1k<-zf3b^7ghkx90Sx%ZdMCVLw) zv1K#Lp16zq|5{=A<(0y47G6IjW_-~%idOC!z%M0&e13QELvFk@{4PNzy)69b&b!*+ zS0F#<*>ytY*1aAUgI`94U&tn5I7@QsJUZ^Hh_l6cXf3qRX!pusoK}~#{B~f>(=X-c zRsw4#hn5DnM~J7>L7WLL3G)LC=HukYxaEc9l%}TD5^~om6juFnJO>_{2;*u*!rGNV zvI>ywVYeS8m^tUS3Dc^|nz*}@hw!cd#*6aWr9uAh%kkdj@i4U*H%7k($IEWPON!*X z&6vrH*iuZFlOuUf`DGbDl2R!=rS5KMYVjhRmezlp{Dh}8#BJv?%q4w#d`K;3X$*{T z9~n9N$nepl!;c&t zIVCHPJTk)hzH$CL^aILEfQ&Thp=ll&8Ws_uat1N1df!Z73JdR>5c-Omj}1KtJRch> zM!`A0*9`(HDF7zdT!)c+&GBQ;9G^)*<)IN1+O}pu#7(Fn4lBbK4{wO6nVj;HBJwO7 zdKS}P$k&18ZblgYa(RYbnE3iEo%+*y{4&aAE)2rlh`StdvFaU57| z-F?%>B(E`Jau(E=g;|sLgVM4{=HwW&!nd5sY95=`B3W)R`? zdBM4*Aj6b|g}`}=s|Jh0N7%6fM!Okpgvl{lTIN|eURSdR(|kBF#v z?a(+=`rwfkI4gt^2cadPk``iQAz13)W71<0u)G5$hQf1L1Ko52FfRE`WwGWV(p};{ z?fI-xsaA7ZqoboauXV$RhI?2zz|y>r#{v6A9B}h`7v_WZlif^GGas~{{pF#IFj>yC zzI3V)dp2Q^V+;$%%*L0th#OgTj^jegrYXUQ@Yc9nce6koGj zxH@I)Fnb;0h(9+N@_4*%uiF_8`)W!qKH3uu^{vYUQz3Vktv7SDTn%^5IAfo2nRi=# z)9z5F|I~{(&UsGjCorcq8Keh}k)d*HR_h_#Z$GQ`Ea`_1q?l?j0QARKs9>h+s)~~V zg!n)cPX1@5zJ?coTK{WFf{jkpl_tWrg1lczGHm)W;j3uH|K-0c{8t42xs5N^eYa9T zKcch$e=r5~+j#!dGo}Cy$bgknfFDG}N+>`Xx@#f+hw0mnk&y-XANg;Oq_UUmfh(jI9*<)MdbvzF z&gf+;-Hm~P3YiejZG|~-aT8rRnzxn_IXu>6g7gcA_k`GDcQKk;iefmO;2sO-yvE%R zrl1deb?(_vtFqef9{p2Io-}k+VFc%R`OJmHqQ0t?Qo>Ekc&=7N9+{>5SDe2bINxgN;7J@4sOVW2iYjo%@>TX%>j&92S1FiL7N2Tfb|nI&&&oCUk72l=ZG9!^&2q z+RiT>aEAKM|5btthQUpeZS?)e$wo{VMdTiK1y-9RikPYov3ZdfF7S%A1K!o|Y#FmhM+W_i_SxN0+8 zwHdD3EU(%OS8Wzv;IPPHf(`{ay(u>a#N;aIct-~|F3p;P<5U@A`$agIH>vJO0d%Fy zWEUq&o~TR^W=9iQ((PKMmF zLlM523E)K&z>6k;7fmqtyAzIO)!XI}@qs$xP<@lQVg%y^<8v6*Ab-J@jSF{@Y><;6 zxMku48#}qolGPyYkUd0M5Qq|?+|Fj*MP}_bxUlSXaq?d{O(}=v_Pq6)8dT_lf&h_ZUT+hmPfWbgW zy_gg!q2o-=)zFx~5$Vku7S8XVL6>k`WK^CXmH0JurTMwRgMVp@lX`&&Cdi6=vO`+9yTAmb@H@$pjX|s01th1m`gasL;o4!fq%z! zNky^R66ZF%MfN6K0aq%|0@rkj3}vn+*@|aW{s&f(~9U%^l}X12hWlDBY$_Y9(d3o;6rz0^@jV`A)o3wKnf4(Ev2=XXLxYTVUXX#On8)m?g(Y%AE&srp+z7!R;RO_2QIy=I)hjww>DJE>E<#xB?(tt;p@OWwtTkgt1 zTZ%NrL&>N_bBi_g`vZOKZ;rVmxP{R(cP98?dcyK35jyxvu)@}u$vHMZ^OOAaI2jc4 zBs>a>$C_Xwzd;V;vZVQSg65Brb!C~qcxolPkR2zhiA<9|A#`rOYwvFZ@T+YN5<(rD zPxqez&==+I%j4jgP#zOz(p2%m##-DS26Jh-Lhzg}bzWG^9NLl9E@taCCsRxQFNc z(#kwzMizFMfilEYIp%>klATQ1<9i9%glpL|NBAm5zRuPuf-V>4YV|hdA+tBt%b3&g zA7o-OH9=W=`lI3-J=T<~4D`|Y=jgRc2%cyqd0OSJZnlS(;I9Rn+({nM&FtejzWxsB zL1yJO+vHve0q8gn!j{peS>g~DjKkK-n;V&x+BT*LVMC~?A&m{`COs~X4SC++6Dv&_ z2YS+(P(;X@c*vw>bPFr-2`z|CMGFw#hkigdv|J zpT%_H0>U;7Z~#}9 ze-HD`@l2CEk0fVtRE>MrG}_d$FQMrz^Sv~GBfH=oXM@7uYD=FHFflkDg$FJjSQ>z8 znEXNr)?Z}OyA6V$l=%bL-fBRW;vdOzHJM( zDvZ2EwqZNTJ&g;uVw<~*$URg~{EqjtZCg3;zj8lY<;1JY>}RVHbaa%_Q4q6Pg#vOa-vpYi% z)cpc^}=ZfoD)U+eGZ zTiert?v34a%YPL&7U$J1?)kbhWt!#IEm1f3c@%}FkE>GRbC~g6=GMhoK%TW3edR?V zr;DmwmhY9tUT2%$ODsKEX2&O?+pFng9Sm%kByXkr?1omXx$|s~7DoPfm5UFAIaGK< zjOC#NE-P{p)28H3LxZ#_(Uz1yBA}--7^ksxESAP1)72>EvOfjz2W>tT&zlt5s}v&L z-I4lX{G=x_i%r7r4VKp==o=GjdP07CO85|2%vTAl!}WA6h88vKuQkuW`;^HVG7d$- znV09GLa}lWt6&Opc1i$F3Gh?yfePj42G}f3P~F*V4FiH)L5b6dI7f|fndm=T&wfF@ zcf-<_ew%s_$A)+lh6PbD43|Y3TukZ76?uj=FZ;`~U3t6`YhJ*bmthSP{#7J3RDc>P zk{T*N4LC(p0cxm-=&)mC)f^8nUEAUdkQ1QEwi!~@J&=}jqxwa5o{tUKT?1@Poot#h z4UO9El`!)d&|V(5wO~tnm&I;p^Q4U#RJ+6GWbT7MUZwgE_$KvCrw)lVpKAaGKjqnq zBC-;Mt0cx0>xG>naXO3$8eSq3&N?`G zj6HJr3}W;!Yff5X7nf3}nSorzs9BEPG+;N)u)7YrJ29v3{Ka=Ukz0Q?C&T3n@LG1j zMsv?wtcL%&{n$J`IFp+;_GC0vvsm|@)fRisUr(hT)mA=heKsfR^$Y^o~d$j zK`mFVWSSQc;rwEYyx1Zywy=wZJYBfE^a|JEn%dUk@_ZSXmWpSgY+jcu9i8ghTrs8I zygGL`UpH)pR~uvNhHd1IrFMAc8RB>rbBkKDser(<9E)V&U*tusq&X#j>rT)-_g&Xq z^N!F?P7~J0AEoKff4=^tFp+mFmYMCRembMPz}EiYG%`RG#wWhV6WF&d_8wiTZN$|- z8|$x4yq(P^V)GJ9QZRKjeAnhG6UENt@OfTCFxBm|L|hi5(-;Wo z9b3)Y&eFS6Lpi(GY;t%4p^nYd^mDfqhoUA$xmeLgi&P#lk5*EhWec1%OXn?Ym?V6W zznERXO<^h#4YLS;;ePX*-4(^;%Y;H1A0Xk0+i$l7J!Z2f$oJ;yRn8_ySget^DN|z0 zYz1a?WSdf=@8uUt5BZ$(3Q$>;Ji%vk11-4#*s7NRd6BEKxauVUs(OIrp^QM;1Z5YL zE1}#BVa$+by+Xp+X7%oV71r z7_kK6u1X{kcG>-=lLkv)!Iz1Gz@3cxLV6wNA%Cx&MfD0M)VP5AHiD{`w>kHsSrva_ zq)i`@yLLKNKJQe~D-swnwMgA{bHPk0)i0N*YOx>}W&WfxM*Bq^;6-wqMI1RAwmZ%& z3&iT+qujPgWZ)9H6KyhsDJpgPIlieBy6sX2Z=L)V-(2dhyO`63(1(>TfDQLa3@cJ_ z5m=G$oa_+^6^mjHUsJ}}0*}}~Ily0p@M0WIG_+|s+T3!xWUD%VDPLIayheP{J}%$|_- z!iW4>qbKF}rG3D#yF@2d%!EiCRND({kTljLli%!kR z^E59kah~RdU-{&D1;t11QBI&$)3Bu%+b2q4H(>%RIas}?R#SYnv&n*cWKQeXG;uek zTVH@XoWMIEoj*$MA+^T-b&Fl!aD#I705=t9cd5Zm6yi{PRLlCHCzta1_r_>3sQzR` zq~yk(OKal|Rj~2ma#v|)l~?spsJ2$SlLO)?hec~Ywyt>Z>eKUD4m5ma2Y=`Z`A~S~ z{G(LM;HSR(%AeUBRoym%71bt26QE;`1HI9Un&<>2I^b0Y;k`{{*NS)STx_Oj=^Z;6 z;fW1@?8!TCyKOi8r+4oD!4Gzy`Y37cgOj|ejgABt>=d^%iKF$jI}>!stk?!MBa)WL z4Gy~IxM7E)UIwXPuN^!CGWL{hPc(@6kD=TNeP$iM?Kb7acc$x~o&L^urs-O-x9CRl zcl05}1O4ASi?b6Tp_yLR8XY5jw>2m?Lb(mfy-+>^obu_cLsN zWh>Ks7H$!-G1R*@onG4;l1I9~`5PR0Jj`MEI4o$*L{9S9`Bo}JxN6bRkK*D4wC_JI zE7P*_JgZ1*)Y?Sq>?jMGXIB{Hi3WM;;_>v$(r=ptT1e2GWp{GIPNqdUT&vNoyzqbc z?t0QW|B7N`^8-PaEOCmQOD>>0cpgu_^0-f3jl30VV`|KwMb&n6OxwXJIlgW327ucX z(_VJM`CFMTb^+XtX9Gp;W!KUx3D3iZ^Oj3=HH{6^O%3N`!}*QL1)dWwO61lI=6W}p)pFnlv$_-2^li^F2|9H&Iw0t|CpZkoflF0o9R_|`r#&5&+! zHD_D)8l=no=3MT#iY7@vWHlPCSVnuY*&ZzQ=h~W{Zfm)0^5w~Clhtaf;DKb4~l7JK6r{-)P$Nob!kfT>lex zeVXqzNt&+bBT4^E+n$P{#zu-@w_G&;?{o{>-!8~4fF|2{mUW8lz+RzAYQt^SaHlkU zwr&1Zx>NaQQlgzaelO0RZEW)C8dbZ8yZ-pR3hq@V6Zm4CFCSkrM!tFb#4a_`Px4^w zp--3!XX2^#ok6UHOMQY&6N##Hc#d=Zl;HXq)CHLPMh_NG7+pBbXIpiP$@FR^GcY(x zt5D(dEp(?T87Xvkyv=pX>s;q|^yDH*ld&he@dDGRD@N&nD`UK1ORCqXTwtBP zPd+QShJxx2s&7@y4q^&HVQXj6gyJ(C^kV;6g={6-)#);N9AS$))f*_6HjGBYft>ZO zWVhXAuy*OM8ygDuPNb}zZsYL(Ywz0QqpI%w@7$TmWb&NMWD-a+$&ksA5XfXEPa+`X zL5L<&N<LT9q!3fNj?Yi(p+>wh-Pyi{+(gD5)T+)y3A<)wo(yS8Hpi zA2-|GvL7=0{hfR7BqYG1+t2>hxu5UcbI(1m`#b0Se!ug!yX?X;WnM}0{F*t3zB##S zvM;4)(z=o?k2R}2kI5h=7*;?ZFeCYEd2y9Kw>O3qZG%HJjkQ9>=alFZQczf~-A^^* z3~Fs+Z{*b#CfPU18~?iv@&JIi{A2-LVDCCnxvolCr#v!li&E9HdUZ>c(pFYBuvg62 z@XWw3Mb1F|U)#=KqwNeK9QLuloM82!*m{mXe>IiN{<_$l&d_rPpc`Z+fZG- zX;DeZqD|G7-^5sQC*I_h5i)TMmtw)%?Y0*%92b9p#T+t1F2 zg6xCR;e)p9)BFB>&@+6JOzEh*z7U!8+1AX~3y1IfYtWk`XGZ0Ob}`D!%?Guyd8nTg3YA|b!XJ}Eb2dQtk4 zd(#U&_T&jAsqXO>VRep6a%NkX+fyAeO4yiWn=?MrnXLRiE+H*tJgLAiTUrP@Yie$oNHXo9pWyyjTjV7G_9)Ha%xc6BMG zJ>Tva<1u&*ncOX7NO-FGv4L-iqH<$oq{Sdiqr$7EDO)aoyZjE3mEiZ~#ErSjJMaeU z5Q)K^;xmN@>!xdaria=MQ6W7-Zx^smBF`7+-uFn!T_UvxCEv}mm&L7K;IiUC-Q#uB z#4nV&m#dVMjQVmtiT#l}o=;#tF}eeivSoAlDuU&n)^s=wScP zXMCMwtY|Ttg^z99wr$(CjeB^HZQHhO+qP}nnEPdt$^4j1(w%fSyGfhuCU3IV>eH<3 z_$Qjfs13D?)F(~P;6x5GanoRirlmB31@PT&7Ck0iI?{+;hB=s8h%sX&iH}H*v*ZN6 zD^&@F+DJNU0(?taM4rM)1f1Q!OlWQSou{~>iYmB@YS~nk(n^ccMD<@QPg1q=oq1B| zK7HO*<8%uAySl*Phn{ptgho%Xzf8FgO4^lxR7I^0ck9FmpL!dJ7C8FP6sXs72UkDW zvWMA3VH&CQd~`gX|KpSGU#5FSV}p~S#<^Z$mqXafd8kxvo8)v%CwT$kHwYqj#cJV6 z?7rY$X&Bg(9m7Q4e~5iuKIS+*CjDT>alrhb)QwtWQR*oq(_KXDLE2VMsh%oGWm*t!!$PZh5d|{`0U6bf0n5m!nzZ~S=?+8L zIf#^wW($a0xrlZ`D-MU5Y72l|^1k_4`9}NEK=ZkPrImS$MH(_PEUL4(;Ar&H zy_wFS9V(Ka^ghF0#9GFmdxv);2Zx=Ca{^gAYaa)DTFXJH$^1@Ms_11TXTW~w?4vFk|EN#?0mdWkWmP?f@0 z!|NDtS>k23*OsT`mVa5xb6+78FC4PILGR(vlK(H#K5({C$QUKRa<}ffVzNH?op_#t+8ytG z+5;le6nI&g@n4h+#Hct!e@r1dB6dxR5vU^*qo3)Ja-pz|7IEuMABYkQhBR5$*0ceX zM1g)4J8WvUuxMa-AB0p)>*=~zFC=z0rYW=544=x2y3`>XPVs!dpS+v0sluq>6~XF% z*H4_Y#z0@h>G*q8yn(6;A9(BPY*bz1$U38KuVFHE{p^Z1VCuykEMSrG zG;Y_nE`3{+e?F&l;A@rtcl+%)Rgr~MEgGPHb(Fx**3HV$%Hq}PrI(bHkicXmq+G|w zMeZSC<>O1vM=_I`a^z?rGlSVG%tXqX2?~x^l)R6*Vu?>nNO*JlA;yyX<*#^(#S!}* zo0|Y^s5l)cdpgegWARNmu4S)YBKC<>jef=D&cI=)l8oiE0Iw7VVJqcp%q-Vtc)6Oi z%(xL?neMbc)^2m8!{$h*J^PHe5EbFf%!V+C`3KvnYF~ratKl)Uqqe>x#XRHe_i zmp#}H|NHz$@_3s1*4|R1qiWfu@0dRQEO&3>@%=$Z)j#Az;IKeoazP-nvcUBD;F$VC zjaF}E4#mPTdFHM|3L9H@VUtQ-+CVk$xJQ5&s1hJCi?X*#vZPybL`~kb&T=T5$}U}V zXG;a&LJPHw-r6o`+64#RsT}O4BLZH1Y?h?_)|S%XwtyMuox4+Q)5&e;=yllwbz&@E-bLPJ;t`qNxis~ybNQ(_0VJVCJLU2RB1C0zZfVQocfzl-r8y>at>*>Z(tHmIG}gaN{T-6< zvR=n8$ODOtdy9srIk8|)BOK7ULC9^hFZQ5+1j%io{fbOBWXnN`s`$R2!J@W<5;)^g zqkVUaLt^5-ixuQ7otl{*K3!8FxC@Z$LJo2}$R~B0{ZzO=aKM z9yGN)fAemBH&63PHUsuzE5_^smnHQ?uxz%p(*kf?_I0kiDefXjsMC_zwm`j))JNR* ziNZVf2eG+X7vrq+3C}jK7hTM-ptlgWDcDB}-_M>`8vLBU3_r^j9k;~JBRWTTT304E zFs(MQ?eyIIY4*vJ<)H+JJ4lvl8~r1e~VY>Qt3pI2yC$jS7tZAw|MrPs9WS#f&M$iM?}1D z^#_*giTsK3y4W{AHYnZW%=<(A1GZZlKjM#JzHc7-*{E}t++3w|Qp~)jmb`9LI@~syTivtikb9wLP!Xa z@6Hg?zkkwtFrs5cfR}r0@)6zYHQ|ozj@(|?xYAv9P^$+!Wor|FrQ*@qZNn{q?KuRx zLV7o7| z2hudfSvSOS2~aAxR6kGU8O~MgajmM^BZE+EglSfVJUY%$T$vuLH7;*)9GA_;&C{SfD>M(rqyo zWfUwokHY}Y1`fRUC?6;7004P_11@!R|AFJHW$=~}uQP;yoBwvE5w2!+erJz#t_b4= zZml_ybq(~>)e%g;SS9Tg;1O}AW>0(x?h5b)tT)fQ4IidQ6t~YXEf<*Fo$oD|VpWVQ z;xti!9HBCJqcGS5F<(!_!W*I*KL44pi7#j+bnXK|3t#B6@UTA?Q3!t^N_0!@-E>sA z=k>so+wb2zgOvl0n&Ek1^=-FLxSgIsZ0|kn)5%+tME?pw|MWg~fR@Y9%-8-`zN27d ztteim5pH*Ni?{34r|S^iR+jrsysmRdNBJF?wk}}%ozX-A$%#1N2+qCGDQM_^@N{Uo zl{UP`uJwdoMtf~PtZu=FMz*EP>V_6O@KX;c7kBcuWjiZz-JQscE_|LF0xKVI4va^j z6Dab2dAUXTGnlt6&ATAGalrr`->B>c9qs;H>od@Jq82K#VX<|oPQs}XZY znA^<2TWxq705+gZKQ;sAI#3K)bbBRK3jM&+^|sp4M=%58I!Fs(HehYPKsR5AGk~1H z&r^SVKykmqI&Lr=a5(^S|5QIG0VGv|zZHJ#eLM!}b=Vf*F914fuYjNafqjH|z#K3* zpfP}>{>Xijd!&0PwLPGEfL#7geu)opDOB&Y-(lssXaqmDZTyfn;I07jfbziL{=x#_ ze>8lA`He2bW&VAD&-hGS;xn`qoA!aI{BN*y5#k?k4DG~80IF;)&>knsoi~Ra0NYKCePVj0el_&8vI%D4+BG2k`p99XctTuP?i{nIY2TTdcNm5 z=|Sc34Up!zz={l#%5^7_-7i0sVJgn8+aWeRGZ^>T;;#sN{zK`|jV9u!-{I({>y%Z| zpVV1m-KeH^H()!lHHl5>JSfJH4NJBy;N0;}KH;1@qy-+GvUM*A6cQ=W`#Lyy2h{^6 z;SLr5o<;{v1t>HD`VMS$5|T-^pgLH`VSw=mmY=@|OhN-!;t=3}(g}6p25%K5P@#{Y z@Eu&R)Ip9W``br9p2`9-m24wwXXvH~;hbi^#?YbOPV-A7};?HMzB0aDN(@UR=@z8+H$9Z{aiEehxB4FW-MgI%Z0K0sn(qoB3nu0{joN_8*|y z|BYIMcldu%Yfi4_|ASiVi+R=kKTvDe-JiZ&5((rljhD53=U46Axdeo{5>v9XT8rDv z-0;!Po!@PGpIvnEqNugfMG+v1banVXLU-wXUhR9_?%&mSyT2ORcDm{G ze7-|_zuzAZ6yKlDTTdQK<$K>QA`fzV-<9)o%Kp85eHI?fci8U!yqquoz1`t;H_y@0 z>-PC5tvud*ejk5U2J(Uu@HnSrEm=xje0fq7^v<)yni_sKC%(O`r~vqt5b*gNJo!5K zWE5CtnO6RJR`k`nKzzP4Tc(pwy?%I&oUK)xbam0{^3eafe<=7S?rx`YF4i$sp-8d4 zU;Ze0o17L^ToWqa?YL+ad%TT2fWM8*jC^!$wz?cXO|{?E&+gT09q#3ShYz+2@Q_hR zru%Vl@#)y;(o$?xA4XSaC*SSW)XS}!rB_2AZsg~s%&}zy?RC@Dsjg91?_54l9KOxD z0e|aUTwZ7O&YC}qcwC&t^S(dr_4RRg=;&zE%l_GS6qau3>EilTpp*Z544=!(*nL=-a%EHf?j)$;Ps7fDPQ>z>s!{gTPjfeczO94xq5s#{n>iCsl9K(7y)X#{#cQ> zth2b=i3CrYbGAR|R9QK|{V}p;Rd@ka`1grbHs67}v_f|MGsRE$E2L-bx2dF+pXc;1 zTdPk|sIFwSms?Q1kx*}?qm{m(VL)^F+H&n3bqd&nnz z(`!XZ&AC4xKhLNj_NQURYh)&Stw5;0{?o^AEAT_H@oI+^R5cE(EqifE`y)P|jq}$| zc{X{M4VxDFgmo3P@4O&_%_|Wr(*rH5qDP*y@a}nm2=h{e7rLFx=YD$$Y+XqVaKv1{ z+|2uvW22_t^T{Vaes=9c#odIx^mVx<7xoArp_Q4AHW*KvM zbt4<%cx^0#l-?V*7T|=^1pN2#U5aTV0#*8u) zXY~5bZ<2@l8*?c=L`C_?LzltB!|WPfU!B@oN^Ih*}kXs?+#F2@0T55n?t&`#uBiexD-ik{a!zO8~;uN=AY$u+=c*%vj2!WL>+hs-ljsqOIIV8N3mCM6sE-U1Gzds5HbDnln zyf*2iNKo@QbsQ1(u+T;I7+w{Umx=*7(e|=D30O)*#?%&Nz(njRsiLZARepTlTmuzI zIeRLAUc-)7gS*V*=m^_FW-26nGxCY7RXaStgY)iGIeN{@akXKf3nvdamJyaAX$IrW zLm<+aaI$eHqg!EPEV+vzinS-l12AdG?-HvMEaF5e&SZD&#?dLshv6v>_ZAgiF%}KS zQ#Prq*B2LGAD=rqzpFt+L(18^ECk_0Dfu%W&8=<)ut)f3o?;H&{aAB>yJO_Ixc%OI zLLg+f2-A(&c457zu8=W(cUY76Z(03=)6*{YZNK*h)?THd7VxkG%n6GnRp>-I{u}p40riJ{}O;)~FVd7A^!H%Ns`OWSPHp z9UWKAdbr7P;i%mEnjA-vDf_A@C+~?q{qSy< zfOs$kg!+)w_4k51RLa6Uq2sDOU1v^6E;_J;a97lsb(u|(R5o`q4IG8AlU!~@W#f38 zf4^;)l{YsK@*!DdwFoj08(#;Q*6HgS2s(yX!$6odK?+v}j6JnvfGy)RJxQ&Bh_<2f z$;9N54C5TQ={*1`Wk^2iyX-T=1PGQy%<5dUp~oj4cOH!zXZno*Sn4{C^?8ipDs2?t zG0-EFf*8~e2m)E%;?+<@bVAK!osJJ%``%kR%`&{2E-O`iZ>NrSG>sODV&}%vg((qB zC6O(i2gnmuIBAfanKKlUg9uf{^W(|pwHv{#OX|#OEc3A!;;k)EO`BUp)XPRgumNf| z)&`JQ)XylwMuZla{@@H4Ew027YSDI7-wBYR0l0?{QTZ|7>&4Wq$T7KK$ z&ey4NYtix%%`hmfQGhcph(tM`$LGHNtwOb6XbBaY?ldNTH-Jo3kA{GCfnmg?@@1A) znx(V<5Ciwz8Y|GaBZ|>X$CV=_Y*(JU0KP*l!1^tA1tCZr477DM6}I0`)JJDyiXJsT z?c~GiJOuGiLaKFBFi;L^g9_jo;~OF-z-xjA&w_5q<+`|rg;T5JCt_uvKg##!dFy)b zVwPMp^|*PnflOqamV4*Ax&3*&ujv>@dn5PCM=98emV`r*)UC>-NchdLG7r$b6f*`d zS$}zl?>>GREf)iT%Yc#5^SYKhESj{D6?^8+RS+V8~>%v86tuq!VhY8 z8%^f*brjWVS~S8STs$}`jyx(4ycQM#`fqvZ?0v}D=GQu zcAF3d`rfy3`(S3rB-D)-RBP))?r-T{IRS1_IHiA6b^jooMpJRmk zVRew9iGBG%i*5o#zgNAlrO8(V^WH}?;A~(RXxIdDWbKt9<`*!_*SW`4dy&p{Xp(UI zW%=L+_2w=2C1`w*Wq?OpdLN?nTm{GnB1A1KzUV* z@&UcG8e#95Ar-6e-j9jcY%4EhAfh8F4AH`Kqn~M6YPbQL20j=@kLPQ&FWHNg?&!Qw zZrb10#2%m*W_DUtRI;CjX5(k5GoyZd!WuMo^z_*7vXX}auW7U3?EA5z)$pb;FO%{1 z)d}kK1`GkSuafc3P%c(pPdD7|eqLFe)}gYS$-+jWg2Dsp>2d)R@5;M;WCT*wz>)QE z@i|-+uJCBebVR`~!Ok`wg@3dGe63Caw6IrNyWMyazlD;>T#OCcS<@4V30Xv8MFFzj z5%slO#I|UqL57PE?Z2Iw8C^Tgk|#;{Ng^lx)dXGQ)oe5fMX$tF2w@{3@LvK^$W}5* zFC$34Czu2SxWyu#(1u0N2?(`6q?IY%1XxZJ2mRz;yvb&c6e+VsVoU$xAbXc23v|`N zKO2E93+@h$w^&c5{Amr$hWAV=o!3%@d=DBB#a2q#sG#k{**{VU{|qm(6SYH;)O)hh zBEKyVhs(i6d~m1E9Wvdqno7h4>ae1&w?{uCgO+o^?RhFVi1dXL5~&8Qwj zx>_9UNHv^{AhE=3o79u&QWpksypo~9l22M^6`k$^&Oyb%9{QN%x=$ffWtfGe zsf|;SPs~SjL&MJKQPmI)PD!EgP87)-X@Z5vlcI+euK#0b08!@RfBfXHUg46RANb9O zkiOzF4Mn&4giDRf$}=oTQYc0mDMkzhNwfNvJPYynFe?X zjQRxB1Bo+E6`Z)E%Yy3)06ZbSr`=Q?ELWKJL35HkII`K|;3F%v!|Of*JUYTRl_h$00&z(tp2 z9NI$^6RRbM>E5o&qIS(JjQe5g9;9es5y8@*qfMr^dK*c&+$}Y-WZ4U9O;&^myDEjC zkD$hgVBvf!8Ay}SPDAK}^;?>GUT~wOLrc5Yg=!sdxOHsihGIF;_fBw;aR-3SbuuNv zGO+Kod;0B*!Y+MefUWRFKL|V=sr#6ue3Qh1}GozJcGmc4+zDc5v zik~!|ep7)X1?s50YB}$^q3W$Ek^73ORj^*IcSPt}kF96lCs~K97?-lJE{|p{99DC(ipJngi ztTrEIVOZWlsZtKp%jazO&9B$ldX)`%>rLmaN2c`$eRs((6PDS;6vrG?1b(=wkwh!6 zeW)?!uxM}a&|IJ8U{-?(rBoEE9MP9VBZTwNb&4qFFbqiqvRHu)hhOkBaJY0I92NpF zl9!+d;YtD=BJ8$ZNX2(E`*`n(ZEgrhp~mk4Y*2rIEnM6p z)EkU0_GeIQvYb-Zk*I-UHc$a{J2%lhv6W(x|)V) zs~pzTo+mO%l^zVT#+D2@f1@%}uc}CD3~674g@;WGL_tXX&qhZm0gXl4MvY`b>;Yqt z@#qGu^o>oCnb7jnVS+m?Rtvk+sY1WxR=nPyi))sb@6(-yuhYV{)cQj0m*Myuzdnir z-sg}axmxxVm%VJf&F!n{@B2A@@h5g1PDmyo!}Jkd4~iUUNcSLL?uov*In8#f7Sh`# z;Xe<)7uN&)xVxZx62_}^Vfyha0q}9MSy8ZOVmz+%AISWou@_AgW}XEij0qNN(ZnBt zfM6}eAZ5O&)GT}jb`e9=q+P%*{?Q44V9`0{ft5kW#r3uYUB6CufW990fETyWA0 zH=Xpy4bQ_zQQ?ellVoSWRVKR~C*XNMMf77JaQyWj#ye(1$d+N15#<;Ysl%~~X&k5X zr8OK5Td=sykQLKbBR6h~wC$JPS3q=-4R?u;7LpK46G^M}fOuRM5W4cxat0{;WxtXr zWMo)pyT4WP5fn(t;LFi}<@)?My9aTl(swza_?n=@ic5T{KIu81zQ{a8qc4C){W`%;b16W< zVDlI5B+Lip$h~~ddi~nev){#=@QXhG!jAAHHjGePB;pL0U?yn(pA{9_9{-)XGxjq%51YD{i)AVij`fyv)H0^-2r3;}^u zRh3UFR?ZOL^XPs37%C&@2?&0aadx>w3DD@l66_#MW0Sfm?lq4L3k?Q{j10cL+L{#d z-P(;nj?dq3x2*04XBCdjAUW4S9Arsx;(RZ3jhaLH67FI?_(0d+*l;?_Ku&Xk09V9D z?nC>?MlP7j-&*lc0UP1qb_1z2Y}s&gBn?c*HzTsT@1w7;qpypjl3b2=UpbJ-RZ7v& zQ*c^wGmSyo-Jvh#EI-avDsl+@Tphh%@ne?dJtOg*t~7piUpB!87{0I}FK*D%cwjm_mTqErnOIx7Wj+g_`qh40g4uZpA?)&BlZz zGbDyPna%fb(cy*kWD)yX%NZ=Iwu=u5h5>e^ZhQgYtWA;7sBG00Q1Y`Ub$)RQf)=C~ zsDp4Q%{eHgUE@2=&yP1qsi0S$j3mEnn3@tdPf&YCp3e&ZQ2rW_76)0)eAq1U{yt8 zH8rSev9Od6vffN=SKjDLoC&0)HZb0?=gl74(w-G;56>|HJl-JXhaxfHa=WTZu;DrK zsDH6{x8YuQ7DJCwvglx>YJDXOUw~%R8%~1}dGqM!(5hzwvyr@ONu#HlFCh^`r=smt zNGRp)WACJ0$A%69&(S&~a>U82LGf21_yTeQ7ew^lmO z;$lGAv<$jN{#8wt0?s%h0QrgyZd%5(WF3WQm^=xTX>)+i0C1QhK+H!>p2lM(V_cVY z8fe_%!e8lJo1~H`@B_@CkQLaD#JvTmL+8BR`xC9eK9r+j$n>YRUwcIGp3n5yafc2z zlEW3Zu>1~ldXu4B4!>))`@ScK$F1191&1AZa6USEg=k@fl?}LE7)fao+_qFJI9K^tDq?61n=d2u1qa!=UnP}qRpW6~Hr_F5j5kI%02 zjX54QjDQV#1f6>reZmx>A{m(&m!D31457$If?9N2`-!S&0uw7zxRi?yK!q~EjkAZ#WYPyhLFoIthBImCRk7;>!kvj9_QJVUUfx68t}HnNj*=Ej_(bL`jN>(HB{Ev3+ z;%~}o`Kc5{GxERS>=?()MnJpiq!NR&0(4Mv9BFtPGIlXJ<-(Rz)3?g@Z6n)mf@1}H zM4hfR>bAKNy2uY)ldD>!WNv7=9`%At+?)#WpH(vtx=+HQ&|{YuYl|-*mGdsPdm70F zeveskY@7>{krW3xJ5-BQRLP1j$U}ATtDlM#(?$n> z$X*!b!mO1LdL_rlqWa5MV1C<@Z9wznv)xdp4G!HCTWU_yp14Gs6=baYoj(dh)+31M zBw;B(Wt>GxI}UnI6i}%H>+usT6}c2447Cag(%nc89U>weL-AzA8`q>QNei^4kB|nW z75#=A0f4C!P-78KmBR7kQ3D9bILFWb$~u~CXaSWK(}?&vaVsI$Q9|CZN=bzY`l97- zd(hRk*x%d5f<+-VxZ_^~h#ao+p;7mj!YR2^qa=W0v^fP6k8&?ES;lS@$r&Yzq*rR7 zf#G>=um5r=M6v-#8`9CszEiMo8-%5{t5|WFouh) zi_BQ=uP4?>9t`dSNhd9mlS$1imTL()iL6O`6~I2a-Q}}a!iP30(M?y7txV;|gbeyX z)@E8&dxyn{%{It4mxN+0Mjf?TqLb@5Rsyph`tn;HBJHO+6(Jm>1ok6-i;@52XtP_J7osycPmQ`BC`So`XDd_M=E-dmV4CU11s5$zP{Ces)Eg5W|8a0Y^*^8? zqiYNBz@roRYfF@S0GCrk&6#S18Zz&V$Ma`2h0F&41D##DIf6;o@c zdh^vAOJ`Ocv7xHuRUM!UyS#d4=+g^_TlPB}l$b&`WT|x(Zpf{1{P7@*q@>46(w+V?w>hdLwE8$aQ%MLWH0>d z8*9ELboMC3prK+X0^ycmG{M0{my%wN)PE*fBH~Njc!JVbo+~i582&;a_%`u+U%{uGNSNY-TA( zr7Q9f67ROYK(SdU*|?u~i+TI%uF6|!clttCd0%z0UNBmkdP@hFp%i#AsQYX@w1?U3 zx?ED}T@^(F{hFXl$QD{LsWxvO%d~o|vHKWl> zjP>ikd)!b6xMMQgSw>9PAH`<|SN1%ovM(5Ls9nustbnvCC8-kzUK3X(PZ(M+73H(w z4!rI~2g>~RCe?v#qv_%wPaPczO6?T~#Hn*Lnnz-OUDOoJp3r9-P2qX~1o%E0 zMp~|Pt1hFXH1>0Bsi6kwnuSz$S%xYZtswVy>^DS_I9O*z#Ynhx@Ygzxe_2NCyt6sL zNK?2gv4AsrsU|UiK=*g^jLvGPX9(5Y!NZ}AJCj(-oM=ILc{~+qa{W9*RE>TFcICM0 z$X_xlXJZpC>5u(^?-Xb{*}4c`fh1}BrSZ?9UIvibRRFmVDQ9m2^r)0i+?wTZup+5O zLbB($HodnLAc|c*-DO>6DQQMxX5~L+ZTu5hq<$0;blivH7K%y>+A?~CF~;P@Ch-WK zmft3B+?umvlPc!E1xGvo$Q)Ap6d{g`Hz|6~(8?QG|KtygUBu5OlQtyI#>}x!hWA() zB21Jv&Y@ZH=8ZRILInAAfUNqy z7um?~_eGpb8)b&zRMUzMfaxhO6;J&Q)~^jmYuH(iF{raLJLN*1ol#LfS{M=m?2$CR z{UF6m?l$@sydum;7UDZyufFb93Ke6tAn2KPL2(6cWXedmiKW6%ub5%({_A41q8yx* zN#5-Tzl#f#fs$amcWa|ACI&9MM#L5y<$m@gZzaiBXPPL`trJOA0yBKY*a4V!{Q%go zY*)OJRL1pc6nK3b*j(YxVR@2s*j4kAQlwrMu-ff0Ya!7$k%RRlnM}<_BrvjScwY{t z@~BcERWOf#?=mzbdcDi+#YUs$TN*5!N=pJ+zZyoE2ipiIGuo)5e{i+s^NK&Tqu6ir z(8A^nc8ZcQjW|nsfKzq*4Fj}K*-w7wh5dX;Y(Qy1Y;({RC9RP)RgmUrR&>TTmCjRV zLLE<}$UR0(2-Hf5(`@z7!#$$Qg4W=UV+-U(+{dX&q{vwRCdyllhyVzsU%oLbaS){6nufA?|%`AMyE6w2jgJ4{u7sO>rgc3zWgQWL^*;D9wg5>=__2egW z@W-=Q1xsVznht+ZC_cOxE>n(3CjLWdDuT94_u!1rH2m?pouwfB9Rcc@(r6rt#&A#y zlOfRe6|ZI4?@t`<>O!0rX%Wr{)K%T%$OLU2`o8&4m7SuC7Ri|gj9^8opgfGt| zx`vp*!VhOV{EF**DZ((N&QfJe^+C{J9&J96(T?e1Y!Z;+e5ms7Wt#2?$n<9Os{(n& z7*#hCt@^lQzL0xiq=w7CnrB=2$Y3luF}J?M&%B{rWAR}2%^SSUx80h-g^*Y37e7bX zb5C&DaR}kE)51EwVtDt@ot^jh%;US4Ud8i zoI4RCf7HCqXh3}dfh7;Xa*K{azhgKV-6=3Ouz5GN;v+Gq>3Do$in6U7HtKtmXVlD{ zVd0v{^z(tG8|yWNCAL)5N^$IcYtR-=iu%7~PaY?dZdrWYkN@d~g_B}1g;baq6d(-> z7uamX50PlD@`(DNde)g(63|JwGn{63D>pN;zN=Hudex2&UJ1E@y&h~$@tQdVE8zGP zql2dEKh0!_>z~z6K)p<3F!zhru8i^3&6Y{(_~D;R%hAcfo#QP$!x~M}V2rTzUBU~W zN)aSJ|0!x-E{aee=gE}|L72ZL=X3eunX~C=xnGrVQc$#+mzhBTbSIWwRJK{8NU|HOz0YUz#}2Pq9&wa?7J!)YPf2#P@_^=Gr~<+mZoXvTkmCu z>NOhC61EKsz_t6O~SyeeDr1e zIPns@$KgOA+MBgYZ02S=GI%xF?S(XkW&;If6N5?-?IPzrKMGU|dj}kMaQvtuP-7e= z8HVFX#7ic`sm0P~Ib+c%KgnA6I*XJmh(j2q)vnERJU9j_&cr}^+Sb*^qUIj1n&B?T z8aT21Yz;H{BbIiyuWwx&Z!5v5QqOt5Cx*ruJ;g+zS?Hlq{4&BQHz?*si>`u}Opo?2 zfP)&V5Qbt?%HejxB7Il{*#qQsMqo|b7r>(P?s;v7w>#Op(;5cN@vAM&X^HIB5LPM> zc3YO?>^>qjl*plc*Q{B5L$`#6R48OBsU;+ZA!%X|2DN&R#4z=O%#m9_#i$i571o*1 zhSDk~147&6^T);Z*0&Bh`!(S=)*6;)x!c_E@GssimmuBF7O8=~9h?V7MjcrJos|P$ znS}EYQyheT6Gp~a25UAS%(Vp3QAJ5)+-Lm&-40!CO0C22Z9h+FYnF?ur3wKE>*q)A z{Q_OQoRJ#BragAKh+%=zMI?f?#sL^R88tzpf;4IuCacs@AruNP2*%}|sK*~OGNgpt zCI49qiqP(g*h0`JKeDh>QN(_8Q51AED8|6_QLgp{pjXbjBjnk_D6O>`YpsFg1L^Z@S zxaHjT!$66qCLO1o_@ScvHNr!d9iE+S8AMYgDO1DwH)==u=(fG3mjOf1=}cgqHGvF_z~K!dJkbmSi~ai*4tv#EPLEqI4G0|BBH2u zpv^3Y*)0oxDC)3WsmX^$Jmlw-CGCOuS=x%r&0hCt=j2XX`FBv}EHR@u#C0I9?Fux0 zJ(3XpX`nbd$|~9V2tM+Nj)0g*93s;*YY1LNbvRMBz_~o_RjoZuRDZ$IAkY($_T_02 zeo#tjQA_bh{&_GjyX?c<{!;eI9_)xd>>t!tgJ4Mzc2a>EN=K7Qj#w7gpqDBPO)hwu zPbcZH(xaD3GJ3QC)(ee%;m0FsJu!ycTL3p2iD(xH@fKv<`QC>%CL?B$Ne4xr=LbhK zT2j>YC;L-TGcxN+Ksw>>_@a#M2|afMIPAXr8m(j}m57wB|F~9*)ezSwUlRFtXylzA ztc51CS-{JIu|?pQ%dnlF%PMYiqusi(6{KXrL;><|#3Axy-c%g%By!Q3XD-8o1LLPb z_*D5*t3UQ(Pon2MlvxK+u8JPM1yb<#WaNw)8W5f^%pLkxabg(30}}Giw~oeJkm-?+ zE&OfbDbL{+u}TponKaESBJ}D-^baElk zKnutvg?!7_l$9e(Q+t9S_>o1o!(Z{93nPQ*>7{gazvo%gwB?#_?7rYujH*#nS)iU+ zat}>2nY;C=UArvT&=#6+($Mvr zHinY0_MsU3v+m$v?teDP=wIfZ2N?h0@YmsVvhZN$!7!vauKII+U@BEywkQuEPZ7lzc^V7kBuFC&UQ&QbO&uqX%5*`<+4vHVTq6@Xrlk-RZ1& zo%x>V3??GP5k&)m)oabzgQ@49H3zPhbE}oSwo$Lk(!qVW5!Y)wCTKqq2Mdm0q>`_X z?5`CU1-#4ONgavXUGb;H#eBy%gXiDe#GpHCMM)2=@qPO<$@>x0?nOhGQF4(9F_HxESPZmL)Y5Z`0$I-=SEo2kcdk0nXCn~W3(veO z{+hZnYZVj+pTf6_cP#j~4g0qg{6D7e`8&d6paRc5!MrdD``b;=7sG~}9#MZ0nj1#R zjH6{xI;IJL9w-0M(z6$i! zbQs1(GAKwH4!SP@vU?rA=%)StQP?|4;xU`qSFP75e~7H<8AMbmcwH@bD`(f9&d1Uk z#W97?3`|SYfAJ=KMP}^9LuLeLRG z&iWmMP}0XY^amzhqW5COOStr6cjXat)W^G#La*^~`fKtN0p^Tg>A+Q&1xr6=oLSOh zEn&dlKkQBcwc3cnHDsj1|32(qtFCUJf?it77MjM#aJ60YI}XSSCW*Qe)^rZ@2G6W` zk8vvCg)u9%g)qZ-wya%5;d!36^*HkA)0sH;2|hib%z%wrbZL05sij zQjWxUj&7JFobFB2`NFX3d~(whtdRb}%j~v&GtT~KB^Bm1zwXh);=d;g?u@r)7n3ma zU!d&QC+3@Y!}~QW`j~OuqL}~sV74yu50W7|zubU!OxlFn$zsS447L?c$oJ#s8XCNX zNoHd`?I>zg@^_FwKQLIweE_Wv-djzwPRd|eZ}MkTCI4Uz*g}r?1lNxy5dpd}Vcf=u z;rG7?$E0uzJHu6HO-zP=c$WjdJLRfV=!Me6a9+Wup5+KAuEMLieh#1Jc0O&%!;{V_ zx|#Zwe+0rm8aS6%MKlC+jeINW7MEkB{!sd&P8Iq&Wl*Y)t@YK|aDkt^4wdxTu@PDj zf`^)}_UMb>mGnBA7xm_>JN3!9Mb%|RrE2M02^k!|i&1j?K_`c^&iJ)?yA9)O%`o@j zPk}TvR{LzMJ$1m?B?l+reA#t&EMuB~D#K~br04dv51*JaIA43! z&8_O}$rr^x>fBbt&F2&RpFcCPI9cHV=A+_Id7^siq4^i)s=o~UU#fnK?0`rU`C$LW z**iuF6FdEaqi1Z}wr$&b#5UL5Id+RD91Ma zHLDcQ0CV+v6A2B^)!P6xeqZBNzON0G#mL!X?M#q}Oxr?eEP6)XCXd8sB15Xv`YqCY z{=s0#&x;kj=Vy4g@_p+Kum7Xt&0Prlw5m3hNcpqs@x-fx^9jAbEp^M6W1w(ms&qI< z`^ppIC3TejA^ofA$WiK>KH>8i-PA5u)z{|Pm%^tnHvu7fvcmKmsbxxkQpm!-^tAJ_ zKRg?}wAC&mO<-S(Lh7g$Pvwh&Rnc3EDp8ybG0GS9g;r8fdyDbleTQP`>H2nxw}oJ( z#_)rdU~r`|c;(?annBsd>JuS1`k&DjXTJ$pPwSufpCC*vySd5kg`Giq{8dhTqP*vE zovvp)y0VDMwtZ5PT`OU|6Rtq})_PQkw9EI0?L!B#;@c=ZAA)D-;{Zxlkv=A5Yot8< zEs1cQgD=Tqv2K(t3odP1AL%LVpoO1@+x25f7}u0fn~|d)0rsz2{g)5kfVF7_0V{aL zA1ZZVV?05|4vv8vP|!x*{)jijf1_L3KV5iSl!J30x=+nxv(Cjg_R<^rb>HiKE^d<% z3x6&xH`uq>#?Xi}GHTt(VgP)QFk6g;n#zndS&Hyyq5UT5?10dw)*VVCqhF`&)}{Uy zcnimz*L1OY5-@Fd(-t>tGnX?%f(#DK>~MtXznODb8qSJe(wYG8IFKpIoMN`%m}Jf@ z_ME8z|B;mJ9?gbay!`wgi^m#y{b{J5R1u58icr~B*&2*yTU|YEO%+b}f2JK2>cGyiwU}SQUfRnKDXE>nz?sO4 z8ul4zBR~eja8Fn%sH2lCUCU-TfBO4Aktb^tBs36ydB9)6gUTkMDM*k{tAsdqP%szF zkE2v9Pu8VzxsHXRi@oHaWJ6C>+kw3X4|&=lXoQViWVo-Kjmw@THIBlz2NS(CSQGK2 zz3E?!W+=rK5Ug5Y=-s+?Au$GguI*s_l1flQEkB%EP!BzURxJV)B$ehi%|4iZY$U4$ zn^j^Jc~kjEYL--T)|o1Ljb`+rO?Jkbqy%yv*D@noE;+BnIed8^7TUt$DRBHDX&rqX zgrhJ)6NF~y4SfM5%HCoBYP&m(FTGXy!Oa|2U}4BIX81z;lCnQA>N_EB>5e3EU3LWy z4kh!ovFuif{dtybvfo)`B6jKgx>UzSIDJyE(GhHWvN+!>Ip{_gahwXbZNQD9)q3P% zsI9$pO}DlL5@LLice%k3v5B}}$-yXTcWKQ>mSPot`k9aptog|&gyHS3!vv0J2e3*b!n_!kZ z18Iomj83z6tw6<&2J9`7`7jGP`pAo$Jpug_rOSBi&gctWhqXtsA?A4uFrT;?jkiNuPAq(0&fNNZK!Un4!>k3%HJq)<|om`@8 zdxQyNgYzH1qIFo4hyj1#c^K>uPNn~7+3JkE{);O?drvS7g#aLYpCI`ycBc8!c?r=REY`KvKp}L*wA- z?McX=N%WHyA?x|Hnlo*I1)_<5PA%ZP027L?{${;26<~kdVZ}`H^0bLKX2|sopDTt> zdd{`{fYOCx@F6^N`H4Ve{W@ZGmSv4kc(BXAER`!y@RQ1*%}`?~wOgZvqw66fPV8$Y z_=-2S7-IR{3;zPP`y%rOS?|86y%cOnru=O+hWr)E0LON`Vzwy&&DA0auf=!eKJ6Rg71(qW?@-k%*>amY>SRW%>&tJOWurD4=nu4&9Vh zzH20D^$05CJ9Xvl*q(v2x=^vP-xZfc4sqMD09Q@BCSS{=kC!?ziO50CWMA%e!sN~Euxur_jIXy`?kdZC%W8{?@Qt=bhTVr zM?nELNu4x%XgYMmkjjftzXD($i3H5WWmE5p4?2(iRW$jNKCG(^tiK*uIIJ7I#^&D{RV1YK2$huM z36}u(VEsPLJNY+g4bzaURS5|w)@4?_CWqAFo^2QjPLMVt6|?;G@yM7fN(U>UB8(<^ z(CO&ycNtMt=Etl#5%&B}CN(>RA#rYzRO1LkwNX(qq7s4GJwUOqr*OG=SF?9I&AOl3 zX<(oxOb)AYH&%wQ!mt<(2DSkb%-aMs7hDV+!!ClnpmA)OIF=ZICgkz(?kt$)tRPyA z>*>Ntk&FKN8fq41B3A)){K;X6`x|a!KW=FZiZwe?FAQDV&75Z-y26Ln zEW6V$Ck@)xs-~euwTehU7?STCD^5qGl`vmw`~b?%qP9eT7$g|kfw~#xxn^xV@$<U1ydF1EDK5*;w}aFqqgf6aQi zo%vF5yw+J1N<=4@q|!TR4%tg6u1p-iUG!86+hI{Yd7@RwyEX=!Zp3}uZ1gp;f68G$ z#^jh@Ia)6#GcS*a&-c-%{iwJWmqCTk|E{#^_1{c=&*vrNT$EiMwBke}#62yrDRf+# z|NXbt93sVt@Qifv=`P2E_2AI*)Mdv$ zC<5vtCQx_F@`)Vy4A0>zgE%JFWM5xF*@0wzFnVWF1`9k@=-jwn(@@m1UweE?Z}cr2 zqdmE!vlyC@U=x69IAVm9M;IuED%QCRgo7jZF@$mAa%zlcd0QR#1@@$|@)+VqmIpfk zXTqkZQ>=F7aP>lVhtSc{*?n!?p)Br7d%Z}Oi~LoRVaB|DirqtpGcm+eF6B+Q0KP|+ zd=Y@i2Ii&!*d|CoaV0~!{SEk>wBPnGQBoBx&ZSS?sO@A8?oAldree0KK@JO6{3QAe z%?q#|MJKN%Zh}Gb_;U8)UluE#yko&E!$wy6|9TcWTC-w%nA@;#?Ea&qVa~Dfyd{n zypR%O7|4$|)DHzT0sTUK5kjDKy;#qEuYHDXnk2F_xoGvn;gcE;a)?!R$1$KUGbiRc zJJ?(y_?eVjcmv&riUYc;86;lyp{SvbGUwCVraCG{i382ex?@Ft^{ZzG0+vj`p*yk8 zvINzhFcDp86zd0Z3aj=JWP}z>gCLQ(AfYKD>ts}-k_8oqsRql{;F*(>H%#*w?KmC5 z-`VhiPI)F#jL$cNsIS~*|Ml{N)3b@Yvl)xBkVKg|=YHR!$=)7fz`g}ZVYk+LQ15xu z-UI2`0eQ792Vihj1n_LHhFc{3@KEoSZhc&H@-}%)OF1$he{2bz{dn^YW=<5hN25nK z_LQlc&;S|K;;e!GK=h_=F;_aD4+OV(e>WrfRNk zZJp-R$?5a=_4R(-ge`jZ--rgh33!4cX-GW=?H2240f}b2B8>yD3OBg$(*-eB8t6?J z%l3t=K-oH#EbeKDdlUnE^v?7_`av-XoBUi6>mX533gi>RxO4;2DStxjtHJm{a1!JQ zDt)W^5>#`0L^g?!J6WQEiH1$$rTME69(pYsO-YSQi}_`}3dJ@QC4uSV6Y#%gNW{h5 zBLhY_f1Xwhp*Yu1tt4f0HI67=TCYp?;3tW;{7Gf?ezbhLAJvalhS zJ1{|vxQscWFxA}x*F+BVVeW-m3e-LCqFagO)hsW0g#SV6N{{kycM%YBAlFK)VUB4` z>ui$G>0h%_>*2$LcV)ni*VL?z_{Hws@GF-vG(qKoV7C+OAHln>Zm@F2XyHqz=~T0w zqOpal{^3k>m7UJC7n9GlnVZ}@sES=;D9RP;SCvb*-0!d)h)snQPgs8+f0%PB2|dxW z%&@t*(kLf^4rGl#1EFB1HQ7eEd~CX=KC$Y1buw(F=0%0EoKC0!<1mJjNJ#_yEVfjY z5J$HRi`aOUX8(L2UjN+*`t+f{1N3|)mC&mpSOS+(JZMiS3K}Bj;Qn(g>4me4mMutU zi6R5Z!hk*qxUNBI>2{w=D5>bBz#Dv32NSsr-HlckT*lZb4B$kPfj$wPRGG4g7BjU zTFzqyeE(1+`R@*#KP8KDkiln)Jr1XwM+zVe4fU`9Nk~eAR?8!w$iO2!*JVmwecA2` zA(S#IfsbCNjMf^;iVz}-!5+$bxtyI;?EXPr+Q~@DOjP+%0|&_jH9pp146>SFv`w`x zN>WA|A*E;v62U$Q8XnS8Yl1$|ohAYjHYN(!nE^MQxlJ{IjToBaB3AAw0$v?O{VHH7xVH)ux# zfTpSYibH9P3r4{X{h+Q*1X{#;c;2E#hVmF)#C6!2%n}wuuMpt8vFpP>xaa%=*aig(c^q;)9F zSKZn+MAJMJEm0->6GQzhyr5oxJ4hTTD`@}1TVi$QZj4x@wD`DH(Fu;oYz++dku;2a zJPD-M<}IcJ6hdh%#2|W3;=56{=NvxJR0bON=n#R3b&a2b!B+-!1e3VFh{JVj;5XGD-JI_f{r z)fI}q4ihn&@{GqNq3(E2&Bb=j%FE09e7IVz>k!yO)nb>P9rP=t0B_5*T6Gj>yCCa> z#sRvv^8{GR@i9waU?}f}5!p>=9o=g2;T}x9jk}fkFASh@F@CzKL(wQJR3H+<5_(+q zu=o0n`>_lgBi?8$lVMuEDq0;pPLb{LF!e=_XdJM~8VQQfZSe5{mU-R*?gSHHVoY8F z0ULEk7AoL5V9fSM@MA>kCJ^FC(T8c}1<4PPecp3$eEEv?r9P8EWt96F?BGe0E*2V~ zvAnpam=?#okfR(M@qY_USdR8S^&Smd*k|aK6_|M*yLmF0`H>=MZ)O{+319(Bj;Vg$ zFV#+RitB92o}=i)8b})Lf#Z!LG){le4pJ%Pn$&tU7o1+KQ$BMhykCtm6)-~68XEPM znhbDGK_b(dkd;!XZ4qodBbuWXoC0F}4baQ{M2Ikc@sttN??aG|S@yiQEicA51O|D0R!^$hR$2p@>r=OtD;#+xG zTS90CuqYu0LPMpTD(3v zGB7v`B&O}u%xAp3RZ~M7j{dlsXVQS#hQs*yZWOaanBr%}h`U7>4u*)^<{oQ>4tNVK z#NV9?^kQMy;&Vbetb&6UpY3axX3vB$W!!fn&6)_RWZcV<@$;JBEtH6}C3X3T-S#8? z%LN=)DRkWTF3p|_Val}caGL+P*QR+=d?XjAB5|arnOialI=!Vj=(^=5A*aSe16!3?!h}{SC=872ZN(Fa~5w2<+ z7|LCb7jEjUjCDUS-#@_A$*ZrLDV~`()>Y=8nqFL(M~qYjSH><lAY;3t%#R+*{@s5t6bjQVl%ASBlyN^bb#*gA-YtNR zhPw>j40IU0=5Niql2hA_-i=A0-P0w!bxagn$~9p{@zB4 zBx^cQF5N~6eDlRUHqFhdJrkHUn;X3BMK$RjM=}0g$xD_|Y#HyErXXYjH)A?*&fRt- zK`wUuiK|sKTj*5{hFYpH)89RTtwVh1k`({C_aB9>*y5uV#`C~T88;`lV}9%24iZHb zsA&jm7&j^*Wmr@|>%*lTmpIfghr3~}-6fWdZhd|BTZ_pZ#N8rZJnNTXjQ)QyMUcOS zRTk*ES#qTp z8*D*M4N++wwM&-g{wMqOKUu^Z6Wn6jQ_a8Afz+o0CCtmX86=2o6Y8FJ_MT5=SBpZq zYVOz0D+L^FaS*4B`&Oh`<3Wq*b}G192HA&41_p3!)101mrS7A88O}ajML&nY zSHQB2^*np)M$l5fC0L8W*xDC(+QyS_`ejB+emz0M{41pu*n*Kc{;DNZVi?hblk>#U zHszcivwr?t$jF(~ zJXd@15NkNvByK(6Xic+AyDD~ffB$#KPi-7Mb9jmCnoj!h{2dd1Hr;(ZScW#{^R;0@ zT#nGSU`ANs*io20SlItK>M02nss%F9gQc{S|FWKSDm=~FJZ)X&vLmA}eGes^7!{55^Tv~%uLl$>3v z`;@DDs6(nN`Tv)^>LvO=@YI#_zvHec=Xt?V+q#oM^wY+|Up;{T7h>}gcl&|u0cmg$ zbqjjxs#UNHGjq(o)j1{fN_#ukJ;~*C`vAM$+4X-QX7V`Qn!s&$t_!`|*qx1}?|1g+ zV}*L=x`*wW;vN_^VVXs??IC-iJmo=>SPq*oR(sY#gDB+O`$IJT-Vx@wXnwo8&aCQF}C zrcbFbrdJx>wn)C%R2ngLQyeI~*Bli^5(_9gBV z7a3hi9F?KYfo0Oikxi2pvLvr&%vj2tHk&+XFu7N+cdc0ISkl(Aq^@SnT27xftBTc8 zyz1fEOo*+8W;!5~dh*9o;06B` ze%M#p1(>yM3}EVt?$=OA>US^v58-Xx>7VA^u54o|&mLR5pAy7JuY`XlhQlbXo#@>f z@QgUF0awmwFVEJ~x73PN4Y?zhhippwA0Dcyt&p5V6B~iq2&UHj)1&mwIY%IwE+n_u zHVVrF^+$wOu(X`Vf#)a87ks(WQ}o*H=)g4DYU}_x6Lr{rG9;SNy~Otvp}X;>NrE?{ zmt%M@MuL)Pa}<^vpTvou9c&+ zDP(Lk-dS0?*;`#4n^it;|EhR)vli4!Pk#fnpWmMkP1R1(YVl~kOIMfPTw{9^*?Oe- z7U2pfpB1*deE;d}xcPQw-miPzzfHREF!jB&-SV!D&h|t_!?pa0{<*&2tzm0B@$xVd zN??9?sQ-hZ`-&E;JEp8NCPn9=fL+!(mXkkR7{iC*Nc`Wck=eMJ7w0f z?!as^HI}aUSnB<&VfCT7YR0&gGc|xV^;I(`bChjiIr^W^;^hUYsryZ5Vj_qYvb8Rc z&1$L|+N;Ow(fv5Y^@~Yk7uxldNI@su)sCk3YmI0=-vd3Y@b!4ijUDRk%H1e-+I$W# z_qSa`S4Wpyo*t( z0Kk915&wJGM5EuU*Z}wdCbl+Cj&#BjvO=~tM#eUd#zum+Rz|e0wk9Tw{||5?2tJt3 ze*>HdAj99#>nbP82mlE1o8*lE5Pk_D6#Os$O94Uullxy2pQxy^3^pb%R+0lYKByi* zC@eT8M1Uh?;F?xol{z3R5HWBV5L6Hd00{n{P)@L5HfUL_^?S56*2og~R$#a1R^OZP z7X4e7HjnSn=vZM8EHD7J$-%~-A31T(5j$!=KSq_#_|O4KiX=NeawEdzR{KoSEtksF z7}>A<2?z>!fk+n)DBY?0blje)kf}m~gE%{^=WD}P$rN}*GWZ2%q?kZ+oWsnu7NcTN zT2**Wcqm~|PGobwMo`py84~1}IJ5%o*rYGb)@1FYVW**8S&&*$y6fJ|)rpIbcH-vp zf=TEC5fbS{aolT4J{O^?g>+#Y#lpeg23(0uPoKW~Iu*ZqPXkT5BuprWl!0V8hqaju zNrW!vBtc_lH2#pL&jpzU$YA!dS}Wi_kQu)UC73BiCpw>!iQ{80ExhY2ORq}n{}7Tl&Y1B#mG-igcvIyz`o)hB7NSi+ zar4GsPhZe9wAzVOGgE|#|L2ha(4px3ZI?l9QPfSGm)%UfL)BvBuKr|yG2 z25w-_lbt1%B}y>sCVY5d)wOImBe??rOBW;Cip)Xg{7b}>;qJ*^p@$RFB?t_YdLSO~ zUbCL|C*ZS}Q^up!ySikEW)y79mMo`ZyUuk@iJq)#P2Z|!C`3{Jolm72HHmeU(uv}g zLzRFH=494yX$qhSJZ?Q4vQugvqUZ=kcpVO(BqPt^M?Q%!j_ zX*G%V!Xfg+?ah@>c{gG7kVw(4`mP!14rQ#EJum7fZ8<0d0V!d=9_6u@n#S?e*oB1D zC|scVUw8{P^YY;R@n8Ox*`SDUT|V;Uy!^H0rFJyb!L#GK*R}@4V1s=#W@p@!osijX z+Fi|A(^%*9OLogNsW`5EBCpjJVj1$jCiVy6$gofh8;^v z9O4OpL3;6?Edmf;P4DIU!@kE{?q2x5(Nfh|nQE4B6aW%Lter^sbo*FMtDrNwO%Kx> zC!OpVj*B>?*kf8CM0z|m!-gIV_fSJ?I=5RJ0}9!duFIVF1f7vaUz_pispHLm+$>q` z7Llq~3CR6Nwh@mgP?`V^=qX78%?3IsPxy@gG@EtGE!JX0<)0kREsimdr3dK~bR=zo zB!`Cs)VD2YGQRq_cq$EPKnrP4YdT!+rB0$@vKpxW))lwIgNj43dgvOiAg`FXxU^Qz z&4$F<>2pErK!7EvjUa{Y4YrDDQl8M^5?ZH*UL05iUk8&8_|W$uh(p8bHugL`Jr%2- zuBbO(B_!J&lyzMk7(8FsWKi4|M=TNyj)X;1gJ;wh{s6b(`lZ{P-RuLm9N{h zIr9^x&o7f4WAKYs19|Mjtc*c00V93jGgdn`L4+t;TNSXiHnlh(4Hc`~Gn39w#!-X{ z)g$o+iv3E5^Rb_P*WZ0WRb6#clz4J~ zr|@VgNN`Y=u`mh%kN-haU&rFSQn&0;Lt=%^n#((|)blLCGvt_Q#zsKRt$oQI;er8X?{d zkA;jGI4s}>6fayNZ|($|I2^*Eg{zCt3?B|dqL{9guUyWeQK-Pg!obq`T@)ES+g&X> zSIO&gu*75PlBB!@96YLEB{0)NgGUh%a@{0_fH;T68k)GsW zeG}R$QD%-%!)2{c{32~W%mXIg5iprjV=X17!0=csF`#_m)<@WuU{+! z;{A7{B*RIEI-en>BjiZp%IpW}4&|)YTqOG0lABf+dhZ(OI9FR+&SUlZ2k0W3QZAE_ ztoXE#(ap;z)(I@s(2y82a}7^-Hc@?A9S)7ZM@UEJ%S{{r2`WMODZxk$sG{y}y;8<=YEjCs~w(16K)+<2up z20XP!isk?WkNJ?8p4z&TF_#U zxls0x7;Ej_5CTY`{$d8426-=a&(WBdfemU(IT|B2AV40j0t0E#R(?7}WPSP*gpypN z*er#{Xy$316<^tU>H;-`co{n}ZGr>2m~4SlZcoYBG85l;oQ-4uWb00wCizcQ2k$aJ z1qggZWgmB?VRbyXp}e|=_YTSRY^FZhQ`m(SIH!+$^69}A2sg%*ts#i8vJ?Jx`gRC~ zlD5WITcdyD95RUNsYytVioNQ^-#<+Kd|((pzrd7I$1m)#LK61F_1Qick%*279^ZU$ zp+A2WVr*U|#q%!y{dGS#qeBy!$GF)>4f=*u?S>ADA1Yqg;cK|_YjZ8QS#1-BU7sfV zm>g=Efdwn0MEGv>)__j#r@eQfD}8z4+d0><&ou|e5*xzVxgqz7Erv4OWVKi4Uum%q z^8FT={|fWY2`|8`O^1yg{2c10755**>A;REc9AoGEMl?yFgImWB!?$AJrn-a!p!P7 z-^uIsh9Ie5+pf?oio`HrouPCtA~!ou>wiD?7(ymVhK7L7HCM*0ZRwyyP71kot;;V7 zH2?I^ue!`-GBdLjjfHg4bGZVweA~=Mtj~t?Iq<<)h0}sV0 zYVWnoBDGN=O6Fa}9i8uFS40L5EwAuOA3~I1^oH}F81|Ut<((XNVXHVFkWZ1((U##L ze=ImG@wUk{M#n=t)ZXP02e{r7XE0d)c>R2Kr4oDqquq>Q$gF@pAv#65-~Xi zNe_c>k{vo6tt{l;Ap&uEKxCZI;ZXFwqCSq$~l~s41oj{}-)IW4u1c(hGGdT?q;|~+_ z0qm;-WW?gxf^xH;f*MSn)7m`9g>@wmSDIUbiZiYmi2^I1Pn(!M~Cc3FGAl(3!k6A$^tWOI2J`=@rL= zC}HEB%8H9CCrllebnS80$~j81E8N_gtk4OP+xC%v%7ZH zD;nn)B!*`&&dz`pQJ8EqBCy)j;H}Co4w-KsShd!8yZGJpYG_hK!UnZJJtEcOnUU?% zR3A`(PP>*tGnhXyA|fR01@*C4`x*M7Azbp^5PQTYqD32~6X~kRaS>d|vDZuHMxFD? zC$pS0;3G$%vK<+WjI97_Qo8A7jd5{7QB{F>x#Ih(O1}?C>y7?8|ERj!*GqLQT(mT!`ewsr= z+wFCj7Q3{|Vp>0zf1ly#+MkaiPsc7nuPPN}@2Yf|oA9El>Z&t2C?05Gg8hk7*nt=? zi;G9`C>7u_j>@Q(UCqv|ASJ10`eO6i?YoHe#xS5<6+6JBHXUj6KU7SZ!;y*;4uFIH zb~7D;!;p}wI89KVzEnMhpltr*4asDe2+0ugfRiSDXdIXZn%JUV{U5aQnI`~mh(NRP zmnrvSMbvwdR2#B}0*%&S`Zs4Rx%1>8c zDdyZm(Nv)*^3wMue|DbL)4D@^rsn529n(r1UxVuAFR#yvHZ_x%W?rxkdlpWlDtlc% z8Sm;4wxMoFc$Pv-Jkg#fx0_!^Q-VC4V{!l{3=Q?$U8NL&AGZRlTdU>aAW1an2->j1 z(%pn0D%*}J+8*N!9{I+?!OC(+LOvZq%QW6u`gnF+m(cx1l=iIKJ%K6MVQy%p1$LvS zDev6S0A6yS``(J@wgY<6wi;Wb8gv*s(Wq>Cs5AT&Ycl$nAN4tXPn^3bmG$ksIMjdl zO582rx6#ZlU#{9r5vlIwKm_Uiv0_;r^}b#$SA|@k{5`J*vy06X_Il=u6O3;EQt2+m zs-YOWCMpw9!or*SS0sK(9C8nM2(%Pt!o-rsWJwL;7aTCPZoIN=MlDvsS_JQe*3)`F z@Lp|il5jE0Jx{94)Hl?5X#iQjL!=1HwdB-gwsH~zwzaD0!--}@G41QB*eatt7A*cN z_*Qxr>9|CDC{Jp8aosF^gH_byVB*KvfRsO`gs_(K*S`g^VbVK2xScuV`Ha;5J$>Uv ziytAh(!R=aTZsGb42%i2H=5U)a;79)g=fdJWT`+_(o(>p}IZoYQn*msvkK= z4>Q0j$}Z)PpB(l?I;Q=g>N|hGS5=HR_P@{*ar|YDQJfgPSLcjZH*oGLZyNV9h;$0@ zKNhZ+h$kdPzTwFMyuQWzO$_1l04a7M$p`ZgRZ3*i0riL4jAu;}Gw0S0mVOTY1vrJ< zb?UpWwq89}kS1nSZkQK$_2aAGdd1E>E6>)xyNM9_kINp~eXrjv{z_0!_trld+JcWc zpNI>m5!p>QWw7iYPm$aL^=>$rUC~Z=a+lX9kN=w_SciO zIMzm8%a+c|SFiJRHyQn<&^x=0cZ{w04O^aMPENmox!ME-2T!EL{fh{%iY<#n`ySM_ zl_HkHG75FT7?5sxIHAzwW1rbkQg!#>v0h%US*YZ0QtNuyOuPHI+Lw|0Sn-I)X4cs6 zbV$0cV9kO>2o;@Etj)*{-2?Vjmno8ctgfQw=Bh$ovRir0^`vbD%dCgH2dZ%KB3iUP zS>W?EvcogEOa1J`_J~{O#DeAfxb_otD66@#;Q6!G=1aOUbDdoec2-C<#G3m@vMv!H z!w5NZros}t?=D!)wiwA~m{U(6|!mkOmX3TKQ7fCY(eZKQ3X3sVVACZTJeHCN`v5 z&%I*_cj~ln$4!!Fx36WjjdYJzX1oIr-Y&PeXq!f-7p+cB+H%C1NLSIjsr;&qe7!6H zU3?k|5bZMhw|!*r@T< zog|xiKf46Hlu~5K)b%q$C?fE+*J|wtqnKUz;7Qx{ku+OSHV-3UD$#ArjdzIb04l(( zI@Kwf&56+hzOcA7NSN~6T;D2(4FAcVIiAfn^in(9Qnv2y6^IkgygWD*+BGnIC#Zzn zw+;;pHdygu2YcH+T*a3DXSf%3&gKXpGlL z5rj>SzF9$(fY5%+r}}dY`_$`@WVrB=vNFTj>=~F)ddD*g9TJ~47jO0ci2srk^MzaV z`Ay8|QIz)_dLzceMNb~K>x!3PeAJQbjC@jj=iHL63=bA`erRY>Qu8z~@P4+LSx7c3 z`;eSZoByv42ZN#3kGZ?( zK{SK9Ln|wTvMy-ykMYNmxfcl$?l%)`x-uGC_6$ow@pyH=iJ_ZP1FHdnkp+}QMCKrk zI7CZX!5{f5(sY^p>1a@w^x2@mq_-@+hBS)^=?VDpGsqDpe8vsl=K;994x%Ji4#RF3 z!WyetO9V;yjgDc4As!z{&X_g9f15(WD!~m<(8DCxCQPx?Bw~Aaf3XSuZQ;eu4d$6C zN=q$xn!nueqTMbgHSMXqSLz?7KlTr$(yhWo2ax_sVW2wD;ebNK=AX^s=2w$Zt)?X_ z8&HpFThJmq4E~8InL*14W{tOh%UCw+W`z!CB&^|b6$LQ|9@i>BbV-rsg(9MChYsu4 z633@DTCo+gkY&Nn*h4@8tBnjWMcTl>*JAjEubE92k|J)|>wtpbI&-Z32aQa{9+h;~ zGievAu?(^UH-T7*1638~kBZdt^0$I8AU{*yJpuI`&FBX{0(Au#>LPMh$kPw8zDXVW z%HPG&TBP#Be|ygTFhiT4Z^BOst%vos0JYs z!MDwg+V%igVr9LZ$Q0~$1mWE)FARsW6YF%EsJ(eiSc{v0tz&cG-k1Ax|9+jDP{4$C ztK&xlnF>o4*N_5!LS$|v1P@*u3`ib$*2#x_=i8h>qUio(<{lw@+M*%t{j1*w6siEe z3&<{2H%JeBq45|n!}U`Q2MeWFMB<=cN2h`er#wr`atX__lz$=w=7|L@cFs(UwkE%k z08uJpRO&Br*?Xpb`gDOOn3J!m!WJv3HV`5mhLknxIDQ;sT2(J}7_Fv7sxsYzCSom_ zc5BnwPeqGS@3e>Ixb}pluC>H4pn08_Egqia>o~`;_uQB?j_}Ve`BeLQ%|>m6)}$s? z`ypdO$eZ)LEPdvMY;TR)?GIjok{O=_ue(i3B_D8 z!C%KTAhR}rLec^{!x_YvfHuqq?c1AyrvPC}?1CYwz>70MX8d`EcQ`rptq>2Xakf!5LsP_B8H|&0csCtr^21J(c zl5e+TubMP|19meZ%T{qs@9isIlaw2i-wlvsfha8F_*OpwJA_DS+89{{WZe zk!c{Yhc~>cN6uCsbTRj3vt;Ajy1o0Rz~sM*X?L2oJPU@3<#Dz_gAokB85Ypgh8}~I z()?Fz!Tbk5{8NkyV)vLQ!^*83( zHMqPF@a(65;v!>CxRn`;t;;0#b+P*CwCDDiq)51>n<=+QmZUYaCk~U7D898W~61g$kfHZKbBS$_^_;UT}9nNB3 zp@{;EIM1K7I=OPuS(v};%9i<2Z56EOgYNu#pq=@sAMEg%wa7NTMM5+!OaYp8X%w<` za*Dq%wfYbnKa6ev>bwxK0)>T>UoXtInVkVch|aM=u`cwy?XtJoSWZX=s$Hx|Y(}kN z^NWQc)+SXOfQfzR6CdGTq;)kyooP_wl{zaCqxX*Ky-@y*WzGN??q1xx<-= z%YMYd6LeCV1d4w!eW+DsG-^+~J2s+8{$!X1@ROvpeE%+@NkP1XGdf5<1q5-sh z+Lt;C{uGIlzKlBRi|cn*=so`8*2BX^6d!lHp|R9xW>tIHJ(%ZQV(!l6(NGs|+kK&W=AV52Ku9S9ZmA6aAT6 z!(U2POJf4f83@d(Pq9zT_r%x`$^e<$E`itw{|*-8vgN}SK6LJJ^&NrAj^Y9{Jq|v^ zGZNRi{tY-{xXp5pV7yu8WFtgjm*NFB|{QQLMq=D zcw)`q@V!)&q$prSd_a|>_+X}c9ltRrnpn=DT-hx*V+3ivbfD0vq>2M7>#EK_qVkWT~6BR#I5(yKFV#+33)~aLf_*jPZ$5=;)Wwey?pmu zTU*#@(2z5x1lW7`Q~i%4jl672V}`zzVQ9o_%$?0dwq-YbnMxna*}sF1^=w#T1w3}d zWk3T5FH=a3t=(#h2eC9+@FC+p+*=;wkiG9G2-mCIJy1I7_$o9J;utrt@BfRgcL0*L zS=L6!w(T{xy~eg}+qP}nwr$%pYix6kedjypKYQPM?*2QXJEOa!v$85P-zTH$?I%O* zO1-gfMJ`42=44X3+$Ca6qIFj*7l|g?5`zcEHz%x1-9m$e3Zx5X85T`r)MA&&Pp*Zo zeep1Rs$NvpgFxYI@`uPs_eG8ElJzlvFQQ0%16;JsTwN#TxH0Nn^W zZ0BD9S4`Wto)FOMT#?;#%l(mA*e#6@=8})aPs@h0+|hHfDZ`m}DS2y9*u$cP%RF4J+EFjicDa`rm)*}e^9ta<)}d)%b@ zzRs7kgOJhvP!EQkq#EPu>7X1r!E0!{#t?1Z137hH@#?l#eaQ{)u6jwYvx4{c3ft8r zdJB7B$=(+#2H7)AiO7XPp#t>Jjpb6F3#B8(bEPz^29@KP7R&GK%n6uyddlp*2`{`l z+nu4?<|l5r;E?c@v#(KI70by!Kj*v{VX*V+#p(5k*fAl9i<5K$X@70hxD>*W*t;UzI9;-t#RGs*#IUoM*-f22SMy0dAj4}z8}U%%*Ha{2%$dClzsTvNwXhX*R@l6GsO8mk75|6m0m zR+nZ8X~==mV-^b9hYw*vVsWarl<{(b)_-r5!YDB?>OA>+VnSjY8*F}G`9^QII!j$_ zd|$m!p=0%#+kCgC!f(s+_!6D^b#F9E)By@w5B}N+4aitl5G^iitNr*kra>28T9#Jy z3o9T?aqvWIp>@ArbLHMovhh(DLDMaV9-YDQr22!Fpm7BJUS70_K$E}Z044DRlC&=M zi+Cisc|7B&29=_=;-&p7#qth`P``8!)NL487l@YkwB=a2c%RMh_xKb4EG}93c&JYO zh3I{_Ez~r8^6Wa8ka5X9$vPodg~V2CMd6B8f9fylc`?u%7=jyUaq1hYQ!cBW?OA;n zYcCrGtA`#xd*|+xgAIMFyS)vguf>X~zRl`MfY9sO*`6Euuv-*C%@qk%mO8^YqR%aF zLt8oZ%5=)tl>75A&gTdMPoXEL>xiKVeLVR5r$)u?1BEPjZ9nNNUerAO`9^iG1n9f& zr)|@)xzEPEMofWaR4j*S{7^!94(*85UF3XtcG#KiY)n~Dj<}*?xu&8ReEmIy^NwNW z-3Mf9LwjK&YeJg(u55nmEeLucms*t#`J!zi#CcIkn0I^dfaQ6%kg}6HJD0Ae+{G8) zz;5MGM(&$3TFTEZs>ag&$_i=uxNc_a#ud{Z9hq+DV(OkvSYh{&t;59tM&9X$YluDuR zj8RtR78cGF^|hq2d}Ebo#32yG8~T7-sioDr`_SJoJdY&~$By)DtDa-U@MRK=$3RH) zT{J^1X6EV-WffnSFJI_pHtyHNKC=AOJsKG`h21+|Cm-XR+5t z)s?7jM)^zmYEf899!DVHgHd5g3ySlf9Dl%})<=ttTKQ1$5cx6f^+VkJ70uS1IFufqjI}6e>3skUxU;x%02b*|80S~K*MoeFKmIAf>#Qw z>t0hr8nB|avbAMp{>{j}&VGd9ux=gVIo)CM>wXLR%_54oi_e)y=3u-$ zjj^)(cF0+ZoS%uuisp+SiA>pxuUM?%tET7e=y~H+K`f$gWQtm!+?!d~{9oeKvF+)P z;ZeVNTxvHlCHIZ80Jb+2VRlyXl+}GyYdpu|)$@Pb3Fyceh*;?c(JI_0gk?TA9N>j= zu|-`)Ir(~yDgRP$uQt!2lwq08OV0#uItFRE+=IzzPG08DtxL9Kd8|#=^kp6$eob*5 z?BvkTI3yiTtsAgjFKDWfi)66KSHW%`GvJIiKeMK0yVF?lpvHeT|77A4Don>U(Ou86 zcN}+AsbEduDYZgkGypRCv-E2&>{WzNI{UH|ozhNN%b7U5$Jn1Z{w7mIu4OmOawm2C zbSzH7&rLP|K6U}#?!?WsvhvqS8&m0A#$V1s>*-(JZtgyRnB&&5~j zAnLDGNrQM1Yuig!_XOVemPIJ3+Rd}~!#Jk&eeWQL54+wag~85k_|qve2RVaFVmtpO{tgl@U#l+MZ<(wMjuX|wozdM)@; zUJ6qLChNDRUUHM681K(?9(J8i=JNuWtk>J7vl00avoix_5;nsguR0bZ7`!v&wZ}?U zVe6vPIPm)SOY)`7Hd}rhSk((fVXAYJCFKP(X4>CiTB?@W>JjXqtNcGra@&gReL%6; zVkj-dWd;nApK^}tiGWY`k!TQ!kn#Q5mXSx&N9|gD!DE@@rs43fCeT}3QW@JF(R3wR z(I^hCrqOPaH;9ft#u~gJ8gysPaHloCvozFL6Eo8L0Sd^wNdFcAJU)MlgZ~Aa^23Kn zcSFznREA6VCcGkrH~AL*y7wXM_w|KDc`^E8`^eVB3K!rBfbzmhvtt;}q8E;wx*_Q~ z89=S@Qh4vZ5hUo96L&w@eHR25&X%i3B*+Da3;6`=bc`goS5vakEsj@)n^4@ok4EVG z`w9i2#aDe#+Ds{-9Nfp$zF-QSsa{u2&SfqvS6k^EM;-hKQ~ov&7G9gheDK`ID5>~0 zhjugSnX<*-6N!++#UFi@TdISaGCgmoOy;FldN1V!+*8LH=i|1q!6Pe;GkCduofsO}b8V^*3*gW_WQzYm9kNZG+W7 z(e(sY%aVy(VaA>aZaMJ=PiW9SBEsKt+h!!RJMA~L3ryB|isV6uyavo8r3?}zXl6P@ zspOT)B~A7k*EEOjkRi#CDI0!7(Py%yW*(_ zOyICC%fXI<`w;VY0b_!IfIN^grr7I`FU0WVUD9k+LdEe!z!Bb%aQ*NMC*aLSH?ae8 zbCfEb4R&CaBMK{abKz|**tG#~WB;-&?0cJTuKT)#SW(k_%F7C1dBGqsHDUk@H%NdAEB57p zU*XGF*Ge8NPQV|_bJj|>-+Y#gn4kBhv&WO9d0SL>k5L(mbSF)A{e=-fJH~|KlwDE& z2k+vbqqzZlN_!zJjA<{+Pk`gmlsCM2zo8HVm(!_4Fx5EPffUAtY`MoaH2QDlJtnXXeVk~D(opy>e>;;DTz$_E81C3l@H=m}>X&Y<`F!#gPDH>CYNEPcM%in=*@~PECkcxl zP%6hX?>l$W0wXICcj2g4ARI2|^?*}S9rxQ)`SRCh2oi>SkV(+eK2Q2DP&AbDY4d2W zOeliacnL*=_8hpDZ?5?ctxA%6K+DL(H*xd4B4V~&}yGgM-Zo;X$T&61dMiklW zY_qvM23RZ`Gheq!UNz2l;>{4zQ6Qd%LjVunh8id8$hcz9ylaF5Pwpk7nP0%jj+Ksv z0=I_zMwyPk&G$wLa$L^Q=G43plRpz#>|4V3-0cm9)_Tv8@&|x~i^tg^ z=~6W!)Y(qlrr`A1e=)fD3UaC?C}i!^4oDW&qKgCVT6PSr@#f!?CjrXc6zv9fJ0Oc( zXh?L8P}Y0=1yV!503bs66PUpL(r$=dpu{?jCR_$QS6m@lCK3#VTA>n;iF12`*arq| znkH=4Te(&Nm6W9gl`d0CN7G!(>9~j*abjGorah-<9y&^_>V_tdgFq<2Of)2I04Y25 z75BpMr%#nbJ^)EiFW;MHy?UlbGY=daf(E+?#PG6u)OM#awwt0zfgTJn7!1ZV_X((Zl@%ZjOeBIo-STeZNySO= zQJ!aBRynZ^!g@$i@P%|-!AjN5f-&U%l}*b&0~^ij;_F(GW2z0P=+^h0KX)A$zdtMU zPvoSVe5pGW6Ntua9*%LuW@Vo0p|K#OzE;t(lUspylmcLffO%ts$?pPT=%H&bI@rVm zL_wiaDisPWpGzc(+Gdj-0gir)P-^oQ`%84p*E=;h-S*Ogz-;_fLkdp(!k4jP3gK-W z27E?BBMU6-QB9hZxYWcX#-faD_(d|b+FOx-Q$O1a=dvS83aF7FE+Dmd31pei=Xh<>%fI zKZ(HNJdMvqGOR(~Cj>YF%#vrKqGO*g5Vq84GCQNh=fW*hbfwNc;7(_A(7~)W6z`SG3f>x)Dcb>y842iscbI{o54^IYXRT~Kag-&U?biWjP_tVOhMXY{SZFUcZ)0M31z#YJ%;MnlsMNUCU% zLi^P-sK$o|W@NVndie60=a6oKeNN$;a6o|_kPkvKUn7-E$U>n|B-YqeF)>sX0qO}> zWEJJPa=Owmh&U-G(7+)J=yds!Pw=FcJgrb<^5>6Zkv1xPAS3~+1i^7MVFp3t1yXI>f$O*4z5!0Y;Bv1x8E-j3#T%i# z4E+wHo*Vk0KHCcT0L_--fH-<#jba#C`+2%O(28ONZYDS|gs7!~qN(X2q9HpY_Mt5z zV=UOH;lfJ-hlihixc&kYee5X85Mz%T7Q%qdn9t)6WSwI*NBfe{d3Ac>u5MgXT#$Th0Dd2#;4SiS62<6MyKNBDX~-6gC$Gfw*vSMNroi z&^{jHrMEtXbGto+YA{Kw1y)zQi2l}c_loq<Qgi9AMV6$Y%xa=)Z}Kdo7xc z8eExYu$dyZiJ#D99~DK9#X9KEgu`yP3x?xJ2Lt|6kjTlbMUeh7BG$70mGVxDig@6`1AvBq$d{{|S>of6$wsb_%e$O18JtqKLx!7-g0D) zxRWR*=lUDGg-y2_5iA=t{v^>S5wr-Q9BgtiHoWC{Q))xrjvO0rY6NP13`|K9Ee9O{ zB(UBiusT+bJrNah=Rze!o*25x!h_CaIEs6n>n;p+ah3k?h@<*CHH+n^M~)mm*-J}unw#EgOljULuN@q(4ljK-Qu$+eW38anE9 z=7C-knz{Bcz~OM%ioe@HBJNjAEuvTWv%A836tvBv+Mhz=^1rKH6HGZB#nq1K*ps zERLZa2@n`8O23c(KzlmdQ6n{qH84T8Uzeu;OUgi;kK!eoBA?2&dDa@r$W8`Zi=WXN z)>)$3Q=r9Reb&1)cJ&d3x1W5*nikJQ9+kg#8(zwNjBO9O4I?nljwyfkKsqrU{e9>p ziRA+t1zV>K!HQd@8=HhetRX`hc(36UI6i9;^ku^_PS z)(YIeFgvN9mX8ydYD8MjYf9eJ>RlJz#Q&3sEWwsXTt}<^y23+_a4d>nSXtUwTtl(j zm?bZ$0t@J9yhXaKjQX_vh_*= zJZ4di)4BTyt22(unRhayq>63ZjIOBR9uu-30)c?fkFRz9Iz&K3nL|-8O+O?(UBAS1 zm<9Iv+HL2xO-<1>byDmv?|C_m-XJTh)tZpVpHR71tjzjM2lI3cALmLV+tsD_lEy#n-w@#_A#2XIURF^Be}cvhY^e;ACvb}#>(9>PIM zDn%odZ2*UO)DDE#w@m=3$)0LFTBjybh@lKZ9*O?jbgNYWYFY&)EZ?e+!-xfJt@-2^ z#_gxQM23uEXs>w2egcgz#duZoZiLs93niR@?`oq4z|x*`KA|;*Im%5Ej!t_hNHZLk zgNaP(Kw6aQ@2-aEU6`1jRwB!tAKFI~ek=!l&`bMse5&)LN0Xr#eG>P!4?HM=s!)$d zn1vpM_@^k0mCCnxG1}n6Dbe;&Z>Bo9EyM2}9{w_Hl8a;k8?@nVB-levphq9zWDk(Z zfX0OABqL+X70^$+W`_4$H2AT0A}kc?)#+kHjd)@MGfVpxq zLMCiH53#sgs@~bLGp2VV+Ms1KRj1AJcJi(yI0!D?6Ofe4ye$xMi6{cPiyYx-tmbn0 z!j@?Wx3H6AyCt_F?W0d^dDcmjSOanqC7LvGLWNz|Z{EAxMdw~MYqR1W79=1#F4Uljm#9MsqN82ew)cbmYcg@JOR+D3U;8ua+J=h ztO9miaIlRK&L4>^`~*Lc)xOdE(~2C?tui7o3D#ByQt$5VD;fnlf_o0KR$B)h)1i|u zo)Ce?#%f0C2Qw*^d}G@fc~}v>lgnTAb$O<)j>djV7P z3xBIJ+4EBAs-cX))pvb-M&}a(wU3?U_xe5QQuiKXuSOp8%}Z8sfRy{Oe1Xd3ZzsHm zGxJS5hF@5q$@x z)rF5R$~On{!ER7XV5a8l>+y~w|1g8-hxba9+?5Ig$~IQPNYIjj_-|tJ8?Y>>HWah% zBLZIY;C_E5t#`kpyO=w)#u-icHxK2ZFenVXiHhKg2}$=zNV>RRRy>61xXt$)XV_eL zcfpn7z6uv*UT&gQRPUKdZ{^4)l3vQQ(h*-m$UzXuN!H;yLZL)@@`8RXCrojxcM;tj zHlY{R2qC25vkMnlH-!DU$igx_78H@1fB8TLVfoKV%*hKb6h20aOPXkK9AhPg5pZ)V zX{r)gVb96TaaA6jQ5Ezt#o5O9Q_y?EAY)3xsJe-XU+6f21R!~NAKM-P=PfKP${rLK zNCa9}Z;@2;;y_+Ap!psgz*aDJF8A5m%tZDjb?q~>9@5AsJ7H6x;jtUvX$B7IETYr-EIT3b^-gfuq1HxMay0BCOkU2Z&|O(A$_@0UCp5JDxPIKm~^ zF$JOE1^*kiN{hcY<5|zu)pqL1HaVfBP65_-k3H8|lQM67MUGcO|7g(Fuy-%P=lJ>BA%Vy;Jfy54~af> z+-k-oG@JOPvd~GbLI#iXKDB%hzhYM3Y&5XgWaO=)gtzOt$7PBHk-6AeLmCn$UJ3MU zj?)Zd+H+LdN68Gnh&OM{0^7Ob9XRf}=ltlJla%3k+t#6jJZD|uWBFcu{UYl$_qy77 zyu7XkKrcsDsR(ElrRokyll$w5ie*83s-bV@0Z?Jv%Ix%WY%bcsA#y;wj`>GvFE|abUqN~nz z=MyR?XqG~gW+#ptF{VqA{v)`gOe)*^ zh{aud0wP(dL#PEKB~CqoeDdYUaiM}6e0vH~NgHyURPS)dMOqY{pr)}2Ip_pr+eh8O zphHQxe_d@XoV}QrOmkJ7mMrgJ@a1Z;(bcr@Tj&Z~6E<&SS$IdR>OZc1SS!|^;&31Q z8gUTmj?2VweOYiQ;;_xSMWp@ZuyTY!XbreeOz3y%>wR!nwWioz$7<+{5Fdk7!Y1NA zK|?+Ofq?YZv+qJP#cD%)c}y1n)!bAU_Wmu}b!mv%%ud{M1$hY~Au>pt1?z@r;d~Xw zItX@A=9`?8c>UD{8ybU8@wtMn!v41cJEWr6CnBW)w735EV7&itYQNwnq%&4uG=1m_ z5m9nbnMH!ZqZDp{ObMp-`D;IL2Z~&P-tK$lu6Axux|{%Tc)YH?et0)y^L5cYS>7Q<43GL3FY3$pm*TN0&e51Gn4uQCiY*CFEg=<_)CMIq2KvAmpo@# z$i^ZC13K>xGAQXNO34LAK}=J90{#N%eqNWT2ab3^n>oMZy$!P3O=wI;rOAd#_Y2-+ z9QuB@$yBqGnqFH!S=tmmYzWqyFuB)>LF zIl}J}!7v$4dNe%_jT`zxj$?q#UyGAK?|Bb+LDiouvj9_-2rb<3KE(};<}uw}FciC> zGvqR@C^OPJ5iQ577&2e_#IjDEcf~YJWiWmvmb6>hzZ~X>bPVmVhjEvF%(UpriFD~p z@67P^F6%+Q!Oyfat)R?7Pgq)%`F$YOyu|sQ<>4AY;(-mPIPqU__t<;}Rj_{=b;KUyyV3a;j`CJf+<<-vz^Vn^Ct zbEW?wo>6Cm>Lk+$RjNF{+yHFfqC>ZSEt4mskR#*b7(j?HKfR9L4u|^7n2jvXAI2yR z#_7~dbKR}Fkd`JRyH7^+TW-tl!~2KJGPl=^+s207-J%nrFy9Ot;z(~1Otd1XZHDYFFH1?}d^^0d1 zFm#Nw`w>}Yzt#@W0q>P&-dy$2L&n7U!CR623urJ+ngEIpvO<)GxGsT4PnT|O#>+e_ zd+Ok*AruuGkS)EOUq+1-^VGVYJ(|bx_b}F3$HA^&;KNGWzIgCinde*4xX6rTQFGX2mE{h}yn9H|91k=| zw?2~Y`3rfabET`4Mw$<_Aa2g+8edE)RuiY?NJpkAD41US_xGG$Z>UIbIP)xko68Ti zmdy!U{Y2vHj!7?JG5`R^<}mhWCLs(-j``L^oo?VogERn`-=znCq>M96C5@39`OXjn zwYQ3)18zleLs>&6J+nFE04#4JV?D?OlAi&Jho3Ma-*$9HIkgS>c@cOza7kB>JSE|? zu;`uKG|6i&ujAeRXmmq_hmgp`P5?=ToFi`Wc}_-24I^~Flgynu@G((}LZxmubd<<5 z>w)8<5I_E&ml=9c7-D0*jljEcu_Q2}Ys+u56!WROI;x2C=!%KR^Z_UVK`e*2D8-eO z8;#En2QGW~}`zhev`8p%?L z*$6acbMx9JrTebdj$Xr5h}&z=fFOxFt}{dT`E~2{eH{S^+UJ!1Xs1PX_6q>?G}F?$ zgsVa}M;zwOvKGxr>*4QT=4+CyraB0x2^9An6?TkB=V6oV`f#fn^Q|7Ogq3i*JALzO zpI*~hV7Z9TNqhHc(FJ4sD9S|cRybr!ZO!7^G^cOWkB8<{KDy^cf=K7KGM3CG)Mk$j zBTtGZ8V)1|Jh=d~F|f?7FGh(gy=qIFi>pL3jcLc+76mU~85$gHedOTmuU172p%+Dt zqmoVFD8UXc1U}Uo_XWhS-R%nlND=6{s^17v;IOoCz8R%qifT3XWn`pFN~xlqVa_5I z2T?ns&{0V(Gg(@(+$#nE3zJJMJiQM;ks8OIb_EG*+ss3Zryi z0jbz1n5&6O7eVMO5Pi{=48?GWr*eDZGTk%R6fuzVPh-{)OXiK zMst=-C^OD`3QA#%{I~?@8-j$~*;r;+bbG-pGRvNN0h^&iS=}8B{s`O`gsEYb=euW) z=0`+<5paBcyjqw+tm-P)nhmGQ2FZcn^tbqLU+_BwKWBpp<#q2B={X_ru+XmlCs^u4 zCS$`mNhMLnYcv?XpXaWwyEJvLxtS3(jvJsRC$OFS1(LL$a1IAC&}V+GgWK(!hQu}* z`^Bs4oAR7>_*{`t*gVXGPRSKZWh#|3(2ph-^piM^xM)Q5t6oIEyX}{dC%(Jcgx})- z8oCCjwQniHGdYZg$rO@qvgFK1#k(n-*U-N{eClJFQZtu>UKGnzP<&hHyIvCct7(Pq zAO9s&Om|^pqD$DjW~%K#@LVSV`fw*f)Kadb>=lmQa3f15zhgLL?24^MxI6Nqs<$W}Qj<`c?Z$Qm% zY5#ldcU>sjJee-M+sWHE)QWg-54Yd^=(l{<2h3(IchW~f*njaFZb#W=+5B(|{=;7Q zZ(hTFejVBWp&3NN0RVvc;WZR>aJF$WF}E_NwQ&3|9z!?wc5Stk4()%Wvl}!3Ajsnn zYas~A&kwKEFKjnh5x%c`1IWS1A4w{=QUPfj=sfj+Tk`t?00j}5n}o)#NaTqrHq7I{ zy+zOY72qXh5^W^`$cS$4I=Qy*WMb3^Nr=eAq4?GBz-i3{^p3FX|Jn+3wEtz*->$OZ zg;a5?-Ki#;PDXm=qFsP070SCnZBU0x!Vz{O;o|=V$<%R>rbr|ppZx295oDXdGM&FB zp<_Z_%h*UzCIUpLAW0Qe?-kG+@a#=Lkpbsh{g_Q{Gm=WS7W8MH9f7?^fk;h3Dr2El zNRs7~l-b0fnvytMbjfZ*jO%p2Vi*H{wq>$}J#oas77gmF$ii!bd3vP-E zwL(MuVkQO}N<;nCGbG$4oS-_?x>86??ZGU|CH7Ra8z0c9+X83DOiaz!!Q!!_{qFc>4K_Aj4d%%E(;1HFX6#s%5buWg2f@IXV z3{Yr5WBssctuNxBtH%!l&tZb&ph7?`Hq~yQ-30U&UBNf1-oi*(YOhPyx-_a76Ow&{ zVVocts)T}O;Ex*>L&~$Qsx?N)$*Vb;BdJ1;X35^^rEyMr5v1#xNVOC`VWMs-9#JB* z$Vjlcp&hU2ewSbLH`#^H!_SL;APyK~+n~!nRMn@r!DF-Ak zt}#NQc5+D&IIf}H?Obb2ImDLtz408XHC#~T$>_AH#&&doifeIyIv-n7-QsL@-ZKvs zQOe0%RXcxRL_uFLmqycfp|)@%2CRKW8;HLiYOEN7qR-VE2q@rj0x5e!!A1_sU|%0` zr~w-JPBY>;B?cMj%s3rSp$KfpB)k|gV65*YH}8p}6C0Eiw1pQ3>VSOWHJogu!4?j! zImP7wLl>MGVq)S9JcK>XQWLm`ER9CG-FP;G(iQ1innUGSj^YhFu*Xhgj$Sc{KM$Y2 zngh|%V4cQ@nn5aBz75hEr{M6iW#svM-$SZsKC7ax=Psx#W%;v`CizNUyyG>ngEXy12w%UPaBp~bb zw_YAf=h#{mF{xjh3pO`I%Tb_!HU~ys+~hOa)slp3&&R?9R;}=Q%n-hliwp=edc{k5 zh&&!y7tu_DOtThtR+&o-r=VOkCZ|~Q^Z4VmO#smRMHquNC!LspSIf1QRJrR)yzRv} z%t>3@LSiK`i#rv4)9qF52P==&$FWv_)J<(yA02tRpf@|7}pf7 zNe&`tM5_`s!rnT8TRb(22)ZN^P8_=oH-J_(al0?PN*ylHjoCcd&9ZBuKHX#uS+J+0 z$`hrvq4GU>V2HAnf^7ipTJp37dKa8z*s>F?YjLa!1#$X z4QYmv=IO2GH`s2OR;XECSeyc3wJ!2pP3zuZ_l`byav;k?K*ugxcf5PufqQMUA#Umj zK2=pseCMkBLO(s?6HzcARc{DtMeb*8|CVw1YpRBpW@uFM?aV;l8n6HRj)wX&>2c9?30v5iNpo1=vZwrPOs>63O}|I;MpQ7+_?t41AedKT%_GSRbJYGiAuIsPb=7 zarx=4W+~CD!5g}aB1Y^8=AcRKIj-k~mCjUhN@t&h7$YqxWh%t{9ERGsej}JE(lf55}c$=ZtUU+lN4#tYj2 zf&KRXt^)plR2aKC{ZQ(f+uHnFS=h$(|6Lgb0L1^t9{eAB(Ek6*3`}YNvG898T5BI` z{s#ja<(=+a;lg3;l*h=&r|SK22l@I>rqyH%XXMlgt1JqdgUpV^n1pvs; z(B{^r|7|>UWVQB&N>S|LSUMJHPa&StBoS`GI+zc$|$ExF(-G&fy!A(ghN(cXbG;K6uzS))->0^w=S zAc;OOiN?okTELQBzw(G~%@8%$kbio@COi3jA1yuP@OGar)Q1^de?>jsuu6j;8G8o$ zhAY9R<3||c^k2+rXx>~UfG_|>yayJwJf&tE^nj#6e=9SKS(#I}3ArL^ic*=Q%qV1W zO2HP{ku`A>(Es_Q`FF4sf~6ouD&@*|;Qtu#@0k7H=?nLNBJMw=9skEolEE|JT(1yuh zzy`5CVW3M=z$cj&Gx0hpD3sNP9bVr@{gRBL%V5Kck*rvjW##4N?+0e@uY*w6=lxHQ zXSdcZE$Sr#bc1g9?(UwAO)cuL&x@TDdqTWt)y#{^_bU_c`ZX)`-#R|7UoT%G+*{f= zw)V01@c3x^F5a$=oxN&i;;J_{E3&>@K5c4ZgrL+xA%?6`8W1pD?p{0u;I5+85Qrg~nvZlQ< z*{VsYZiBu%zW(a*7SB!X+_};3_UYZWs;#v=p0bW{GGCAOO?i#|gS(FB<&3j;_dIn> z*ZEm_wS0{g?XVv6=L=lBe$yu9`{kx~aOe9K^1aY$y5Hpz8)UhJNgc{jKmyDhvGk9u;60q|ahM%j^9}jIW7~Kitmia)uSeOCG6YvtN zULSeI(hBYk$}4IU{P2vR#(`H0@`2$J6uCXhm-sDMjhBJS-j%>6|e%G~>ln#F7Lk^)2L$7PgKM z=b06_DtPG2>s4nZW^@QqT~rM}L+Qx71~PYz!U&!9*!1cRtJBdKjN(-8Dv?Y37Jvhp z5De)#TE505C_4Xgdq^*siCZx636OJ%gUY@>$eLb_ejfthMpIEoW6KQX5N0*4!rCd@ zCM#{ffK(CQ7N|O`+F5(3(@8h|tNF-*omwqiLS(ha_(O|PQgGadwJFk$)$MZtZvCW}Kn2Edg$Az`D?Jux zFbi)GYZ@Wc2>Coyhn$TWAFKQ9)ZCO^+dk?j3eyjsVIcHj4QLE5Fys_@J_<$_~brY5=wb?HY5F0%WjJpwIc1 zrN3R!osy~8BF&J4|L&mv!EVA+Z$uk@Y7Jh;{elHgSp|OP#g7c|!g~dX38xx2N|97u zW?s-OOs;M745ah*8|Es*poCgCRxMUyWEF|3NKo^P6P?M$!mj#{$!J!C0OQBh+qc2T zMgULK*;%;gLjT6wUZJIr73dN?Kc!KcE%32gZcutl0Xm@*V`7t*jl(xe(E`%>Y1AQ&!^Qfs3Wfvy=<2NCNz`9e1YM0>$C0SkPP z5eOU@$Qgs8HUZ=cjzorF3Zqas(_F;D-v&c}%?K{=iG@W*(&|b`6O^8?Er6JT0|dn5 z{Soi5MgW*8#c=FwXgXC_>|mMAQl}vcp!Q<1|Wz-i7?aqxcj!V~|GZk^3v{MC+IegeT-+ zDfEF~sq--(F`^KyP{&zZYFb2+l4C{{hY(2IWgJRcNNyTxdmeHz8x{hQ@?K3R@Ql+8hyOfEoIE>TUm>##a* zyq3UE<64a)UQExRYSS5^5P>>9g>wBRCi39aj7)-hEW)l+V1Qt3j(%uCa)u2g{fy&^ zsKi=Fs|ANZ4i%4+pB9hw#YrJydFm_lmT`Hg+T`W6_L#Jou9ifCtC05T+UKF)2k?&54Ng1FcCM70J1-IZjFNc66Ka-P5j19o|(xbnxs8-VJLcwlbQ zvl9%DzB5|kse_~@#dg45Ua91H=PmwN%7vb$92?e-PTG#uL^Duy>`Oi))XedrWjxu2 z_=R~18RT*;)l>los*yQNLTMV!*q61$7CX#>Q85OE7Q_qa_=;){VIs*)two3@;Pk0z z*+(ulD)(1D{w#4$nT1T}(s=6bB^pxJeI|&KbfdFjZty=+5f2Lzltton+fPm9LpWOK zXW8QMI_LcuRAUuTie1GFj0#XQX)_Sg+*>Kdsqv)UxD(*tF)sQv`#+7G?NvlcQt21; zJx%@}#=bGQ(uM0XcE`4D+qP{d9osfLPRGWHZQHgww$({G$)vxTsjp_Nr{ms7pH*{CwBlI+(>2YCF<$tIGXAz9_HORno36JWw@CW zDkD~_6uMH1TS&CLup;RyG&PKu)KnP;u@0gnOeW@q(v`28Sges``}O|vQI-7_@WB-rI)Yd|QH(MWK+1%)OyH~hd!-RMRyOB!cwx>mNFv-N@?{s{BnbeHcg#UhCa@iK z&o&dvi7oYWa`2BVK}%AC5XAZJJTFAy=lnz?Zm6-GVz_%O$XI+3idNW($!Bp(nx%+( zEK#}vAH;r8YDgl!F$UT#(OIF<+r`Q_r5xeJhP{d$i33Dj3D2;3){0cWt|0(5(Sb9( zw0h|aw}!T-o#63Wy=TPUL2q~j2dtS^O~$-?`w^cLI1 z(AE{8K2RYyb!xw2>bOFhrb;m1rmP4PfC^SaPz~tVy80Lz8rt7CdAB^Da&t6lT*g40 zP3ZjHsa-9QMO>71FXpME=U;f^{L(Te`o371d1=$K)~#sI&)TuUV|K2p^H?<|m3h4= z8kxCmdzBGCp=IId+wtOYJIgFbzLni^Xt$)>lR1SkbtvX-X)u`?zHy#u%d)}d%xU7j zGFHLBFkX>!_CCNy^1DV1-I}Wh@WH3Uieh|h$3YNfvLff7@laj0_;zT$)N^n=_7sm+ zmZ>o1#ggmp7X3Xs2ZTSB(~n}iXY*>?)_j9Y*iV+^)Wa*dW_+|2F&9AaB~?Pjn` zsr#I{ls06p=drUnb(PsiR5PJae8n;G2;U^sF3+_7qw20nevTqu8Tll{`ujIr6k6f) z{5Cgw?D^AjjlF7J9t+BoWVOnsX?{$+wTkS-8S6O3KpVWSmSOI4%wle?Bv))KPl&A@ z!Wcq8Qqyv%1&i?c%F&1eGr2H0Z;2o`PT`MiDowmX4ODC9Y^!|sbu+m@t1+#Sqjc?K zN&5B#vj|<{f*+sMIP%9J_}`ex-zr_QP2^K!6vlf;C2L~|g5}D12VO9I+Gun_y8{iXVK`JI8CR?1!w-^4j4Q``duXsCskCplh3%!ceom&C;!*b}kEXwQl`* zUU$I8a@ywVl=x(d2n!V>BBYmk>lud&;c3sqn-oM=d_dg*;YuL2^kFJFk-iE|Zz!#{ z20>2XbZvBt&{jRLmMe?;@f60F2K@>3bXca4{ex@?`2(Fi;^d+VEde#o^MevM!+{w= zT#Cep##t6jn6wBgL$buzC%0;-yWh~qwVpf#rXWO&0Qr&LYk4K}p`oQzghbwApgS#! zo%FT(LdyUz>r=wLy;GC7&Ybt<&M)i`(fsqw#kPSc^Zq&6Q@I=mnrO;b5#2uK3aOyX z24JKXEvhfS7#kZ=cuHi;!hXRW9!FuZ|Y87yT;&{&ujx@d>0Ac<(-f zbY-|0Kcbq@!H*%TQAGu_q&!#`4@E}8DiqjBQbIRYf0kr)m^dd$RMRS6HdR!SWK|z{ z-Yo>|0u}l3~fX{MyGKb8H1e zqTB2EW3;gFJGoq8ih78IlA`Zijq0JCih1fws6X!UL>X&a!(+}9P&ZUhd@N_d6(wmm ztRfv4Z5X;jMXC3QWk`x9R!*57I$oEEgj7m{fTuo29mxqtB}I-A4;szcqd7|(6h|y( z72dH1W3=GoaChr|iTo1u#5Kw~o=S)KM9%u9XZzF^iv>J-6N4=T|B>HCo})OVh2KE% zHJ|!;*EF`u6hi9e8KIouQiMP=)(zFAM%9F^l{WlC?3&$o>p)QK2$;kU*1-zSmu)Cu zJw>sS51By`Z}eGGULQObxgPoFt1`X?k!JYbPv$~PVO<3uZ+2vCno#`WxTP$7kt(jy z>pt;dYJ}8M0|c%Z>`6yH%BXKNA!4n>2Mivf2!7mt>?F>FT+i-0nakV@}QpQJsrnXuMf{s}b<)|bOu?`#{ z5G|a?A+y^}dVmOrJC`sXIpABrqyK>7&lZB0qiV{WWqUK9?m|6C$ z7gqn26&U4kRd=WQEy;=-5kDN6lrC)S-JX0l^`3ny-6 zF-w6Exwr5sFD!-i&u(1N~ts`0XC9A9EjIeqCvX^VGqCXqFk>?b}khI z>hTiuFBAhR)2mkV9b6~9(s@fxlD_U!(0rZBi=g$+*9dT@jCA2i4q3;8!8qk)mEX>1 zjxRH+pyokUMShQRFPo$pt5v&&XA>WXC(E-7AFmvljbNVWU)ledWLhMJX8ifqyn3a` z*jE}@@bw;>6|Hu>sH(H)LbvceN_YN?Ws=lO2^}=Z0Y!YIOO?8f{J48pFF2waseM05 zmmxe#FyO|Nz+^%9B?{n+o!_|aYa|zfIJZ;545Wh40-ya z2KWvaW(3_p`R{nq01qO0Yn>M$Vg-WEM}&++rUA7oK#mov923*y!xLGB@E4;)TcQeb z*6^ey^BBVnjQyJUQiFyL1t&fd+lM`OyR?0Eoq|lE9V^I>1B;%7{qFF-lxS*x5I8Gouk`8FVERqkFeN9d7Ax`)90Bl=IBfv zd^XaJCax+s)Whugn03}u3kBoGf9^--vkVs_ilmbgHE4&?Mq2JGv>GO6yCuc&O~U6d zfeW+HwCG>=s}0}41qRcJqXa1gJm5@Cz-HA@_H`pJ7wezi_|`f?R(^taFM>oYn|V=2 zpPjNv@I(>IXz{EZMMk>%9lV7f+o+J*YM4%Oq(0RHAZBV1c^eQ)BCj-u&O~p#qVSXP zz6O`z+ne#u+BilXmWl)0R!kBu)O%jip;nlrR2~k}ERa8ndwgIT|UT_dTj%kUf ze)%3ext_?>|Js4kBa?Icxv4P*TcP$HGm^VJLqgx)xN;ErwVfR=7a4#L>N-CKWfU@h z#1-fk2Ox(DsB& zN<5t=%r19RtrSqLkXGKxrP3`nE z6LHyxjr4U%rB*fmLVmBS7&nE>C2}ih)#2IoOlaO52tKcRS>bdWly@A?ekFo;ZEFzn zl2ovQkT?*@W6<_HlqExsph~+-Hw4CW#_6j$Z@gs3D2>GhkK(ftqefmk{Z74q|n8u$NKDH=8FVe zQ-X;46E_j9s-lU^dgr~lzzA~y0$iT~xN?#G3wrKCpf_o~?=EX$k2caluHO?~wrUF0 z8uCV$H(iLX1M$q%dB|F{s(xX)yr>)|6bMink$*Bzeggl+RoM}N?gI!A&|mcYzk4A6i7Rs>x4+Q(?>6NB zx2O4kw;^*ufq;nq1FOas21ZU!_U;DGW;SLfF8>C$u_}7@nT)8u*EKhtY3k9yBK;Cz zsyd~Q#VG)@H(>frAeg#@%aDVe8Ho8gvkY_mn@6rq=c_LAE`duO7qD{dJ{DO#1d?B& zlsNikzmMbXNrxq^hGmvv;IWQCc8)p9xz)?;rS&X0ujDb8W>uS}9V~-QK;JPO$7{oR zQ40}gz$wMW6D#0WwB5h2T)u6ef=Y~zKl05u%bi8m^EZ9ld5@J$B6Wm(5LV-v6?>0+ zqqbhfXKncb73Nh0iVB13Ag3AZkQOOZs!y`QiP$3bih;N;s z-(i%SXSuV$7sjA6y({|Cgm{IP5A)k<- zf`?d2bZkO%%H1{E$QZYiO7@83s01gTv*rSK@2T>aC4QT9u~^^9XMC=*ma8Lr5rrS$ z#Jg|CBkN1#jkxkTJdey4`j}9~oaInZLhRAyNhZpmo+K!(d){D6F6_-meR`rTriz(7EM z4d$O|{}l3{OzE#}(wSH~+1q}ZlC$%_F{LIoIp<79#I7$7uq5Lx2*qfCe<8cI+~!7p z*(MSTvM727#B|kjZQaL2G$solf(2{kKIiS#K|`@p`UVqMZzo-)KDiqdsLGR_LTylI zAkd;dm}jMuQkb zGo}qX{#9n{<8Vus(ZF#O>}}IZ?o;cUH%mHBlnrQa2}kozG3`y;N%hh>8p~Qb5bkDb z+1ciHO9*J<6NReW6JaLt&1|d^%L&IN%Lw6-=UlnRA4-!u)$e+zx;@B`5VaKfkb3VE zO$7*c(GP?(Bk!%n;eA4BfFbN#k*i>w8%#@b!(Dy-F1-K@r?mXVf#!xl6v-3E(r}g~ zSz3IG0}+tGi9#+Ys5;jk$fN}nD0uuqSYG>sLOK}22rhV7Ruxsk)@OWFdf|P8{TM3W9yvQD+zgc{kAJqs`_1F8crBQB>R&*s)(k)_ftDxn|5&+BHDV`?kg-h_+H z?s2;BKJYO2G4{}%C1v_7I{*A@){W69ixD9&_ro%7`l-a=9;4xWvFy**K8o} zv3+McST*APdv9~ew#}PoUPxm+Llc*NOU=C?V;^Ct5N|qiABrMJxM%I<+q)VrLA->Y ztjC6}FS}a#*g4^(A3`0zqy;i5(udM4y9D-a1Q9AJ%Od@> z03lef<#(O2?d4~|P`f9yqGX_prbiSNczM&z(5gfvh1zZ@{6vgQGc7Zst|iVA8G}eR zJaf}8ul30RQz5%0`&WM|a*7m)sF+e4DwPV3ramx_eo>xSXcs2e&%#QPrOD;7HRT&t z*}lV#w@_au&E?a_Mutu9;jC8J<0lZLk2rY!tru=I{PQZ1}fesMom7=?llJta~O3H7BTt&#D z2-9_$=tiWFc-1Ny7_QdGr#y0yTJXxHrzia{>a!*K4{3J?T{!rNlNUWLU*`6gK*%gY zy|%u5;$NEhX9BtU3h1!^BgFdhiw6IeL{ikZ>{=QH)Hu#OmeM4L6_+Nb1* zt1_O?Q&NItI0~#ChDuWpA5f+|2g_b>+>E=cj8GyCced;cTmz?cZ zj+Z8A4MUI^e?vDX2?{dWu1yD-tt?q6HR{)#W-I`-M43!z`)@!GFN#MeMxG;nkV+j? zku>=>ZoNB&duz~Ls^q}q&ApvbooOkpLEIyN)toXINz&U|Wj0o1usH2shN#H%gOFzU z5)*NekwOm;8K=32W|vmjjS1VBVLuAmPuh43^jO-gufefhq>6}h$97to@-;e#|EiKe zC!I0xYjH6WabU3mNC?Ew$5l9FNebfM6=23*aoMPY*Izc!RnUq+=H69$S0QzEJ1RkP zH9NiAZH!a{o>zO=w)9fi*UVI^X4l!Q*7#MY7HDtc!QGyiV%SP24N$(8H);7|N54Iu zx1rXpN_V8Z?)dko1Gh3@`N7+(yXvt~YI;0JO~lrF7wZ+*G;^tAU^Y{IF9mEdH%oJI zJx?)L+2(o+tg81`L0zY&|6#!8QQpoh8yM!C^w#OKRiXoIgm=nDZ*&-&*?)HOeg?j& zN0|8HJG4>WwKuOt%5T@n-#!YieE+q`Se1^5f~YD@*0y*66Mzk_tN=H(AZWEOB!*&Y zX+@qWU2H50Y$Tq-Dt-|VW*wo{FQ|~U9ErS52mvct*{1_%LraLaaH4skrE5+W6XA&d!Tn5a}M0seG@5_f_NXY^rLb{sBPVSf=Niq`jy^0)Bg$RwSXk?~$XN;{B zh842UF#OuE92qq)e9jdWHvOpXXMlL05#p1riw)CS0{RG;3kG3vS6r5{Z~JySlvm~hk(qw|;F#6f5z~EY*LMI-*iBmBiab3Rgzwcw z7e-X5!>vw{oF<0JJB|Y$x^x*#(3QD7ZhJ;zY|TbRh&;7vN>U|n?@5vdyW;g#d?W1W zS=`nG$&%aJe#*JmLjGlK4b;5^n9pI^ztJV4QRKr3zUD9Cv3J-m0(pAPcL_?a7>51` z{6+BjvgD-p7lQxd^q&!2$NHr#{a*jW3by@>;DmtZa}WnRVHkkzv^)pH&xe&6NN?xvqW8}tR5eqjF_bEeqE>$ z*a?j<9Vy)ie_O%0<V&#me=A+V zxX#TL@Nsv2JY6W=FZJ>9@NrKGGipuTy-c|F>+0zGJS~RYucy`c)6Dn!uyFcv`PN|Z z`FQj3aDUlUb@KaZ_n5}_?Cj%oZ|XYekLRO7TH3CC>D$8ols5 z<^2j8zonel+tY7|FA@pvyH7`tLju)1+4Lk&hqt>FS7Yzx@7MEgV%;CNPgm8xkuz!W zJ)2_-rSYY2;h8uuz}Eoxj6*+5$6N~qz71i~GDmS$c0`#W4aUcc@v=-f8CyVtkY>3-bK z4}V-tZ9LkSj@Wm(t?qDr8_?K3*?!Ia#y0&XnX7OT{=7mU&pn>T;K&dppewG0@n@HY z;Q?Jn2Cs+d-S?rTCEos8{tC_Z{PV5mk2BJ?G-;~R$GhC8?}5Oc_G{q|rjEr&6|_4_ zvE2oGAXh4t+)g^L!QHMlh@k$xuU1^!V)@|hk8vgjvSYH)sznn3$e~FLQz=n6+N|b? z@&ZxuKJ%|RCZMUNBS#4BaL)*5BJ5J3ZXj;>I}?=@rQ`kjMNYcA8;2~j0xMn9gG0>o ztngN#98PUS#ctX*AR4O?VsSFeW2TicKfgVc@K)Tk#PM`fcn>Uo*j6Ng3HKG< zKFD&USdrQsQclA+qG#$RYQ$T&2&u!w)8Tqj!+i-O1dXL>M-qnY_Okbdo?7Ogz)fVe z%rL z38{8>#Y&nFw8$wOm@$4>jrI&+rV(1I3RHT>m`0Wgw~Q?Q%5a`{guL4J_^~JjiKsB# z3JOOUMicR1l|VYclsM@J!o4e!W1g4tMqwEEGALvg@)AKXd@B^s*fr0bDc79fR#*zrco7@0o7yN1vjw4FG^^ZSv*~GHn~C5STlf})3+ZH37S|8 zI*azZaw-4lkvV5k>oN>x4L+%J6a@z7CMGk8#1oB_SCVaGI5?ebC&+k=1sJY`WI`PE z&1|!(rcYl6B!AYgOcO9|i6fmDooN0Jvx}Zd*6DDctn^tD@wmORbbk<=eEPg%AK;Or zj3Dtx|2zl(7a=T(h*ZKfQ0$oGb;+gehDyRUBR}UzEmJCC zP*Q7Qc+VaX=!OSHZd}CYt63m~5|NzAdX@ANuTeOXmqO^4%pGl@>tk&4V`4{V(O`Ig zjzDw&z%k_ZENoZGAicuc6-?sVOC2;wUNOaAfRaD~B<2s9q!$Ka+`&pp8@ej>{v@KH zPs*cN?80q_IaZfDu|SYf-_p1ehY*T)5f?~^rHxHd6SzjB#rp{}gD#cIZg2(xEW=^2 zUe)57`qZqSQf%Qkc%MzAgmdwfpvsr#$-U!tXuTFDNl~6Ir5BXQw!4*^3?Tb7yY|8< z_Yx((i)&8=xH3&wNG&NshXUtqN&~8We!`|!sWc%}HK{ZW6Ft#ED6{QHGEG#?JRhnj)amu;pG3hC)vH`vz=ekv6@(t{5+V4AN!*XpI_?LGl>totU z)fsI`O$xKwl{1N+6yI}y^JsY|o|s-@nVp+nzF1tEUbX_9n=IIznp!pQ;9C1YnSJN) z4`Beq;t7$Vx=68Hg3gZCg%rlhYjc|W_=V;19$dW|&Qkh3HtA)4Ptqn; z-Z2@p2}2>iFZ#VMDxOUZt^;1Sjm8)N`V2-rW`~j1E{lTiJKN5o&2Rlbvo^+FWnVAl zkIeR#_2#3;o06I|^0rpGG%o{pQ!a-Y=eyjvJuaEtPZBT@bEDVrm1JNLppJ~4-K?{0 z==_H-iaU5a71}0zN>E>uYM|N42{XlN2$%V^+KdZJ*$mPia8IJst1M&4_`+Ane6oEmTU?uOQ}))&$I?>9j;Mk( zWE3OMQMr#_yj)4d_CnKL7;H6|0i-=fr2ORO&p@wc(!DejR|OV~-k=Xbk1U&*0$JbS zeP?O+jzGAC)HnW2=JT1}bUNI=F%zj0-(^4Z)k>ucf?nQHW~sA@F3 zw8VCx^K7`laERZX>4k9Hhb_ZxWm7_xGX^>Hsl`hs-aKq6m9zc)y?ffBp^|>4-Tvtg zjiXzsc#Y0Z!j7S(I?};0lnU073=gN}onD{$vAd^3#=UTImMFAx4;(pw?7#A{nzWgl zouZVm{FD_^4`K_hDor0)2cZNh(yx^5KkEg)fI!bu->S4=Paj{83S!TMa;+}DHb}4F z@Zwoh>qEa{496%gxB(2x;PTqmL@M4HOp@fJ)|>Z4-knr85@7rD~E064(iGwvF(bg zP4u(kDFfCPWnw@+?~)H4rcrMypD1a4pyN*D8p3Zp(EVqG_)LHwxT_UPiVdt|;9~L5 z_f(fzbY$LdFfO#Dlb{=N<}viP-uBYsSHkJpm3?sQY7Na@t%2DU2wh@Fhn#O#7j+I1 zfXkw7Z&>-GeJz&m3TQ8tc(w?o$3Qwk7K_5OV0Kt6;%opyR~;s|8bKqh6psDZw-YUG z*2=Gk*f`YVVgLOdE29#h1@LuhdQn58xNd~|-j_$o8ORSCG*X+!uUj_Q{akeFa<&@z zT#n>SVbtvZvL%w{QqC>u}=7$D1?WZ=t0`vWPBcr3c z_LG#u0(|kSp~BCKW|lri{vK)u69OOlt3jXCR;kJLX*aE$LEhS87-2!X(fs>*i})$F zul{PK^yF_LGIGp>>|NGVq!^OA>B*d1c3UwL3{NlJl%Jm4`>m?pn>GMJ+y#DjS7E?otX(3mS!nN>Q==Xog`0b&#k z8Lx5K(6n~fZO9w%y%p^3a0peMy&LZnk$qJ>g&J|+1r{Bt8+h6@im;J3Jt+)0__URI z-0C{ooheIW*yuL~FIZTbs)4aYXp($dSSvI1t4U&dYeO+5BCt?f68;HOg z7Q@q>6%s+W{7zuYM6}kx`-5oQ@KQKgC&jgngXxS@hnao8T|Wr@(wguV0JdyWUbIDm zAaZHGPz;amf~(31+B5-jY`L7~aDa#Ju-Y7d@vCn=`pP#k5*=qiZaSY+LAz1lSq+oN z$erRwxI=q>PK_TSc)18({)V}#0BlKx{AXCQ5jtrG`Ivo0uiHM*OUt8m-?Ennja^1% zLQK{KsuFysOfh{giA;q$Sk4s7Anj6eM?+Wbh%xT3W`wi;yY?OaK<7dgjzJJ?^;DEa zOyyanH*nF|F3*P?&j}EDQ$D*f=Hhvy%U{@5p|=>P=@}m_X(FFAwM8(f&q>e^WqN$3 zEfMNDXc|iMRl{wA!b?|hvk@!}(k{{^L!pXviYrh}rNY?fqP=Fk6E)6e>!eGe>CeWB zy?SQ#1BOQ2IwcKPK&1*pX8lUDZXUD@Cc)p1vycE4vt*{$`$aV(D}5Ps1?Z|=;c4IM zy5ORBk4%>#7l~5Tq?`rl2a9p^g?`u!M`{KLukv{?$Ua)Cj@~zcHE1c>ZbP%Fbh+Tn;5WFM- zr4&X1Mgqu~O{DxHbAC(Ohq$qBAQY4e8wu=Wa4DGs6K>u}Xf!ND8?iyF@-1`c_ z&7rMcOqfiZn0SeBNQ~3?=qRk_h>gl^o``ZZN!=CUWQ($!6Rk~nsS@9Jz_DdEWbrn; zHAf~W!&A&K#%>B*YJm~m+aCKykmkhPhwgz>x>hPc zTx9tj4EDxbCJuCo;Koy2*jhWQJq-`RAl6|?j&A2}O{ygS#J?6~oF-{n>@_3NTecF8 zeErs#dRFj`y@@VV(MZ}=fnGjC$+p|MNv;ozS((~Dtyx9PY7)-Nd>6CL1qx3_WERGL zOdf4&YS+QT-g3`^yRB1-(zH<70vt+l96C1zpTs6W+A)2!VW}s#o?%R`&Ns;uR0S7T zMF2^$Y|;yUQkFGNAJ;5*Din;C8KZ-~&x@R+{hS}_KAu4>5dVDX3{=jzkB(-~5PO1o zOPz_`frdP#hmtw|CN}7}Go(Z;HGz@^e5J8KYL?;#U5YKhl0fDPHkfwg4xir{zd_l# z#CDF>Xj4kLw5KJ_%q?6`!_>4&Cag7TvtE9N1YG^A62wAg`_BAwl$3YVG|@88IPRvN zt~t%~8CClpL~Xt3eJX<16eA`go!);4d=;F zRFDZjJB-Ixfzn`f$rn9;diL!A_maKG>|phV+y5EvUFxX$gFGl>-~*fk{O13A7tN36 zWUA-CBn>Uc5swPWu_^UVgwU~yEMCIoX)*L-0 z@-}ZgFwchr7#h_!oy$w+e0lCjv>B1ZUcq8qXY}-BxZd4uBjtT@=&7E|j<-e2utAu)=BSvZ`a; z-XHdPA%r+e_fsxTNHYki*{XC5aL%5l)x2dlrv3wQB1T1;MY0FBt+S@$=tv@Pk}K`o zwy&l4e#hZi$Ev;2;fh+fiD;@(cC3=t0(k=m)cOHN%pAqe?{s$}{ep_Vcrc_BJd^3! zXQ)DFW#SljtPViM`$c?5r#PHm-b~AjF^UM*{UdfN?O7+4{rx<{nPQj}yLdbe><+!f z{mK0_hC}a`bqgNz7{m(yS$p;)%WNzQ86e8)j)HWk5`#7@Q>b$Inyxbmc5_8d?>hS( zb7TX%;62-3Sm|pi%3ZzpYVSo_1^@X~Wn8V_^Q9aH`%Hm<>{iQv4vsGpAQr|Z^NNU8q06BnYj9>KpzE|j^orq zTH}J=Mr}tRQ~Bv!`txVWVO=L6SKOE z1=-43rQ?Vr#Y}NTU;6)0FvJSz!uj4}2?+5;ttwS&w7PXnqB&gW{`Az%Vqqk@G9+1& zbkxbd&Sok|Rx8#+7^{LdBW=o`+y&oSvZSJq1f_)NscfRC>XNw*QOzU+c4O34OEBGL zLJQ@s!HS9sq@6QCR7_Hu(N!l;L$sdmb#@3yr zE;rD4vOq}-0I%1f61NFBXJd*JDEJOY@mngM7|-qGE(Otd`Ix=6x$B4wW`ZMs-^pI< z`CCGl+qnH6`Bg&y3+I0ZdeT>W>_1BAEdK`Rv0oi@Tn;!s3Iifp20F&MC}gsPz!jke zEBUcvO9Vdb+hP61HMWb;%b9BuceiCb>^umYnIu-!v1iHYwT@DIj$I>P_ntM|G|(Z| zkjJNqE2oAoZFv8W+uK;UT|fW2uFlpq+m#8U4xH`m9{vvhR+#wAiT6jR(WWi_Z@XSy zZSC7LH%1M9K0V&r@Ki+sY;Slu2BIRpOB-*84qZDt-Fme61O)pgkzbR{V)9gU4nr;n zmkU$oZ_oaCq-uJZ?4!!j0_CBPb8C-h#Ea^g-KT`511kf?dyIU zsfhD9Jod`PxbgQ}$&JUrOwZ!%PBM2UJU>4=GUxj9Fy|k3-w+yl?5H35zBTmpaej5R z;dC>S8U6lhG0tcsV3JPYU-!@{`AvzIlq6v=5#~=ZYPk_n=_(p9StJMoWtt|Q`#oN3 zp9C!9VcDp}DN{MbrN=j;I&ra9?LuXOa_OQXBk(M)_(j5AVIeN*;fYw2iZ!D;y~rxp ztQ-dgrWNZAyGoVCNpl{x4Z1quew3)#U)B-;8TS>QwLpBCeZfWI7k-Cu&v7nkZ#Tm4 zv=`SFqT1F6sz6*v#!oVl>j@cg5xcx8F>izKMXe;DM}lNy;hEK|`v5cAF|LRFD(>ILJZx*go?b`Ldr(OBxe zs0O;Gok_`J@`nr)Un3<{A5k_`2BWC_FXoXT4I(~s_^J_dC=R@kCB-OV5|`rTKvbhL zBKaw+@c1w&ev$fOwBXpvuU*pkay5p?O8uFtf{-!7Afw>YVVNPQZ5iJqvd&^Am70>^ zg@9Yx6sihX1{tcINQrW9q5vtpx$uNIi2+7gwz|FL`cb8A7AO%J*F&B{Ekm$nnVWo< z1$2rMy;cQ%fPnU~)Fbc;1$xL$SP!qUKeTD;+l3+iq!{AU6>2O|-P$H0xY9G*6;XAz zc=BU)0T6ehwHQi|ZeYut32B;2orY%Cks{zu$DsUZCln+76hgm2KqQRQGYu%qep$1L zG^_($g|7X`1I}8pmMoRg5KCuE(8`4v>e)9pc5BZkOd(EHn$pFm>ezc@t}b%&h?6Um z)`Xu!|ZmP zdHxVIUDgZ8ZKjUwP+MW0ZRnVUVdL2JHmwo8FEX$4bi`f9@jdSm_fj3XmL&mab654xvssM!KyK zfmm>0c2Hg3IMXMcHq62!4OWX6(u1gkhvQ2>3ItX)haB+Nyt+ML-7L|H8me4C zIEQr`f^0C8$_i4=g6?F~7CxlXM!=!kpq&_8FwaV41BC`xwR~e%NXbn{2e_%wiw1}q zo1(<+L!~?jE(Lf3N-94b*T>f|NKN4o9jP{5&D)iE?Ej)k8{-50d(pNP2A8vs8-?)KGO+EWU zPE_AqgIzOyZfu7?p@Gz6mK;kl;?hkOm(`8yX;D&}U@5|2jaHxUx;T=uD9ZD`TV={O zw}*aN-adG)e-2-W#1sIONxYeys3?%-HVF(#Hf)YxB8UnM?y|}~8>~{#5_0)e9)l8s z;ll+O+a$B598RP)ULMP;#HDs?4TZ?B%S!?ZxIs`+54k3g`S3xtT3n9HYE5mpvCSKF z+fG>+6-Xo@F}=PfPA^&HYwt`V*kW^|7tJMyT>$j+xXXB-D*VLOawvwoa3x!|acPTJ z;695#(Z~7r)GA`SheKrTOm7h;arBh2Aa~H7mJu=sp0Oj;<;raD?^NGf*^)$MZD>;O1glZwd$;2-p)2 zg9#@DL>KBnslfMZGoT|$=s6RR)rtF=^Z3JCXbsSDA>rein~4EO_y(YTq&o`Lg#@c5mZ7ido~$)DE7-H-B1d=#$v5cFW8+ZY|E}-=+sO zc`0jk>-NKzxTY;lK+K-wTrSnEtB_RJ~a`^i2!i;6^FYGsqz(s?6e%l%TB&I?yuMcXZ`}n=&10T_@HG;FG+7eJs z?(^HPya)CkT)Ltw2TCW+6@cAr5t+UB7O{bI`SkQgJhNTPah)!8_xZrd#|KyQsXNnS zurGV^hoR*oH~3HNuR=PeQa^;E}epGgNy{coWr z*LuC|4OiuImd#AW_+sHB@ors=Gx$+!dTK+k=IK$_B4^$KKeI;|>i~}mmhJ6q2$(ef zLRE+a*yH$#UP*I#vZrEn3Rf&hC96;|pzA8GvSh0@CKEhnr1@U=w!s*uVc+dKbjD)q zW1#T#P~r2I)L;6IHK~T9A|(hQ8Nmkfo|Gb|Ft}2FP>`$FA&ui!A+})Wc|Ir%i7@6^ zm=~=23OPw8iX4`Eyy&MxBiahNVdvd;w*m0qSOA&1M-`pdiN9L&!J%=%80!f)c1b=f zgSl?Fhb9S_H+g{Fn90)FVNC2oJZYk}5T@7f%4MihyAhMa@D@k-(VEKWG%29ddTDyK zSrkoKY%gaO&G~9w)7!d0!zI4Yf}Ke_UeUmm#L!;^9|MPD1Eho!c+LbI2!Si>uyv2$X zYKApo*qG_#4_`Z+4d=I=H#zAu8M!3=B9>rAdM>`qA^^C@;{()} zdoJ~3p@Ry`_z@cLH>+FDQ>hGO)Q%LBBi6=-EE<cAS)6TBCre%X}hkE;Q;ybdi?!bqk z)BWP&<@*Yp8PqO!F1n4*%*av^RDofICWD4axBpAbt}{>kK+ICl(q&~1Y6mB(1!cxY z5Z#-XAII=i5#euy3cEKH)}(?faBcbxfD^RgCGe9$2~Lsu1;Y|ab~+Y`igqT_mA?9 zJHjRJw7}rn@BEAv1VgR);=YpaZWGmA6$xg_s}qGrm9NiwTXCF>oRaxxZd_DeqTYVR zaz8(Udau0$q7(?*4Wp~^YS5S3?c90}#t{H=@2Hs_ug;q+nXb9*<~hI?R796^{T}LS za$Pnnb$HHO1FP=Ow|1Ls-bt=YJ0lnnCkzM3)j7Er>6Uz?-!?mNX4uXSKww|HZDWOTRR8P9C~ zz8@{N#j5cxf?~gCV$<=$``xZv=V0dJcP$&o-H=&m%gRK}HRAg{{G4O>3C=a5QTV8n z3bqoq>w3Yd#_~yccQy7?d%5|ufnD<4=R#~hi%t?<)86=+eUDD#4jm|Gl=NjA(bF{b zmGDh*!loBp9Z^)Yp`KNMKEy=jK_8?V_DE=wrf6T2GiFq8D7q&5zGv-l8Y3z(Wh$KS zY%y7Na5G$B=Tp6?Azo!Ds3VOHWmQ-|P6?>HxCIu2^k}L|UJ~aLm}q}4>bUcPvy}Qa zPYK+^a0%EvH@jM!U=k3xEvgDo2`kwkz2+39162rJ>|q?(uGC&4i8=0jKhr!caF8K= zCD()`1MVIHTCb6Ep94Z!r>H(kFXA1Q5a-DL5aFk)m8f!a2nlA0&@XWiMl41Mn5JEM zPuIj!@c^Py1sKJ$lmsbw{cusHgd%1$c9`S>Dq&7hC|*P>h%4Z)023M961!ESKLw_X z2yK<;q1XFRMo_7YnPW)ORz-;!Q5iAqK=@8k8YBozt4t^#BDVudJyu9^po^qY%RyR9 zFqQpeQO#*SnR1((*R&LqldMq&<}}un8!dsD8XpK+4fR(rE9oK;jbCLK#W9Yg_6-C2fsQ}uaegNwrjXQ{VPAqyyw%-c ze~lT7=CeYi6kH2RTEYxN?H?**FfG55Dk$Y4%;$UqVTW;s^>3XROuwHlkxL>Dk)=9X zB?Zf296Qax3^uBjZs@VS>glQ`^o#R#_t3*S9m@JxIH%s(Eb+H7;D3YtTV^=nU|g;I z;=;d-_s?8d0|5kt`+q6*{wi&a7!BMlzxKTSAFSB_&)e8i)a2|J1QENQHE54OlsmV7 zzE>v_Dv2^wg{ZbZ1j*LRRkpjCcF4UvPp->Lt&4&f?D^ii@o!IZE-1_(ka@$%=`1eM z0@EX-1H`&$0ZX(mx9{K2keA&&nX_jzgWXbMusZL}HTX|H0TfHVFbX zOS;Wz+qP}nwr$(CZQHh{ZQHi(?wvR8ht=JP{SlRQs!rCEM8{tp)Rmt`!go7nJuYH4 zw?b{|c=mqFmv{0BWD@CQcA8Em2*cr+u2Q7J2S*-*z4f@1xI43 zjeZUj3(imLC^{G?Y?t0hrR(Ptat>y6TBRyPnbGGp#0gxBD{en+l?~h^M}6bpYsn{b7<$X5jU=w_kSjeqilKeR9&cVl=Pt9(T#$|E zR!Y^ss4rE%A8Wmw4k>?eGAB!Yx2^(vemD5MY-3A&&PvkE?i}51ZZFd2cHEvB25>1# zGkz%X1|c=&wvUKe6YBaMU`8Z^kctCVRe=e+fTnrOOMalL{Bg@Q`PdiMMm3Rvpy&{etW#D4K} z5{RsWA8NyL+!ihnTp^HI2UaLc)Lolo>Mx>pW#<1KuyO) zDJ+_C^{-=!iD}ewJ0&t;n8HLYnTiFsi_3+wdX`};K68WO&!S(!@9>Kr^}`B;q?S29 zUC#=;p)AVJ7f+&nFgnq`_*yz-KAtaM*$Zw}v>TA3GHYV1->mKc+&P};7T@yde}Vr~ zSjf8D`?vqDVE$7+|9xTA{6mWVUxORl|5i@_54hpA`hPt#Ue)TKqGB>9dz>o7VdpRb zfsoDTiO-m1YDor=DX1wXCsxf;-6Wlr@Zlt4#^{A_rgTrHGMKFBc6sfXP9?G!X&zFf z;9YTYMnw`&E>k|w54q$zWHm%Q5KTmC)ogX!?d<4M``mLMyXF;2kWS-Ou}*z{)JNuJ zxzw^MH)yyU?!e?Xu4Sq7{pF5v)OmNqyY(yzQ&1!+GU4PV>yqW4 zDXO7$Q>d2e!>T*QTPWVB-hyAX!^){;Q~CW!z8JI{ew-MFbrp=R|Bm0UaFt9-ffkrI z9pO)3*|2Rrqd^ZDVh9FRUc%Lpk17torZBMerJ{^yMzqYK;op)IF=x?Yr0yCq~4{7G49m@)1 zo?)Qiy6(uHiQ%%w9!R5foPJCmC;EIQ4Ci=oJ)XlyhebcFjT&uf18hm zj%bHSM~_h>oshymcRjW(nkb%CLkDHYR|mTo!Q$z=a}TQ18MXTt_Uuu?bh~N1D#s&4 z&4Va45rFWjkhiJR99lRF)#ONrcOhrhPA6R`W0v@AW@zbPV_d7#by%a*(st;vNA8LmW>JicR@-)86D>&2VZ%QnJkJg*=$ z^sFY9;i!bYGD7$YZ^GmJy(E+=M65fBi@4C_t`!$64D#B{<lxlsDD_xXO#xA5opl0{K;lmcY|Z&MbTcWFPi6fD=#2R)QwB4<8M8&{TRiOmC}{lCgD7d%ogArq>ZSHE}!Y# zUfo>`nq*{pv9RuIWp*a}C7^{$^Zbm2LZB|N0J~U$VKiK(VTT+&Ec_vn31f`a7$lhz zMO|A`Pv7j-PC`Jv@YLc)g-ClP3ux0`8dnc5r~8dVRcZ-xB2?>*VR;ODEAmi73~JW6lJXW4DTYkm#(x;v;~PB4-+vJ% zo~v7BG0{X4!xZ--6j^D495{R7q#qxOis*UI@o60`&uZP)7^N9m8U6t_LZbrE`-h-} zm5@P!FeTX;)I*dJ1;R%9pEw_(0E!i7fXeT9O7%>G1<6+X#M$kAQY79 zFIhqSB!o5rWn=4tE;(vnpPom6*tGzYA%`H0-4r3~s4V_^-jdz+rM%MdzZEg^yHQOPaER7LT|%FKTe<&8_-x zxU>BKi2Ja*R$P`i>OY=TIf*8PLVh{4ihSyJ(fSOrriCa|rfl;Fe3N5#6hM0ARiibii>dvVgUf>XsOjfE# zXN6?f-NeM_{>gH;hjtHPuz!cO>2#1y)AN8<+qErfsGOYKQ?KTxO#&|QeDy{skBU0$ zP6E@cXzh0I&RnH#hzIIM%=Sj3ji9WDyI?NPc+*Cy&AmB+hgOQrs0M4DT==E8hv`Dn zRd_oCsWBlkA%MtSce2d~c6QT17lmp+I&=V+qA%WZwE(i~8^$;|fK8=O&N|5(HH{5c z@9&eZFj(}7jW1y-IbJ69_BvAyaD5zqXUjD0v^5g!UF>hgm=^I^{kD^v?xtajtsFpH zh|h=EbN3y(!BBf2&zm}WH!$-1K#(2dzJwpIc}7ffG^VU2tx*AIWPg^1uE`AdnBr2% zDcIWkN~=X~Yemsj2^@Te_~N`jR7B?Y&ySGb0LP^1Z{bd{KkjKJHdEm?w*Li>}LNYaLB&grVM5Hi{X zIT1)MF9+sR6ChtPx$PFHIFKb-|XiTq)(Kdk5fDCS=ujak1m z5MyFmgk&}(w>??9P5_9M=NhG+9 zv*XdgO9aU%5jMc6F&JhI6LIA$=Bp3b5s8*G8Z=@?mj#~5l-&<8!8VjOR)!z3LAx7z@(Vt`whzHz+)DbI&g8 zW&h>()q_fj=REKhFNjtyHa>bxr`+9kuGJv?-M9k1|7GwCcwhX}8P#ds*|vP2`V-oU z^T)${qto+jWndvUU}VO}pOyh{b_^T8{1uCSQ%p#;-wEtb)5V)`EuZ>i)BQb?(-!0 zO8YkgwBM%13zFE-0TC;A@9Wa26Ovtb!SoeW>L!h_YJx7uq^lXr5a+TBKt%u7yxR#h zX@;Ca%#A(GlTco1aAFgoAZM?+=?J_A~v7 zAXoU+2WWeW$E@q=^{tO2QmMj$?9d393YZj?gkVF%SeYMFBexK))yU4-!39ctfNivFJ~D z2(Tz*f#?_wLOsI(ETK+oJe3jg`AHU{GUe5X+Gw@YhJ0v0CiGkRmOcS@0cAuXJD~7T zIDt5FR0GI+5FJPtoS3lTF*s1rI_Lq^LGU16LAt>foc55R`b@=wL^M1Ywucd^>yHF( zSL6VeXbUSoFi{eaN+fFx7m!_9fGo5z<9T9CzL8kC5s+j_jNqGpQg|mnElMxEdf-uI z`e-J2lFyR6urC1aM2xNjmSZqGs4y$wPOldj4UCV{awBAXQ(4VOr}5k zzP+f?JY$aRxx0=kb0jI4^xq8OqNP6HN7yc{a2&(Ro(`P7VHj7p46`?F-^Yz>W4khw z7(HecjY1SP7k|5~(dO;d6`xn_Hh+)yPV>i8|E9xn18<&g=f0C0K2TfTZ}9)LTNv(` zT)2NUf&Vns|JiQ;SN{A&F(3fS|FNVnF|@O@qP4gEFIN120QBzZo&Oz(p4rRE9cTCT zIVOj>*T5(X25VEoXwzbA&BA)KH3w@`)o4?8$9GrGZ!5e-OL z<^b>4$DbJ~83hEuvIt@4PdE^cP@)wJ^O_l! z&5e!3AN?|crbmCFKq1p65fH%vRQm&5G1M>Ga1KXmASSjKTGlotIa4 zeY!fQHDeP7&+d&ibUt^kFC!DL2AOu5@S=hiRnNoV19iI=W?qMv`!^1g^2PlQd2VS$ zS+&*d%7V_)v>hLfHgCqusCP!MLSD5~U*1y>lJ0Zse~C`Ba~>~YRoy$bG$sZPC*A9c zR*yrcUZ?I(ix+n5wUZ6gdYf%Pw^p=a*y2sg8EBeM*}Bs|wMJw)yiJ-HrMMXMY|~T+ zLZ(J#Ix1Ny%j&0YQg31y_XmJgAE(eEIZpCSW zdEoCw^KBqEB3EbwU3pz6s%U> zRjk`8v(I{uzrSPJN;e4lS=TQ^?xqO_9)C@h30`zI=ss0iAd*+QZv*sZRvZ&?3ys)> zZ9T357`(Pc{XughpfvDmdE9(oT%fQnBRQ%rU<*npJJSjDPMjf0ZiZ}Hm`mEIAsH!` z&K?k&@g==`!I7}%j)}akEi24nmA2`}sYGy4dn#g1KEi%NFzPE}Y#LmIP>#*oV&v>k zG)@aDSGhC*_|nvkx)3bDxrYSCh~HiqV%QfF+fZq161zi|U|NGF+3 zjcjQ8Q|m#lBXR$KOFd%~FhdNlB^**o2@AH7V=hDm$auwLgH02t$ zlg}}cWm>Ps*6R#vmVI8uGU@LxWq<+i-yAo4+MfP6pQ<3j|LudtFvWpCQ!C@4So|xelYi{=TK7m~h1=$y|nt!2E`-Vf;*>2A1Q_zULq$cAPqB=~oa% zOTWzar@u)okomzrR3mc2IW3%)rtaJ6bM+F{fB5;cb8JrZtzwN-;tvS*vizs_oxt(C zgJNZ*bo)E-&}W0|-N)2no_Nf4@^0m!u>i+o3?hE!I}E5W4YZK!E8d}#Rbv*v%=6vr zxk0hOw7{SOgsIsMnbXrq>K9e1v6)b$y8;Vs_!tF_I0?y@Xu`B79v`&KfV8~yJ1@Yz zW(+|TY;6k{|NKEXYQvHqH{MR*?rf;f|8Di~fejm7y=wrKJA}zJmgPDJ%d*S}te|V` z^Wzd2@-iAU$p*7ig_9|&?o39-S6|nq3`8inY|vk??$Vs|No8sz^M>-IGGz1xClzyI zwcyY>amm#@EK5vPy7x_rB2Xb4eeVno+#)(!@OEwuMPZdN zr0ri)ye~(Y^(Zk@KasWom=MXp717?P+(mKZ?YbnK@Ja44BwMdDlOZ^26cLF4uVOh_ z3*kM%SxhPXaR^L!dwGSc_B^f@dh+T7z29om=HvZ)d^!*W5OtKhEA*Ah!(F(1~g z8+li6Wt}R%J^`7QK~|`9tlO44Q$-Q03N0lqxTvKn3mXsUqh^`WFr0yvQn7Ru-* z25z2cQWC3j?C#dmQf-1gjVS#$i&Td9Nj--dA$0Dx5+wCn9UnXooc_$lQY>K5LOlgg zu>%#9J=1>xxU|I=^TFk6Q?Nk&Gr0jD-V;-{ueQL@_Czx8P5ry zH{1BDeYx#if|3D^(d7%o#?=r!?%C@cr3urTVH35W$_az&N&gdh$fBJl0G|+@iq%?$ zFE`fg<00jT*wVZNN1U4tNvGXJAm$`^VbF+bK6S`fTaP+I(4chW;q!KN~0Gdxa6nOH_}x!vfI&*;p>ibu-4n-N4YzcB6Se7zW>VaF zze5~vbP#`y5;wNh62I9qBtn_>FoKh%tNJg?0b6_I;#|_Iy5bak7yEcq`#EI4w@L?c z)&9=vUEAJ43T3w$36&)nueC?V$kjgMI&kSsQ4c;lzHxlm^(>rt+wzL{M(`bUF4k=+ zdk`|3ej8Qqj)l#Khlf+z`<1;Y5O$Hpw|6)xSIkQg)=CGEs$_*m#gymlEp1(5WaME{ z6(s1|2&h5&W-D<={GUBqa5efhoxG{fK>`MM`D*eNsM)=!)j_5_%qHL&o>HFPEgPM) z)f6Lniq0jYvQK!vJPKY6b(8}Y5-$*idH+fh&xcLnp+Ic?_OVhNKW9hUbxet=zM6ii zv;Iw|kRS&nG$L}`g%+r5Tg&A}pF#;oha7Fc4(~(kHM2vKo^ve9g)5iWMguFF+Qk9d zo_>yUU{;;yvfyX5>*nS7T1f4vaGs>uNy|r-PfP-rODMqwC#{#or5lslAaMMRrIzu6 z*=!g%8qo-Xh9R_I11PyHh+Upa!JzZ4TllF5(jnsKG^OH%tlRtWwe+n5If3Y!-aW^+ z@L%AIB39C!#>hY7t zTY-E8I}d_kTHbItqLgZXL#3K|9waJ`^Ku0lHU@iwNmY#;E$3)dt!aPqhP>2M%iN4E z5np~848gU%<AOFD44Sj^ALz@H0AXaFNlLj8{q>KDJ>FM12o}4 zHyBO=4$v%Qry@VYQ$f*xVBKhpB>_U3WCdtFj)Je=n+F55uAO-g*_9eQ?EL+E0-Lsz z_E^XPueIi_vEAI~GJe5EV*HX`yofSxUX1)@z?qh)VWWhk^W{HIw%npXZak0W>s>{*Q^FNHKqSE%^w&n@Gm2k;PTkN%& zLjXlqpZA9`Yj|4w59+^h*67rgvCowITUvp#=H_%lGqRqR*;p9vQ_rk&s+`h8<-;jG zU4IhZ$%hexN~TGf9$c#+BL|n!2a4tk2J5Uc78@5}Q^yDe3Nprr45muENXz)`drknu z>rmCi`oM<~mb0WC`axFWhkGd*XxLVmDii}iY7e_`si6wDy1LVBtD=`puxiX^n`Mpu zFlSYZc6j__sRSb_15QD@^!b!6}+U7mT;Q= zwNQkuE(TyVM^PcmZJVuyV%X9VNmaZ!w0-XfwKYu(s+qcpci!2Wt4tq}$G?z4qG7Ga zf-%c0YyO6Ghtah(4$IMl5=m8lf*63NK&?km(%b?*IE@)-=v-~37h#qpN$m+?SS%Hn zPo~wRD*4c8EkS7rczQQRqG8IKMm737HvcDT`;AyAzBjvAU2)X&;Fqp_HYRT=K-Lx$ zYg>GMGwNJv1G12`1)wLXDHiMKxN>;QNtfbf0dy(+LN32ELs9ICs3%Sd&!A^DY5N^& zS@>TL2=tHn2_-^iKhEb`aSg1mEAP7dsAsEfULDfuW}I%U_0*T+?21Nz~09 z`(YKbFSm9rc;;ho6C+`GkWUW&_k;w%L0Fn*ifw_Ti)*y;#t?>Gii~q6*QD>dl{}E) zP`9_qz?RnIeuW65$C0Lz)gMy;>G@Y)z)idLce_OvHgd106{2>nXUI#+AyNjHbDZdF zp16cY@y;kMJR0XnOETwdsni~7Vx=K-Qd9H9h&Be&Pr^g{B+B10p)k?eSAS-%#|O#j zD6=MtB-d|A`7vjl!PM=4MsoDZ5LEp1scHSkVnSJ5sYbTom{%o3a8w{ON081F4b-J zm+oqZoD>gc@ z3ap-!TB%yre0_np40JR%M_YGHS0;?RrU}hS@(7dolABj&r*?=4!=xN$G`)92 zfdozMh>9V2{BmXD2NxpnG?vaKW`2rBkrR?wwFSsPW(2? zGpsI8q@)JuX=_!PN2o*|~0AX+Mqm znXOpH=63^32>#B6jn=MArdg7BDbJquS2t=gA}FQn*ej~@;v>JTLC&b8nb#AhXjaI9 zyqA2c?F!jG0941REF4Gzhjm#6xP)61{W-gm!&NGThNS5gq)`AMOf(SYuTgxa-z|OD zKi3a2Fxd+{S?8> zB*)6WXG!KF4)Q43ngtfC(hl(M?FT{z{R>|{>FZFI*?t?fX_JmCmHI8niu-%Ihv_dn zVL?&TUrz_4;!fJ8#dokf`B(nnqo5h*QknI6hs~QDXNwPu&0XYo|L)1{9y=HBW9*O< zZne7V!ts3N%Gg*Iq_$@fDIN9}j%SsPRAo46Pt=Ae4@){dkqrCkJ3x;J8;ymkrdvd= z+>()7c7rpOgO8Hqz`q5ly!_=5II?riBpUnG`oeuD>A+>dA!890$;HtmWDlI{JIV0h zG|=`a_q)xVOWIc}bm%a1bTqr&6JTd^N-!$GEKL;#T{v&c{b#}lipoq4eO4r zcTpF8$BjiDls4&Ic+b~=qk6$l$zYg#seC^j! zSY3SJnF~b{ANDF7LQxRziL`ElLaTTFR?SDpp#R=&z}4hpVIR@{X@0ACjvdg+hQiAe ziwxf~@; z+Z7hlRp4izbJtFj!2m(I{iQO&*IuyJ^mzk^^ZwdGT+QLCp^b3zr1fXElodgbI}>F= zMVxoWQ(~E{7xub2%j+lc1^-b=BWYOo>TcSL=>6Z|zP`#jY{9nBnU&oV=Ij)A5`ie6 z>B^`)35wvFCzBf`CZDL@IJ`)yX=1WGH4ce+LKrx~nQ{blVafxxoGlHDxb>hd+#Aog zMpZBJ7U|kf7WqNaFiJdHhQLdLD@7Dl^M8T&4 zsMa@cE8s=RM$O(Tn2}2jw6GhrW`1H2ryier@+n`!i0~!qqW_&lu)1leN#5M4fX`F1 z!38Lfp16o#Fe9^(^5(0wyg6S^RGL+!**LZ!L%dP&_g+)!P*0otLJLH*W4HQ85IB>90>?<6-tb=~ey<;K-KOxm@es*nRm29U5M*1x} zizQJ8q=tr)g^4xOz*mTxRF(Tm=~#}@HW^z0Sembn2d8}pR2+5A_Bl zHg|3@I`4jKaYuVmSdB%2eTQQv^{<7UBg5p8o@Ly#HCXh2YwRxI_a1bm42fq?hJ;GtXDlccDlc) z`xpy>C{>!=K6Pu%}8MnBmg z7qNDx8jK#;QK;ly>jEpf2>P-^6LB(DTVLdzaz$Of1?{Amnad=EQvT}F7AJR!C(MwH zZFvPowTQM8uF64s@DjVOJkEHJv$aceO%}_jgoGJp1U)zr*`O5CG?dKNWjL0g=4q8? zVoOhkcHQg!i*Cf47#Y3K&(96_a+KTG2GV0=vv-oS{rT`WJdOdwNiPl(yz_#{;2SkL z#sgz0zpbr4sa%?E{7MJEE#E}`+ej5^lWvuU_f7^D2d^f?e+gc44?o!Nlj8_*bwJC? z82XvRh>Qd=Jvv(xbQZ%mrq?xubO_N;;p>D?`Rbt5?4KH;VTU<(AN@g$k1QwCrvY=2 z7;B>(LRPHTjTBD_!W=yS?lILZF!tI#Eqo#cwW1X&_~+!1U}3yO23y>qDowu^YhY1p z$-dB#S$7?^hJxwhkGpKD^j^4)Z!Im({>7pzpF?umm%d(d?++#2PvcKBOWs<1E9Xx~ zi9shOIqB)YZZg!gG%Z-Yw(@KIHbq;t?8%_iw|j?l{e7K&3v)2g%&!}9scA8}1XH|r zOsqRo9x*`D)_=zmiYL_4w%MX#PJV3lwLIzC0ylr;j;I-YKWTJ4Z+z=91#U3)VQH9_ zJ{d*B2&lQ+ExY5;BX+tRU3G%23kx$q5|haXF2?H21aYeoWwYX6A0Hn-f~}!inLDF4 z8&G-3aZlfUi6bdFoJ5Su^_Ng|H&`0sQ!=(&U%dNcr2lNt(f$EaNFlNfL*UbVzj1-Y z`H>@6qE|lnTGOa>oC&i7 zWGmjt47pH)%&8prw&$;#Z+7&t=`c?QOuI`G6m-)!%R|$B8+d`B zy2J$j0U%e<`fM5XStyxdMqa{>5S5JluBz9T@{Ym)Qgb%JDDPP1^HDJw2-hN2tyKC9yJQ9fy`Y=g2+31Qnwn^px@Z}+~8A<%1m zPqE_h6?gdk<`Ge4-<6iV%UAo#*X$5~;4h;!mJ-cQ6R%dS&5NjsPnB{~wP_#7S0t-N z_#@>JhoMAC92iPzegLN@g-q{kj(xMdW-?j4MoC;H2(v>AaWE5hAD3Rg>M<~>*nq|@ zYV?RDhcJ-LWPO8hj0{!vtiBWsAd87Vkg9o-c(V98;2Fg5M!8Z;IOrM{Q;JUcDBxd* zOM!?&#(63AFrvPyxqTo@Q#Y&>*4eKG*c zIVbmQ(aU&c+Eshf6=|~@_&ms!$K0~b{pWoDudip3B#GEs>ly{!!(N$io z?Kl*GgP_a8Bo#t|A>>}9RVZF7jAO8xf6=hRM0lGWdxJ z{gh2ic4Z_7Ji&jCFni!oA3selfbN&$IX1x9dNAe9e6e(6soIX?6lACFsFAbk2;IW% z^4L}N2XcWBkyjL1`ii2AZC@F;xFq2`7eqRgs7C9E>R#|;T}fG><7u)kOhsQ6?PGr8 zK2BZI*{;ys%=eB$*T|(^{>s%IYHXsGpJ$zcHj>JNw-OAy>f(r$&a{sEQcOza{c_$<>bP`7S@lRiTxZ0=yfTbIp* zTgj1ZP_Iz;AY|`>MLXP2<>unNihs3B7eayZSkNhI_vrS45a~*z;e#lvqPcCRNz!?8 zFOh;>TzEZBgR!ZJC_G?K^XEyxv{yZk?c+tG=xO0akyAtXvtbyyxS)w8 zdvL`esbu)5-zDW3PqZlM9MQjMF1amc#A+_hh!I?cZ2YgAj*XA0mit$H9Z`1Lj0v;(HcI9s zb}46njLm)1?n-sv*B}-WnigpV%=vz#!9Bit8I$pjJ=YT+vs^p{bt_x{1!B&?T)L6? z!>S@?3Q8)LKES^v!bj`WbW4I>LM&};LE+eXbv~Jm?lu%+%R3rZC~IEIAw=Vgg)o1U znGO`wS}*WF?Prf>J*IV-3Nd||&-9fNN%__ud5I89D=P8i`t;Ix-6fTcRMS3AHqL;h8Jw@Z7B$37?*x_Y!~+0Z*#ze~SLnAP zS4kJCwk9gXMvqaFmeswYLl{9Vf-lZ!=>&hh@_~+Lgi*dtx%?$SA=3|kMl5CY7lQ&W z+Rd8csq=gaZEBnv*aZ?DhDtBezILe1Ad1v**6_;VZ*6uMq{1;`gVZ$C`M4fnpH|!y z8*-*!tB*zN>)46EjWBeAK@y1Yn}(_=R|*MOOjP$TATp|^xyC@w(8|*mh_{q4 z;4*cv$CarO&-@)S?enO;>NF|$<4D#iTWqpielZ4f#q8tJ&2a_DS3ua)$veUPRVg>MBzn~f8vQuDoc8oZHg zW_?C?VNNOeUR@aClXPhvycI%O$AqLmo(f(Jr!gv3<0g6Qk>)Oh(9T;{p|1t?d$@sq zCI>99A-7Rs>1^0ek)ljuR%+Y!I_9P)KYkO&g)^A=yOATRmGnU=v@Os9CU8PNjOK_n z^?7(ouR*qRF$QRW*ahS~oGN+YltTZ)YI7|J!laX|*}zDma5JPWcl)>B5Xxy$sufaE zeNjdi=ti$ME6$+X8$;FeradK@|qtr*l{(=EP5XnusL_E4%Qs-o%*tLbd zipueCGn;iip4=60>a2qXh^0ncmJghFLgts#+%Xx_Bj}=Db=QDg$ERR11SI7AQ!2LQ zIWjo8;U=Q>36Z)>3Z?<}nv!t(%+5yG9~KoI#`67(!6j%Tn45G~^pHazCbi+< zUtw&<&y4H=-+8SNxUWUc%k>K%xQ#B1_R}A(;JfVjy~BL|RjH)=%*5&b!535h`Rdu{ z;T6^>4=9M0Kyfm0PwnSuR9&wBL_&5cY@JN@h+WA6pY9;v#!y%XM7{0fTc;*8lH#oV zH&ymNo>GV2jtU0R?KafYcxY=E-mUN&utyhq-KwnT43&;HWvmUc@UJ?cuo>YXw9~15 zbtY!$sH{>!TAeh8hz^nc0yeMyQz#lw58I4uZlh-gFkOe-;G0} zF)SoT?F7$c1+|vUe5^lQhcUho2-Jb;nCnq5RnLg#pj`nwT=nDDP)>YKT?omXO~Kr{ zGQPna1i;~Ro>Ro>ZsUQf*ay7W{&_71I+a0R1J0=-c^-Hv`F-C%>&q5GWfa}?GRs^p zRI34rj1~_PKOM0kH?f+K3r_To(B=DAytG>BAP`~$d#N|fCtcRCr78c?I(6gOGl?m* z^rrW|f|=Mvl)6LAQU0|>ha(L?puuuhh!&A z8?O#9>h%C)kKV}v*k65`*V+#1jLb^eR_ZbOO#PJXFSmoz#qVhK5QVp!a85cSy||OO zQ%p-skVK5<2leUF^ut$bl?1?Y4yMWmCzTNRLP{ME5=NYF^c)?qtbc z&%6TJ2(_D)%z#xvtYhGxoXzu+TakeOk$Lo1Rf77-XLP5FSL{C=#{_w9x{MbTqY7!k zrqTR17z9F)dfthf0Z6g3Uq@^FuOggRk)I;T!D z0m{bzaE7w<1y-H4L?P5;lxbuD2w|msWgPbXKtXKfyeeQ35r&I>J?g`!cVA3tg;_?SB{dkNv(x20Ft`xQ?0P`Q(_0X18C;8fA5}%IbaA$rIIv5FT^82x6{*b9%zS)WmtsxY*38T}+BPZZ7mbz0h64h8tCEt@7h?>H(Wl$|SPu**h6th%V+d}|ARSW$1=78m~ zOJSB(LoOXYP-9~DDSDACy`9A3(Y=g0f*-x9Pcyccq#a+Pvg;~!2f^j;j+yh7T)0KMe?~aIwqAH@H?pj$gW?hs^v(u(Dc8^Yg%(}-X5BOATRIJ#HfW1QFF~9u z8b%*x*Om>DJuSf;)*}sb-Veq4*fmRy2?ha)J~0<1Ix}A%MV#kAh*XnjH`xU`yI{HE z;UmHKh&`c+&Cl=(O9M#@b>8gVKog+s9?96I}VuL80S- zyHd(3DxfLkaa2@{Lr#lS?D$3SFIgn4P&=)tE_-sBW)?tVh%nj|B^AOi-B{YOuXTRQ zTN9!Re~qLqO;VV_s-c9rWyM1P8YzPjuaZJ7IXpNz(@JL&ABqlxNn<5^q_fm!SB=pn(B8&6B%LBEfhW zTT=%Y~8VJ*|jRo_1s|0I>Rb3LNwdupSax;kdrl=((zkM7Ek{6egd3Vkp#)np&z@6pxl+wNMup z=hUD{?sREp+^8^*_(LkxVl8#h^VU=A5Z=3*qg6RUG=T!NSC1UJSrckBA$l*6#!$(; zHn9U$T^1Dm04B)CuJq+gepzDVnlW&gV0E)QFlfNRYOoX}Xnqu72~<)0kGG1z#|VO` z={8?E*SsM^Vt&`zd8N>rFP$-x{3d`$C&rvtS#}t#(nMBdfHS_3PPLujRTdvrA&z@03PfBb8v%+FKF)E(7@K(FYy8LC4FM0tyH*&ej%0K|Qd{jA^J;Rlr5Fo1otuI($m%#UUT^-%eP+7I%ai~~ zX$LUC*LxHaX8JkB3oGM-0^~G`9KL>tnxf5GS%IC%_=LDMm#!E@p+_X@ zB3H;&X6R^LI%n9LR{V;lgZ|>;x1YsSXnnhlRiVvmS0zQP2Eo_cLtQnNLEBt$IRP`K zc6VE=VP@Ge`;`HUGoyd9chx{$YvfkXsyiHQsQZr&gK~!$B3}1`%5fa)TX5sSu3UI( zsrvS^zwWej>^xp(n5A!ERZ|hOrw_ABcY3Yzy(1eg0#|qxq+Zk+ns%}%kWWa9Lc9`o zi|^AKS5%>b7^zw`&raV`cgNMu0ZX$3#C&3>&s{_VSLoGrk{Mwf^#&tJK$y1?`RLO$ z7LU3EzP4Ni*hFl5W?I*U0D(;ax>R+P2 zvQ9gTXCLr-`P)h*z0QDZ;A?&4K%lx1Adn2n3l%Dilt7eT+9{M?9M6|Uxqp)yYc@ME zgX_0j3-^NKial5BlLNkj#`3+*Op^;#zG6dRHp?dQlfET6zs!VHGpK|1Ev|-C7GTVo zrMq#=^_pIOo&oOW^YZAX+~C>VXob@>aM4h$O0Th}HK((%@k=7^$M=<?cw>JRWhR@`avDZb(6WV15zJa!>OC<>4O5{p7Z7xcGY@5iZh}qoq?n3?gHws)m zMLhnQsuqI`-}Na=b-xAng);9-n}#{zBSp zz!vC6HdwMFFIaTI)0F5}NvP)CdKdUw>0T5NhN@~a!Uu3 zRzMXZ6=#Cv0sE!(oOf>ou+0>(iSY(%tV(okc!DK<&EP%+DlkjXw8}EK0ALN+ zw>g;zzUiRi*LT!aZ0F=(B6EhM*m9gI`KY0}ovsZG-Q(ZhJ=4MUwJ5a7A*fAGv&xt2 zW0LLE@4!hFD`Xm_3=S5VI~c|Z?(!$iC_Y0`yAml!&qy$gZAJ8$`1@FC1*nWY&9|+p zDFlcZ2=Lh_TQfoY4xBaicTpj#jtZ*X`_n)s8*R96IDSQ*vQe&Drb4YIQummKY5JlL zO_-T8x(xhrvz}Z~#uK4WDyeGISe5}fQWL}%0Y}u2u*6Wc8>yWYJZ1ttV#5E2`kFvT z$3(vc`KS6{=7Y9SMpGGA9pE|6UachKw%V<*z&%(ncW=1byo}n!{@=z&t;ve5?5s`O z5i(5zAE+)-QzjJ4Zc8^R{cji|cZu<`M8r5Q#E^LR?p=szgO?Is$54DRDqnJ4BJa+u z$`qgJsK=?$FvqN!y%i2ws7D8813T(t(gL4-3(iP4LPV$dZ^7-Dxmv|UUIUwYB4m46_Xs0uIL@N1tfbK1Mk zm>jaC@X2-JP@VfLLGkqnjw$w`x%Vc&ceWwuTaQ58N_#Bv=mD$46c<`cE(L5P#R&{) zh)80Na3dOk6DE6FJHu(>jq_U%(;w3L3_d>yAEe` z-%%+V=>0o1r7zAwN^(;Pno$fnulX-452Ctmp-)u8?=oghB^x`|phVddL);m?X%nIEs{}{aBU5w5&(~kx`5kh*x6E!J+B3Xb#W1$)^zUzuM(fAm3Si&7U^Tl1aNvn6aG&l4Hq+b%@NJpeWW-{vJ+kkb=ClL*sy zTI9;s%;VuKcV$Im6{%fux*0EL<|#lVY7o*vsS4+;oa;(?=M*?S?DCf2_uHqON)&VLh5qx=Mm2ifmRN{`$68 zo+%qIb|h`gTB}mCSZpHEqtlOutC8lJj-9loSm{sBfT(F}>N}nRQ|8n`>VQo6r$JhE zGUOW)PD&x#x;S+3mAFWZRDN#W*)?Yst*4j*G7T!&Q<4-Z8#jlXRk;-#N82D>;ixk# zNGC4D#QHR(pehb$t4-#rofh;Z(fSIpK9lO@+y8P<+O&m3?Dq&gFb^~sO|H4oCeg*Tf!YqTMRzMnN*l%Gqm(t^kw zSy>bIVYTsPmVu%X?;EELy*Qf2Gyd;Bb z0^Y0`D7^3;|Gh10Rqa_Y)@=H*3~`>0riHel%RN{w(=#nij{-VI7UR+AAVtu?Tiw|4 z4yC%al~2jY{qhZwfZsC)89#+IyhpQ8TcwpSHBx#2C{pBEcF0F<2Yb9yY4iyvshTMh zkZYw7l&sV3o++2fHS#(-ceh6-E6)rxar-twgn?*Av616RQA`nB(u(v60+M8%&fk5> zm`&I((V#m$Aij;BzM3w9m(mdJXX##Cdcv=57}vKCsFp<$q{eEt7`o?DigT8k%&uw^ z`U|WY#&)a-!T8-?g3Y-S&ohmX+7J|w7s1{#VZ7D(!jiFUEoa|)1K@_;M` zk;|7fXX`>eW{|ws;=r-<_uhzHuowduRJfp?t=6oyxB%xyv?ux=>bJd8^ae%se6oyt z)SrSFHOZA!@iiD#lQPR@XmEC}hMY8Ch4a{F`gp*IwpFOx6&PpG|#4WN1OE z5oOA?YNMH+9h+q(Ch&}fkKN7B$t$)hsZ@~UMZ-P60$g{vnRz#dkknq)n9Q*12cp$d z#KOrhXK5fj@nUgUetW)H5C~?;DRQvNz@YpQ{rYkBdhF44sjRYGGObw%LTe!B_y3i8 zWX%f$A~OZCtr6-mB3(B^w#56!-jmSlb<3$SpoAmzkU{jTt&Dh{1}#zu|C{QAMwfZPS5^`9j_>|KyZ>j z1X0NsyBZV|inlrX*MrD1zVg5f6952iO;sVRo%Pv*jL3yu}sfNmc zO^8D9Y@ZJ(uo#4;s%h3Keo`*L(vmbH72{}U^a;Pxgh;y?6Py1bf#eS~t%b-Wvyd_0 zDwTW|i1Jee>AQJO!s03KgZewQj}yJ3Rxd|h4IbHr;3<$*rr!zlcde^6+AWR4W-%P+ zU<8()z`#gsaGsx$+MS+>NmY!JTf=|6UV$|n78xdw+7#0Jfl@ZR>Z2%&sGoxc0Kp*( zDJARJq+K|I$n1nu1j!oOeU`}DiiqLs!b0-v^FX#}?AaClO$k~u91pS}*@QTX{{bID z>cUX-8WN8Uh$-ZfiR-lj!1?S>fuc_}TUCsHW7+zRXzfiEO=}Y}3aBy7x)r@TtC{kl z>0Rzp`}O9l%6Q&aCq;EAOL7=hw}ph=j_T$C!m+n6KKskerLGkMTL;>K82Aprf)nHQ zGSXfVWW$Yu)lA>w%p#xTb-nLBH1BuStQPljer1xeM*eC|mIx5`z>wbL>8A}O!*}qS zW>Vo6ykIM1TU$9@gT6~}F>HssL;hEdm(P!l?lm<0JyXX3c)_gD*JhP3uooJ?HMqz8 zzFVY$9nRe~e=crrb9^+3@N_$!1&XM&(;28)nb1^LO9ca-;JK5eq8J;?`J`uuo>Z0N zeDXa_cu|Wfq?gqgbaFK-C+T*e$9l>}C2(8@tsxK+5b|-%5zR*fmVle8l5f&IFb~8s_#x$v#3Z)vE9=a%<(UJ!m2M2 zqeGd;sxIJJE^#k~YacJyes1)y_UzNv&FRUI?Wl$=otzapJg{(5w$w^z>Q9J}=Rq%*S4_jHb_SzkcwEp9SAErVF>|}rg zPVaY=qgU@O#Wv6Pw1O5e{WW!0s9%FP6^ZJjI^~?d?u)d$B{+?4MW$jQBN;v~|E8FR zSDbYERf9_u;Fb)!-{kKpK-*s?E;q!LWf*@(Oy`2IJ{yUzsiNW@hyZ zG8^ch(c|0x{G!)GeLy|Cd)aH-Qx0UL$jiUx`fvKyMw==PckDhYC|@xM`w*!dQ`r%g zd8-p=MXToz%#Q3VJD|`Y1eSZ?)4XC$!AorjW~m)yaPbB-fkSrEJ}|H<)ttxAW_r_a z#89snC!#pG^KVU#;tm}FX~&z9z5tOu=W7vIR{QASUu-rb;g$@uwUG;s{EVQ|=p30e=NO+zh65k6L~ zLWeQngBm|cCQnk(fKPL&uLQ3eEoe*&2(Tj8 zKseYtRKB;JqNgl6NW!6c`F#m+zNs_S_`FRHZ`Wy>F1~RzhI=>j=FcTR&|{0-%kO!% zGFL}=`<1MHwVBLB@8x#5Ca9@7nWN>vz{DER_+xNhT;Hav(%x@-y8ZMtjR&2Uh9fSV z{vpDGhrZSQv-2{|F&|qQE+dS9$CRjAZQAk6<5zdfUoldQ6vE%+7#rgf<27}FztI(! zIpjG)`^6em%92o#JkpXqYk&C1+ZT?OJ&^p#3YL<(Ayixrzl#4)I#JOM%yrS&AZbtf zyV))epQIJ+n;ud@Ge!)OfTte`2$uR4lo~|DZ3w6{Lrdylu{ZxHxq0NDRdV+`sev^2 zA^&-b!dNKaGZmn`jqHUC!*cE5VdM3};L)cEc`-(6&Ir~gbWPF!}Y9N%Lg3tpv_Hf z@p@2B$r58X*K5?JF&*_XAO3Bo(X3vD5{u~)>5F^Z>|zw`9k*F!x6iSrq=El&aw=45M@Kw=USm=#w?Mv9^tvtXB;8yW86`z;;e9@EmGvQ7J zCg0@s1QI%LrD1h(SfAMF&uc~Nm1O*jPtQDv4#g=;BrK7l%!qwjuW#y}9D8YE4@XXC zx{k6Yp-w&>cWaYG@KIopq&vutUOPEiyTuNnc$6h=Xf`97lG?*sUKxfag0I2m0&|z`+t(-iY#m`A(5YPB@W=` zHq7rv6f2I8)^O>%Z#s!iY^J{)_J9|qgQ>9M1snrr&6Ut-ch*=u zTKdv1q2%`}-KTSG@biNMf!K$i96@1B5p9F5n>BwpVTy+DVALm*c_(?t1D+}a4XE6Q z&UQV14I_33ymo6j28F&9`EyM4q+)wl6f`rKcu{L>H=Xz}_QfVs|H#8g!w) z#H2};4N$PKVyE$PqPj?exE%Bk-iG;w$9rh!mk(pRw*F};GfeSkBqDSupf>%;>6Qw+ zZ6nIUlcsqb2Qy(0X;?%QrQO1$FXj{CljUml)w3!{3OkX6iGhjSB9M>D-;FMg411Wh zSxsK}nV^Hbri-fuSY@q^7F2A0widdS6-@1}A2HSa#`=Yck~#eY;9rDoqq+3=EZK z;39z!dSnjWFMP}{Tu&}6A!Cf~$Pb4|1`glGJx}$l*@LQBV*)BS zxaNiHp;!RSynxx4j1DF8gO?$`b`|&cS1&nBAh5i{QLD{X!36~&>KoPAa}y06V*~j< z(JfIN%@`755mCrjHGt9|&7|^3K`q|7r4)~Z+xLASvH91ZmkU?(fxJgO z98%IH2zeYh9MLJJjr~tGFrxu1TMd)e{=mf#&gOSy9p^77oq{|6h|$Od-J_gFyJ5S< z#eVWJQGV9@t}w&IwCw&sJZ^3s^emyIx|I}`bH@L^z|sABw|P9H8jyZzrVIW-=~Bj! zoK_&baPFoQ#`P&MagJ%4| zS9XTzPXontaiAB{VM9zkHgtZ?pH5F)d_B!`Cbc)rJeGI1@`JK zKP>=Utc=o1w0;?7KmM=I=*Qxfv1?b*^S~p+UJZBCJ8saoEnGs^nVTh^wJDWWh@2Wh z%sbC-v><9_u=-5p!V8&TLC1V?N3Rq1S9*+upemQO_!G8$QkW_00v`kNpB`Bsw3E2!+hx9OAvB@O1|swTRG2% z0jd^?js(?UA$Vd~JvfTE{!&XMiu^z-thBc`qQ#^e)l9;()%|$}nR^KM0jFD|dN#!+ zIg^im3ferv))d%oCv7l;8LyTN;`@BC2_dXuifCF*(&B;fI|;A{gTXC9AfQO*a}tp# zLQ|DLCt8%?xTw5{byM(U_IH=t8ey)%7F87`@ZW`|vRQG#JPYCRLL6q_iT{ggd<0UG z9Y+l`IQ3=Dzfm^qcPh7c;BH7?~q7T?1fk29@mmNjwZ+<@gS9 zHmB8owP-i_+7@AEVOyn9Zr(_Wv(6x=PJL`IvCs(*9|>E(&c;aA`w_pXbmJb&v}Uj+ z2mQ<5-p$X#2SqrzUs2Ahg?+Cda&mT5$Hq>@$t8Mszd~v+E^$D1Z>T<)Md6Cg#&&j{-1}o2WY*rL{A{~$L)%N+kct}{5et$qS{9Oqdc-(MZ zU%BrZfqCa;bf{Ap)Z;CzByM$)?*B7`hfwgH^EmWbCQiRU;bNtZBf4j`cP0K&{Hr(i+o{Fea zG5Fo_ByFm19SRN#g}e(IjJitfDxrZM4yBS-aBk@v;_@)gJR^+Q_dz_7&cHFnZ$fRQ zFuxF9cN<@Xrah{!N%mlE-xlweQU@L>;F{n(uZkndPc}pW1DPfP0#Q`F&x%*OPhJ%l z<*MlCR~kcXgnS2=HI8EJ!m|X zQ|V}HYngsiXW>H7td{pCeUDL1rDviHWT+g#}|gXKRwnsJZ$^XJ~0N zT#OhkNs@z8jI!XUqJ+?}ytrhd=zYV~k7f13ON8rli;G{evXTtUO(eD=R913&0k> zpBb5%$1CQIIfRXr3W1vn^1m(-+typ?|CAm5t$(()te*^0((Sxz7N#}DEN8;ueUpiv zV#H(mZk3iBcBqej!~3AWuV{&bkTJT)=uFc>#ot^O1ZgWv{UwhHKg$n7{!us}77NM1 z#cCrn16yqPEUnu@uqOgqEEYNwFg?6 z6h+EoCCPAl%F##KN?&p*Op&o7)^jp*^R-k46hOL3dNDq$ivsBS$hjQ-c4oqZT@Vu{2KOHT{uZ-@74xb;a zL6XlGeFLX&v`zv_sj>;+TbzjlX9Tmj=H8V#^1v5YGuh$(I1tE{?zJ2xNN(lMamwro zbSEMa=zK2Ccv@u-BTuSJH$wk<3KK@C=LXN<%@9Nw=+U6e}*Znpw036YbmxL_ikI67S|l| zcwED~3)qE&f~|h(Zt0iL6>@9%oTz_&K2)F9OhFuoQa|)3;>brvTuZ+ARcW?pm1G|i zDbRqmOvUtBb%Azz2$8hTy7mh)^;4-e+$JMLSE^DO;kUOX2xZHJ{8ZfnQ?o#OnluF8 zNzNOT{>vZvLL~pXeE#H60Nj`1B8T|;iOO!6UR(eREfP%&cFzhm{$cg0d=BT$WAIVX zQy=KU*xBcxQrRJNP!u=q01IQ+0ovMI!v?qdWDSy;yuMiBC1RW@8Wyoy)yrXypdjHf z<0$OUn8oQ6#{6%u+Q|vZ6k3evjjw+N=fHz%4>Bh?xh_JRD7(j7w9L)JDuJ)APgt1l z&8*tO*vy}HuA-eW#6H=KIf{;;=G&e6G{~^A%MZ>g`F%P};&ypzfy)QlhKsNikOsOX+^qoVzI76+*=Wi%f6y4 zS7iWeateTDK#b|Voo+QSQ~BeP=dtQ_k7nYLnP+V@7sqeR)m77rR znN{c^mzX*nySq!YJkXTQ^)oHHSVR{W<;K~}eRZruowwdh+0a$T z15tNq!8UuD14<@#t&_t-S7kvNHO0g3pI7KkXYae@&Dy{d0kkU<^eIF~C6E8(%j>oz z(vkD*)=K)(keT26k@(Z>IE_z9U5H-NIISt02Za*3Oz&b><(hOD zCM~(&LMS$CAlJN7wa`ip`H{E6=`zXLG_Zmyqa2)+|BqR#jM75KH_tD_cSd8SY-m9K zGq`sxVJ1}&;ET*&U3dMeW{tuxkAuDieXMJWus=OrwqVdLuh5uJEiTT}qNs84Ra7i! z`oqDXJ{4DjP*F9DAePtV7ok7-$+dE@wfwV&{K?AgM$s+YW#$lNNo+3qivl{;#{-Ac zLncBgKSHZr!vCKV4qo*_Mi9>Hd}p0yTP=%^;H)G-w2s<4c)<8|(J_-otL zbLa?<20ubT7_7?%Y1bw>3n?IiZ06>J@chb*2VRoOA1qO+1_HT>f<`?_ci1{gyGCw3 z*?{A<+7~Qqt9W6IH)c-wl$#|kqzc~)l0Z4dJ$)@umBu{RD*W167|LmfsF?Pq+nXPB z#-vO#v7e0|hoGbQ*fu9{KGgl{xbg^|;z11ZnkVp8rY2|fdt#vN4ewL-u~40)jaq-MQzhhWvM7%SrLSMH7CLG(^dKr(+&$J}$&?ODVErV{j zZe_AziBcLefy6|}ZWiuwDKIuK{sxt~uvrM#M@x8tc2+ zAvY@DB0ilfv1Vp+db!18@_kp09ma;kdi)#HG3l_todGA=uvpqPcM7Etu7cbW=PUZo9mmBpOZ5hNFW|_VaY5?ZkF3Ro zX_y}!IsM&~j%zLXY(v+KnYLz)r)a@mniLJjT^=5Vg~FHCx`gBltGdT8ffn>sYfzz6Y-9dR|z%yqsoQRoU_B z!{Ny)Wju%fo}v%wFTZ`(mN z$GZIS7(mzS&Z!APmEHLHKcvJvvLoaa!r#4#r%yjq!1O zRFq@Pu^^sm5fSu&qC4xFXRtFU6_311gg9!6+H&gsude)@tjwCV`qwUTUh(MYoI3zD z3=GTaF~##+O=&uu66UO^IKm&>z+ zz(cg>K?c$)cF{(yg#Du0K$tdP@JW71fBk05Q3l0}ZH~`wYTG3>NUZYh8dM2wrkiT) z%<5!R)VD753%PhqxIEd2e8m)%(o}@_gcMpAct-@7K2W}H?UNb4-Kl0|98(wv7BCjT zRcwbS#sxp3Wj3N+I`^3Ko;ghAya- zT7Ty`{vB5vI`Z;7n_}zV0+Y<{k?ZSco4z(yo+O%&?TIKqBT#u=b2To0WDHC3t~?U! zH|lnUe@fTeP=}N`PLy|W(9+7$q*@U1Cr2%wKsn(R0U@`j+F8+3s5!I)Kpt&n#A;x+ zWg8hD$|ZX&^6E!%TA0AnS-BsVUbY^V`N3w|v{Azrn~bm8rRwI@*+g=HEOVUHwEwng zt2J6}zA(IlVCG=_6H6GqCbulco9FdN6^c)y{MbTr^j>jD9hNUJR~O+k>qIh(_GrB7 zEmu|)lCb`QSwLojPGg{`wDF)|H*D-tZi>qhK#U4gPnkSyzCcv@-~i8vPP?b`6lyRe zaLs_+am9nZ%$_A&ce<(_zYpu627?6<-@6x9NWJ$D!O9o#yAk)f-+9C^_;$kO4()s+ z(r(DZc!EQDEVz7dI=O?ll94?wQ1!Ei_=~^gh&GFX1pU2)D9>P=8?{%D1G}KOMriVf z`QmJU^f;n^_tYmaIrN>7c^QJ3>2hC-Q>Hwvj+0*K$lp01o4Fn98o?8yZ>}iJQ4WV4 zz1^cQv6co*$_?9PSxSU1DnhS@l7;mhe0a?cpWX{qsUV_Y6?#GSHKEEsmbZZkK$MK*(|l9CA@` zQik9|aQZE@rx^hr5J*ON`7B4#W~((O{4nqyH1ZmI-SQDi_X&qCtJs0Ps*aO?%hYt% zwDoiHX@I*!){vutsB<0Ozl-{Li-++4#yacCOTCJBc1qb@a(HnBeLYWllEQ<|*6=^6 zE9HF+WKfT$m@jZcC)_8-YN_83sE^u1)Dc`CW4g+kcFcNI&DPi!FoQ)}w;<`7=q@+h z{0O0RZq0|sHa3~u)2X;Psv@tz_x0t&Fu3EMO#O`HT|CREfzvrFFRf*yT=F%`kRN4Cd?~djp)VAC6H-EixzZA7_l!rm9M)A(8 z*Lz05UuudC1T~YlrHSMD^a%RHQDs?P$M?_P;cthrCZ*bqeRlGEfy2gA)t!Q%Z85Wf zIwry?q08Q{Gaj=XY@Y>WGj(fk{CBR*o?dreRl6^BNP!_5~my{kHI)u_+_PJhXFrH{grF2TYEz&!)zjII_uIC(6i9r}-4Ahef^ z*ft{#DjIQ!qR}YmJAZQA1phG@d_rsY-6_jfhpA%_Kuy;yh!J)|@`1&X`&1~lvtM!D zhFeD@Ve$x9Ly64?6G%m8f7f(OM7!vC&2y7fsYE`ltbeiQTJ81ppi53ot*g#Q0m4by zKIcw_Yc-|w+Vp`f%DxYbkxATAHEQFJv8J_oGYrVP^M9EKAHToZyI&;+rmFZ|UEll! zz3=6281}g*_rI-W9*+^2l=)uv@vR*ah`xJ2 zpRXDoVZJRjE~&o94@g?i=T&5{i-^~dwe|I?S6=yrP}#57Hs)h>>A8{GVB$A!Q(G!( z9@qLwgkV5~uV(-VmOQ!DMHw=xWXEI2e&l zR|I4@!iM^KjTCXl0v>56f*F@NI8rJM42uK5fT;J5aDmST1}V2E@jm|=DYn~K1`Qu- zb$X*S;_xWLoYBdha?w_v`@~HSS-WAXC}Z^DB?-jICbtiJU?=St4P_E;H>kokOXCf_ z&&wiOY6%4%4GHS+UvzGo?KKv^N95nM8J4rHS7~d* ztC;Po5jEs|QQ;J;h3n7nAWK@0ZY&;ypZj(BF2FD8w8;84w~&1KX1j4cIdS|%5U3kq zUj{%mA%v**vQD{!UXN9mMDDk!Cth~mHUmos?jUc(uM%%I_S?!SuEB30W+E>*3DU&# zwVFF-_zQ#*zSpM&nBtp-7Msdo{zy!Ui|!pK&qGJAg}}G%ol;K43EK?fdoq3{Hi~B) z#{2;pul_)`d_k{xY`^{iXnG@f?S`3a<~{U>aks?%PuDaWupnNo$5TgQpq9m?1Ff=9 zyBBIt)XwR;wF&Zzv!izfJp_Bp+U(SO_9?rZoJhX=U{x~3l-L`M`#KblrlWs@EgM*t}Y%;Wtj3|(_0>@R6SrxMDn;Xj50nhoG5p>#iEGsJg z_&BnEn@mj-st z@>xs(zB#Bp~RZvCnxrih+?) z>C`cUpu1@SxKvZCwr&Z00`Nb)_oMK?Y8{aEO%xWx-1gn%Yj;QQnNDTSwA77sc7xF7 z5BjjTy5}(K@+yIiymp4rKj(}4#$5J&*OG#MwmSGGp~DIRHo@;=jeeoUz=!-sQO(a` zW*~UrbAWc3Uj7}lStfbeOlO!mr5VJB1|(q#?bs-YN+qTxdN4QGF;It)!O~RO#tDaw z{g&D72%)z`sCK~p-`-KelCHo&qpgxeMK{zKmx{e3gOH`9lyK!a_AgJ)2iaKfb5RTP zp4=GfDPrIZam_r^e4WprIa4NVc(buJt;&)MaHso{MlpRwu(Xd9myh?r%SdUvHrDiB zf+q#bgtE3I>W5oKlWe0YC(uELfTs79CHE|6kO7;(h!GZ%HJn4U7bQk&DYK_PhtR#> zd2=}@O9pL6hbab>sC>pCO^R<)O(iZDDe>{Db9tiahOU50rk+7cDpaj3HWT+w+r=q7 z5`lmD0x~XMIxdTRiALk*FDsdtNk&u(gyjcr6bGaR9&-oe@c?1oXA z>J^0pPt16l0^Pp9vChc~Dn%rHZK;Ih_m~Ys$+)YnTmZ6AY73T2bV>%9@^@U&udlsE zG^yv{=`GJ5RJF&3%h!I>*TSd54>5^bUDpKkBAimGz9}~^T&iH8DyyBMwN1dK@c*W+ z1(oxB1mM73JDnb<&O|8Gi4kZ~yLXzE7C~A8Q(ip|`II8IXCPhX zTpD3x`k6~U+r6axySZXbj?|Xb-^?Q7z~H=4o}a8EbvtT4TC`sac6R-N2)p$S4Vr?f zDbY2+{Dz(s6D-Rsr8lJ}e~$;&hQ?U;Ez=5YQ?+Q6jLGF;iSF87M~xIiNVYer(}zWV z6Q(N!;DIY1jq3l`sPav1G>KRGDWO(nyL03~!SlbG*vw)dm)I2nUbV{A7rzVTYH}i* zTyv6f4($Q9IHeuXB@{=;)D>Rj4vZ+BnMPG`&e5Hr|NYns^0WBzCqEAd`Dz@vOrM3! z%t^J3@jM-uqmD7KHI@8)|6lG_*jdIBM%Y$_{vCC$4d(*|Ek^`*8U~Mz6fOLMvK}>4 zyvv%G^qTQsHh;h{(!KWz>n-`|Z24uGZ|f!%SI;1+$oI2(@Y>?@l)cl^hd`10;LD2G z!pFp$m&?}=`48a3;|1!=(%W#RA;y8H+5yH;=Ccd#8Ji3!+GpFUu*tbn!$54c&WEpxBTR!m^?kD6C0)K!J7MtC z8yQWbS(g%1?aWpLOH1p>eLyH*cYtFsFJtZ2URGL{d3UNpJ7;U8@|3ZfX$F?kr;Fq2 zY6b%X0}B{^tfC{{6`W~lIQ#xghuYc0QhA+Wa}+^omqh6XiKgshEz$od0(}Z_Gx@GV zEzN01KW|#5^!E4=r7lG{l5dHNC-DsPa(^i7mXs7%mIMIL6z!KH&V^!AqS|%+SPbHg z(n(JJzCF8p2btWs4!>}YL0vgq`_tOT^V8bixB`kwu0yuP1I0{+&@>`bbq^`d_D6J$ zL8%VJFP-L%9puI0Sn34UyDBH2_32^d? zG7d4UlX6|4EAXL`#7vP+$IgFgH~4q2?I2k#Hq)R}T>J7eY+9SEZzkA$-6JM{3vUbT zWdq%yuJWDbUH!UdF@w&c>c~0i__kLa46Jc(c5cF&eapwPw_OuMgkffwu2`4}kDsSm;C)L7$BTS%3g5dR@zqA{j4QRyv`$ZFh6xmn~# zPAIc!g(47fs;9hwC8c4Z7J0*W?2sWNBWr8tlOYpv{o5x*o;JirMxT7#jLMB@Iu3Yo zc*inTnq|7HU&1sN0$l(1n5?H}-5d!W@=ehPf_yCaj^i1YjZ-LD_)w17k69`fx|p3p znsP*gO??I4izw@2WweEe#afS^3@eP0!Q~*e%^->GFofu+G)E+V4(z5C&m`WN&y8wu zi!I$7F~=Zv=fYNeEFH1sa}6VNA+%8PRHWF3QgQS@=Ico%-t^Aa1fRSxxXjgBO#-p z7w4c8D)L8@HTxSjhrJ^F?L9TREa960AZA{2v&Wd`G3hoS7hMYx-UrX>UJ#{h&{!@) z4Wf6JD7Pogr}*ZSC??mXt*&B_H=-DJ#L^?#$K2YfVI8OrPfYnt^uFm*MVNECHtWF^ zBo`&s>asy&%lG2pOh)QRN1?xS(4&bpS}g>2tr54rfREF9e>d}Y>Sk*3RDI{1zPA<4 zE&XVPHN?)^SSL5yLYmO1u`2f{Jmr1#e~>9!Yw#a)G`a9qdlIGg0a6d7AaOD2toR$l zO#}zx>=+=b1@Z_1oK9K(oHE(Bfk@C7!_Hxfwy^CJ)t)>Se%;fBe%Q1>-#vZ~u5z3J z*L_CP`qBW6{x`Z}8HF~N1zf9;kQnhgI=vWjs=_&(y|k;L9=6I3pb?#NP5 z8vA|{SbpM&xwJLWANiyI1);uBMCQOglL*(Cs#BfdxN9ly()>GSmqkIqnaDd18L3e3 zqwXmz@<>X3N@C~yHbl|xvNJ`#a_IhYcPJDpP^11bz8TBbS4C(3FoQa`>r;#ENLy>i zhn-2(XOR=|KJbPj^0J7j>GUl`|CRWW`F+(PBSC)}@w>$9m)Z{$jj%|Cjy};T{=;jr!f9S@S`vr}iXTX6#X; z5SY@cES!It1%kS5FIINsbD)yX_UDi~q8~JbeV(soMJNCU20y9;nIH zihd_st)~-AGK&bk)h}lR&yHrxr@fS9AowoFqGPEq@fX7>o%khE9^l$x(rL;kr>T23 zsL?MH&J0d!+i@+#jcKIGAC7I)q$;NH2}CT{V6#U&_cdH*f7@Dg@Rv+6Bv7Y(_a0w;RALpjzD&XIdh) z*v-t(qppeDjzRF`Mx7geV2%=ZrI3=)6n+uhEfx7Lg-vECs5inMA|*IE3empQTEX_C z6LoHx#s3Q!JkEmMl^ z-%p>98nS&EXf1F3P^j$wUiKR3mrIzZtJD`19h^`ZeeMw(n+EV~pQqA0dCYDH1q__~ zpP5sf5?Q#l!v5szagW>CB}o)%AScn0g?m|0a+}#3x0tyf#SjnKr&o;pK=$i-lO~tW zEZ!4L;)_LyS=w$tbl;9n4K@>8R9Nh@m znJPW)K4OP5mS{39wY;pbblE23GG2YU3|q@Q;&OTz@k)0&-$JLk4qnl&JCC+=>eYzc zpm+tG6(psl2FFo&5byy*6}*P9A;8w2Zhv6#FA~EyA6K>|VWo4}Iqj^Fd6{K3poaQ?-6gd`5hv~B$r->m0!eZKxjt9g z%ugCWogW6opZJl_c4QNcwmua;DL(^usoj6wXu1d73bWu5 z*p{lR;VBVnmC`olSvxPEqONy7{Q@&+{!hsZd)knjd(W@_=N!Td%C;LO%Z0#q#ZKKvjr(X3PfKcXETcrVqB z)Js0zDF`xN80N2!C?3u)YG=gBPK?t~Q2Ak{N|ti>SSNsw5zawPk*uG4| zan=}3K`v_gb7^=dv|4Vao5I3(4A`*zRic|O3Wyb$Kb6<}Iv38K2l6?&Wa&kkBY&{B z_CU9|Szhkgk|)ll%3bRW6qU0^6v%$b`X2hdVSYY}I9+d; zC9`%G`Hzj2&*!xv;LP+3Zn1)EsD`U>PflA)_c+8ezh)NfSi}H9K)%20RtG-$Vmw(jhAxkS6{Vq;QcEcnQI?pQk^NW(07C{v}^}z+-e}VAfmr2 zvpn_VOir-ExADXCB$i9V+HRO&Vrn3s2%F)>FF$yzuV%l1I z%f#wFsG$grM2dqef>~fb{rmywBQuaZk-Z-PwVufM=La0vzvnT=Ln}On>prjLDHV{v zJijOB?X$NJyQjqu9L_Hs8C{m51^#V3KFJJ7+`9FEjW9)BBp>XS-*qf0Qx+u4YdnWB zuLPOhn_u_5`5!HOI)Gn|eBCs8X6fGRFtpj}C$h=|YZ;o9JQ_OVP`bT7QDG!X2%a^1 zLW}NHEGaWHGRv{QZyyMr6U|XPG(3pM)KCTsg!b^aI!->)T~Ki-@yio-GpgbJOYBEE7b*l`2HAeZt|)ci z?*0s~s0gv8&n%z1a-BW^bBlY12DW23<>h9><-f4zzH$glM}#qH^q1^NW^v~N-vh(~48vV_xGf{LygG3+j44G2P6 zazJT-gzgu(hi|g3G~&5hJipH_fZ^gWlG!Sj^j!Us1-`f1)zQQdv&H^>ts5R3g>zen zy1P7YtM6Qthw&|Tt%66iZ8}EfJAQw5z!KuxtkG9pao1N`el+X%HN;@%h9$6~N%=9- zJ369M+4utj9jCebzU&+Roc|5d(J;lkAdCO`fMO0t@9-*v>>gQ!SG9euWni8n`Wd^X zW=CebY*A<7dw{;g+VjtQ;~Hk;BFzbt(hxqS`^)QNOwg<4Q~%`~{u4N}Urw@B_P9Y( zQ-c;`5I6(b)uFt~HL@F5y;{>9sK^p+v1t+-d0_9{;?puZ*M zv?epIB#YDXHEy|cKB>Xv(?{A>`eRJ0<|C3Xy+j!SG<)*XSM6#NQqWoS11Jq+(LULL zhA@W&=jq}vvnvQ*pgnQEc88$WcztVu?Y1_ARRBhhXbOLJ9IT~3L2^h10Dx%T% zrwqEs53s0a9Yk`%bKmULZ0@2>u^c|_hHd8l~M*`{8-jKKIs^#-PuG0^f(ygOchpl^!w^`^XWX>SZs zpJ11HcDh_vrn;pgMg+Vv0aDh)^wXdcGjvSV@=*JuW_5?WeV6(k#JF>3?tXz85Z(}Q zo~Tz|+j-lA_Z?i`D2Q2_MnOW1Dn^}!&jy??P0V+6pK<)hKa5z|+3L0JA!MTHg>ZF$ zbhxFCXt(pcFfyw`a0CwL(%QQwpKrbCbPFec{M!kD6%cCoV*EDh@Aopw&|O@r$-}T> z-OII*yD6l4iU=?YpBa8J`>?0abH(5Z{5zHEuJpmr^f8-K9LS85875s9rApC2gOC2u zDS4q{h2mJQgd59R-^i+NW@$v5wPqPVWGY%%Iy+jWB+sG$*1kcXNh;(Rl%D)6tIzKLP+>8x;uJ&izvgD3D`G;5AGFcu_4 z4jDH|Fo4Bpq#~RVX%8_&nA*t0R9Ckf$4geSKj(?(yVM=b%E;S`CIpS*KwS!VJ$2Lz z*S)0gv{PCjaO&e;bV-rt8C%NrF|_B;`~EJ6pVM4%I%34JC^pv72!POaq#o0pa8P;B zC^=8`$6|-({ZS3~rG^W7P_fyB=a=n4goK`7JW|BQENn~R?O)sU!p=NG-hPc5-Q-h8 zPLex{-_cS)n9{W$(X;W~n6ST%{JH2#6upgo&+31>3`{qEA3i*K;xZ|k274>0l7pX} z*)$0|xCei!zG@Qt-cKBZtph_>O#(BJ=FYRVQX@ZJni9ccnK4!kq7uq9u_jf<<2tUY z_m{;4j|=`|=SOxAH&1JB%L z2}%kGKvM)^PTIxz6p_;^SLdJeesQ0u_gb{+5Wi(~a~NkJ8fhQiT^QN_G$+QwblD!!(D|d4o*xxCZ;eU z3OFkHvm-qXi2Vf_YuIGrfpr*Z5{&Jt_+zy{$)c&I`Yc4YQT79rXINWZz=RP-BVW&#dQ-`Iqy5j;GOCm8Tbm~SlniPKei zW=7JlcOY=ryiGSV3vDypCt7DaC$G}vWz3{(YD)eoy6^!7*1-3&Ka!K#*Z=JBouK>O zH!$e!f#OBPz~@(O+oj=$DFJnH$v%uB*rm%?VEoQ?K=)s|0decV!$NQoz|@MdC#xv4 zNy+)=NDB8FG3or-8S}Q=%>T;#;lbYFu~8>Q(j6K)vP=Zj2%NwQ0~=d}%TF zGip&XG~3mdm1<&TqHCb_)XWM*2wOHv2cvoeQmcD?0L2K#EuWHy^&eOhKA?P)G$jtv z{hbme$l!K)a?;Wkdj2b-gwREIklN1r3#dZ}==RvFr12xahw|9^Z(Q_o)FBY+?Pe0@ z@$Y}uxsCyBN=HcGFWTAZd4+GY_+pI8`^W19iHhwwCik0= zcLu$qledT`(vx_%qR2V{eoFMpl4Hp5>A<%G@9wsMX#5&o8%zJ}n)s6n(S+;fx72JT zecB%yowd8i;F4v(*Km^u#HVD6$B)Tt6%`dn(<`;yzV|(FFrwY>Ft2|Ho;?KTcWoa} z7^dgRjt%kKm@{=u9t}*G%?<^QJrla8&c`pYf<9t@I{WE+nQp$x`h^fOGt~+~#HIRl zH5JZd@B$?`9zwb(epv$=^}455Jm#Tuh~4D~ipXHLU@$;rz%6MtxW@=K3M+5-GU(+P1C;twA9^ovp}e`uI{M{C$hVO|4~@zQ~2ytMHJ zTD;<3XITnP+fqNkUzBM}HFO0Eu$wY=QTEtX(V;KIWJDF8d6gRr`Nee!8szE}`WDm7 zB??p!Xg(1}cbUs886Ef{mp|;b#?c{frD-xaIe!Zy|F#=opr=<34ZQPMkm%VK1yMz!HMpbH zYDrvP*bKpuW=Fon288T_a>vG0JK79D$O#bl$q?-I4Ea3_CzwKe7;fIE#{5eWx0EJa z%Rl{WW6AP~TP!RaSD<2m$~l_p_YbjOlxJV)umlHubd3M@)$%gtuFhY>Jlt3AC|}N~ zYIHKeDi&C%J#c}pxo*CK?!UI6tK5TLMnFpMFPVYa6$x9!b(NSIR(EmWrNDavo0sCt zlCDHQP~kMGqkocA=G%>z?fDu`TdMgMW0Zx^|Ds^0zPky7B=YpBN3?j=k$tI^j-nC( z9}Im$6?q<>asNFk-+dX3l#QXV1P)JiKkT{O`vp?Qp_b(4=2S>_3gcIhTc)wXZ)7try(ZA$27y#N$wY?lZB_KFl-xOz5sE&WqC9Q1 z+rv>MhjRSeYguzaScEsv#$Qi^SAbdRJn=qT5t#ML${rmy9(5&D+GN@COe^b|F4i-A zD_XqK3*tf@szzQ^!RRl8ov&$4=p?adX;lQri%1uEhc~A$Nuq%lB@Zw3dndNdTDa2;M)yxbbFyth^^TV^=5uSP3p>@ft{bIQB!1H}TKm;VC$F5xL?Gp*4*$Zskq zuC>}*-81w{7rn?19A%#E26FpS%gtYO5=GuTLZ~ASCx9zUlvXP7D75f;*Mx)HzB{k` zK*wy;6730HZ-x3Ttg#1?xw`F@(^z+JSX2A#m~g}lA2Qe*c`Mih?+^l*g7c~C(R)gg z%@(%FxiRdLNS5R%*;pEYGjBTYgVV1)LK2EfKUUT7cAoB82MX3x1(x{~7lVNL_;@%+ z+*KO+K-Nr4z*i;Oc9;U!jC>=joMcp{soB?~Ea|RdjtxE&98-GHHeCIGn4?@zbHY;R z*1Gz4TKlC)V-`odi3fz3xHEc_BC$6bqS`U^A|CATrhxRz3Yu8M)r$F~5a|wXyCJ3Zx!sA= z7PRTkl}aht`xA?+IMC}!6cDzwd>UfIj&mJv*m4sZcs0T2-}ycW`}A<{Kfu2fIm8N; z{=(jOD@jpK7x)UP>TnM?eqI@nBmiA+w!I6zV~377?_DpW_QI^YJ43O|HqdeX?CsO}72L z&+mD@f8oB@+Uwfaz91#b#`zp(Dr_X+6I$xZV+nnSHF;n&^Ev2$Y2RV7ljC1I|D??e zBkQ-*n|ZMr9^0g8B0NmfT!S4PLaZpFpRo!4ISL5%joqC!PHsbKTGcC3+u!pAc2e?sKEE%>uyn^u-LYILtcb~axd>!Nu0 zgO;@qOMUA;os9uy;TUx#vNY9^g%e}@(RqgrMp)I!8DpTpzGBo`P+jOFM-x_dLFJ#O zRY}w|VP%W(!~WseqwkItuMec;zPv4p@`MpRUU5NCBBg7~5;Ves>|#cI3m zF_4um3(ZDn<_pJhk(I!z?M)&|LSJ-L&-l2OCm&;lQ0gMGBt4+WNNkqGWUKg?9^|X5 zT>Erp{olwS<&?JcTlggA1~(}b#l*vPNU(nIgFav; zU0OJ_nbMhJ6ue8xw$+$|>Ap9C4H0>LNRNe6UT>?yo16Y~*%`Gz0GN(7Gx!tsB*T83 zGWZA^<6kW+%RvQM*dP#!8#Y2ww5HjdSCNg)CMzR@ymc-yy8k;{m~?TRwAI+ZYq_D0 zDj@Mp4v&N#n0z22a+LBJ`eMV`YEMupPT_wop>{e#VoU#S{^XOUZtpaadk5SQH4N-D zp#wpWF7}6r?hI@ht660B4)kEq{R){D)CM;!IPFnQt)RT?9*YZmePV#b#7_U({7l+)05xV?bq+8&)T5$WQH`E z*ZA24l$ZC}!7C);Li@q6jaxUP()Gg>_Rl^V>m9FmiH_?`BTQJ&#Qjrq6)#A5lPKPn zi;Do`K~IkohV%RI6{DgjfmcA5b+DWgv{RI#G0D>beDKS1mr=##4I!-D6_)SqLGW1LpCUTEU ziq%t{DkLZ8z%6II;TIn-IM_kDZ?D;|>b;XmB|0Bz++8zyt%ziGq>&{~U1hwI01-U+ z0nv^^hGc~Yv|OMSu<@jn8-U;WVgo;xc=J@Y=^N={eZxbajvQpyjwpD;ZJ{#W3@Xs>KKxPH>QaZY25STSshkFFCUMs@ldk21?c`Uiqbs+2^g z04y!%nNAgd6peS`4C+PcS*%e3@-?+^ve7WFL9ctb<&o71^T+Jd{LI(iFGUVMu^Ru_ zxdAFT2*&qz{Xb3hO~)z8@q|8H(diCE8pxKY%xc|c^t+8j-!YDS3?q3^UpLgA=JJVh z%c{*gc8q$3zn<4)$!#)+rgLE{F4}2&6ybb~^MiK#gUJ>JlFhchcKuFHzV5T-e`Bw6 zSr)kOC47-|Jc5rZRJ4l%6DHps04BY+zO5cDm0n$GR3C_6OiT*$ag#e`%(ZHQ*}u=2 z1;m*7eDLL#i(eHi95Sho9#z_H=g^?KlM2arS-2SGzfsfdJl4Y)5nEcK@?8md>Sh$#J6W)@@%`)ro$Ye@?1iVJ|D{ji@2p4*u351_ zTBN;WUsZefB>-#9x#QtaP(S4RlWO_bclhs4?J|ii^3FMQYLR?+#`M$4u6aRa(e)}> z*?EQZTD5b-v0B3kPCkcpPNNu(bo5E%W9-KJ6(KzoSLKgsAjGT0G@pi6O~yIc893MW z9O!m#AYD=^brLv=gzOfV9J5a@gMCkDcc>)Q04!ZPzch1Dn>| zd|>>~!3Dk&GN-iPVw=JnUtaf>t1?S5bZDU+0cD1^`a?2Sp(N&mIqa1_W07$nc| z{2+Z6`)p1Xj>GFMpZ=bI#7UK0zg<4QLu`39<~J&jIe1vD>;-W z7WBV_V+l10cH>=sxhra&eTuu>!RY#mJXE_+sOcunPaqbc3-sDLr#E_uVWD7t@4uSc zgCjXT1+jE^kzBOD5%b&@-=D(GhOXW((h{io zvK}D*?)NYxYU@<=*^ygRatyL>!4 z6RqkfRE}-{7qJgRh$N8{iHfZs*Rs(EL7GmJ(|Yd|(gKf^T-PVSA-Cinxe{b|nbNG zCb{!K*ZWq7QRk=DAe!8dSFMd;eW7;v!K;6(d?6-Q?cIhK?u{K1=wX(;# z?ap~YXM9vvn>UT=C)0XQY@`gzbbRtFT>KsTkABt`MB~+L{B1jo74jIZ#A!R{x2hox z5A^C4z{vt3{`P!B0naQv%Gd_5ERGyDzMLMr-*x#pE5a);C;nJTa|eA=ji6Cy`HdcJ zjoM&>8gB~5j*d={8u&wRCXwbABkXrZUXzdB>1giG-bmz30i%7_SgUJ5@yR3Kqx3j$ zT~u=Ngt>0r;?V3o6H#eq9S?7N069T=U%Wr3lo|Pp;`})n+TidrPar50q_skIWF51D zE~L!-C%K$7#h7c8>lu})hN02COH`{?zp!E);nGa321y)m)INViYNTApM!GvXG2+u2p5+OH$C z@%WFyhIEcavlWao_c_itB-Nx#yO0-+ZW(G1di+)~cE03c=|}f=`%{!#sav@ib-Opg zkhe$J?@@lin^)qA1?sr{?ZCJCt~t%v_(!i*4ql;$tZO#?12xqXk*3NLFAg;|d1>uQ zaVRvXdRwjCq@j9~>?K~qal?)b$C% zS_h0ldBKe;%CzLInQ!_J4L$D1C1%cKZB4CP=O*#*gb&}H5HtrXYl5J5#~p}gynn!8 zfH1@@T_44|8048ygO<(LE6?lR9+YcfAKIsiMabvcX;n2lZx=8a_11-p&+9U$$tHMW zyw*SS@}=hL&~0(EiHW?$>18+a|KP{-*)3Pg33Rv#ppEGH?4JJoY14iE<7r2U??+Cd zI5=rW+8`9?^>*wHtLjwtLSJi{fXE_Pn~6nNX~9j2U*yK`XdFMYbYh-0m$z3DRlxbD z<Ty(;@q*i(!&~w!JS^tXj6um-fL}P3x=ji{L`ch`x8hg;WT~73u2tRm$H92; zS+mcAYEhSDb18+5qBEnF8(vb;hjA_eR9r&PgO2Zt0bDCgxYcx?8bH3&O*`-@fIdQf z*6hsB$S-}&O&G?5Y)U?F?R2djL1%aYJ60Y4d+(v9DE=;i4*p6GbjLAU@Exuen2*xI zELQIQPx-AcZ5lb!@rIg}+HD%*sXbz!lu_!R zE{5bAw8o%8vB6~E#=j49?JUWOs)`D{K&B-LLt+soWtjq^{T*)N|H2TiDMZ-p#QiPM z*<@o%`QfCLiE$g=*h5qG2q7lnd^qwsr4xgIzf6M}9vg#3;I!Hj@_WHf7SUXCJ%5JE zIdR{t#**TuZCL&eQzNIx!{)yw#9`J(=%Und6cw;q8YV8JGVs%fo`4^)I99n#JKW$L zz1CVE-BoFE+Kv&vfyR?XWd(xP0ha{w^LRlLwz2`OBXq>y;88+8>^g;|atXU>xI~QB z+a!D2Zpn3k?vk#yq@xAxPCJ4!Yx7fzIoxxw=Qa8Mxt!l>)jaLp$nA3822q7XXTC14 zl*8Z@Q$$DZX@TN!0xgaR?Qb@4@}~h$TT&mZ(JMy#cg{$SBJqpOQ%84tt#Q(tM1;wT zVFIQnF56|NosTNXnMZU+IC7~4UKSZ4rli_O2$BOTE4Y36m`W|{$^LSPkmo{8y)bzX zPY=GCe>FjC?YtUU-{Mfsf&?olXBDfEf57bSXR3gz4XF0j6!x&B!Wb4uEp6C^SQQUt zbCWl}eu_b@ZEkYM{Q^3*qr~sa8TtIe6Kylpb)5;Jx^MO6#5F#KLy%rl>stvN^%nqx z6;F0XIm%VCv7fg&#R7k}l;nkT;su%AQK~N`N(=F!B__+WdRxMfWsWHej_#)5?VOCe zbPTv&x4Rvk3=CKKUn05+ngQt?rub#&?RbW>+SR9L8gO2=Dr1|#4Xk~8&#P_ff-Zk> zCzp%Z1q5XL9xs#3dPn{o;LA-~ zSaSgLufg~uIE=)BvKCY9ACja&nLu}iq#y|BB>!(VD&n%RVzWPmh|RmGm*_ZPB`5|c zOEZzBi*FBZ`;^_PY_)25FBhM2+v(*N|A4F=y2aP{QNNv#Ro4BAv6f=CI$YD}@}z2WFM+vpAJfLTn{)Z%*=+~`H^b@JdhIZG{s6(*+domM}2HV5UI{neNoih+-J@8Ne%9Uas&8PHJvKAzI!3VIDV z1+$ISG<~WeFf&NdSq#;xArLQUP`2vaGS?4($wN}Z0;sG*u_M{6jEeqmNd6D4bpDIn z=|C>MaIR1HK!QCx^G>ec-%w1%57;_{gd1IZeuogl36W)o0l)+)A@pxdi}>zD)@=ZcU|PV3|? zt^9$NGygGB+^8Ird1KQ+sD(M|{EQJ=7;6St7qR&d?R4M3qPA+YvWfUXBFFq7zjC|% z)YEF!Y4mZb1!GSh1;fe~yaxkHym}sLJ%a|v40n$(Y&7=XZMfeIA5}m^P(UBRKA@j3 zkLKnTeY`y_fWh)cXT*ZO={cjaC9+aaQ?qFcWje2V1rm!b4=8ghpOa-L%biYzP;6%I z7pE|=&OSDs+M8%-9Ial40G!Z_T_I}*Ap8S_OyAJ;v3H$xJacxDYXzMvi|xrP@Eap^ z<|^ITkf{ytbZ^*m%dqZ~S>PB;Ry>NgbAba=5lEg)X*)}L)Ee%O3D|bRBi;{jgVZBF z#Q1OTSWw>#N-syBdbm!F@8Ho}SgnU6$@msMAe*dUZL+VX+w+}6=9mc$^t91r6RRJ- zOpX7;`;k-tc#7orqvPzdv*jTkAxtcD_E~&y=xy)GaV331w?KBAEDiZqHvam~*w!}m z@iM#Q?#Sxo@334l$m--Z2C(Q&PG!uWs9SzWN4DUyf*NY7sjX>fpo8wLU8DJYz)pE} zDp}Y!L!XUu-pTR*-y&2sJNx=QM`lkKU6C~#b%m!+$9NVH{;s!j$eWSQH}w@R)nnRT z$oc;6qz#lYhXxH>-k|**`Mi7b_Mip{BBAc?RbjC&%iR%jGZ0VDZlXQgk-8*P~!CcKW<^N%*U_Q z^55&u??{yZ%Ky$WcV5YKYhT%aa7kI^`+y9+b3+QB{ycx%4tz54y(?Dg6V4aw>8W{RKxLahu*k)R_P<*?+beu zmuLv{G@m+vC(8L0JZS1xrYv|bkjJLuZhAv6WSB^>(jmm^b^E&MO~#uj3B_i3JLB>Ho(P$N zq8290D8P5xuQ`ttkAMB%@O z7x<*_1fEBB&F{L7Asa^OmT}cEX2>cq7%?vyNv-XvS!NJLzc1 z0f#HZLBF;?wj)nob<^Srx1|nEGq>;hKHN8wJUU!GGEoROm0&=ra)UO$5BC@)vKG8A ze;4j2ZrJV%6ZoaQHt(eMpr3^+TtqjdhkP~$aGBM3RCC&t`XXKAV0wai;07b3Gy&o{ zQll-Q75K?%Rt=2#w#ori~X_K!2ej?#`?UmK7-ZNn!FrAS0#A7ZvTK`gKSL=4b#06G5zME zZ_cODaV1w2j1IBo)ll}DxVSY;%yJx9spj%Oxc|4uyp`tH|5NE)>#akQXsdvLLeo35 zw?zC<$j&^N*Gz!uLk*~7Sg?NUL!d^X8U#NL@D_ff6*|y>{x0VjPZx<}HeL<6mYmKZ zOVzLy;m=fCtx|Y7@3-wHq~Xm{%_=OuMxWXiJFK3pgZit8JNIpX7ZP1om;zEZtA=i2 z_!oI4u6oisEQh^EK0aS+d}m$?gtq9aC(nCJV{OpK*zR0VkMzyH(DvG0jAX2zeL+bFXoGzPk|3_9%R%zj0 zTbrY_%tSof=0%qJu8NX92kD*1F!|(WC#X4ELsLmgE<`LzLH$JTj|B};;AJsxu_a}t zx2vmYvhmf{r2K8BoBJo23KWS%zA?x(mvU@1Wt(hDg3jY`a5N7w@4vL4WmQqSTkYg zv%fgjKDM(_G=wsORc8gtgP}tUiK%SYD)z5H_zEWD4zNQT_jW1srz$n0Bo_hY7Puf7 z4fcA0ajZDMWtxrPo4jtjb70-9(b<{RmUA?>nk<%5@au2- zSTi<7Bw=_mhGe*la_?wiGKy}p5t{3>gBRi68#4NdG(y<8vezn64~m2f{HoMa9^`n> z1a;rPTPIAla2Aaw)>VmM6{EBcN+Y=H{(K$T##L1Vn4mZo=_$(w_8*)gcYa4F*CAo< zd)E?4se5j19Sw8&_NpTiTNwaswPtW+ zsO{oeVNGzMQn#Dp{kooYKJ~zwR-@0PTk}@|eT5|<5s~%$Vic4Bsv*FpSyv`hmIbhc zi#Fh7+ubD6x^?GRL8r2{YHV3gE6hAS3NkN6o6ARL2?9g*&uyp9x=AEsTa}V(kpoJm zjGKl?feV{EeO%8^2-!)w$dlHml3^n3K4>=rhJXYUme>E3H7I;z=Zy02>~fEDUBg0V^YeT> ztesDK^4AC9BsN53PIvo}B-+6;!N7M_aN_-8w{t(+^Qi=B;r&T3Z*$E=^bFy|?fo@H zSb)jgE$`KHgg(LAd2lW)yN!&bg*agiwC9mUjHjCSkMsMRk0eQiK6mo7x<3)|r}yW0 z?cAHt=Qv{_(ZmQDX*j2XpqH`W`}Y)bk{#cBQm)81b(pvZJ6OuBqs(^Bp;09z_8}qM zYx%Nz6@pVHcZXDQS2nKTB%> zi0P5XVYAWf#u+6?W#NfD(?PK5_GF!{c(c$uT?^}1&2Dd8{U(%C9DYDf@+rya4rk{8 z-e#az{K$~L4I_GUSgb187SBrF7l}bAZV@r+)4t)uisagATe&c~4xSGIit-AW+HKKq0SHZdij-QuP zZ+{wqk9Df z&>5tONe=@QU}PRNeSK19?MBJAyOUENh4R^M!i?Q}mAf`4XQul01fH7j4|_YAErfEv zJ&@rYoNuTL20A;8D^v_zzmvxPR_sX_NBvKHK+=|ZV~ciqT2{d(sN%<_LlsE>JhoS{ zcBJ|Oq-}y$S@})4X6ySO1XB0i(IN?~Ih7sDxEiLo&&Nl}+HUgbI}HMXs~)^O_C7O)&fF$pE7~mti=v` zA6_eM*j4*i*RqIcE%GIE)v0o<->G-GzN`3F`lk(sQNzj>Csd@;sUm{Y59Yq5;R^qC z%U$cImK)+kErmlRNrE@M@10O(C1=5014457ys=i-RLfP+i(`yD_a{L2{iV02g+&n% zn~gqOhVdsQ+48NIwPG?tdZ{o`CDMZ3(Z103iFM>_{Qdxqne@RL{&VtW> zqOe3G`wMuq5Pfa{1b2SCsBpL))9sk*ZzM($?GIXq$3Q;A=ICN@hkDh8|8*Q#f%QjF zt6(s~gqP0zU4Nsp-s*&!%j=P)n9n0OtQsxiB$`Jv5WjMk>_PTlT4K;E`J+=@|!`#8h*m@R3jY0deHmqI($+3k_cxnwpV8 zBXo{sZXovz##Gad@{iC5W2`VLZeV_a5Ps_JE3Fp6K*0-;Iyt_QJ4_gaY*~=#3j5h$a@|1i_-vLi_x76j zFF)wf=kSSsojIvSeWf)VD*XW0`_|(usWYQl!o5=#&O&cl*w(#Ou+< zYkujEiJI%*&ZyZIhg|&~Fo+SGlIEhqDzug+J$V8)P5XHba+ixA(wJKj?r~;Xg{8BCze(pmdwVPB=uuH0s>V1o-&HW`bx~=QfpRtc}jH@7WzHeweLtOL*U~j9~Oph zoaOQwzPtUAj|xVY*QN!YHpRGx+b)*k5aSvMGbT$Y@xP_O07O^Mw*#6CJLRba;c5jxEO=k@ zP+159^3I#(nvVJyo7xOZ?~e(mW)zcS5&6h5dBN&5X+l}mFq*AQDP2```PxpZ6AY(?qe;I|-;^ai;U; zk}FA4EABrogxj7S#y-jtuq>1_y2VsO2#LBsShzIy9vl37oNGsHVsF1^*K|7nJ|op> z-WsGDP%{j~2>&y~^FrrTSr>(WjkoiS58m8HfFjN>4zp2Wudf?t|47mv*ud(KQfBSz ziz@fm@8r6F&^^?`0=l>lXFcY>JOUS(H*eB2_=Gn_J@Q~{md(xYrYwCec}UY-tN3Xb z&ey^$9RKilam2L+-8PyJd;sg2>0?|bo8^_a@QOYadRTevs5ij8ucf|A-mye{_<@7> zzOR!qdC5~XIcJ^N)tXy~DU1QuC7NLwE^aoJx-leUijO}-w9@XhLHlo!Hlv(I>i>b6 zR}!OFL`IxgU5qApg&A&5CfMkfF_Z~KWW=`4L-R%W)^+fq^=ym3aBJW|*y z-4m>3Cv|U7iH!+U}b;J ziZl6rAY?z-SHw8xhC`f5VJ9t`KDy&?xqkwqlwJL`2g5~l&~Mi%2<0KCsMpPXOw1;$ z8N!Qwnc?bI!-53{`h0#D*8j~~<80z%ll~P{%RAp>0{)Bu3LL$r6Fibf{A8=@C6znw zRlo+l5B{~Y!wnr&JNXH(ClDwg&_-4;h&n%A?)&>22i>XP%x(CE8^Od8TuI?+G$kXm zL0R+~9)4cd9vr6|ML0(71|<$HvVfeqiS$tU#p&6*dATPb1P=8ImW>cuFc=oYvJt!j zAl=k1^MK7AoiQjmQp!yc#vHf%{_+p)AuA~a66KKm>8dZ&ZKV z`&R7fQVP{Koqa*l8FlqZ;%^}%Y#4h9V;ic4eNWMhhZk*duKp3~UGA^kIw$-WTb&6l z4e5qFlEm8ghUsa6gxU^<5k0R13xeR53Kl3yCdK`tM)zY7-lrf_!R#Fe(%N8$LQjW+ z|GGcU;EIb>YD3p71qr@L!oGg_V;Gh>s1o{{D4R=}6?V&T04({I zad66~gJ+YHO=bPXSukZ4WB^A48Iyx}*1?%th;CJDvgA|C${{utfMMd zgKMr|FXVF&&;y#9ng>MlL>b?@l$*sSbZkf{|2QSHIE~&u44U5~wXwj5r?5sM@BH6- zyMBs;mX+)oX5YEQ%a^oo@_i#xowU;=SNL}QFCtVkWv*baVk==@a`bqio@4q|!=M@a z2##e|MY|q;m8xe=TVU?m0Jd(2f2d`ASN5_N^8(Dar@tr3mdgfNPYwP_{kZ3wC zcxq+}HabOs7D-zR%rO|2odT>RbmbFL%vH`iPXmOe>6Jl`IT=_E%ruSfP_O`5; zKXwg0$;4Lzxg($7uJ`(_P_JFg?HRN|CmHV?-k#01a_U~I*LwV4??{!?PE`-WC@6vS zMkS^yN16BW=f*^A8pG9DQDru!uAxR04JhyLEw0q(?^^@OE;~J~2J7qrjUFs9>f0eZ zjhf&5bK&L==InP2buW!cA=-#wQ@&MU$;OWyxO$tXmX`i6y}290k~qfUGwdSCeSi;l z6xXOkW>)P@#FG+@<(ho4(Fz!P7OPc00VIT_Q+h*x$&0D{`4i}@V)lngRlY z&0@AloT)er6z&M%pe^hSIPGXAtnJvwTEP1aN={WKd>`!3&ZrTz6iR~jite?@0zLi< zZdM-ppGg4Q@6!z}(Iz`7)(0QKYi?h5VPK{9>W!qT0E^tDv8c@|NW- zJ@ORolokU9pipkNN$KzQki=hY-dee!92n_P*50T%*f{^bANp%J5?P|584e|9CEBeTYp z#0`9_4**&g;{n+wp2oRXaHmPdW0nfDQE^zVrUJ zEiYTG>ar+Br2UHugdeq=9reL3j^avXWfJ$KW**#F*CiVCo>n_IdBhw|=wM^zc7uHj z_v90n1C;y$v{oO`8)hhA$cC^1=m4Tin+W=fAYw})$2}wZE$M}&*>NdamppSBz=}G` z_dd!e+?$b4Jx|>R=})@7dOP^od3CFI(4s!6h8@evzi~Gepp5-i;^)U!aogt0ZLd)8rS{|pST4m1Tcw0}>#;jf#?y5}> zmpWj1cYsDP%-bQg5=a+;S6tu=8-{5)Xs|Q?ldtcWSO~cT{c#c)$mXbCp+)MEo_PwU zOe2iZm>fo?>*ok<$s_2wy`^{mSjSL$27_X%)J0gGkpOO&GSE))vUt9(j4O7??V4%) zd(Ea>l(Q5ft=lb1=4O=jPY!qXr(f$AV2#xaeEUvfUVZY#g&FB}5Ny{e8@DD2DqKZ+ zO<&=mj|jQFl#;kY=fC!f=@M*HDMpApI$Iv}|Gz9@gJR+IwdNgWFiqNj|H&+TfNPv3!fipuQ_|Mr2?Qrt)^QIsj>tIO88Wl@8t*o~UB#sSL>L8c4m|P#>%=uxT zIt&y6Rf><1#yJ*)Nwe@#4f9-W(5uq%`z>9q9g?$##90y|1v(1}m+f&ngf}20SEY@* zSvFz@N_8B-A_9^`#A9)jjJY(YpgeKK5nf&URMZ)$^LPbpM=|th=w@F49fa;@#oQ?( z5XLs&$sV%3Io8?o()=^1U?pk;_V4b!`^!)RuSImfQypJ^(CX^btHvD4FLD_&rXF8z zBp|Xt>E*@=$(t3?3KCmxk5F5eIL_e&esEcv`=%zp?I=(*iAepkq7+a-|Eyho0%Hv? zw8B$x^Cp+DURkADES#+Abbv9~Z1FbUO3T-ku|4dG>_ZTR0KNcSyxd!se;M9EQgmN^ z`JP4EC7a5c63e164%Zw<<&`XL#Ok*efhTt+HF@%!Vvz}iTbc~o9X((N-M??rfjMtl z`-0cd%KBUw_w@<>NFUD$fh1eLXZ#k=+AQdL28KnLG}H4zUqwQt%t0r2U507+iTP%g zIO9WTllM~Xari!9?@HStWaKi~Wad}SN!zr1wdQDzipkxZ2(F8ChMhH#sqqb%BFI z_;4b3hbHZfv7X7l8rof8U>Iw#Z^v}q^J@|?s+>G{sCG(MVRZ;!NLURVxOsE^b~1D~ zGdIyJml}R2$QE!F@N5DrW1$hIJvpoT0o?$U^U{u=`0iZ`1zl)Iep4R$DCkNwpjAJY z$nR{f7S zN5Jc|&~knC?2Z0DI`MWVb51Xc5ac$n$Ctygi_Q)1@2j+~vgy`44o`FQta1ZDW5?XR zGcEy%@Bt6}{I;}+Olzp zMBJ~ruqTLMi{Vl5DkI#|5inGlWiDw@(-FFSq`sp;Qq0WEU&%+c<_8rMhV3#)x^f&Q z*fRTvw#!Qggt5Mk?!Ob&oHu?^4%l4U?MN~Tqrgi%UiYW&)b+ocg(ODr^XV3*5i!E? z1_xe?bTikKGrxtN!gl0>?rOgzZfKZ{c&CDum+FcC+C6`u?kMCxA4DD>Vve5Bd<_^C z{FM!%^WUVD5gS`P>LwX?2 zou1kOTBw}tWXL{NK3ru!%w~ZxWlBCquS%x)Cb}{GBR$ zt@3ej$#l(3eO`I}zYPp8x3JIzRy4CsU8=oDw{Q&sz=PmoN=^{0{KLAEq1`lJxx~uf zHm2W4tS{2SZWf+&80UfxYMF3y$9T^yTDyw3C_FkPOI-f?@s{A4lNMW_WcB_Yi_LS~ zVP?m}@^b3p>?W{;$!D+#Rq$2tm0swR!hP?MX1r4KyXOA>9)fmCZ|#7^?zs*A8kuRBgSP5Q*a1qof4$)VG6w%#n6$#CNd#fCWJiL6 zsN((S+<}dX@mPkW-v8PCVjN!nY#zW{1B{r1tySlq$(Z}=u8b!m>lS)vpSO)YQEmQo z^-ya__(McsjWM=Vs}7MGi`PdKukwsr9Zz!p=^qo0=n1}PRJG|iDwMKucZ{%2^xECn z54(wqrVJ0pm{Da#8?t!@{ML;oENXHZFNl9MsBl+3>hDyvdw=Z~dL`s24hjU=mLMYJ z3|#a}{U(SWxOgY-r`y61&-P$B&fx8XcSmSN;#p&fwT5Gso(23eeyz*3DZnCkL6Ljnnaf4P)794bZKdB1GZ%9@Y<+!6`+TbQH*yDS4i^7hY?cIpUd z|40N!b25BnRN#mD?^tdouV}41^0?niA&DTrpk80rG1Q+)$?Nb|01-NvrQmFoVCYMV(+!SYHjt)uO` zG*-h{PW5i1t4&<;31Nw;%lgE1w*RG@5t=7PL6f45tS>SzE1#^;$Ka0K8SvdTSvF$B ziu9Bx4_dFdjSYqQsm8F7s^?6wzjuE{@EzhccP1zvW8aOvH;9>PpLmIk_6(t*1J+t< zS;@SYT)X=5tlEsz8Zr?~$;fYlq&k0$s6xjwf^^BKX4X^f8vBZM&ip@O!_wrk7L&$P z@axqAQP0j}f~+Ss8I$J5(!ey?fXE;!L{Wx5-t*v*GAO+QEqD$uEbr{51H8DDfp_O^ zT+Le58g!LoZ&cf<`lYQs&^IdUL!30wNXNqoizx%H!jOu1POAdK`}BP{<$pmM zFk^+`^|%6@UQnnObg0yx+~UQ~9N9DKL z+3*q!qKxTT-?hTEag$1om?keerACqf?Todn&*>uf_eBj^wv0dQ4(;(VRgKB& z2Q~Pn5&B$Z{Yb&lRiX8qF-<)xC3{Ke5QNv^?hKZsG9mmd3EH6f^r$pt04qpZO)yXO z68nL=5#-M}%s8xY+YpzA%^P^hD!|(;)c|qd5SzFt0}}>N=hF;z^>_FfLiOh==_aT8 zPWyyb`P#uP^y6?o1lQ~xF0G)S)c0c^<`qfkdFy_NO=(tktBmieL(NreL=C}&w`5|x z#Y4k$269&t3pyKU`z*jeL%reHj0c;%#qht+H^c947S@ktw6{Wz`zeQ|%27_Fs@t!p zg(_h*m5Au5198wK%PDtE@QI0*SZbG+JY}qWF z0oZclT{OJHFhhh8BM zS_Avgdt$7i7%+-$FcqS`SdsuSdQ`o{<^T>_Us#(-1_C0YlEFyS1=4R;nvRZF#6JD{ zu;yxhSHB||f)z}H z^s7S1FmP9$&rL>+%JfR})Dvvo$k6?LX^S&X<&5@gF4khtVBEDfKX0AE~vye<`l3VJ$qi)fytDLHpme@HR~ zzvN}uz8Ul~AD_+BDB(IrQgzCpLZ=hLpyC5=XtQ9S1C;mWuV)4}o9Ev$&1lyH9SQ~w zNN;P?o>|^Ld}mY(o}gN!Mz1YEq0MAnME5J84rf}x8q(kw#CJt`d3e8wDC=N(mRQ_- zc?lef^b5+dVy&IdHHX$MNwdPC$*}X$)&Dp&JuPEumpFRtkB*_Py2S$D^qxq55*l|^eZ`Ovt@Swrk)YMMIpoznB8z}p5VsCCCE6#Qi~>1nQ4kqJ7u^tGBYi#QVJI` zJ8-wS97U-q9?<~lCox`T-o&xq0ULB>42L|sgsO92huEJtRzqR z^0rN=pL64Ty?;5S;wzQ6B>qIhtm1gx6-)U4So#KrN}#ptY}+*%C)=8A+qP{@wrjF&yP0g;HQ79!@ZI;j z_dl$?@T_O=y?7gVW0&TxWplJifAZ^LnYJ$J4<_~-T+cKf7cejq!T8cDKIiJtXR#nx zYPxx=p53hr7^2ix@vT{)z$B5HBHO<5U9}e-`h3FIxNNSvj4ESFdd4nF3fO^7tr~iw z_%Cnd8s~n(QC+)p?^m)Gfk#QIYoP3TA~M_l5`*BtQ*@|pkY2Q%*ovq$nsLR$SvWpZ z1xIiH=}W#Od~6&nB&|)t?!#$Wj+0rxklb^F##N?MqxQ$4`ji2W0ZwiDxGJ*grp=Np zz9B(Kgb~?qaSQ=fgt`BLo}IO3*;JmJaGeM22bBHQFRbmvh*wC@hNXgeb)|Ftfk#1m z6J>XbX68Y%L5m_~>&wLC@{00u2vP~8D6p&psGYokht1$l;d$Qv$65Y!No1LtN5Jd9 zNOt%8^|kYMseXg{f=okD&;|&VMQ-s5fF^|Q@~KduV>9Wux3aS0xf#ENCm9HZhyhoJ zCOz2P$RKhx$0V%l{SvhP4LsPBn6edZWZ?-RYDUUg(6%Wb%YE5dIbo=wuc7bj;v#?P zJ^js0?x>k@ou7Sk&coip&fv7&>2f6LzX$5O<-PSuf4SL~#FiwHLb*;g+j%?<)CEXc zTAgNV0LF*SqUWT#bWMCTX@c}G^A~jME5VHGI9TM{zys#`tJyr71PK`2T34Co&(2sF z*+IydmjHIuUyWH=NH{0F<1=QMsmm$ksUpEv_}ACoE=P!d^;HCm1#4pKK-2V&rJ!3u zXXR3}pLJN$iVo36i2QkLS-b)7(Tp7eUT^jJK?f2h@1>~-kZZR-4=UA%ZjX~F&|i$l z7+&27Ne;+#0bwRL@e-tvdyQZ;!PG5{j06NEWqC-8dXH6K=3*s#FE_|X>HuEO_? z&t=D*qxUSn1KrJJ@lPeUYZhhMHE``B_sT!D(wRCLs=UqlG|kUQ8Q9d0PEfa4hBno46b;=| zmV<|w?>`2k%wY^@3PL5OaUIa<_eTMHiF?fd{S{(0`@6{PbavtCiNm1BldaQBrSFuPyK7Tw!%ovq zd}+em=k9C&>o13!@(VnW-{C~Xn|F@th>)}NCkp>HPRkVI``o~*3qg&i^;kV)oXceE z>HMdAM2PIVep&R4-uXv%rnSFoMXN+DGV(a*nnNAN$NQlE922LFd1YepKZG!{sH*9I z_|mC8V}oXU^E^YAXa$aqH`M{+Lfpi3-scZ~sLOK0>evE(dq0&(v{5@R}5!T5Dw0VAs)EM!-%WYs}}r72NHua9DTm#Elw8O@V{;bCvmN} z)}aJ_KEOC}>s8ZrMjL02L~H6^O^-G8+#H)?n#hyX+^B-+F>lb zoA&A%obu96QzQ!XKOZ=}+1*lK!Z5+k|HfKuK_y%wAA18=HxYx{Kg13)(_u(xtJeOj zzhTJmY7VDGMkYbdrvj&E-4y{oHEobTp)1hju+bGkPC}~j5&4ghq$nS< z_L;K9nZNxS4Q)+dr<9smwVoNUcr{H$-OtCtrdft-#4DwxCAVy-S9qW*eI#x{u|Gi745EzstF3zVJJR%Zs z&d10!y)X+o=H&BLKdoQ1Hd~;&--WSsL~~PdU@L;?Mr>0BTSL^E`jm|g$fS2oG`)r{ zj1@4>(s-1_x`U`|X_pP4`17EXc(XBtFa(f@H@T>XS%#2{88K{|W&3DWSIh*t7}_2B z$-0tuD$;wAT=M64j%#9p*n}h|2B4>{ZiK;fI+Sr9?dDn*m~es#_X@?lC%n4*mt=3$ zvZP3S{0R^L@rDsPm_ZrO?WtL;wyZRpt%-qKCrumk?7-`p3SzP?k%IwLQR~N3&f1bj zxXrYnamL502O%hz13d5>JqT)A+dHL^cjxYw;lg5ITDXZVD4_>{!_s0x8Od6~#a6Hv z(a{ZAyizVHEfEly=S6Y9xh+|Y1bkv}vZA5JB_dAPzW&-{j+@%p83iPesti&)N<$BK0{Tr~^PR zcLpYdXDG?7X^t}>FKs@ja(KNXa(KRd0=Su%LazU)-;!Plf>~Y*4CI2vb&XIv5LB;= z#o?07FtOKR)0xsCq*|?sbum{B)v@xl|Ag;xr7*dh-*l-%fACv9X$wptxRRMId8D~w zp!IgY6w(*F<|+JYV(btMGO{Q)5RlkH51Rz{eJ!C$+88Ss5IZ9v!8P7s7ZH^ZZJL@B zzi}SXLRCo4)SJS3^w?L5i&Z*Ha7cB3h_IrwuWi&-PTm#=fSCwKh!rsn>>XY}Xy|DE zYTfRey8Sf#(-+HZJfF$Rm@AIA115X>)#Z8}*Q$hC%7xqRTH;;_6gFK{et|i(Q^|E4*2>9%#s)WV*35Vsw*Pwrw4U1|t zo(p5bpB{#APfP2og6fXHsRsna%yMO0?M}I3I-E?ndM3#1MIJu>6&tAk&MIV>vU_Su z3`%(U>_Ua#*VVU+{&}@w6{;RP2*e|u6@ieR2jsQ)-0&k-o_R?d{abiAWP3(N**tw@ zN94A|yWD(4v4h)2uq3AE^;duyF54tyd^~-?OM7`;N&E4{spc4e+eaSO(Eomo=xrEq zt|2qA&!2R|?;X{ykZ?a?#{yTYlA72dGzefxglA;Ux}_dN*B1H*MjB*h6O!Xr!=c&` z^P40`K^0e1R*s?9xK=f@AplIgw;a((^@~`;oS~(qcmA=Gi*Ir;DasI*VnC(T&TP&; zG!DO&Bb|~cHfx5s)Gw9@>tC`I$zF=`3HLSTW-5vIlyjaiAd-bb1>q651`AOn>aX)L zP0>;4DYk?!IdG>FaYJeXz7+&@lr3Z|0?t=k!r|P0;gQy~hZgYZCb3&k6me>}7b8vvB0)oFFn|r&` zectFy*3_CCkxtc>BHq~ZZG;=NCwlr=1C4UXmQLR&nRWQT2E*cXO)Xyx3MNCIsaW*m z1Baq8Q~@#67n{*N{sJD+wfecmagm>L4*kp7_}?XS{-OC_`=GOphJI=O4uyFVmU$CX)Q0KT3M!1^V=FgrYO`rkga@zqWCb03%y!tETPRuRr`+dL5h!)&)$ZaTj*c|uoM{yZ)ZJS5K_m~vL=Y7RhQ zVl4k82$A)rXbn z^r87&4?D+8EwrguBr8=-Gwg0Zm&e9j?#5LnnDYn-%MTVr7DV3)ORv6U#QbI#Sd+qjly03Nmjbj@Gvx7Uwa zrGJ7T!jSD*d8##Jl|AvdANq!3c~A|)^(}Z7(QBot##0PM(-TO9hX7{J8Kmh4L80_r<>Ss;}CG=)771Wp3tWo~*!52D)JPJ3azcSQEoatEpX}VF^W%iXRFwTGL z8a8D@aE~ESYm6DbY{vP$0^e7T{>LT7cPZcYX&PBT!Ma`rt+qG6QhD849M(!QBpsYo zQw&xSln4W7AI>J3;beI*T?2WpV%pNG zlE`E#{0BPu#(3Rjof_{EY~aAfW;rSbpTtsr*eNF!ExgWzww=e{9FF@e*+e}5mr54A z*jRwq>rLV$C;(H_@Y3GKMzVdhhnAYS(c5t=cL^qV(4dHKz|C%7V}Op|?=?s`CyP8c znkJ7+O&{|k&AMwY1OWLv2y`5>zUZ`ttDR4RbT$M_T2i)wZ~IrmvU~Gs+D*%vmQShf zU5GEh@)rqze|mN^^J4uU)bUT{1{OH;U(V^-HxOzn*p^ThF5wpkg$#8Um4mJhb@pq4 zTJ+}&3sB#+T5{R8-w4mBwqIv|omE^Bn)XHE#XI`M+*+o{(ao|~#>Pk~+iAKHu1JX# zg{(%pYX=*3`$WYp%d{$;jFWIOHFZL7tdy-BHr`wgj$=P0GHvF*#NBJW4@Pj$FFt;6 zEBSRemQ36$)O!1=PGkHiSj!AYH;9v1^?)nHGj2qSI%brRD~-TkOe8{--)*0slab&@ z(CA*JMmb&VCY~Ti2?eh%@hKpNS+0xld63F>V0@EVX~<9R=^AB2JoXr5X@=-<@;EMJ zNfdZ^!x@S@|FTj6(DCwXdKR_h zN(9fc@`*xog@AO;XCNA~!$WJ=TC;XF)klCQf8?Pw;~GW+OOu@uQK-JppY=n_w@<0D z%pf)_9Yn*Su%`NTy$SGPZU8XkN^c}U=f_CqLyX9Fi6siY)AnsZVA4HY+<~>cjZ-92 z&Vj!b4?=75g2mCgg8zXlzi(SJ#3b{f`HXSW7`mdbzNK{3L~`SQdG<8E{~L`7p}cpu z|Jvt$!Y7x&NPtgVW|2YdMZ`0Dt5NPXV3tI6lIL1i%cOxfm}YHk9i>>%GffkiT+W3& zKlzNfOdmI&zOmHmgUM`U;9rSoWsH7`Bzj(K?H z-c$73>Hhw2?6hsU@=eA4%x61~wH>oLSP9&rYizw?mt;w*URkv^((GsJAk+wr{2qHr z71GiAS>fT*6|XUjhqXawTKpja`^p)i;o;@^mpCXQy);W;0k&Z|7Z2;lc5v>{0F)mSX5ljTE@T1 zf`P^xUS&#KhK8>nQ|?LZwC!XDixK@(RX-T4mSK%0;fWb*wd!%l zERPAJuOv&qH9-Uzg)o+bEuxyWHr|D|q-VGeug8(0HoD8BhcTxEj2KYkSNhSs)ypD;_(7-WbhS|)PU0rnQe&zb5#Y1xT2=RZI z7f2=2e4X<0j+PtUo?DNv=So4Ecq+#tB&T*WiFpnwPQ0G^ED?<{bbrBusk*#IjL>2y z3zO9E-K>f;}+Vc=lFzt{vgQJztCK2 zk{u!U07vp%F+vJfbhV{D8k5kyhO=CtGVKY$FrJ%GcC3wcxVw=&<3-vN2`E@kIkLF= z_X_V{hb1|wp#>J^8JUFSvPYi)jstGR`U5dnh8&sSl5NnO@Dh?ZEwvtk4IbKN&cYQC znh$%eo|FRl_USk9>UZ8lH(0Bns5p6aKSr840KU)r$A%?#T4TB2O{njbzo!rYko<;Avi5@VkGjR|(*&iF0}e!9FfwIaR}7x^8^C3 zndd2#`lM#3>JA@9@CtwIYvxj zOLCOIJ2adCKI3TaFs(w4{7>(PwP9f#f;Ii{(@m1*V3Tl)&7>>r=w`QtLc%7i7%^aCN29;AD1Ok@_L{EXk9MN>y85 zm`BMBlN{0Vo5B&kO#Nuj{{WEL^Gq`_lUXqH5^lIX?G>)f$;HFT*oq;r?JRu1L3>Jj z*Wh=-#mEAKOkx?Icag&K^)*Njn0WyxU`HddxDf{70s$4O9EUL3vpuhl%;QwQb8?FL zqjN(>Mk1&Pb~qH>)*9xI*E^5FA+QV$>=()yE$oNBBY;h z?C!^BqI`kQHI3_m%0)4&`O1E6qVbwqSI!X0s$0`so^L>U_JF3%p>CkU+|dAg&h#!&9<2IDb`? z#vDT#MHv#jwzh9oFJX^_dyXBsFk|jX`P%k7{SgUWmzEC~HYIF?&vEit2jw9Y6d!+#JDPc@am3j;eZATc4+{%>@`V6~^8Bju*t_p{plJ0l4K7y_Qeu!pbZ6Bs%bsFy zjUF=j9;DRJo`fd*YbSR?f4!cgd6s~3ojGu;x5Xeir6pCZ9<8T(-fwq`74T>`r`oe+ zIlpR7?MlO`b(;O7c4_(?*T(kLkk8E_e-uCKPuymQ0Q+xo!wS}Yc<6C=LIz!p>B71N zQ=cByb`Z8yaJvU3H09;va&aYNU|{DMF0K}ydO~B`Hu^8NJ7P8Lrr}=sYtOKct=|Lq zmPyGhIIrT5?ByYT`uQxR(vI5`G!kgDE`SmpDPzo!T5FJ6;<*WVUlTEfgS zSW8NPBk`Qn+?R_PDK;7=q*OkC9~XxS8dJxW;!J0H%rBaU)+~LD!%fAt7KJBV3!e2Y z*ehCM|LGZoT{fKP88uwu3KF)&^`XPr$nMBkFp5t8`?H~FDjPz#>ihhvL4lIBC6rCx*cknMmnR3pylav}T(8YA0u(^H`Q#vsfUe<0Pg z?1(=|>!9Kx9)Y*t97K|4oa+BTTNjs}&15#hkwgzhXXDTX4>fTAtZKnL-T@PXdVuF{ z*X-_@YaSw87|G_1(W+lKI6__cc*cKV2ylNISLq^=Gt@#_0@wVf$;ZLLN10WwI=-Hc zHr>Wa>U4S|I8pC)yDhIYaKuwLZBSOJZRLEv6w%_=8n6bIp3U}gRU!1J`3o+O*DE@- zD9_#AOW5JWOGxu~IrtASkv=H4_vKnY7F#;p^J(a;3IsUjXfh8-z6yVZ`!iuV_#ZqP6;X`c zWRmoml^m%vl`VNybd6_vi1K;J8|f9*rT#%8(Rw3bkSSwa2k4uBme^?AhN0S2{8pIO zz2X0=Wb8HN3$jVLh&#a1;^$CiK$u7H?@PIdt0l)TUtxk!jivU+Jv7wOvr|dd8FU?T z+?Qr74KjJ8R@^ihPzIK-)_{H}tS)hFd3pHq}RN_LDx4d z#Om`l6m!(|1DEm7B$>GT8OAMzhrrIRL5zNMAlaf&pV*>^pqq5RZkD)k4UzFf__ZS_ z8HIFH6g8hmTCc;txU5WLvne2Dl|aFU)RP&o>ZJ#@8tLoruTRoA?*fh2NCKe^MGK`3 zrTiCin!MCTAhH-?f{wEtRxr^C7mTV=g=h_h4mLCP5AJ-tKf`abXWXN@f$!swhzkEL)+DM?pnELxAww zv#lrdT-_@G_w20y4BbwgRXn?BqsqzJqy$FOk6{=byL}N3yyre?eXSZ**zWHfZc9G( z47{=e`=$ZLMn)Qs(ec-rQ65FwV1<^F7?KApcfa`1!iK~>;Xd$zfs!VA%Lj9#M^K2z zSe%5d9Ktjid?uy4|3R_L{VN?AhP-KqL|_z0${-f35~FSSTR1fKErTgOvE`0CJMcww zA@|OU9Wi$eGldD$0xPC>p7KAz-`l_?_g>}~C!||dL57_3EQ+_|<#d8zX4nx8Gb@H- ztS}oV!8!(GWvFzlB-jmQ75{36CSK*rqU6cty6cQHl&KmfU#k6D^dR@V$ZFM32jy@N z8KGPcvir957@Ae=Rfj*-X{p!(Tz{bAx5e_)ez;LsAwD$9k$JfiW+}T{;t}=)*!8em zF=HY{4ZMw5*=)7LzqjpuAhqQF_yiWbp?yv^1jQr}?}}Q@8ku#ukvin#l?e85pOP&M zv;P~%?h=XdydtkBRi}nT8y131pP$VlWMyG--uj#~>`}~A3P`;PI)rTXza}^6Y?j`7 zy}?kDJHCP*wcqvDrvy4i1?zCHIT5TfCJK!Q-~UBF?{-VTpL@h*T6jBS$qPKu;R|XP zLuFmhvuNb{1K3>A>KFZw`7AfS5Cv!Pi;Qfoj16K=yJ&6ZnIfwK6y8mW<$5}-&K-{s zPyE1gwnAjvyO}GjE$8G36d(evL@>tTJ_wHQM_a6QYM1qQmrHdjQVkQG1mhAf2$KQMI*oQzA%Rp^1CuVmh;wj{F!|W9hlr^GPUhEJc@1&~(a! zL-GJmStF_U(ZUP}vN0e29YYwb%$1ft$@BZ5)*+gb=|mwp!Q@a5OM+x^qWf1c!u-O& z1uNpDo<@TXL>*L4c!(>mK@qz=c(0>Us6Ez$EdRB9m#EwcW0&7&<}_x*<85vaY|N~& zk)^a$&)}4@eO*MxkJBjBbUg5!L)-KcX>@Vji)z~DcFEBzj^wU`%;08ClggSK6~>B* zI%SUO8W5?!z?dNAH}mC4I;3i`6Pk!q1x~Or?tW;@_{+0+C6sAs{`~V9;JzE|>MGs) z>9_Z2*sY=8(?95HDpC;iPsjJ73O1V)NMz8@CdEA9pO9TH_{9AEEOj0NdR-WT>^aK} zx^8(YYv`3$67bCWT2%Um3pm~jNJ}8vmOvHsP7-?FXjocO+GT#gIqvrroHO~!V~Ji! zjJvB%J1)i=0RefswDY+AFPxigr!0*6JtD9uBxS%6 zs&n#CiC|ndvo&GLub}kFnLfIv&Po=L_x^mc`2s8FbDux(@pd{eG2XuTa;;vKbZTm4 zh_$u$<^s& zUnD|@PRDOPj~pBv+_bWA>^Lhf))4GUbbpebQpfN&C#@S0%+!JO1}%>4AtQo_4geeY z+^-J$r9yUEG!b{UQsaiiqS9TA{r5}_nU_dYhm}40B32jsR;&T7=&~yh^;u`cd+|R! z@7h;zD5mq03_v#{Pju|yiCt@oHB>s-k=)v`9r9u?UzAyAy0+>oEs!GdIlkwkP)tWH zLy&=G;=c7xyFSPc$U{*S%S2bn2})%Nr`wb*Ws-+5kQP=QB8t_ILl{DdD?VD6-zaVU z$zFbS2URL#g=ti4jWEpP%?H2UBp1tnoZYpNbQ)(0jxU}pt+06dV>QN>vI%iNTz_QC z8YRWIKn9vd-@okDr8K2&uPAWb)BGAp4xR4(*|Yb2qnCfM_kKOMINj#s`vqJ(3;LD{ z$_oT)2}u?J|2WMneXN7dvm1KlX^eVAgujJ9OUL)XSc4u1zFEPelgI|9=LWv}66ZgL z**?d<-&}lOmr&0lBp>V314T)R;W9E&bz4HsH zK;gh$o7;DfkbKWt&Z3*Qi%m8kU@oI3pq0(<7fyZqS&i1LvYACbiT5k&QmoNCW&BM* zIQ6AntBq?S%hY9}+2<`Zj7~E?>C`oFhjBKg#UBC2jFmYiLrc$eVCfK4VtswRs;PBOG4K?$g!;K& zP)q^)vQT$;f@_#zig6FQAAwt2G`yZ+1r{UG7L_cZrn--}-uc7wE}sSg0>_)t64b3= zc@rSSb#A^`zS4%B)9;_2*hIcE16AVpR>8*d*D9DZiH6&b42OR>7-y>7HaumE4u@+8 zrX_(v-MF1aHaK_c`w;*Oq$XX|`ws9cx2%QrCOoBh>F0{ibxLLW``>13JHS3|3uCWS zAqH_NzaO3~P7R(1*nmqDrvm|p36{*xkEqb&(0Pp@^rT zejWyu@94w`z}uww$#1yketiY<`Ch^8& z7lMH6QfE$|SBWt$cU_NKP#@R3WzF}`8xoetM#Tf~++R(<8&LaiRdVw5ii5rx3X*!8 zS59F11On2(UiLnz-k*)WKuBD|qJRE;a!fVYbr3xLJwlx?K_$(Q39@Jt6%Pw=;vekX z{deSfKlwPfc(x9BdQG>P%7A}Avif%*9Bb<4(Nozo&DBb?}v^Sa7E2C6ki$3Gb}CO^I`l8Z+oRUQ=0fZL|i z{TxbR*cqGbjOg5lpk4X@Z35;WzI3q(rkP9hpUNFV@ zAaEydjpq>%VAw@Cfu*aC3>N9?Y_1XvZ~VKkn5CH}YUq)uq+NBw2WMwwpV!|9b5ytY zuR&kT$lD7e;kWcKwpW;sg9}T2M zV%Sf5=5Z)Bf` z!XS_2`g{EUtAy8LfK=Q27?;=Q0dlOQ?<;6mWZ7KDz7m2u8Zl#mC zb{6$dI!81Q%`*!BufVsy*M;c~+_S?K4c{?8q4726*q6O;o@=3xM(y@N4xg=mbQ3zc z*NXx05kkNw;lh=6sYD^?B+Ja)r!k?YKxb1ge|^V=KcUQ1?cPY^hvsz) z7GQcw46W16-y%IS>5?)IRaxkORTuzl zI;5VG zhNE~>in-x@S##M$y8qg+oe@S@dIrD`W^kW#xUA2e&k3am;5eQrvk5fa1gCt#okVqv zfCKD`O~-Nq%xH7IBLj(f(F;v{=`#_07+w|@Jy2_%P2F;#<#ec88lt(RvRe^Q$W?2D6v-$GuMWO1O8 zO0+T{boEsl6xynzscW`(9#?|+@n859on z3tc>zUTPLXY3!d?R8XlY15lFH;QlSVW5s$^Vii{buCrZwiBOjj`d=xUa@g2?wo4k* z5cCek*G;p(KO$^wAKMWbYE&&CgL&D6hQNY;(zlEEWdnI21!0uj;4JRXFNay}ET^CJUggSkqYj}O0AbdYYOY_EhxV1+8HH5bj4ADLa6C9D6U)JwE;8U7! z;gZ%A2wzteQ0v;}lo~a@06jp$zj!BrsNpJhgR1NILm8XE$5M=;xv4a>XGgofRCdP2 z)S?8*0+9EEFJ%wP&550FfoSPm7_Ts_$-Yn?i)3)W$*pr(u=x7?D z?TqxJub>E&a8+#dHeyr(yF&rZK*m6mwF_-B`s|L~vJVR^C3P~=Rv8VGp(3VmloenMSbKBj(uI29I^ zBJuuBa^i-x*Q224wRAU5TL)emnF?4js^DYqk8k6o3r)(fC71Bb9%5qcJWGW=lnQhf zyCGJW9SD@}bSWi+h`^_`fmyk*-28j-n7_k+4P1YR88dBCr%#`;{q-|P0j%a!&(Tuk z^D=2H43#Jo)aFWP@QhgS9okw1VDGepG=8{Go1}8hFM7yOv}p9xbI>x?A$t!g@Q$+e zMJR>2Hea-4k4vu<~vFX*J+y00_ zyP6-RNzeA~al&L`XH-B+udz}M-p!yzE15{n&x)G-$Hlw6n!GVlb*bu5e(Jpp{7jo5 zjWfVzLAMxL!$S2Er9D<`(uesNpThIZ`fDzb{kR=W{?6#n=VZc3qV}*i)y+alj<*JOB-;4H{rln|mDO(0_6Qy&}uPd?6%Ltldvz(P7Yj4F2acECsUjtA48-#Ub z(t*Etw#-Ga-5QO9H;*d^z1iZ$9IvF9G6uF|MTTe6q(eJN;<6pMwI)Hg>ifnr4L8Z@*|L7qHv>*KDP35{__c@dQ;qn!TJ(eW9 z@TBRBr+nm(a}cFx2~^=Fm|1Y7aV~>nKDNk1fW;*{Nl?Lr2S8UsSD7a~KSLYQXR?NX zqZR9_Qd+vJ@8_8=cKHTy0e=QpNhK1QWIJc|V=nA9JlymP>YdQUD5Du01^HVlf}Pym zf%QE-*i7((Zi8-ct*0_v_}rao9Cid`z7LH)>wmWh@>iIX@5a%u_9KK1As*(v5y?%Q zmNzU&eO=!!HGJe2SdpofcBpR0+OP!6eh(%Ipw-mWv?l5duQR9sL;4nFPWmI;7gx@g z+@BvfFPZ`V7sGN-e*ldJvfu6FnWrvwl9-rh!{<3;JE+l5!=yXj1J7eLH^!wl1YXhUH`T+WdEIsIw>PXlsA?S&1(>3uB|x zY6~f>GmsSj2k&DVS1GJq<#nBU4&xg__cFzdi?eTS4yZ(x(cXfrOJ)cz_;)bZ98x*{ zbi^dJv0o$mj&_;NUT}#g(>-Pe%PK+|6ttCt7rAQrFmO9s|Iff2GZR})d&+^TneSmV z%{0f`4CZ*kXF@#wOWLQVq@(0<@W>b`P%oARjDfQ_VcZvM6*W@ z@%xzj?ECZe%PA*6zlijE;kKwD;7H@$E(n;o;>MpX5{jk`u-x8d44&A zjxQ)MhigS_)8h)h3btNz(*0XJaboy*zFwosTWWvuULx?hbdMF=4q~=X9v!EC4t>>? zDrn(%@sRIG5tDt!s_wE8!)22k4a#v})fGO}9{mFFC3%F_3<+nY_Hz{s9vFTmK%uG1 zdR5dIwZT|WGEUZ@44@nlS(G9sGPv>=hirOHhBhqZjXbs!YFUG)BJDi)s0#ZYG04Fq zDT^Kg-*uwYSRN6Hm1@0|vA^boWKdSiCV1gfrIp&$B0dLiz6)oYw^6oo$PWDqgf4FG zd~$qE9-#PNp1C@{#I_@oKPy_WLlO(Zd%(Tp3G_>;$4I^tr z_pz-V4hWF%SR>y^Od(63Mn~$Z6I)zbWRH7i4E~RE6PwT#@SNV%L$CF*o2QUVm6M>kRdZYi5#O5-o#3Twh7pFhC2GXGVyj#?C999bnI3l(ebXF)uL6+WDnsO z;+n)c{)u zO=UP*OntZfJ&){}49-DA!8;(*EHs|uiWhx_6NOrYo$Gz!^=o^096`NQT;?jcjwJCC zoB?dvFj1*Qa;3;2GQeZHBI)d7Bv!@|jrspKjXZT!htmLyb;#e( z)giL8N+9?;9P563Cz_)dZ?pG;U|?V!Ju?AGbCY^`Xf3n#x2!zx9S z4F{~o4(VJ@1xbEQrU4ZuwhGO{$F{b7(y&ahZ^!-BP$Vgo0h#5+TpE-+@v=zeKmi;v z@EyBHw`HRn3W&j9c}lfchq-kBy^pi)XAUPe#@C5Lt&?Ouhj%wMKKNj+Y58JJfvqTl zFWjB~f*0TIV8=NYWM*6`sN^vSV}|x-i>83@OdHH{wSGIvR7o@qiki>_UBq0L8gW*= zq=;cnz@|i#Q6%c+m$G0clSH&PFVS1@Cdg-Ej(bGgCr#V*oWOyb-mc4Yet&N zlO4;P>ysD9?8!oYp{#In?<|mnK}9#<5wEGS(!eG%U3C$e@;;YVCARA4MIA zr59p>EVoR|=+XF38c$l?CG~$7G98ZIGz(blf(#)~ec!L#R$APlxRG@-X=<4uQ4{T8 zZd%^Bs%-`k%eDc!U*26JGct2cuNR~JGty!`gWeZEAz6je393sZrMD)};{}2~>9H@x z)#;j$rWzX31up8?dVHQxm&=aE`vv*WJ@^loOgF4oioQsTYgr;D2P<>ecdc=ESLSp z)70^y%?r4Q)*l!7LybHe!);F2C?t@Ik&pGinpA(*&FEo%w#u+L_xY!~nDpDe#=Nsb#vqko2?l z!jF5>l7q-0@{31Ampl}F&C)uyQx>(Z*gzkod4+buXeVeL)phSuMaO)N@qvJOaD_Jh zqj?sp6(W+>f?XwSl4&%sd8XW^Sz^h6g_d<~u4=q$pT)<)!Xw)OLJ|6|62?&0_~-Y) z13A3V-)zVJ6X7;a{O=f2sYEnZE)NZOfY?xr8maTH?#GwtSV^e6fa$Nc1C^f5BJVa) zQSGuAupK_gYrgc0PxT|IXkjH~gwivK*$nJDAeYd(3>t{eG=l7=8DO-3WGu;Q&#Y#( zQL#9WM+*C53{B6LaMzipqR5pJX2h)BoBj8S{C_1TV&)C*<>2HnkY8rUn* zmSr$8C$??dwrv{|Pn=Bb>=+Zd@cTQinh!hY zd1R)68U?1{Af!VVA_qfhxT+!NhMAx!!tpX08`a0eNXO?SWgthfSr{=Q*NEWnX2CSw z1QZ6!1o|C&oMItMshNc0Vlz!1qL)io*9TP!k9{dyIo~f@TiEcdyT@6sfCG_c_XfhK z<2WrhtE}D9sq=sed?ND2IV}ohQ{$t9eqKkH5byIf-#GZbhge%LqX&;|mfgaM1)q)H z-+t$W#zx`d!{;REkP@e3lmrRq8i)O%NY^GXp0U$eJTveQ=IvhB=&(To8QS!-NPJC+ zI#(F_JP$N6a@Vbeq`1vXib>BRU1TZ49&@#`j_wqSM`=%Mc^rkh6(vv%(0 zc~tdHggCZkorYB4apQMX{%4idxhUb0pKj)ubNCR)>vgMGev;@%{|{=Xl+%JIWQGZ- z`Szt!y93mx-4U})uH@9NO1do2Naa+hTMSmnI%$h;cbK2ja^9#Ne#0btIxGV3V~`PT z_8BuJUD5axVUhiRK4MrrqvJzNXYMi;5;QtsG+p;Qde)dn6c|GJrgqU#G28Jw-QW47 z#a(j)4px0fSl;wJJGBoKjy{LhXg{u6tl87@yE7E0hH(s;A$Z(xk@4Sgzrh0$?*EX; z%gcv{9fUk!p3TlO(I&9B`yA87+>$>HF?Na&zV-ss^U7INE(-GIl-E1mY68mfGe;l- zsu&pWFMN4?_vnUV%-=bCZXM4QKSxm;Eq8v>sE<=u*K#~|$5+hZ7Impa-2K|>vZs}oj~+jPru!tV=QC@{tsgg_6_VZP;^N3*fiTGs zA=#27L#ma^Y_=<~hhLP$p4G&L?}sg&0KuoGHFiliT((H5CF%~B2Iv*OI8&8TEW@qg zhoO~;pF7e}Q%^RlB(BRo9I|elYTBAXig{)IoRjwyy1{7MaExF4`(K5!O~NW*PGoei z_8w=j#wE`wgFW~NLBRb<9=pKllmHW;>20r0W`rWhLQex@yhWVsX9K#IiH8>gxDw#_ zRdRLJOXe!df=xY2Q2ZV}w2mhXOp{2^#p;MVC3{$17j4@VyPs^Jt2ccp8mT+v&p-X4 zf=+m{2A8V09N&4;vGaM&mvbwRb3x0&8Tquc^%kXRz0=p_`aDl!kDZmf1H9TPx&ijx zm=<5-uqqt5hGO>w0^}ce2aqUN*vqw{BF$+oH)UNk85jCUU+$Xbi>P7kx;;;2&N`#%COX64-YRr?TUv9l;A8-}z zLSis!h1`8c$e7fFF<+AYa;Dq4;6)-R)CVG}np*{c>MBoNdG=9@Q~tCo$z0U4jbwJ4 ztoOni8vFeR&oVH5zKJT{X((~~A{#9^oY5Gww_!lVEj_M6^eUOtznFIKW|D`~62SlniMOQfo;j+>QF$H*#=7rRN}shUkt0fpeU zR!B;e;8kC)=viaE_-9{z5((-4WVM8x!&x{_an)}y_QqY6?jkhNmm_8eEwNZM; zoH+4flc%!ijRir;*R3{A7qViT0Jd;^qw0e^cUC&U;stlbAqtvpL}g6Fu=Zzk0&NXv z(mXdz8vl)VTGJblKEea8WDzlB3BWt{Hr49!j`&}@Cb(FHrys4g6Xwjrk&=y+;*+5u z+Q^kOd7h-=vAxFe9G|2Ht}KsBDn29zCm+BR&=xO_qqrBX)N+)?Wj)e5nqqLMq+>yo zV_~yWyR)PS7CYA+6UnF>+tJ^OnG84AJsXnCIERUpF=+_F&tl_ltU0s{E`#;%HZ5RU zH_ge>q{a~nGPsj^c5)xMtB_pdYsZcU9ID1>s=W+I*aNLE?||25msy3AKNFlaT{#Z!62?u z*U`3}yB)1%@|n&--YZXTvCou?ok}5huK599f1HxZ#-~*DXJrlo`KD*-92)nOY&*$V z&9glY)M8})LK+mq;l@Gs@Xp;uy*%Cc=FcMxh<@kr5xz*ucE@)>VZbIsHgMRb{|kS! zA(Mh~I30B9+#vPjf~PsW3C$}Z(GsPe;ZhF}qbU@`ZNaO2AB`tv*pi4S**UhFLJisQ z*?;LFYK}i~OLfR!$=(=a0pguW0z1-fl5JR;gmqbuGi&p}eKG#}=YTqwkS#p~QERaJ z8VQ9}$P78@2a!82Jx!9W%GhPff`?1fR`o4eX8!@!lIvBLd!{pR?7y~f+@4h+0Ydtw zlITT1P5|4Gp~f$h;l=0pL&pb%q!_-9rWiAXoq zmC>vn!#&wI^cXNp$t5m-Hgy>M&^nWMG05mC76wf%}2LDLy=q@XwBRO_OQWHcq zP~h(E#QMT2nL~Ypt?9~x}9>sp-)R?(-dAptYYLjQsq)2h-Nc;Vx zL{L0V;FI9}xa2!vx^nqc@oU!9)iY0?GIl$)TYFaWNGAtx!KOi09WrD(r#6UY*FsD* zUi@>C`QcCTb_vSuYwZN~qDf-fk$jp1rmTKD3#;USDXAJgH3*S0Edz(!x+N?lZ2+tzaH&R6k@WK?|LrZWBg`KVDnl;M1jtuD0)f^n?S*_Q zxP)&wU7Afrt3AwfUxkqBKQpVaoRifOJg9fAff>eKC$t~hM$7~CYz@J}b!1TrOuv#FwVJ@O5*v*gO7qD==}8Hh_On z-#Kn7*ER(_se>CKwuxljNpTFgCUelpqq|8>5!ra4W|A|gDR4`m&H68iGYlZG7#v$} z^3I!$u*SiIKrU`vk*dK=pxgX_oZpNxQP2j{^;sQocdnLOHCsey_S84`>alch!n zxlRMoG7uY}20v^R@t1AO-ox6yN#2t2FD7904OifPmh>Op#d)nEkS*|l5~FaHPZ88@ z3~2-bX~Fw~pC4hbe_lDQlA~S2wv2K1K=`SC?z0OlW$zLBJjk@NF+m-g{9%x#n{VIo zJikpk$spsn6~6rth$Q2;T|oFs%=7Ds&U49WoyF*QoNJg#j_01}96fVg`7vNI!Z~@o zu325rJ``R84ov9RSvAXT*~?3f>CN3dECRgxA-k1%>5I+##}n-WJQ}5yQ;|43WXf+@ z&ECA@8_*{t_|axjQ5tefOn=^H1sR6@E3LX3|0~;0kOym5tMKM}G<~8bzdjp!l(4|q z0GqKJ(y6PbD+cjcM$XCX5NL3&~iZUjeMxcIoKI7OOlkLh8BuDzxC9TgZt^@nhPIs%Wa*on$q_!2tL1i(*19j;Vp$_ zqoNaw8f7$|;Phlnq!>f_nY7dj5F*WY)o624Y{M*9r5HILF93Qk2B+$%FpI=*$3t!*HLAaE@?s^c~S2B_r1`DMXJGLK8 zBzV77Z?R@q4>7nUMZwvf*^%p8O>P_8*(5{GK^UWX;GI{jUZ%%_yPTuSFFv$e?EPPx zPoCZ|4U>Sj7l%J$V&GxJ6M^j4?vH(oKeFC;-WIGcf@;gHDX;Qn& zUb1{f=Jka<6Wq$J^LZ3catn4io9!!EC;4P)35yS>@8R_#DG-t~Et27dwF&WgMUg72 z=k|n~%b>QWNdc&;C!?DKkEyfWDRB7zrVTw1SWV?3_lp^%?%Xm4R)h-LGov!>M~b&n3)UiED@QPO3lYKOW&~l~ zuTv+%bC1!+d_IRv_8ZMH|0%aSbDzlm?A?gid)Id$X~u;Pp4sv{p1xMAgl{L++q|Y> zo(G@1np|b-^7^7?#VnV_UO&-N1$zFRvFFZ6&xv{fa3V(j_v2|BP%X5uTRL6MF(k8;>iU@!|jzGKjN7%`I*`GhI#?XHx~f zA-rBADE~Fg9KWXhi%H_Zz1^>JyS>EIIuv+&e}oYE|oCu8I76CAx*v1`8lo;X)SE;5BOv#kwHXhyN+M5R*z6(Yr5`SB_( z5Xlm%)HD~SJGCe>>qx`Q7P^IT1EmY3O;YpPqS?gRgy60ZNB-qjl!3 zLkG58XiI;I$CV_r?;yD?in3+QxBwv(Rh6(tUY428et0?x`AWp(a@MPHU&tL+x2_*x z9e-|?EyROAg{tBnk7u4=^=u@%V72gg>E;zvWP0jopt+Vwnf;q@hSCRhq-)gc)Qz@F z_!X$HYrd=T4|_rF$oqo3wK=#uWR}RLVpsz$@&!K%YUY7E-)L3UZf8T7*_J{rLdk(n z>uo2wuU}6~GHT|_NFb(eo)MtR@>n7P_-JfXdWQM(q~KmLVfJS^s>ef0kg(x522F-= z>BGaJ@+QfOltvcr?t!2?(Cj+!LbRYkBFRQWNFbknvg9~~gj0V}6HfXfP3D?9m-7O@ z+5?CSclWuJ%t*5M2GInJ&Q=3g8gtETY!bdMdTv!)*lipt*-tOe8q_SQy)PDj$espj zT+{g0K#}FrszhNMM(LB8gKrs|eb=p?T6xGQg5;qMijCLz3s8)4A6}&%pID{!xlq$6 zPty5EGYf%~tU- zIIz|Gb^OmM(;sX%>vQXAFFeAvH}*!7_wvFtWdKjh!>W1QFGg zJ~itZwPSSc&_WqL>Jq8?g$9J1u>Vndd0Y6$x99f0Vo@l>v=Zia^?i&or}d@V!b>l^Yru%%G%S(KxJLvV~>#I*e52IU`=*~AqxZjC(FI# z_j=9T;dB>UopmsQ_oc8!xz1yZ<6pDk8kx-ZiAJ{-0hWBFG?7=3$isA1KpXQ8o zGOpXt`8pW!dI(;`X)DNFRJS8nEBTrqJm}N;@ALHI8>3%HT7RKO_YHUpUl?Q0D~o=5 zc3#;RF%Ax%)V9>Je*G^sBPCwXM;%pbi+r^7T(3M#{7%5++qgicF ztzC!%bOS8A?fPWlZm`#mi@b+niT_TXI*?4?yfEGkAa^|t5?V?sf2_f7G{rT*^rNS@ zc4_y8SNFZ$Oi_eX!2Q@*ttMOaFz*e+51t_Wu@U-#R~tCab}rD=A^rD@p0uWQAK4fa zHl&bd-6P1Wvcg}xRaV`IjNfw0R?Mc~Piy~L2EEWR--!-Ix1uTq1Eh+!v!|x(l|~ga z`&gm>-Nff_EMA+NZO7Uh`TJ*_f5i6FqSHEGk%5CT8hO1p!A^T?7U*qNe-|Xa0Ehgh zVhtaV-6BV)(fZ`)+R5W1cZR?l%N5r%RSbNL)JWpp9ka!z&ElQRqGr{k&^7h^yJlVHMAHii%iyiay}m#{DAEqB@LA&CO&H+%V%Ut!p4 zUI{^#-I+!$2{YQWGT$o662s;Fe^MuNYW3#D6J~@gLO@NM9EEygeur8J@(R*C3H!D7 zXkecXCn1M)BGqP-df&+UAUI+)Oy(N{0RR$&MR1y7@?l3KHf$r|eG8_Ns)wXL$!|VE zl?obaqo5tCAaSjO*VxabJBf$r0S*lJ3Kk9Mw8|tZtZPfAiwL>vLT`I|e7IYeEY-!* z?a4agD@;CP0f^j$(@&Ddf?lym9U}aV{Gatrhs2=-tUW*J4SPgtruFlVrgW{GfePj7 zHX`OS(@hruGJ(==rj%~f=@Wa5GR zGCK5(vtfWzDT;siM~IiM&^nAJqmI1QeJG?$OClzPmdF~PC-gItyEn#ep*TL*aEg(zGmq~H zRzBmTGw>U4wOB_d>lg{icj`Dt$4wZmAG4x({)aGcXEN0s@^*PFhEb^uh9%lDBO|8a%gsXR7TxCOJJYCu4wE{vr75FNk?u4dIL%Tu!W5DS zoCc2~c&Wr|{2!vW5RvSf$#UykP(v8DK3zzQ6YaUu>l@TYbQxQ6%x}A1Ga6b32%=Tn zlHGRNusIznW?)1xJN#p1Y-C#WMJI4k&Y{ z7uUTo|1wEyyL#upjm<$Kxh++WmOH~3Cv-+_sk^uF4l2}|kDEdSaT_{WboPpW4%0-& zs25F8cVr))>h)7cUlQ*~uQrqFXXf9LY#_kLh%JOSqGTI4^$KWH8Ryv{`!h?LXP50a z=qOp@3t}!=RS(JhHmvV|o2rHV*NAC}V3VarnEA>XGm?pvs%+A8?@ju)l5OkN)Id&f zB(t?1ijF9hz5Vf^rICIlU0kGsge9W5F$yEP!j7E^HOiy_WhIAltC3ij2uh5zIDjLu zDrkv+KA59OE-3012R%KY!-r~NzVbaf^yKlgBb=J1pD$Bgpv!qu_9tvmG!=aW_yd(` zk|XzjzT_bZNWjTfu(30fB(lMWX=;FCK$)XBqk0o~5GX$m!~L!<_p`IpBj|XkSk$e$ zL~m~U+UThAac{W;f%p=USZy`!^J=KE~LFN(nbrNip``pUI}%k7?w|GoFq_2cws zIjfXL6b*_HjY%EdVIx#M173%Y7$kD?YHw)=h(S0ah05+vYsCD*yw~Nc!j0q^s9pj% zBZu>}kdPd1tWxH##CRA&8O;7Vbv{|t!`0rr7|V>w(n}XBYF5DdYVVJpEr)rmiQ#QM zsfif$$PEI0F7L?dX}vsZ3q($Nxw{Rtr`It74-2VhJ=JGUs!q6t)Scd~qknIMB>yaV z^M_`9n;G6XtFab{+t`$sahl<9N|*_=zbZ$=4Ozy{O(b)dtx-)> z$?8H_6)Izc6gpT*O4D{4A_I6v!|)nKlfU`F!cK`m0j)!9{zUB*wUh;jL4-JOma3$r zVm@|>`uby`GBPqg1n(5OtYDsD3f|Xv8rF?!nPrC&0$)eY#x~RpOzwZ!zD=Dd%%)zHH5 z-Ya5dUi_0E|k!zES2C4{^1j%!uI5A2pJlVAMhrn&U73xATr zy{dXP-=^7c-42}PS`rfud|=Z5Rdxc=Ww~Z{(*BAR(Pkanh6i$U5dl=GcBkAk{qQzo z-SCP=aCEqsgW$EK<~>+nOu~P8L!clXL9ST!? zWS@|y1FE?OAG!{?L`|cKAYdAZwjCjn?VW`Twdvi7rOOR%n@gugVme1={NE}T5u5n4 zP2t|P_IdAmVcPW{Usl9v1YM1I!P|&EFE<+G1#T`cN$44B=9X+9_Ol>oIY)PqfH@g> zd5Japg_;K3iZ$7tR3py?{`*~z$u(X5cKcMaE4*fgw;q>g4gg7%mT}6?mHpg}BdTWs z%eO!2g6J~n=Zw@fD-L1%Jx~{DcJ=l1$S^oUb;yNp#kJ9Z9G}k>lqQaN+in%n>YV2j zaRYmDE0xvd^1ZbS7q)KCD11?lkbI$`g#OUGxr70d_ctYI479SQb}{)wA`M&T92(WE zYjBj;6fmrL-H8!a&FWdil)0Cyt+5xr0P0xzsn#QdrzGs?p+O$GRedOEb?j3c9$A)Y zEe=+Pqj*pf9yn$=%9qBYp5GQRM;%UZvEZXeiPsY4OkyeCmuS&Hf``u2i0YjyVWq?} zB&o8)yS)h85h+==Z|^)Z5on;)%kSH4n7uDC*#JK`561i5yZ|EufI0a_j~xOU(S3JZH`0_a8GM{PwC~k zK-OA{EAwbfv?&g-rNDSY--oaHlY(G+*QzRzV_3e^f#!iRz67T1p}gj-PE9<@&$unJ z{pVCH4cu_Fd67!{b}+sUKG_zmS(28DvC8SDwu{I43QF2SOgZ<(aF7i*eq@jZ4fd8U}n!l zm`50 zwoF^KvgIpQa{~gaW8*dfA&9mdw7=8U?p9b;XTeu?3$!x=l22X$_ZNiOs(m>BS8g7s z58*PsXZt(~A;vrK7&NZ8q|J?WgN1ttdjPg=WKMA7Q1k+jfIF0#@7C9icb1umEDX=B zv)30Fn&Yxxf##O3NpZ%)Ni2)?O+QN$O9&%nphp~P6x>3 zN09b+LbUe$k#x730o9DcLh1>_+~Fd|dbf*UoIg5!5@|l?eZv1j+%J39=s5>lUcE^< z#z_42ADE11rj>7g*yIBVu%HJV0;Ih@MoZi5+*n3GrH_mk z>-j{@&1WYKP`V=;Uk79RUOvQ9RflI1Pm;COOts;+Vze<*m_FVKLq2gD$X1_XLhcVNB=V(5)Zix;Ah zF&qZqRM5Km)`>saq?b4GKBNFoHjrc11U`=D+ySkz3-P2;0} zXvg!8R=TUr-V8?#5)q)c0_t28+-lK`z<2ZLNBPb)@ucTMYap0o*`rm@)NA#T$C-I_ zsp)uz-YL#*syWoE11Of?(e?2p&+=8HG#~Ze9qyuR%o}# zKN53_fCPT=%~zY|*3>#wCk5;2acApA*gCDu2+A;m&wANpbfPSsi+gs1(3T(@gn=n)4eOx-F*=K<6c;bf#YzJd z_rTuqYi4B7k%YQSFpFoDwJuA#13}vbI>b;>ji|cJ2xTWG*nGd#GuBzeTj0A5j~QoX z`wBWrrD$3rBN|I0LB*BZp^M~H!jIq*wlWp!|547f+Djy{m5TMTq(mh8fb>*p`=6Cz z!oAUD9sB7t1ybh`SVQSA3kA;B6zAHfWk)H}T`FUEWd(nTG<=ZYcNr873t1O1t#$%M zU3Yw676uQ=;$qr=sVk~sg>jx9(lX8tMV(l^WCyXCwdLu%sL#gA{+>Cl)*k%d1{X3S z@-U~rfpg9fu@W#*Mwi?CUL+0$MkBFVe}l{3c*mZ@Gr6;$){34$`cl^vU&*`BaK2BF zMF=*a^eq^Gcpuoj>zp8OX0bF>m}T&eJaECJN685smeJWpCR7c?7L{7eE4iv~pM)gw zBn(?*@rGs7b7<+%ar#)Q8NF+Zn5gPE7JaxKXt{ZLuY&*UqDIHte4hvPOgU3k&Cx>& zay*4rvyyXbu)pCuy#*|?SdPRAa+dc$m~cz42~purz;IELpF_p=?KJ;M{u!X!yun&C zxJU2JHj;WHTu8!(HTihp_lRaEXZW`m4%6~1Z^LK1sYx9NAFoiSO-g407p8(@{+Hbl z`Ez_fa$UtdtkI=5|Br*h_$o^J`3Dx$fa8y`9cGd@r}+oHiqL|?9e~;=jZ)H3{@M~* z5x!GROOa*U0t>~ESFAZ7u_+3(#Gj`mKJh0ReO=vxy*y(9M|~dubNDQ;Cp3J%-)Rbb zugD09@YddZDxx?(^B4`yjQlU`IQUy)yzVy|6}hX0?toQrT*Vu{|Aj`4H=&`sE*+;k zX486wiZKnLhDXVRM*5$HQ|L2Bv_|L6ZSBR$OhJ_m=t4*m;2CJIn84@fKd`YsOf7>7 z{F4eDPLM(cwN_AGIv)i?wt@pCH0kE8J0$Z%zIT3d$7hp+JqUD4#Z-Gxjs!Bc&`J?5^anRxdnTs7U%SGUul-Ezd?J&ppV8 zx(S+2gg9-*HtNcd)w3z{P*rh`c{D?U*^nl??CIo&9mx{p(?)_$+TFdfG+Y10NY%i0 ztx=8|=}R^6iI~pjmmG-`6dH-$qIAU6v6Y{>&p4@>Vq*1<;ke6pIoba7*`_V4G46Dj zb3#3zwNKpGKlwLhfVM5+-)1bbB#dGNU)(XIlD-y^U-@iIzhKW++Egzm;DuA*Sg!Ji zhg;l2)bzptq<7ZNP;V}@wevN*jB#0PoV-XkiiaC^M8#`;DOZbT4Op54zC6%CHiE*} zCqk*rnh8y+1L+MCdut-P!N^3Zv!0)*LaZU+k`8qt_%W_I*EuL>LG9^3nDe#Z&vPSj zPZ8_=MCsF|!R8pV3oO=3nPKHq!}I_t(;H^>F(k^tAi7+ig#SnHM)bK?pqi&OhJVfY z-}}!`E>*Pnme4LNu<f_8-VwVyW4@1FP*>^p#Hq_s51g7J$#?ma?>Bqv-M!|0 z*%&nrF8-d&)(E53f~CL{%sc1zvEh9B0_76#oUBV5uW{5!9^#Zr?%|Acl7G+T*BbYD{GqDqfpnqfI%up!8mJE(&&QQ8udz3bcA`*_@wI{?)m ziQNSh5Nl+B&Iab>c?p{7-$8wj$o4hy{iL2@bf5W5VsUcKP8i%j3nqokNTyIm3WEiP zg~w7!Fo>bzgV1gLP}?gitJqH`AI;l;J!KS8X$N`F&#<$wkcd+_dU!rp;k>=LNA0?( zRz8o_WKvKZmW&nv82W!(743yN_ zyZA~Q)9+?JAWu$8EIiGQ+arIew8OucE76Zdpn4yNlxdgaaQyZ8hjC!BjZf5DH!$P(%lvTiy)uAX4_J{k=k4wXETtUVEcyqYJ@`a&pJ>Fx* z+Cr-nN#e(&GwV=Ip1q_}tqErM3B{B{(knmZyPLD~IeyvrY|MVcKY9I7hjwL~#)Azo?3aFK?Ix@Eb zLcDACyyG@5!;p_Meb$~g{m|(mTo*y-J?xv_ZH8|q4wFhpx43_i z!HaZXLvF9DKClHmai_{il?PrsjKoKz(9mwHTNMw~0h6-l%e)&x)Vc-}r=mo_zgQw1 zNj?{aPJ0A-g>jT`DT_DORrbRpX!caTY6Ujg{)%o64>T<@9%u$shk*96}96TJ8i0++L z@tpRn*pFDW)TJYGue-OCbYggHv$%5Hpot3()e8len15(EH@V0h2Mf!{tuWuz9Pfp0 z*Hrp9Tfz0}#L<7|U)TNg-3Mk{crSd`Q3r+O$rF7rd=SA^P3)0?Ow6$TyAp2pGPFX{ zIt|7W7C>{1^9^HOWHd-8Sxfx94`JDF_X_Vshsi48otcMu8MB7mzUJv4x-{Uv6*|qI z1BaOK&}Mc%q4A)wcCNGA7xzyWjicb+mqotPTjO{@pB>Y?tD)6LxbI3+dD6AQ$_ zM(Gow(s+aKZKTj#HcG^ zc-Rj3?FWY9tII`E-{2Ts@G&4{bT44dUgu5&Ta-4`qG$f{mlTixBCk@QY<+4FRB8vL zFgZu6FQf5n(63V{(nJYQrESQr<3aRZx2wz9{KuyH`*>>3KU%$ebY%J1R6J1D>VOQu zK?tAV?)e6t{4Z~M4kpz*D+EdhqX)MrB;QqCiql-s11CmI681WX>R(-~8Rye--|60Zvf6r^EZk1s)7b zZ%)3L(LL~qYy89e&l>K1Nw^7jZbol=yRLv3xwlsU*4N|kHe1cIr9*ExcP_|z*UG+c zGRDDB$Qg{#>7GW;k=cj8Nu2@*N~WY5T-F`b+5SnFGyIsk-7a=-K1qBIo6DcN*Pc5( zu~^8mawX&t5SK>km?ik^M`6~!MLK|w;U)Ey1kXurJ-vLI^6WS6fMNFz@h30Bs#~td zGQn5y_kGOlJj!gJ1VjRX!mcgy9vv2}kh;HZzf!6Vx}{V%n&)G;Ix0tts18!IiIq}~ z83_MnN6rX4KZW-Zc;rb71fEa^Q*hxFZt&$8s9G$<&)T@ZWNgw>slX#lG zu;LsvHY=!Q!)5`i;!t1&YCVthw(Ii@GBb(OU|twT;tM-FjOxjymDNi&+_t}wesXG* zz2$sSqaz7OeXWvxf61chb4wmk_T+qR)%g5T$jT`G1hxQqK!(4JnR$Kn!^+U?Ps%X^1X{B;ri98>* zy#RXRahhy2QIV>k=Tz4;wQTjSy?3I3i^KloZ{w0h|1=rXpiz*1 z_;neITCN8Cq8S*mhI3@>AfhG`4`k`ty5$R*I5n1ECp5wGEAlAAWh*<3V>F7Zg5#qy z>0w>#tkP@DfLCu$wz7;5vE|sw%cX{C>fcUS)VimWw&JmOOYj`=e{+>kT8f4YA~YZJ z6m$HJ;gI~1`7`MqD}Z*Q57 zoGxxJKGE=g2dvll#I$S9sE!8I-ir##TQW}1OG5^46c3*Y`ai<4^|Ve3{nBplsH`vi zZgT9T;m_H5n1(v-VDC-PuyOR2&8xs>_>@fn;>2hBfL29wGG|f zpgyFny;jtqBmwx<(-BL2-vPpJ|DDR-In9t(FgUq$c+JJW9O}m5Ouy&0-v1gtw`tV!#Nodk4MDZ4+$d7XPHsXu$$X5`=5r?IYl}RKkPa{vmvXl zgUjVc6#57|fz1@G(rKKF9H3NbMDlbsPm-Y2n;}U-SkMuUaI2g&KA!N9ik3=M3U4pS zV&$cwMq*J{r}BpaS5_gu7LdIzY7~Ictn?k5%qeFUc-D(T5>`7}i4r=e0e3_mI6nH? zc?#AiWE!L0@4h?7_&qIo7T5jNDLpl=WAomj0CMjKxIoJKy96(qH~+Nl3p^bK08hJ3 zM^2Gtg>G3l+ubTE-(4bDVy@d#t>3=C8xEfkR6i-dG0JgKEf4Rcmh5 zaqt_GzN2ZEf4sw$vsa0Y01HN7-gs%XVw)-!9&P8`+lmP?=knRk;v!G{ zKE{|K+eStF;}=7ueeAPwYKp5e4JRBGS;JbwJ_b{8cPUcHI`UIov`Xg46h?>aR4df4E=*YSvnIdW zRbup=IdsS@)qNo!!ajvizf=m!mfKgCaP4uO|E&~I)Hzs<{t=FBz%#zjOyd-)KW!eo zP~3cE{uLHW4o_Y)%i2pR__hNUPZ!5zx6vd2M;#f5ygRV&2raMcZ-q$cP_!Bqj@8n+ zIVY9JQ`4$!W$r(+hlxp-Gl7l@oe$PxmZzqX_aC({dJGzV2->k>r5t4VUMKht_PK5O z6~8QURh$ouTr$EOL6M+#j-@|Qz7KcR-C1bXE^^i;D3yzjVIDf~(kPo>rq?~&?fZ0n z9W`Db>2(rhjTRLZU0hjtX@)@GI$J=4w^j4d!>wVYl123@UCRRm zj|h;Cx>LoeJf%5{*oMe;T3Y4P1vDA2$jn}Fl#%3kFw6td&`dzFp(~(-w3H&&(VMj; zi_KzeJcr|BI*eeTLd*1SOo#HQ4l?KrK!3bJP)UJO{g@R!ax%47|Dp)t%3GfyLWgLZ zqn*TP)}`0M5E=z>GEc^lH)y=SI6gkMwlYiWJ_))hxx0fAkhh-T$4>OsC1d@&UFYKX zU*qa&FEls_QqGo-rHw0vGfj%C?g+_U2W%XVw)FRCd%~>|en0N4I#!|=qy!{d9m0K| zoPH*)%7Z^hyPW~^l`4urItAg5R8HHX#>oBx8{>Vx&?Q}W8+rttc zoW`aoc1J1N7*WU&2!IJrRMet{QtR^5>6$90m4#Epbi<+B**N?}3Y?GLxPT0E%wIh4 z{5lFB*;EX25p$EW6(}kr7-^?`^rhG8fj=^PPQ~i#WojspPBu1?efyw1la>1bQc0_u zZC`k=^Q4h2$)vk>Jwk4(kLRKDd)UwE9-t;0`#fXuU9By()KN79N|p>V&IF^WRAKIH z8#KlbN}Us87im`xIt7enCo-AUcRPi=Umw{yzkjw9&oq3Pj!`}?4zM+na3y=)>E*3B zkJH;!^>aPT$=%7KVbG{$;U#{8bcVo#h+l!wo)t}+nwjDX8CI<2TNL!cWvf%OS+i&M zW9^@2Dlx3v+cZ9&;NXDYK2%JF{;u42%WSbPD9QH1L_my#X1&(EP@GA(e}EbPuZNr% z?(HXk!Z>jh!Kyw281IOW<~Q9^W8qM;>J9>fEeg?JUo|M&t9CDl(`T>y3NF+QI5dW! z)FPHdoV*iSzH0vrHYv*m&ti7vh=@-tPZW(o$yN=tfIP(sqRasSvX*gM55YtJfm%7X z2|6D*5NiU}F_C~3!t&PN69%qt(&_*07F(&Fsju_|td&FP8105Xd%}wO0$P7P+ZX|T zEK7uSg5{l%E=uW++Z`#c@td1$<%BkV&q~r(7D&cHS3u)NU2U{PjM)=##{JrIi;u|! zZQ<ao)*1`_yyDPI*VY^C zZz?)K5F+v0Z_{X)vfHP@=l1!}MyXn9QV}T{qS|ob|L(XVqwx=^J{4yXfV9=o`pfLxq*mIxpMuys;`2Y`K5N|7;FK6k<^!6%;YGAZznC{2=d zDGXF&{MJIuON=-5pfk`hj|{{bZrF--=ZvW89rTQWNj>|?EhtKzv4`F@Qc1l26k-qo zNztOjtA@N{KHJhC#QnT+rK4zWA(X1QV&z~RX#N+X{ns8?7OzJ(15?B5t}rgRZ*RRT zGMc@Jid}f26a6}KCSJarxS1Wlz9ar``*d<^tQ8Swzi7%p(@{-6SEXK4M5+1T1;WON z&^Pn~Z#jZ86Dy3$T{^j5mG^a2Sz^>w(NFJjQ?CYr#*9>GlHe*z(97~dd0VW;g>Yl5 z!zs8zd6=be!i#V?4ON$en*^ruH4Z^ zf()~#WEa7vr%y_G_0S@JW+V9pG+(WW({D>m0@I5p|AU)4hI)A88=G{NAu<+dNgXUO zremSPdUxyYoJ9Yz59ov1OfYs3R)B{73d%nvbk6Q-9*LV3Do_KyLt@c;{3O0Kl#)hw zB_W;&x0B1g!rd^+MTc4UNEA*B_|d7TL^Yacs&25036B6jKMq^d9fgjQv8sS@7J_#- z-ZjMHqN#DJ1vt>czEBQ4G62znztwsgh=r_Qz(ZO+nK8^&Et#2pESi`{b&tRnhu>XQ za7p_RTOSKOMBUq5bGZPW^3t~R6|x9D^m)BChKvYHQ{SWwp^qorzD(hwYyn~N_Q&gMVMlN9{S>)?7Oh2}B3>^M)l7ARs42d5K`VL5r* zmDXuzUKavJ&-7v~?yRG3=Q(PX8i7bc^?v)wwl)ktN=LTK3=yJ1W(gFtoowAy%zVKs zs>M0Q!sKBWav?1WkNu`-3z7;Gh9a+xNihvi37kq99{@Doz&AF)p54NCWHd`nAhZu3 zjDPgw>G$}_J0oP;%CB*P&EFqa>7M!$eh@u1*btvh{`V6EFH!}N#Dw7V&i)@()U81$ zxrd$D;m$)iHtYuh`Z~gwTB7wIA}nv5^)zPnFB5+xUc3`>P%G+0%$|{S*l~(bYNXcc z;FIbqge2-B>g+OhQdx416B_YhWCKj4u@rTOS~4;o!WF>qE#OFdCIf!aDi`JOjG}|# z5}lCdE3`~iJXgCj#QR$BL2pC71v3>RM4D%@;T<5`IFQ{3SXf$~{Zk9qh`{}HxRWzj zq;nJQzMH@qvH)gqs`}7XZSQQ|!2WEpdTujlK_DPt04G%(_|!z)3hZ7f*gFF?Q#_uHxqzlEl(^(rC7R z*@MJ9v#P_)uurVL8IY!$ zp1-0YIc|)L>#Bw<>MU=r(lhdg$kuL2`M+XagZ7yt%=Zv0Q0b*cD=*`d{sxFXZol*}{E=;1VhToh9;21G34BDsvL?0yng8~qlHUlYbZl**9nI4`E2l)x$%CNh79tl zN#QRSiAAWK9aNERgea03nZ8JpL&11UV|&4*Gv4hOH^fIuz(Zk7j?)iMPO70;YNuKj zFUbLNpHxypvQv&wnb2(V6`=npHWPOGjAU9%J9{&*9KoaCgx4i;AJ9Z z3X>P8s2-|Tiw1fb&Rr+Nbw^nKCNrr3tKCb;hiI^B;(1%GB1IeK5?lh zh?K{ulSkWDA7)Nms9A;p2na5CPN<6`-5k z&*t~G+Gwtt?;aBSo~8?a(D~kum6VRt85a??1V0_d4DFA{HA#`7 zq37G0#&4g9{~rKyK#jjA+Y%-D$DU{EfXN8HpSHAg4}*ykuG(0@rL&|l**GzuHn8YP zR}9WEA){ZEX_Z)?( zk+pp`XSfemu#@!sRtXu$>(XIRf!wm3L@Z{P<`<-h1%HRUjC7VJFE){L*y6uwAxbOG zJDTK?M;_}U&M-^X&dz{c>bP(6s*{Sz6+k%anJAG}(tXB>6ix2eIO7ABWwX}*G@u&W z3O40Zf-hjOV0}vqVrc7AgNeRUUrpp+Bn*PV zlYAkaiDZ!XMN$eg78YItU`75d7i3=rVHUMo8qzgZ`jDypLd1hP%Sy~b02rdzGK{oK z#Xy)vZEY1$r94Fa^(r0MwL>JLqP1|lJ~vBe&YYp=UU-pSIeC)KpF2+rON+vQlo@Om z6M4&%iAH29JEt3i6|d*oaB=nOHFgcAe_gyKJXoU@he{uW?Y#6SS3~R{KO6mmycUu#yv$R;f8m7Y~vB`OIzd7MpgUr zlhSd;Syeek4k3Aag`k&4-{3R2aW0jc^?}7F?tRps)rJPCp8;Xa_n`xBYM`%$VXlY- zAPtXp*d}MiI3PATsDMV%&36(k-b<0m>tzY=X1ljb;Cp!T$*1Ya{yp@;$Dg2q z8ei|ccmmTc)>mM%&7@wvL`fy!q_4TB3pmo;I~^lbE|qkQAgu^?u|DS(pv`qq!uTQm zg$>~0-vz#hRX+Bt4W=(lVOLtn#Yv%w6n)tHxPmZIO8CBNQHh4P?xFhVCcH}S6WpIs z?7BO}k~64jE<6Smbz$h74^~%}?EX>PSw}wQJW|em+NM&Yod*@ino_kqSjrQpY+` z`chHp@(Cz42jA#Q${@*`0UvBruh*%+zfS<-u3fvufE(V5+qZ8QRs#&jw*xrkMJ8{K z0K>I?+b;T%@BJXX_lZZSp8;X1s@F9dZb&MGjXRRROOpMoi%%;e(cC{u6bCmpdE~5V zJi1l!RZ_rZHdb!@3XMU>eWt^TC)LLS3Q?FwvG@tX*#MR_>r*Fm%)!{gpt3SVW83#r zP(^2*j%}gil*@y5X&i2hf^q?H2bsKpt|@`~6=D&KLKC#L6Z3!1OIm(930ZR_{bbRL zJVUr72pb#tW|yOn220HI^YgiUoJSsS??~An-y~I$YT~q5L=s{Q_;~{0)Ei6~wNUeV zTzk1RUoTE_b+q@dzLz9Q$EiHs10rl&9e2G1Ale_2(O&-KrQHE!(H!f9poi>P-c6jy zOEN%uUItV;c_{^rI08t59qsq!%g((4pS=*W2jXjCYtd5Dt7*jHEP0Il};JXgxD z0udf&OCoL8YIT0E3J?AznLsfEf?>ePD3@7wj!QCug$7z-^-<*=4G#}8gSU$weDH+4 zXQ$JorKKgha%F~QXXokiLJC2mKqn8fn_yhPTG?Der(#^`__TAq*t zhuU&VVPg_*ppMC^^z`!-0#9ro65!`)m0~xHtuHCbexi(_waZo1Rkg}gq2xD3)b9Fp zWp)^qI zbnO0Pw0qAk+P!NRO-xJ(t9Y+*w*@9|MC8En#(3d{7X>&;Ydc(fta< zs*K6TkTmrq7ON-cJm5MYMfQ{8w9q8GxL9xJgphGZyb+z6pv<56g~lm>lNf^ zcsoZr5GFt_vX*n1D&eGiK;jn|r5#7e`3y!$o}iPTlSOuvwyq;%;+&UZYB^)Wsc-#> z4KRe6mUU6Lo2DWh zG`HNOVzrMY;2Hxo23yR&VK4<)sWVt9GEkHiH@d0-C`!&CN%0Hb7de1U9<;$6;`MUEXnABG61evMk^~rnII(pFz{s}sDMRe zz}EG(@TFMrwYoZTpj$h+i0sq}WpXW7YwEWKPeo7VDpYxEu2M%B#g&yck*?@gMy&^r_E$ zhJNsa-$U>;W$8bltgbo}wOAc{h@YH>LbQc)bo*84ctlnlovO7R)S4VNyW?7IVj zPU6inaxOf3K6dJcF8L%i1NKwS$U3&_6>$`ZQiUVyBkIPc62ERGsM4lA2dFYIpyvB< zDUkb73&b#{sIfm;E;5@qe1@JJK!sl69Sdilj8Pv@$Et6NOQLS%~SLXv_qzeEg1F5H;h6tHt zFd-CunIO7mge}iuVnbIHF}Ciq1Y9=T8czTvKv5S1y;U5#a{wR+*+@*IJ+;MfRyp!- z*YSbK@-D3k)6-tDYJRI=u2yG>nL(5vcp^)Spaq#3`G}furTJTucNxh9h2(k2&;n#F zd0sr+gpDoedxk1mH5)2tA-Nsw1o9M5pFT}5z4Q{DJ9m~D#jCWiuq4u!?t=t0x;!w~ zX~xNNDJ=9h1cfFNCf8E(yC2f7U3+Nn-aX=_h{v{V+i3?&(gTA7J(K^<@(FWL`0Wkc zL*MtuzK@=N;U)UM_rHhU_1Foj1ZouTnUq^peN;VBJxfWU(ArP3%p9v!N>0K>YKP?b zd5J}oZ_gvLY++WWO)O~y_xbwMw_HSAbABOV31iJ_l>4L;rY-TD!My8fjNglJE-3cX z_}&9ls8?kyz@ke&MYo%P(;$(tNpg}EyhgSti;`o^<_!vPcJC)CJ=WpG&TU63oZFT= zt!XrcVjzVyE7m6&dBkYbSuT}wP?$#^Z?9Mf22CQ-t|ZD3CWg|KEegqY95Hq-VflKi ziFF&D*xewje@dl8r4Y@qI&|!!vw+ZqY5AK+)}bV_oWVG)5G2b(v;=e=+%*AP2U;Bz zF;L1%+avS&>dGVl3Ao)-+nL5%lYvcx8azm1b&fGU@{3fh_e-U5Bzbg2_5H&Np7)Dl z2`5J>hziBhp(~R?%*QVIR=Ll4p9 z)T9`2!}2E!)N)Yx?Tt$pFVa(wJt=lA-~Y$Hhks{K$ntS1@RNl~!4ITIx@WnC@}eSjDuXn6;1Dk|OLknbDHTz&=!&}9T}eDlZJ%K7u{l6pk}H@gW=Sn=tb+-^ z7K=6jOyo$n+btO*RF>9py4hM2rV#rR&{|Yi1D2fgLX$l5cw0u2*X1l2%yPzo!K70_ zueFSmQz$bbr_2t~deE7?BJSNT@$|A~c~VJit8k|~r}9pk2%fI!t+z6zc|K8?RxV54 zT%1}kXwH$oAF6LVGVqeHTNf{0rfb)(T5eLA28PF|uh!3KtRgaVnWbL<=wJ)8!l%&7%;KGxmvn0a(fY z0qUw{o&*arG5KI8Njn_K`Qgd5T&U>zEm<{VXy+qTAdh|dyw7rlr6p!A19%)t%3ndH zGH36>`@?Y{RGwFlG@XQ$F%1kwRA!S`1J#w9Oe5rOC$q=NVX5dZXy%*WEaFbnO?m* zLo-({(>K5QZ1NoP6t`~ODy{vFKX5p;>h~;O7=; zk_Xt)fYUZ__ZkjuV*JGeZZ({e^(A}iTz)tp4)_fsnj!h=F24-|!C>4b% z0c%hylw^MuU#mKmE#>dMr63Q-jpK>|4#5J#u-E2G$j3MY1DDB>}haP(9VNI;(^U*-wlT<-prWap)iB1D7zIIaV zbLQq|C1=tnoiLGi27sylaBi{D+qHt+qQvui?gmVPufF=KJU;ii&nJJ!e$n%J@7}%i z;6o2eYrkzQKTk2U2zEG+H#R=@(T@ouj3S52(vfG0>YIin)gcg8-AfjBo)oL4{-#bY z4g^5O$r$Af<3;|pc9RCxdRRf<@_X0&7rN&pWy5#xPc~L%#;44})E%Q!4zjt5fU9LJ zFm2(gc3uiF3(mLHa)M=ikaQC*bi>$GFeXt9u*HhTY^J2er7mEcH(@9(IvM!khOjOt zQd~j`cyZ6;c_mgoS=?e@Sb$=T$w6TrdA!}iq+i#jj;u%|m4&UHl(R-~uOXtW4`9Of z84DOw+`}ryj_`|98yGVAFR4U!&F`ERY~czjvf$6l4#?yrL!yle1{`CUR6t9CLt6?d zn!M`vnbo_%^5x5~p5%$XpN2No8PouH)u_z>E-*Oqk%Y}sDYPk>V_+nU96rla!XWI5 zKx(C`ysuUz2Qq=QrB`XBIe9#A3j^XS^C0YByPbeI&+_$TzXk&F`6Qo^Quaez(?#;0 z)lyCK5zS{YoxGytcRi-AFm=ce!~`2y=M!JdbBhE;ybB*R25_BLgIWyAV2>l`AS@;m zQe=`^GJ)c>79l;EB*iR)vV=vgMD`tX5*gzWTd_%Ct-I8tQTj~t$1FxHP1lMv5)9F1 znxg#&_R-^yKaq5OK;9F;;`H=1ojG-mUViyyI(z<%Fud~%^I{y1^IHgtW-grOXDRDM zW=5P`&Z+!t|8UpSi!Z%IFTC&q{q}GFj%-)w1;F6o0PWbZo$fz=OxpV$J9Zz9j*d#Z zKP{%YJzJPFioJnzjW&%D()EPFZb;r~bI=N%h^rX()>bw#K!1p4|chyGVhbk zC(IUsq{V4|4~Wy8XD=Ct#BK`gA*^RCr9~Bk-a$%z1>+1`NR~6~tDmT6;8jvs0?kM4 zbduu={B%(j*+mLQ+nMp>UeHCSO3-@$SPn4%lm#OE2fJ$OEyu`zFNyCbC8pRo2G>Nu zfSS7$SOuZyIj=?SQX(M7SPox&64h=-SzImr&?X03 z{1SIfYDdyL&YJ7a;K%7C=oh7Hi%P)?6hkp3Ct+^d%r3+XpdE9O7Mo-%HN9jq#kq6I z^~htAeaQq?OkR)ewaVLG=PBE)tc;ti(@OSYDG*>j6!g&qjY+=e{{4IC$)~#lLKo&1 zXklSddp|R{K*yE~7cMa4bXmGJtTk6m@St5_jIp*ANZJY4OR~mr%xkMF z^0;()nx6T>=j?LzC0Fr*2ab#MjFx_|$N|GRG&I9;x_Vv;9h)9gn(G5gPo=n;mR|AsoI*zlfU%G&FETIcGwq=V<+`sJ-kVTYY zOkYggW4mT3aIX)gNJ_3KH-35rvTSEz)iHj=ep?nxx=`kYBR)r)kF^jb_mC(ZVahr> zDOkc+Sve?ZHNP8Q!6Jf%$98oTuteG}Qym+ay|2|}T*Ti{aDt;RmPG zH%;d+Toy|cNG27NO+2$msgxAhA>U3|EfiQ33j!)E_uHy?EmudZZz2UB0`x+uJ_gW2 zr7?;`oN+YrraC6qU^~ejG)oA89DqhwQ5YLrArpg9TEdX{X%`h$Mb#hCx7J(2Fe1+g z(ilLcFargvGA79+0AG-?L>H_g zkrE~HZeXVB+Rn~P?ibHb;m!I54Z>Y}S;^Q-lMx*h)owvvLGJ%7U+bXClbk#=2}l$lp<&lR@d zId`8qHZ%;aK*iHytq!V@k*>i&5#s?;M$kW<@1MNTB#%74dn4}s-3(yksFN5}Crn@z zI=Dp+1g7B4vueLM(cMxBhHM*Bea`aulvy;8;bprKqyr#%nSUqf&-Rv>9D9kx=YXF> zin550($6R|a;)-^>&J{2BWDf<%g`v#p1nk8&t0Vcfg!3h5G<980wi0!k{%kWE7)yzYV z0u2g@G%x*E?RQK%iF9r(pqqdk*mM7O`;uZDdp!V~d#(0!F7$M9aIbOycK&N(9~7x? zoAZeTaFx6&1`x$ko%&-)>Z1zGJ0Tsr|30aL4zVcUYhZSMp62J~>EhY*bne_adhOIn z=>v`KEdb?UU;#MA7m}h>cJ$mm<67%Q1OgT zEr$;sqz6u%U>SOkeBW=^KqdO6`RlsS;oG3uZqh{t@An_rLFJ&V3js?z(XK?MSePQ= ziZOhTs0V9X8i1zFrFn$u7@`qa&Yin_V?acr&z+V#i*NSAZy*hK(A z&+d2ZU+&ew7LfSK=Nq}vMY~tKEj7f?L17+wd^d-a#NyrxW9K1Aj^RrtWlHi)BJ=zs zO7pT@PM_yMqvg8j0Gwd}-2m(+Q=%ld(91}^32u$ORB1LTh!ROB!(?TEtOF8JoaQn{ z=CLPWiMLSAzuu#ah;!Am89!BOUXrFi!{oG zGP8*_Yb)23Dr7fE!^%Vp8vKNXXto=YPgfTE7-jO@D!){%$Y*IVqlNPcLs>9KPIA?p zB44Ct0f(qOmgDdZ0GlLKDu`VTK3|QuaZ+=OC0hp^3r@Cm;EGaEg^&p_@C_u!l27Q0 zGaQI?b{Y=Q;o$(BJ6>!9wm~PT6d)#*otZo>XXK4XDu1=4;KMPHjzvrg3v4nZy&SY) zNUj4v@fkz`P`e$Q@1iehXJAGF6bt;Q_tywQ)lX_WzhFk z+WIj_IeqFh1G@8c<zIpiu|aeUoa8}yQw$dvB-b^rs%36O}# z7oPcI&n>!b+g3V${5Tytd_aB<4-ZM_7UYtBx3h{k*9hs(L%J5cGIK?)iM~ovzh~V4 zQV185b4&33jD?IX8y&Dp91G-H>HQ9}05KccMM%%{v0F^pdl|zni!S%x_`el)q17Hz zH`IqvnMD}pR0qc>fMO7Bt-762Io5bD^0doUDf8l9K&LX$l5_%00x&jS}G&(gVvczu3@I5gmyEXA`Rkti7$vo;YK+iP-# zE(!POK&<7Vp^6c2+!9|ep7i;+V08jQZeVCgfC9YqFtLEOs|c_PSWfQOwsb{pQ5PEE zftMKC+x7ML>tx}j2C^d8nrw`K|6jr+`07zuDQgjmvxLDwuWhsxFv8*muXje(7{tMJ zx!g$4CIf)qz`O_{`9vn2gEfGhR+3ysFJTH%P=ohZpjA|P&5WbvwdP?c#UB~pGiBja z>URImc4=@EShgA*|Hiq(!%15`xrCXVEe8M{0Ckg|1DKBW!0X+4)%WU^mfe2zQgW>p zT}!l%kvhhJ2Fk(|i<+cg0ib7~-|a*uZx7Kpvv~KPxL>}fHUma@S6;tY#fAq{VDG@9G@x`WSl|i9DI;@~8HnVEn2d4f;?z;7}0Q|=N zXVsGREaA-n;w_JvGN}gQ&Y-`_e&XJ~$f8&d#GQU9`Do^eUp zF=cH;96gy>)Fkh}4rDqIi^(1NXB11H<8}w^QGs55=_QeJEA^^W0hgr`FB0hlAWmDw z1p>zKH;nm^lS?*O;vKxL@lbiybIFcyi4Su?mM2D0x^&NCRV zqA__=5uKc8N^$`eh^2mMjvaK{c$w|p`-ax0524BK${x0@!rB2mFT+4)^9Nm?Vzy#B z3lPiYV)CB&?13vVNYV|o7$EQ<;FF=dN9+OP4RxIe^47=jimAGg8UEgw|pV@NsP+lR~Sn zJ&Nh>0!2DAGc)pd?z!j15Zrwa0EgSQZK0>0dP*#EkgGT~HPvHg{8ow=o_|4DtH@F{ zvEXb=UT8DPCdmT6$a0^hvyi9##)Y*LkHWP7xkMsF+#VQi)Y*pOo;7RsRpLwP#XhZ< zsQt(mjmG|k{BLv;s`n342iGI2ha>ggjJ-HvoU;oZL>BagCiez@+9d_yn}XmLK3N9e zsVdUT*cP(dhrOVgIZv*fFbQ^?7Run zqK>rMI4kv155t(UfeG-m*F+}qB+4{VDkEpuL4ko$)U!%r+! zHqjo($dhSBER8S_Y&F`_y#tkur_Y_`&k!is6X~ZQzJmaC09B#LH(t`07~nRPs@I}a z?t+yG&Dz1SUszEK=<&2oT~WYHl(Jf}<^v)zUBHm9Rn}?ekJxZ}Y(0#XWonzPL|_wu zOfEKAp;)D0HZRRq$0i)@)S~%+z5qf@Hf}=6O1_1_bskA&X!+@DZj<|-Qt(YZ6Al@Z zfY&KQr@tpETO21Qym~2U3&G@jGMQav^HNe2qagOiLKFA9d#%f1#ODi=4lH^M*HI~W1%U1wyTT99O!m*hINh$|QF>p-6YA00pyk?fNyk z#FFzlmWa=tJ|j7cS7$EM^5Pn^*2o3x3R5FtU{OJ%fr5Y>3No-`%R5_mQRX|*Du0q< zDO5V&ckDjee{jFZ&PVUNPwaDGm-A+ppK*S-Y~HTdou_I*327M&s{h0f{xN#u!Q)gk zVC~21lpyv+d>)FvwrG^@HyD3>180g6Ogs5aT<_KoZAlr2p6)01mR z>AoXtaTQaVM;JyOl|jG^@g&`9cBsSKHTn0`JUQ3;>eOHFSF=~xv%rkHqFq8FQaK!! zCtwddA}5AYbqt`VRm7p>_Xu-`zcX+IYltH%6%`P|Z_wrBh+K+^Kcs~D>LjhH3=jqC zb>_!z5Z5yda8|HMU+pU*GpSYcjjmYDs5Fj!;5Z!{hfpvWCC0gdS>{OIkTG_yLx=!2 zO66!bVYrFNO-62Cdj3;Wa0g1rBq#mV>-ko7VlE_1j24Nc2H%hhgP_|}ft+QFv&sM2 zJVSg>PF8a=^9`Uf0~94Mvk(cp=&mnU5iQ@30nTipfine8-?NjL14~{Zayyx29vT@; zj$`Mp?ZV8+cFnf@ouq);K%rwBT@UV<95{3K zHgvKUaALo(BTQk-%gNat6GHO!zVQir! za>r@kV8`;gJV06}$EJg=u@p89i3Lsa_OUT9QP1kuhEAdkw(}BbsVtQa+Fs9V$R`%GETngiT^}j+oc?q-VKIzq~SLK2D?ce&HYeX=nx-~S(L3Jpn6QcH-hy1k zZ#S#>>^Hxe{H|5p#)$F1=9ZQP6c*}Lxfk44!ti>&fkHpYnU-fWfY0|b4Dvcqn1ry9 zL56vCX4P&SbnP_#1dKZKYP}A^9&0E^^hRC2rqH2<-@iIA0CYyq3sdrb`F};Rk%~ke zXlHW(GuNF9x9D@vW$z1jy=zWx)U#O1R#tkhLTuCK$r;ANomN1r47x5{zD%`&LGj)S zeBb01wQZ?ZY9jxjr5(VX^c_Y{o&XZ9x^;aS|(Sf%Tjyc;^gthegO0zoe`;U>(S&81nH$}w(k`>ZtVBy1;RXC-e3Jl$)v z0MosH&z%sbGIQ3m(!K9`keFp7vn-8^>^@v%tEt_;$*hl%yC@(L)y(9)8w=8c4-Z@) zfo$yz;-1cj#n9fI`VTghyeqAp63$un|EuGYVZ=3=&XC0x;?-My2oq12%x0 zudVF{`s)J5S65f9|8Pm=MBld@OY}`GB%sUX=RsOi0D}q56@?Uq5$IUuHTLKFDLWwT z*@Pey7xrWUq-b3wdq%f$UmFFdv{!2BTemkvh;z>8TWl{?mg#B&_!-&o-^K)}7IWw#H z+9~PUa_-z&=>^?rtjV=5=ctg{7b)=f6V^Y@07Ca~SAZ}#H&65P^K|CSnV$2ybLUPe zW`XSdj>jJpN&3Kn{XMeey$0R~U1yT-%NRdiy1|^27FYOlGn+a!HYlK*;!LYLyAQ}u z;jrf(-Ub!Lv33h`pEm)9mMiP|nMI2Xjd3C?J87BZIx{if&q&Gc8nO2V+LQjmA>UJc zJ(O#GxGAZ`i^K?NBr%CfA-Tir@_8N5E7^GA?gLy)a410FUUv7TGpPpP1ncMI;2=ov zV+Sl9AauoJ>(fL;iLixu&J^a6$6F%e4gP8DofVL{P9&OYlL21B2pUMl;1-%pmMt2w zRbwI@$5}}?BjLtT$_B>icFCmau%JhoeULGgZWvuJ58G!+q`Xw-c6n7U*G8GOwg8?+ zvn@ujU|nW;0Ion$ztX(4ut0TY0&Dyj9vr4hy(|^BT^U&00wN(1YxS`Lf!;L3r*lsO<;pI_%DC%6BN z>}lL_yZ2vj1neRUuB0=GpSI4+rXaZOHevy@GIQ46#vS{5wk(@N=&mCNOxM5O#m(3; zXX2h^G$GAN9w|UX97qMUyWb?ov(x17%M7;#yq3fws8}kPY#Ai7B@Vsa)&3N0{@1G6}N@e)6#>CCy)G{gTEZ$j2pM|4?0KtzC*(Vyez$;8c|RGO_NzU~LCs7uwzE=+pC zZJO^GWv*idcHRxvO*($YNg;~MGfb~pb6CvWpW5*R_miJ9g?Z%h=8qfKZ5tU7lfe`DUaiI|G1o;c1AZlb4H!baf5)Uzcot%X-vt{Ps-#`2 zmd&THqmr}a5GuRouC$F$N>{!thDu8Qhn*0U5xLU@v`Qg!H8SB9F&Sy5aW!XyJ>EbcVm04EO1NOYgy&G z&bhu-I;TJr-@lWx0>?~5p%tE_1t#u2upgLEJ7!cdr*HYBu`!vQx0aCj}F?pE$(UUho39UYa%sYo4H08 zAwQo(=ax$}!~aH)=r#Sc(BD7y)BsDX4 zoxzp03k=L+Ar{EEfc(Am+SXpkJ~<#|UlL_OkZc#I4U21Ihj;c3WX8UZH?As~ z+;yLPgxI|H(~L&xaKyh!*W;i}9V$_2V3@}tR7)4+d<*OEd=<^J6#q)Ed#{HbTz_2> zr8$J|x^(taj%h|ni_UV<*gw6`+-u!^?e^DeHKlF)g?eBu4XQ;;Y4PCL|!XMi!;Hf1qkJrid;Gx%C)AU#R^+=b-#W&ep$@SY%=Cfp3*DOFy z<#;`|mMsEYflKz7)4WhhfRp>oS*sCOVXohkwopr0(XRS-uC2DDlh3uQSLw>kB|3ZN zlvG1Qj=nN8LrW}AOTHplH&3mQ3JJTY_kHAx;Nzvw})}Muk1~ zG!4Yr^th^Hr-d%>xFtI z!t8#WWleTJH=C5>b=PhdcJ z$y<=cn3}J93Cl%3CF4NCmAT<0Ju8Bo){D@%Pr)dHC0trsqV?ai6i$G7<$K_PL%Zmw z{`4QGL1y6zj2k*~crJI45@}p2k$oNKmqyIXi7ydEAOoXmH4Su z$=P%YJ@2|$BX@-4^0xKf&;`EaxE6{%*QXsr4hr+g;5fo zCe+@x+PAaAvTKvU;B{r`0MK{zGE>jT$-D)e7!uxIT-(hKk-?6`<6r6-& zWQ;-){2QO&5n|D-XK! z;I?x%BaR`>7Tl}{84esea4M|}!A@$47GJ-SwDprp+E|$id$x9 z=U6VjL}$*Nrs<29=`#O5J2%VMV^ezQI@5JoG?4flko#hVtu}CS!&u-zYvj%YKC_pO zFE}Us^Wcst`k6obqcqZ2<$re!6neIQwRH*HwQH7HQef=ZL#sCSlrj{#oD38Kcp>-G zi(N`U=6e9`==;`+GBp>EZETI)I4l=Nnp=pJh?w`;iE7k8wUr8d+&J^fVD?%vx$il< zKv}=o*=Qk@y?^xH)}kcmh3br~B~RJ+6V}jepT3X!eP;6uZGSl^%p;FCSM=VFUJsa3 z4?J>GoiT*uR(WyiL3jfYqZH)1>CUl;z3g2~yGk6YU_sbm>PI#I#13>`|&oxjLHOE-m{5ks;u!N9pBU??kn=P480E*y02w7QL(sesBaYBwU7%f$~T|UNg zsVwILmBRq00EHc~DQPDap#X(qyd0Vohe5lmEv%#>RVG)GV-}br6OB%iU^Ed3tFRScD+5-iGU$+3f4H z54TPBebe8)1UzBejx2z}9>DK_ncAn=;tk$rz81-)^S zui0$0WRU|#vD@lO9xMt&(0&hpUu9+A@3sAjOvzBMzx2LO zBULV90fj_c$A;)H{=|>bwuvGBJ354f6j%nJrJn>tCIg!SMIuT7g-H=fmbHSR6ac!vddYEkndIzspDO$I zDM-vr68dm#NhnMnCKMRFUb=FPmYZ#=m1|UG=B`{RQH8-0rov`pP1pu_55j(Cq*x}k zZD>=Y*^mN|xw$z3kC2=p{X&+*C&6R}`-|8>A}nG6%tSVBHbr8?gjxYWL;(mNJZwO4 zjQs;8vBmL7i$P=pg;8u#B^@w{I)KM=4EU_RNy>VDt;L%XATr_L{UGB4j0WayC`^nc zj2DdoMYx1?2MPkem$7reO~2AC6G%M?>)8n+%O)Vw+{o0{BHIrcKRcQJ%Pz;w?b{{6 zX91||5uIhl(n&b5Ny<;yqwFzeb0OU$3q;*9XLA6v068nUX8jr6zSpyNSs=Nd*~w1c zkul5eJZ1ACv%qsb3zTIx*Kg~Q<n1NC0A>R!Mp%Mq+#9iK}0ri<&N&?xuhy zFw&kBM1^JquSFK*D@$IkGW!icG2K@iTa|~3ZH4X2KdsSMi#1+ z8Pl@gvAb3_y7yfEpksbFV*5S&Jdx#AO3tuZcIkpn8N>A~WV&e5v=r&A;-_A$Ia8QN z9&d_>dwz;vR-EPlQsi38#pV+jr4y#hBaEUBR7 z4PIhSDuqmq0T*bTjaMjY!gr}u(Hu!L-*(_s z{0}{{9>*#RVIsq41USTY4nT^AmiV&dhxuZbz!yuCAl=> zUb!j@03Ac+fR9dIDbqvbZ7``jb|T6YSQLBmp|SwTEgp&)fa-u+R`N}*SueTT+y}7S z#$J|9uB*rudw9v>#mQyvdAE>>BI}_YrLWIg*0}wy2Z&h~CVMU%yOTYy?p$V%G2LIU zeD5l=y+qdZlHaq;BYt-PQCM&(Jk#?k1uOC>;mf!8vVPQ3Xb@|c9C8(~$~5BIO&MW5 zXHqS0=?OB_gsv~SR{nx9>+t>2<^>q;T`ZI(df8qx|MDKs*PfXg-p~v0RJfdav8~g(JcF^r}>x+(MOlzrH3w zPGOu}pBu5p8(mi}w8dq7)3gS?wp<}sZOq$8++KvsAO5}caLjg=}0ZtLk&MndsGkE}QT5TN(V^^uwg}nnH#2_bt zPRymdA{V3O7$jSKj>N8^qTmqw0t4r&nswFg%f6(ooq2zCjEPY&<%w*oE$`ACMUkM( zC3#Owl-L*E4)2cvIbozcolM=tg!cg`mEso^oETG6E|m1VSiX{P)yHB|Y?GbtTjgrU z9O1b_F$G{a-_qXD(+Rg1@I@O=Fz$E}Sy?&#ohX}5kbPb9-DcPj{qFsBY@k*;W~+$* zpZ2b8$B`Vl1~XGqRdsiD&t=E!HDLQ648yQr4Zr%?{}0%^?HTXx%yf5ENy?-dmqQ*> z>ID{<%ZoUuQA-e0tp3gCNIKWUDhHtRkaVv)xyT)4l{)Znewx|L|)h((yS~ZNH%9vVT zd@QJL`d|O~pX9&(^FQR>4T_y&!(@6v0CbU> z8c!0yH~#GId*3nOgblEV7_#X(dmq<(A^S(!{qA?Nn|4;;X%c4)Q*Wki{dbXWPR;qs zJwDeyIBrOIBlo$&8yA0#K9(iS{Vr$Oyf559;jP@tuV26pHuEnWN?bokATi2@&xM)0 ztpkR6IEM?R$s2fByeiNP=MoEJ)7gn}zF2Iw(bF~VWH-^zH2a9oyP7U;Z#ilwW7A$VEHJF!!*k+1t9;BgE#e3w0SW=MSi=O$Pme=r3@yrb!R!5+*%si4 zHCAYGV-*|A#`W-Z;do{vw@oec{Umk=z*Dw@~w>T`~Lwnhe`V!l3}p5uNV zWeU$-O*Q$UjP<9FALYAmzcUZ$|NX;z3qkYm|MoBPkN@yD1!%3+t60+6(go_1_gu){ z_b1#_0)~k|;S^~m?Yo&kVI1E!EgZZ(#@&j|bEk_}`G;uMlR2D$IBKDN%=((8t={SIRm{k@IHTbH!NPqwD{zifQ8n(H>iY^f)5Y$g0KFvwJsX3ljHI@+ zfJ6n9=0&_)LRWSQGo+te+X5|~1-fU z7ovIUbw;csM4sd-X17iji&EH;n6+TQ!JrV#8;jzvfyvRN+4c0?13G@?O~R;M9KjE> zWW7k=7dHl^+?Gt^hd<}@Hvl$wU=!c5ev&nk9N3%LyLRq=)5Q#G4-g}JhR6jtXHYn{ zIS(7H5k&K~vBM2}Dg)q-zrnRS^SxFtYn%(7`8md&f~M8L;o17Ioi9?xZJigagod$< zb#+eB4VR5!H3P?U-Q3yi^ztP4(^($M9_uh`gn?w6Ka2Aca!>=VBEb~GGq-vC;@<`e z=LjhjOtlBRMxViFa|a5y8p6x#!6R*88~rrP{`Hq~{^Bdq7AYv)mU6yu7UJ>3&w1Qf zFyq~CuH@>NV~t_2H%#^ZwBN}^zd#*sHouvVZ{=2gg_5tlbwHRlXm!|Oq-XW=whoI{ z56&d_8bPnVX9+VesN9|m(?~Fu(wm0s`J}OpxQK4?&7m!`bAq{8Yq%PKk}bOyCa)fw z&jI1Nn3q1t$B)l)xOdOt#hfm74s>SsL7aAO@-bE{xdu-eiZwTLn4Zg6K=Hhx8vezd z2~r&6ple$r_1Wyo8{dM^Eh@hIZ=ovA5e5gqa3akfFDA?~HUWAA z9~?iBK^relBY0t8=5;l5B`-wGG&101&;wI53TyScI;3a+xJ@Vwu0{aWj+yIu`2ON| z?3{vj03t zR`6~qf65eE976?ojtgralNP+%STxJ5Gj*Y6%+Vxd6aa;u5>KjDl0o6vXFS&7ES>{7 zw4dk30GsCW{;h0Ze_h&paO;9*<~gr5+QMjp=jSsr?<1(I*Lr2M0RYLdLh*0@ouA9^ zPt}yh23h?6-9X{3+{!OoMnD+gE5o}uSCEI#`Pd4+>c6)N!V(?VId^oRvYB?JLOv0Z z#_A=CSJ=)K#}I3n34jL9YxQg`M>39gwx9vZEda1h{s9P;8GQfUALYA0{#jn%yXjW- zdTMr^4?8nO&8i`US!iCWz#J@(k%-B?0#`FfpIp>#am2!bz#KRBo`)EV_vRkNs(DiV z5RS2lJOHvemz4LqcxhG>We1nVSwb~W18hD$y_o(8F$^t@-Rb~Q84z8R4(18{VD;*v zXkf1_Wczt%?N;wjJ;xM_nAWcsr=~D9lf$HkyvDq+KqrNJZJ}+F)c4iPc1oS8cJxTb z;xZNnE!WsT7RKj%$zF|YA}@f@P~kHGG;3pcSvICM(tK4NWOI<=y18AW9?$w_1&RJQ zGII=;(MB+SsFOD$xEA(k=4%4LY-N&>^+SA1PHo0*zIGq4F`OKr9QE}k^JW^yHNZry z#{wWSU_twI99VqJ7<(oMQH|o!z4l+8Uu^jAEas(u_wsx!W6LvaY+IWXJOF#LFfm&h zE1N|Qc(xRcZy&Ne?#meP!Cl6Q_XAbif*qV0Zv|^;_di|%3hQ%RBL8&&K5S-Eczo9< z<0wj;&7Et11`x~@h$}OAFVAlt3t$cBmVKE+rlkYWcs5=A(lgRp7M6bu?BcbJ5$fQ2 zcs!$D&2uo9TdpQ_JI3p{fx=t4m0zw5ixq&^)&OAzZ`nZ`*gghg{#j!KVFpf(77XVU zfHM8p7<({x?Qwk9SV>_(m%Z`^P)Fu+(7aS&m`PvQz%F7PZlrZmlao%ezyJ0-`QhV} zyn6Lo_KOB@_Sk?s3qf;mPhc=Hwph8YYbg`2%waYSjg~{+rZ>~JnAdT3hZZ$E>w9<; zo1@8oCmd*2y^z)EMeDH~#hM#5d8h|ZT{Sz~s98|NCuj|eV-6r1rbg3@eexX4`Ws~{ z)pHtv&clSPwrFZth@GX;6UzAET&u1_>gBA9m$nzc#}>6%;I)0*cImwvZ|Y(q(ts8; zMI2ubUZo8D80=hQD@OAbSU!0BUSq*{G30-zsyjqzjTR%bXTc&AN9ZN%_}H?0;o1iP za$u;|i}N#J%emEa`CZT8)bnMSgxe;~pC8)USe!8%O1mGuNskwIHeEAVWiY^O61R7( z3!4ZA4g8$Zc4O>cUOJ$QO@sFBW<79#tU6f*aMrs%(Q)7`qkG2c$aI$8 z9n12H!2IP}&qsA#iMWPYULTUY*_ZLDpB0L5UXqO$n2ZC@hzRLwqs^u{oF~!@rkF#V zDRgh;$wu0gaNGnB6oIpfZ94N*9qC{hP+(|IHd^n)TS;%fu>9A0Evs#^Q_V;OK>j(9 z$YYF|`|i8g7@;qGPTDcg7*kT`T(IsbHqCa&Qp8^LF?$1rw{k1LT#12S--gaFH;-W< z^Q(-&jdq8US!1%bdUFpX^H5I>J}nIZW=RAHQMXTI+*bS^=reDl8Mz05%oJ{PO}@AX zcnLswEQ^Ucm3%A<%l>c|dPR5cIP7=97A_X{0^Ylenu8bj`t=xnI&o)X_)=LgJnpk+ zF{mtofsWG1)ljK3JmF!iZQa(jYVWEyZ*t8Q7Sk=j$G6)@k9xuYqg!YX62#UvlW0BTuBn<30<{Yzi?f&Eo zaChx`Q5V1_JA*LD7{M#o#kxX%7R+kmIOqof5H&Ljo^ML2#>mvo4eJo$wd{Rw7eFT) zbANn#cB#j94n3%MkYr5avmLW;N9)tNDSY>Ekau^5S>Nf{JR2*RQm^G?P;~8&ne^@% zgqgWMTWAgGuk=3CJ5HHFR-XpZ(h45#Mebh9rcx1gXj7R-`E5>@`cJfX4m0*Lgk@sT z*Y$&KtE&QlIzL~(u9%}i7LZJ+&i^sp*ZSSsa|4C9ax1?~p3rA;!e&UzdH(h3NrX9rgkXuF>8 z#}A+6e}4bIFlG0~mMK%X3-hi8$t^%i@71f(u zn3A9EoTfuOEVfuop`&_!33kPtV-5xe!LF$3O;d-ZSiIER8SJZPqJW^@&;Al&byy3A zMIL|wV0D5yP+DGA0IMxb|06hJ`6)oesCQy!gTWyH%(!r4VZ~yGJ_yYh%(QLMYuC&m zZ`%fWM1aL9HHQH$V^$M9Gn|7#V#l<~r9l5LfkNu?9XktCe+2{tPWZg2i_P2I2HZ0M zJABWker6Is*Iod04up;G#u$w_@A28q#tam_ukC7xBs)I4Lx~=z@jY|MMcnM`8?<#j znpRi6@zt!XjJuBSyJ8tor!XD&8V%s9*AMc|+c)y&Fqd)Y@fH;n@^$iay(SU(Ye3-? z9?J0A&(@D-1FdFsk&XJDZ=y{GQ|5=`?p{vG5tfff)e`S&4)O7sAOJnu2xm4FHvf-- z=vivPnT019@SfOHFMLx zv>m2qj}_-ROjl$FnLLY%F1BY22l8x8o-YoQdsoj*7bel0w6Nxg7m^mbCKx-54+*h* zV+k1?u?dsSh&V5U!;#%!zyI)Iq4{)eR6rA=w}5)tI8nBu4*RW)ISQEWl7xL+Uuu zOhjAcG=BH$PJa9LQQq9?nD=yiIk)?B4HWY0$P_ZW%8YFV(qIVz*bRWD2p86v!jb(e z+f>O9uVpH8gX$)AQ>u@~`gA-4-l%cr9Xtb$*@cgwGd6};QJpMhu&(sf@;d7?Ec~3Lr2$02$5*B1O*KxT9 z4)Jd+-VMAZ;k>h2Mu!~+ip=)mT+C`Q2t~VDzsdI($H0us=jZE%t`%+Qz;v_;F$=*a z+PUS@^lh<4HHPQ01+4a%h9}#&%%P(->4T1&Ff}_c_Uu0Aqk_ssrr1nbyu$*f)SR3P zNc_96zL2jT@8$lG#51!@7aNOl18@x#UV!ewOIea@4sBx+V}bT`563YmADL+H6RxFXV25M;)g>m%VAfcp%N!0k zsa}t*8Oiger&~yxTe+2=tI*=5?_eedODHYmiwrRag-pQyG9HKe+oXhJ6F?a`b+mf> z1-MQ&0Eqamp~DJR2@lm{J7#dGFH5h3g3hoqGg-~ANBPtDKa`1gXCYinTerBU@6o{0 z*-obpC+c9Lz)#=nBzT0!ZJE&THC#=Y8jqGUG~2Q2grfSwEo~lncH8Pi?~{LcD25>0 zMdngjs?@|z^}S8FHlLc|*Z`qcYm>rN-W;HU;o^_3Q+ zdUCCn0^JnmA6-1x$O^GU3O)`_yJeVtdlq6eIpRJ*2ZgK#tSQram?2~~hJg++|vF>CcKb!xzu3Fz63&M0CDd&<9dvJ(1ck$38vk zUhDJLF+Ks1_NHe1mVsn{{aalh96Zhyz+xP69|}jg8z{V$Tlwh=0m1-C3I?0LuXz>& zto5&CmPL)eN`v(mUI6($9882`7mCzuCXyNa31vUY9pLNEi)#VPB*ZjkihW3*RY#M! zMsv=n;X~X^`u_d5x^*ok)CUJ}yCniRhiBjvL8Xtr7@b!4M%4I#$|UM!sCq-yBUvh` z9YV<97I-jSwc^c_hp&-fzcg`tjtn7-v3XLxno|g~!O~zuZB82g6vJt^0JS_B6Ij_q z@pM>Pw_daHZFRxP7M4amsxvLlc229$&D^#K#3HP@pB=y~HO1Z(-jwIOn%O#qK4^*X zH~=F6;CgPqFWwd{Ur%UD!KwnY?(_oBqzGNgB#A)eL@<|Vjo2Tv= z$hv`6FuirC=C{~cDNdp^g8rh`f&CT@MYt%-K;v!7}e0Kxmm}pZIXhK)3lPhnMyHkksJI| z0hO9AFO@oe`^BSt^Tiu^{h%KA**0Xnd-xnEWRS&xa0G?8|5KQa5t>Hz%U}v?Ux@zI zK(k--dM;yXcPD2Ho#kV8UiQMVHhJ@G{U+zGJ?LY2R%lnBxu{7}0Q6bnf%&u6Sx$94 z`8~e|qJ3VrzHkGDw{j~#ZK2_WfuC77*t2sC1{s)LfJKoWL<&ttjnZp?5Wo`W@fl1u zWHph-n&23%XJas$bNrHkVCID**99$CQyFUr#RJ#|GqYwlx1P%XzW@G5c{WdCUpzcW z^}!c9WAl7roh#!to90DBSf~SrIaQSNzbb%I9XNDy^DHAC0D1~@GME)ivIfGY@b)u( z9>s90JL<_8Mw>Ln)5S4M6#sCuuzDZI9kUo~0e%t|`_=Oo`)?c^PjP-@TXf+s3!W~L zhr2y=26oryh>HfM0O|4Uo+*=fcNeMFnn~(-JXbJl3v>kK1;b!^x8z>c=Aj&m8<-@3 z7iRwazRlg@3gCqP6c;GnNC?2EMa_u#4ZsV3k9&KKtz$N3WcQfyVpa>EZPH60_#9VD zo-VEducN85_M5@%d#&A{J0IU;{*14I*(BC2Lc7Qw!{hzw+hLz{=R}=g{(8ojz#@8i zj<}Yw=k%P$9+KsJdMRW2xd6c@&-GmX+ZWTR1MXx2>b34?%ZdDAn!%^1Px9fz2Tze# zHiP$tK~#x_MjV(zFROJc;5?MB@|$;WTGfjE6YAY`QTV?3-?=Qa{F=CoAz;i z$V4+fQ@lqXK}tr6_H0`V^JM8XtsmJKzk$MAxs{)`5SU}&R{^1Zxm^W+47Ntrt{NP> zx)?YPpfKllJb^j@%PcTGZ}HOzKa-^b1qZVtJ;0R8IHJy0cZ-F{lM>=Eo-IIimT&*> zPx9&0vpl|gG_&!t3w_|)!rdTkTnfFP=>da91jaQDn1-`aaG6~%qaMo;Wj8HNt{#0@ zB;dUZ25+wuc53gdd5jiaW*Pj;6aw^UQh-SA1GqE3E~Yo!i~(J91R2gbGO;LAxUX8V23WE!W|pZ%+(7`DWbFFFD-upC_IYA$Vh>dO z(o}HCx{@zVvbc8C zJ+|W-AjR<`3&&s%z;bNE2*|nM{Cu8kCV0Mg?O8O&m(Re{$q7SQBbITRyT`x z>iJ)W+EJ}I&jz6x&|KWcU$fBl#)gTRjWvCpX8V|J*X#~13JN`Q$-%<1xY_Jn!HJtqmMZ=Z zCt(LPF&f&7rideqr4Ey zFx!G*i%|}3o&;c-9EmTfTB@Gz==4^G|!U;t)oP3Jdh0t?0M+rO^ z^}N@=r%xZ`qXNb9XDni=_3i6B`TM{9M!tN!FMWG57C7bB2j*$MxL>1o@+v5-Uib02 z_MI>v%M_t#Oq0_3M+1dx2MV{Xv`aUoWpk$Ba7}KW)(8nrCLtI19)00L?-;L;CGZAd zlto}Z;eJ~)7geCxBn~`Y;CP};;r|00(qd^3>5(7+0000O9KQH00;mG0LFl2O#lD@000000M$VN0384z0BLP!FLz~Pb7^#CFJ@t5 zWnyn{Yb|48a%3)WZf8|g4FCsaT;N*`mhM|+T;N-Ecnbgl1oZ&`00a~O006bS1yCJL zw>CPs6WrZp;}#$xXmGa;K{oCdB)CJcB)A55-?#+=8+Q#5G)QpQ;6Hia@7(%t)qhXj zd#Y~Nmg&`NdY)d-lCG(lNHrB%EOat-006M$<)k$L01*lR@E)iL&l1n9Xh#4*0MwMU zWS+ZEPfxQVPe98laJF>^_bzVq=zJ=5D%IfW>Fnw0RyA%E08~>|fy<|-fwQNhrzcJT zJ~%iSkVri~I+m1>000Tq=kN1;0B737+0*67)6>pms_NC1{GGoul3ER?bg{pPkXz&yH8I`%gdW>L8l{$0O0X-GaDia6f9h?K0Z~i-5D4d z00ucv$FS_o)YWR|Y*payWc6mb6yOXWiBqyGS$KN-Wso)fBikr$^bD}7Y~OjhozHIZ z;%r*Gnk%r}>Q4qF;(k9qB}f3h$4>?Tko$ceVCPvnxO%!<*;<{lPpmz-xVybL++JS= z085F;fz*s_FHeu;p3T$WGbMGM!>I-#HRBhvg-WWbrfRYPm+Z4KJblA@qcu1=IfFQX zA5GDR1Cbqp5(qfBPY1&T6{#s{Uv^;;au5eg0Pt$sh)c=LHvkff+uHfon+FCtU8(`q z?AM&Y*zQfo(CjpD9JATG>!tY8Fu(7a8o}>Sk?i!6~T`8lMiBhg3$IDj%n9$Yz`ZEDC0u8i{Ll#t-GNO3igV8h_E`8s^IKD6AN8X6jT0f2%1RfE_L z)u6KJn$W&H--wbS6Dm(Y_kDecYHy^(#Ohi=a)rGVFg!UAtV~yNjxS9Q)a1njobFqI z<}{!LaGC&8l2qvQK=~?XL_d(+&8h1A21WTBAe}mO9R={5Eq?=4BL%SDIK#6VZ~{$< z&Y|?#fNL@!3kfjbG*#sU#(RN?pb9SuH8D;gya~a>nUnL`ErXv&f}OJgE7L5t4xqOU zXoUhbC7ML$K;scmoCN@pY5aQ8GhROcKrB{XT0+Zn;h-z%IUs<*oQG24Qh4Bh+#pxK z#Q!-Mcxu4a(*7T}uuRdH4iu=}+!bMI@V<(0i!h?~w=;5^<9TBPoSL;1X!To#y{` zeczmqws+}|@dgI`GDwcT3l?CHl0xQgyypl#@im6-k!(07!NrvQ4F9n26Ws9Sxa=b) zL|S!ix+nmed^#jh?!th&3GHEBO%38GMcL?P= ziWMz)R4r~siHk5syM$Zu-ocB$* zj_Pu-yB_~bjG#Dv3v1o6HY7Wp9*;0wR_>U461>k|#gHF7xnn>$50@0|T?*vTOmd9@ z5!n@+b$c=75=YZ_8Nl2TU`RZF7t&B>3gbi|QR%=!>woS=qa_iCb>^hU)^>1!Kcpe71&CPV}I6HXp&7oswMT<@&0eAkr0%m>fw4riAe|HlZY_t@7bfaeu+^*q-o z1`!t-05Y}_s&1Blq4S9t3rMzMuWnJo&`Cog3jA%mDIn_&9f?Lh%7QC656G*d9>)(O<7X~2f!1(8{#`nDQ`3LFZniQY4;nF+#vA$(-pmSEwGr*lnG;4={cJBSS zA7?qUuzsaKN|zeYsUt)&o$g+Vq$p@ywbTH~ENe)|0iar_{TG(6t-Io>TbRXqH5$bR zca>}f+(7_D6nCuIw%5anoQ&?Ye<`NHJ+5{+I$ULXh7H1m_)8FXY_CCqcV7-8+1E3J zPf!M9cCSvqA*4789#Fy0U8#6pk(W?g=Tz_yU0aJ2QCgrsQq5`h6A|dfkqE30Rf)Ij zRYIj%e9jdWQyoMVV?K4AWbFGG6^BDgm8ocO=D1mkGguI*@SD3~P;wbv{A93`RV=fw<&cEvg?u?pPJusWZltqIHz zcHXZd4tr8ngy`$_eGZX*o{T7$K!3mQjHUHkDs@H3W7(^P)Qak7NFX`(`VSVoLamd* z?(@cRPfREwf3*vVMXV!nW#b`cGBK9FayWoruW8OVBfk{#+s>I9Uw;6R!6m>p2Mz} z0hK0N@<*ATc8yw1nRb{y+yJO-)m@ zdhu4q5tsUma6q?gWj*!P(%dyaM&MexPLbYEJDED*k7);cwE+9wG-^6hXH>Cl_R$wr zxK88B7*kD+hN6Z%J>Xl-ZPmTF1|f{+S>r^H-O$2hHR0&d;`qotF#`57<~#j1zXyqO zN#jCK-z-K=EtH>VQHi55QORCusVCMGLv2yqijfFsi3AOe!5YRiRkAPZCaFfS{e6U% zPiy>`F6)G9O!T8A+A(F@Pd<ho}ZqDtWUocg6<3&YP)0PqwQT+v=A_%|V^cY)}wrN1uJL{;h>H>^@6PWAUv0 zOQ~cvNfnt5>{KPoF3ZdYeh9DR=d_tkgA=DZXD44bys6Rc@+PQUj*@{cg?T^tZ?r#; zXsVZgiq!3DC3zXHDVp9pX8~+#={D$>dl6QU>*jybBm@a9_&;Pt;&f(h<>}ZB ziX*XikUsq0kwz+~&TtTlejX58ahS~zYFMy-K8Jbojbkqz_~_#U^W({>C_Zf7qu+Ydp110(zHIS6j!~G z%u`F78;n?U{lyX)l3GNhuK!z7s;jTgj(}QOk*~GusOCSMf(YEISd#;ZIlD=bhE$;amxX44TJv5Z3Rncp?!bJ}ya?oYN^!X* zEO$i_d&{5z=z^yT(;g_pN6#&i(^Ln<~mF^SkkfclUnYiqqn$WP(tj)Kqyj2jIt+0R4{BXCau7`W;11iV_sa zl7$BHB4V&e{qKMOpZ0gZATO{H{~iS18+8l@ox3JA1&sQ_ zLah?*0<8k@M4?uk4laCfP6Q-Gf&c+M3_^gXsZM}7nFCga!I!?JYIRncW$29b!k8 z{}=p^ZFc=OMJI*23co3-`NC#N1=@*^%+Y_ozG)|pN`;j+w2yf+sn6GyGX)T6rjj3f zvnlpnpLX!(DtV}f3>e$S&nR%F}h^lO|c`$ZyZw5NdUPkG%f8Uri&IOCN z53VZQHDBk`6|L0>N3479imEZN1yJ?h#cXVQHJplxP`w_N1d!Pl#j-Z!27a@A-M1!r zBExT9lB@xG=8aJkYiH%cI!&gqUS(01_HS)jnZZX4IDL+%d68<}Is#3H6(w^#B{XUOVR1U8TUX`=*Zf^T2np=n}Bp;QOCUJPzP$kaoGz>g*0%q?lPpmNl~fT1OFuy>00`lFl%IH z5f{WMR|1M3FHHZ-y*MZUfiS)siR($`lE#W{VV5wtuo%^uS=H$BON~RDI^EWVS$joq zHYmi3Ukk)wwvzCKW)1H}Lv(O~9)o7F{X`ZnHigGxz{V?4-80&;i6<2n_|_%Z@h|2a z-veJ4adOFw9Kk%W4IYyz_(Eu8>EPGJtQ>RL?;w4GMhEv6O=`>xxf6C+!clYmCLHc!YNGPl% zO92zPW+^sibBCEsYKE7~gVNhkBOis7{)=YPf9YtDk59OdiS-Aaa6OIPNo3mlg)%0} zjK-7M#Bh0;R){=mk|rl?oPE8=hoY0frmYf%Lz9b(5Zomz{RpSfaCq0FgYYp$P20`m zqO<5+UyzLRHqOD7MtTn#)v0ai+n#RdRRVLaQ0G3(%Z3@|D`_?DgF>iNnP$wY9T^I8 zHJrsg2rY~VcZtxX!GCGu2kZO`yE;h!C0TFOT_{u`iXtHXvj^$85?Jr!f^H4rLa~k2 zWFT7VP6pvN8HZALR!{bCbNKMy-Udma7Q{GN9xYT-Ap|H=lK{3KoHVnhc0}2_{qFXi zyMlJXAU`vf5d_(|YDnzrzF`WPQ^kNPnB7PB57eAbM>GA3P1Jp1L*;C7^HJkf4rnqp zRnmTAOEXt>63R#uZ_`D@TdTJtO1>+8)t2htxo@4twIN>is|#j}y8>;ZWcWEE{vfLJX7f z6{kUm{DyA};8lzjbR5Gy4x_ybL=rOyOYe7bAbQN`yI0CWkHxrD8K)6+=OUdtPaq^J zoEe(|xT3YhihKsk^%@c}TS59In&RNV#=@)!N0Q=xXK`HA;l?aMmQ0_l{fVpKl#L1X z=Z-dLhWbo7*bd2`5nlK5H4nO2<;G0MD{t9<3g-1gLu0?6x~`&Nb3Enj6u!1zo_Jkr z#GJYm<(}VLs3XoG86`E;B;MW~&*C>=GHUCP2313BhL|YD+@5^WRrveZ+pNLgSu#v>o(nT^n%ftepBVp-yiStzrc8fV$_>(#Xa|(KH@XKh_NGi|HNyW!b82XmNGSYW&zrPE9`-B+QOy{ zBD!i%{ph=X`FOpV2PFQrDxhbmoKLUnXF?4-KZQDRJQ8Xzuc~}8SNFuIMl9T%ALzoH zxNR1}IM+R;4=xqz(fH`-ImV}#S&+X%O(`6#qcvv&Z7|>ve?TuZ^9Ii;s zwPwB@89ah4Z)#A5=xKnsCe}~%_2^T?F|VX{vg3&xf0sLymNJUzkj~tq1uirCLd5@k z_%QVd!v*34k&xb?J zeJotQ^|o6N5u1s69D%FMYSl1l2DOKCiM)&V@T}>8+2{%N-F|cipR8$Cp50@UsU4JNnpD!MZoh|NM<)ci|6 zV5pwq%;guZ2#DnIxs=&o&Mb4@>xGFB#gOdVyjS0Wtpf)}sG@~;2$Ip-e_MPdUCP@N zc1lqMlh&eyNJ)8OI3%Y)}mmu9h~Qh{v4pslwMAut>=Z(XC^L zBhja6hSF`eUve0*AC_$W)n?> zX62C)BI2cW&P2Xe7E`klo3ODFfo{rp&C1>_DnD6X<#HxOCmUqfVYGEmv}^AnaI6kTXR*b{g{GfC&DvPewGuPa*V&J>5PXe`Bq|+9lN^|hBQu)H;fs^W` zd42aVTOXD+Wze6>BS4@qSV@VnCy4*(xQ4r9U7NRb>%xml41;sM%9vswGR>|@QUP9 zfp`e**O=qVsS&J-5M34Y*jQ0&I4tzm#hPRtC$Ck(s@*@DthZ6iv4Rfi{B2w~tNnss z7k%|y`gfP9U)>f`c=m5Wr3)CL4$(LZt7vQD(*}ww>-Xt$Wqb9ztFk|sO`Uv7?}MZJ zOM2W+EHmM1G2T#@adEFYgdCcO-7=NueihnOAOlgY)9$&LvebVynuPmkPl?y-bMJ)c z*zYjDgM*@rv9i!86sDx&C$z(X+c8!209u?Ax2(QYY71z0ga& zx*szU`zUhvm54H3Ax^4AaiOLBxJ5u6vOx&7yu^1Qe({W!yvU2B;8@lZ`|U>Jk&qDb z$s=<5*}|xKB083Q`}cM2#Lu((cdvE*A70EvEnVE{z?DO+M{c%kXsBQ?V><}STnJ10 zR{=c7(cUY_6~l3VXKkY0%nIePI9l(7VEFT%`s*ZTqY=rRWcW4XDE?@uh~Nt%ucUrq z%WswS1z=jRo;_rF{o@NN-eW)*tCoa$vF35?tred%enP)Hq)4-6d)%QYoezqK74Ie6 z{KnCq@Oy#4-`q9boujwf!S+c&LX}gfa}NIT{*^ zxW-H=0o$S``rxIu-}V3=Ahs?PP>)2Z8n^^9bVPZ- z2hiTvTH~bIM^0E!~Dg|eJ@NXymiDk zW#Xwoi2GwVs^mrGz>G67*lBvz1p==FD2#Z@{Ldzvw1)tw4!m)f*p${pCF<{-&=znu zp%?|jFdwrGFoQ^GU5H5lXb>_k8#hIp9+bqqa#Rq7;8*5_H3rHgF}bXENv(5mh)Q&N zZ;=#GnrY~Sy&k~P`MqW(@*sx`8rrF#TEM+7$ESmMde*>c8mq|&Vmi0?xR2VlGrP3mDchCKKIAy0YuS(C$S&^dMtMooET7xH8Xpo*h`Djk4zK-i>M@1V;P5p1Jf(?MM_LJ?k9pSMJ zQ+&|%xsC&N_K}5^CpgjmbewwCDl>iM7*{!Er;!!5uHE^`@&=NoiTD=7gztU3B-EGl zMx;gtRWQ3}-krXMLxqW$TF&@wTe!pb$hroguWj{~4PIC=r=u8J7&8d7*ohm*SYuXy zQQ}yh-~7pREoM`j^lLc3SsOzH1ur8>QCrgen=aM6Pu48B`AWqmgukeh!H_^l8ihjP z(_r9Zw7dJrjWaZc(oDe7r2Zl)$6OrnEE0IZy51umm6`>l@Hfz%{yL5bRZ(WTN#1UV z94Md}etBy@bS1i_$Om>HtzxpQhu4z_2&?yqdv(&s7jsSno1djG=e+gq(2YRY!|UBR zStS4f%4kGLSeztry=dz;lZ@b5g6eki&qr#I!cY=Od6^zvJmz$MRkT8MTEn$)XYrRV za`%(cx}66#%+<}pl^#vlb1wum_g!?Zk4vQCFaN{neBQ;n3>+9rV`prY?L7b9s6uU< zg(1;yw1t06h*&{h8S?7$bH>i4QUDDS4-6M_JlLr zPho8Dr?M*CvWtlEKNYLP63GzdC+kRDNSn;(|51M=tAg0XI@8I4^`Z zf;QRny`=ba|llxOBb7f zFCkUMU1x;!A!8PrFRP^zhQ{Wl2Qy28FdP*%LUFh3e9QS-FWh7QbHU%0YAbb4XF}a{ zX=^OrJu_7!_erqXJk|2h;mDuFAI!Juy0lKiI;b@Dgh}2%-&+GZ8ynkneA2J9}Gt`No zd-?u~4KlxH0(Z0+kQ&zfL!~jWmqZ2%fI=TBwajKZsukt1aTTJhgf`VL5SS<;31s6F zaFkeLl5$!9b*;S@{E!{E(0y_&nW`;9**g1!i0&rszZ=AKS*@YR?bLkQg zzA@%Ob9fjFt+K<}SWGSR&B#n}JHiVWf5XZx9uteUcwvufG_Y z#yn`~juvA^$7n66s*Zm;Iu}N_j|pw8aGMrOrA4KK)MgGvGq?gqppaaPCqerb1kubF zkhcecmvdxo0WBJ33mHu}^@T_3rMSz;>O=3a1fBxHAxEN-Jk5B+*7Sv!@WKSimkAS( zNY%j@Vu(YQQ?Pb#gmD{>)S89(YJ^~-HXd4b#A&6jX9`YrbdC_cgc3{~TFZeK&~--Z zj1nU4d0$DwKG;%@Rd6s2CqTDX=#0hpg!TGZq$KdGDBIegnr^8&XF-U*s$7c_bMSw* zCpDU74)6i3f)0W{pw zZCB;ix})N4mgncERT5cv(|o5{j86v57qnC}8@<~X6|DC*i*;w|pEIHv8VI;SU&J!I zfK`x)M4Yae#d|*}GH*|nXI4yP>ZlmB7TOPpBa9k2O@}urxCeyCE@<}3Cnky2?$oFf zh0iBek%ya^zl3LAlo500oP4lQD97L9LWHQ|X%2{h?`#A@fnu3C>QSP1))hIYhY!uj z*0`;JP)X++QY6r?Jw3(3S=VSLOXWO-njhHflgSCD(S`k_Kyfqa$+8J3*nHS2(}ebk zGU<)Y?_S7NT*q9se82sb~j;+idhDh7Ju~;-SsDF6d~Qj+03Z-vvGu=a<~A zp?`3padO<9)-2pC+Fv;rz&w_SpKPiHe~YFJB+tk>R@ApWiM3I8#uh{Il1dj#fsObe@Ju) zK>ne;dnQPKm|wUv1Rh0_B#y2>Y^YFW8jZ))8P}t^a7TQ?-Khe_;9cT@L>YSb<=oI{ zPFF`D6{Hc#PHG_@6gx^P-87kc&TDM?(pzB`BAi3Url8ejo8g_g2>Q5U;cgFXr6_6* z;$1c)x$!q`Yxy247_MT~h6oGq4JkDeEPUU;Z_D3EdA7)#ZSX|1WeVV_xW#|+hGlBF7NkiUNyqW@s2Q{Y!CRE|XD=ykhvDXX z0YY2((rSa-}6JXt=|g(OhIiGDNa8kRPE_p`Pv4r1u#$E$_1l zYkI;aPJ8T+9;2P3OAx-N0;n^GOsSzH#QHp|&z3+0n-N#GSz+N{ozq=9h|Nvg3Dd{J zu!Ar(AAda<|EU)_lHfh>#+|Bi8#u79z&1+qiT<8nJ@&ZI6lkAt_%Ra9=hgg4Z||T{ z7!-DA*8TzBj>ytYZ@IBl#9R;ZA05FvFeYVsqvLHGd?jF@nvGnrV(8HoYxUrV&_1~C zZfg&?0Z?5;ckO+zM~zK+{uBFc%xUwyq0}dEcaQ? z3C<1EQOwUgoT5UqC2%)}XXUxBXT{5cvNtrZH@?I1Oh;dxdPXRmyw~;I?EZI_kyY76 zij!6^i5UuE@S$u!<(N4>0ZAPiU|3-&%xL$u&y5s0Wznaa2d89@>af`I7_++MBg1tC z#VDC@e&<@#U}Q_z_H+vo@u15QYGUUd`f@gLnDW-rFi%Mw2RGkX$rCN6qKRL*su-24 zJfl3KwXKaU-YPApgA`_^9kdm>l7Rf%xBl zSi{W1qf`e3*R{`WW(Xcg0WJ}c<7#waVPGd$yU}2W?>iVWsf^QNTXEPV9Zc5ABYf9f zw!2wsk-5zA`XftD#2Xgj+FkXZ(&ts1|B6K*mgjlVccml-s?Lie`Z4f2D70u3bs@iy zTcU?>%>Xy#n=u>M-oVxJVe5nonY#mPf{z0Ws*a$^*BIi(r$N=1jps8f2J4k!C7y~@ zmGjMH9%24rSggiXY0gv5KyLJ5dh_0U3`{AP`(bsv_-OsQehh?C)SX89$a9=7ow!@iH@22G`+&g?a1s(pHL0PvbM@Zk^>_Y6+dMpnijblVT%gMJ}j8NBRgCO;(BMd z-7`Hw_A$bfd#X2yA6n#C?VT^?8L zv6H%nKEMVL5xE9KvBM5ql}GGE;CRn4N@FI%V6daz`!JnI{&93}hAX=D+^DPyjG>1sw$X-=Dipr?uba$?nR8?C{xGO3x z^_54yOaGx8|E$8M$&MH;UYx2E94+l((tA*mB2YTvgVB)m_Yg`W|1@nYmrg0k)Ltoa zS+taHI@A4|rC!DSM3fKhaV+*BXT$&vTX&0268g)~TNl4Td#00q0*ODygX$EJxbR%N zPArWAA6blrcDGY_$XVLGi{AKx%;775;>)X>`O6snQ=C365w@2WqVpI|B)(R%@OY&4 zNLMKqBV6(MnDuPDo1;QI);!heuLSyd46x~j1rkVeKKzOX4m7;LD+4B2n(i(BqvNqA zqkvFn5WGIW)sVjbx*kUUP2<)(mves(eJHQ7sk$v&e=2F?5=pc@;n|q=GFaJ<&L)*{ z&d^=Dn|9gZL%ux3akqcfBUIkT3Ip}>f|J`+W=b%uy!_l}NVIV&AF%f5Kv#m;hIJ=R z<8H^a{cH9YpKl$fvWF@V zuMZyOuIn+YzF(9gEk@hK*kh~>vvF2LVk;J^IL_;1>f-9Y%$ZRR0i?PN?>~}^G_9pI zY7xdrZ>7$lv)iQlXq<@ELiI}n9RSnh91$M3ScL1mC<6zNPp+H~hfP4Re7Zc9bvt!s zK>|S=71U{AZXfAE;M=y578`hxg#!wE7o=}Qj!>;D#%tJ&cIiA%mPc$T?7&!|WJDe@QrCKMgD7L< zy9$5mBZ@HQaU{TkCEXosR+L-=Kjk0fd^mX)$s_s6cl9ZCgZAbiezrL}E2?_*w?<&( zgN&b~@O`(fvnn&rySQKnuMMYx;MLa$VF>A3l(&W}>q<Fu$Y;#5HTkb@XF+JDJOSqQ$_%uoAjew*(R#8+}bO0xF(-5_q_;klFbI*3@rwD zbzeSwyfENHo%h-WbK7#o349BduyCurotgYA2g=TQOD@iga0384GChZ!iAK3x$|C-m zP@0&?W{;2@q;;lWSCLs(F3-Pp6)*KX)qY7gGKIUg>SlHj9fXDJ#p?ZJe9p$;o~Bb1 zka;$@60X&lVg=T^4;dYI(*}``p!D`it1EaSL9joU-iSQ2cx=kYt`Z|F%$s2|d<1+} zFP{f-ytq_fkX!psxD3XwVyqwLL7v$-Lq&X@@PiCs9c5&jk{p9f*&_FyjTM6&wUK{% zH0>o^v*MhUUkm1OMG1$jCHVm<50qhvx9iVf`0Sgfk<&nvvSlx)n|l*!`*o|S$G5E3 zxUL!?j!raHLDhqSSWBAHHQE+Hx3*G5mqce`Xuzy$V&7s0!74&G_ub!a(}?XK`n3$f z?ved7#Jmy=k|I}{fMbHLuJ}?Bf5tS947`C2s_CsARw0ag+v9bcow?G9T4=nyFtC{S>ztmqSoXK)3$CjHD zXiM){YVYS~geQ(sy){UGOy~9X_Gb1cVW)FK0*ke}cXbI6+PRBOtFyJ=(Uklc$jYKd z9g_ATA@blOB|T>P74)m`pp-B331KjGn=HU#1qclX;q|7G=!5NtN7L|Ymy44dH{jQ+ zYuJhTP4$Ma(dXH|R5{m#1Cxs?fjT9x8*WNSZw&3XDkD28w7r#C{B~${cj2eF;&dz{qu~ z^{`%PlX$}meghGKUp^=(NRQ8&V??ZCpH#}iki<;Y;Mb0Z$$voBVS_w5HMBpOVGC1XvVj9M zD2nIqgmTSSoNLfH-%9g>TES;Shl)oh+Cky;4|@9Wp&hV@XTZ!R;Qv&6o*-Ds#bxBz zW)3zB&ZO^a_PFQ`>?z6y67I;oqxDf@9$Fw>4A`~hao4hlYfubi2gJRVQ+>6ge~9V$ zF2M>!Alq(xj98$f^Am_-gxX7;W1v64G~Zo_QvE5FCDrfS3PSO~kIP(t_H@${V8WKJ zsAgQ7{&2?>!Fs!g24n?NKK*4tAtC^M+jgpHwG+2~Er$;U)769?C7b2sH+sLB8 zB@wbo!1Gq)ih%?R5P(lO0ET&`v815y*gNIWwKTZ%cGWB`f5sHRouz#K{iY3(rB_{2 zRfVMpq}OBZ(nA$ta*qFF;WBc@)NZfBi)l4lEVn3J3KH;^t~7uoZ0Sb)%Pzcw*mSEu zoSW1w!3262zFELi4t(|8zTKXdXGBoyefOg@MJPcY%*#Soo88HWQHM@z4VKo6M!DIW zF5%_zG&(eNv~3zqOWtU;F4f(TDA0%5hFsPRSut%-{yyQpSW23XSy{?0kJI``n|t&X z=!z@~8#x!S*c5iAcAMv(;{}Q=?kmKQF2sEDC01lDniX$7H%4C0+iTy0ZR9K z?hhgA8pc4AjB4Dlmyv_tdO&kip5BTmf@VaLi&FV3I$58I{9AB02+sX)*2AeMj=Ke1 z%3R zL?5!W>R&usOW{8#c!Nl5tcXjzzeU4O796tor0{M!NGUPP$RO4|<7?~n@jKo0mv7M`<25P&unS{?Q&8)AC7-c=S=@7>j zy3wJ^F(X>-5r*UtUItxVI-kNH*Qbk(SH) zKU}bJeT%y9-&TvT&sTSNziRo3D{WR0DRC<_3lO&8i;f{TNty!yNDGUnu@q)-U;!dP zpFa!w82gJ?{klQ+aIF{RvfOQqDOS1YN;ZUT+^vf2bC4#~s0z$K7`eeCo%%gZi-^ z#BxDQk79`)eBYWgj>7nboA{|Gp?xc_WV*vsGz~Gt{CMaQ(8qM;g;vQdz)+v_*k@I~ zECn~5D=6T2E?Ir|*0?!{KM}@k;7zv4qE;BdeJ0+ET&c{ZE!85fJ_z~Y%vNa`QF)t= z4_!K=G;JILA|LMtB$P1()6oIWKc8aqJv{e`oHZe!8ZN*B|i{&g@e-b#c>3nIC!O zJU{TZGf53ynh>~G31PLG1y^dU@*gJQ0A$ycS;idt#X!fIhlvAAtbaVccsT!ryXkF& zRJex{hH~%$`Sm0SYHiWR<3j2Q5X7xwYzoWFL-GboC5bY`&~vYo}A}(-CS&Dubs1s~vS^HwOR*1VQJldEX9? zh%n@UK?o+Ck7oRE0ijtm&}bX7bi3si!u>0i!d@2W3Y5G79#0Q??85Wl1Us=d$}l)M zp4Ij*#x(2RF}j3Nc)-qkBD`8^Q~r+odhWXA-oWNsskLBwzZ+=aS9Im99-LNu`gPkY zvL11FPXxc@U{zSeN|tf?ZY}B^{BLx(J||%d69gxk$RKc6*2!Y2xwIB^WSY3NWjv#Y zOdr98k`19fZn-aqg`Ja*ra060_wg=JGkCB^hOd0tUYM$gGL3n_Lf;j(39o19_-F*7 zUrbQSm&b`5=!2LUj|0Cb;yLTWB0q<;?Ws~(g=|E4xH&#*ZYJ-FUh9<)y8el>lsOYW zk09vwsg(k{_3l-ck6Oh?6m-w5I^{cCuQ^S2XvBjkvems+=@RJYV8i zC}`l#qixrR0mmVAjoMjp%cX8(?6Q0>bJqkkpr64O?eiB}_6z3PEa@^z_m^YZS$xfj z5di|`BV{Y;FXD9Ra06k-mh0UviBC8GwKhDxYrijf1W5* zl1O+Jqjzs#Ci4Oo&v0AI{@}QyCMSkcz{tq)Nen)l8BnoOzr>w0X6%F9b!7Wc*rlx383+w6g5KHg`{Nj>w7q`9r0#4?)A_*(MTDotoIxxq#W< z`dDa-N0XdZgL5CmK2=|#wuJm#vfUR#lkqH_KKs@jz6E}-FpaJoxiVK(h(@gL0}Zz* z!hdvowbo0Z>qJg;UXA5FLTa&&O18q$eq2#?OigA(ARyFDBw%two>0>`!kxA(D$D0z z=DW+i5Ct_DU<7xEmJFAnqtW6~6&dP{rcv4%OXowMEtjFKk;1n%ZKrJpFOKoh6A6z% z1zvI~%eL!Y1N3GAsOrJIs&Q5B_pAx6nb{#w)ACLxoI4JPmw$tk#i~1*2J@(>v z^}$Pkb(D_jaMx)vg`oQiAHthwty}-8?Mwrx?+jUY+z+y@%LfF&Hvza@Yq5 zLf3!EjoI^98Elg-`U+y-MT2rwiS*XTu`-hIUm5QCP9MgICkaoe?&1$7WO#$Y>3}6u z8j8oxDduNCPF%qSqF2-Fns-6p(#dNG#D=x`mg@N>Qj8l8#3LK|!dQ~51psLcCF3I? zLaAE^95{PX_~pTOMZ-MjlI_7La)M+?+luPiNEgB+@Og252YF}UoOknbal%ynSoGbNOy=-mE zn}Q+F(T_4p6lJK~>yiUQ%a8@;*ay7S6n+xP%*TCfiORjIWkm!I@GV)U+mE@ARBQ=now_AHs)Lo9g9!ES2~EPq7%Y@LT_6A z(gQ&&v7MUF6KWVqQCSG-+p~<$gPUI-uZ^QCo(}WrB*30 zl1D7owcoq=U=W)@Ej1>yJ7oR4*83JsP&FYJM^vE|{GOH*U^y`;XpQ?Q$593?B+Di2 z#qWT#Sl#L{AF^W5AcqYOHUEX>iwmIkhkG+?g0*jC-QwM((@WFX8Gz0Kn47vT$D7{u z55YV>4c!{2-)n&fP21mV4gb!XPOTORf=)QiQG>$1nK-SZ*P3tgm~A$A`kKU+sTn0@0t^bqm&{9Ub^J;HgUEv&vdK9F_FZ6cfZ z=1WAVX3+tn_)=69wUc9S$5nTG+RIfDdu7qh&fh{>xsK?*DkMCm0Q;M+pFg9j&N5Qp zy1f;TyRAQq-Jw7Hk{`3zF!yV>sb}CCKc;hAVS!o!tx4x1;=Y~_3=|8>32}QrApZ&T zU*5D;8}R<`$o_v1^GAdJ`i1yE!u<41G>$I+e}ca+=2iQ@B>26RtZf&?;J>}ZK0}Rf zD__65E8w&@<&=SH5QC98@RK+;*#_3)uSxuMeH$;2XoADYCT3zxbKG;%?PqjvdRWYm z0Q$?##HdMz$eR_KRU5|PxT9bP_mjLiyqv!L;2km6SEq)nx%s?k+ulN~(vNIW>%l?! zaoTyVxHa=utv4SC+bpq?4vPdrVj*oGmk&3G*U&JT#2wzg_a7&S`U7jb7YX&1ot0S> zWqMXGsDxUvhaXY(*DjK+5iVZ|+OLn!-4&pq{!}0Wh`@CCX9ik&PqUAvz1h8K-QAt- zfUu4IN5Mtw&>z1I{~07p4QJi;$|rC-wn4sY#e!5d9A*JMKEb(c7cyD9_^d}IELnWh zPLpLHb`&xJa4KHzpqa_UBnL_U_0WH#z&v~6D`_WtJgv}(Z4ObtD5%HTuvQ)^ zQrxyj@n162I^24~-~>6=`^!|kmxZ3{EHV&(zA1d^D*RGbnEp^Rwc7o>JnitdH{|-$ zG@(vN^UZL9Bt%GzV3cnpHN?S&=E_l-uu-= z5a40D$GYaE0V&JOjOQQJJ$qzX^JgO~?Z92mu7gl?;(cES$xXC7M69k1nV+K80v@sL zZX_+5g^3xK0Hjm^lJB{>P6=BAC}x9kh9~Z3LAtaEsLvRc2vmqN+N;ue?O|e=d8Do4g_*JX51McOWf{c#>bn+ciGjpsC#HkG&v?Yq7Qu~LDrITa z+@3}6Gu48&2B(C=?A*pGh)2)_6^vB=k?C7%rv!V$*5cDuH{~SWaTUVE&nYCH zs0ijwS1$BTDVby*6y48+D&eHyxYXP!sbK{q(dp>{e<786rREK2#BXSjrJfixhj6nM zUpKu1o-9gu71;haaF2j-rPYCd{rV3)|2uGZq5d^p{14!={~x#=`0u!FR@t@96odD< z)vXuRMO^OtHdt@AQni-3maM4E=uGVqLS6yI00y!m{rQ4{a>1jIDcr%IyqcMsVci}5 zS6+8GNFvOsts{Z1BUJu`Avb+^>*^$<9=>)4a+M#hmqf5|k`n%5hN!hdm z`l2hVfb&pvO8+bZ{`k<+s8CXYVDpAyMLhdrSho{T_>VVVkRd*o1RL>GZhLiWbd(bc zjg17(5(g0fWm}-DNsT>DL5gxG(!k!&WJW38iA+t6p&?P({boY6&NU_u9I)ub*dn(Ru%R)wM&W zK-11SRV)FU9-HjtC{WezO-7YUtZn3TY0ZkWPFL8s(n{|`UQ|!YJ8G9RhS4$uEvw@s zm15k>1c{n}ZKh>_RS5Zw%PM!?-!(WKfyG({y;FNY;5M-@s5chZ#RE1Cj{ziC$eLg` zRWj+Ukw?yS&v>M0=I`LY#02`gO{LO$2uj1=C6@rAsYXv=wLir(7cXbwwegTBiKCe0 zNKeTWp2>eDF}lbJ>4F*wr`V;z*z^@b%5VH}G9JFr9J}3`T|Nj`lhR`({;LS ziQ9Qr;cevxqb^bp)9FGD$?27mfK1>#gXV4UkjyM(?f&gTl)yvS1}W{}HJ~wZ^yI=l z=E#Jepq*gGytm$8(4Pw`?u#8jUA+%B7D9_N=#rB21;R1Eh&CtD2iZ@bB`|v zeZZO~iP3;zh#vWDdnu3^*X$xhc;3^hch_LZFe%bWMbGDiPkpCZi|99jIK>qrL`9F|v zZfL7(YVKs_Z1Dd=0nsY`4x23S-KUgtF9}k@;E^D8|AwhbluO%*7_&>R^I6vmh@*`a z1nFBIU%l~&Llv%Mjst^7iC?ZaLxX8{dADts1($DFrMW4^G6j^Mr5m@FD%I~-b9$ZfR0L-kF<*sT}?dG6_?T6^~8+|8Q~^`=QU>qijTP8a!G+sqdql_%ZSvMcLzHj71H zl8UC4(!q=E_^sGMk0h6*kGf~|gV@MgWq_{wxR0d7d3t|mBT=D{?_ljQ?s5&eFGXle z@@PwULf|;psh;HS1P39&y?ad=c>T8V71{-g2^X6uU3_6hq$Q^?BNL)OU_=<9vI-U< zckdu5Af;~{p)wCgIFqOdB3uT65`h_xLnNGsBpu!YE*vNk(VF2%+@Vg$bo>G1qMr7l z@|}EYMGegW*9!3)6m=#plBJMlEr~$QE&9{NSL~I_N#P%Sbx9r$3h<&rCIVKs}kyoeZ6k)ybYA)4%h7 z4Lq@r1Y8W?-*jyF-!qu(To^0>-UF5peMi4da*Yt(t8mx?(TPB`KVnv*&-MV34~t;y zlx?#=ByMgA+j4DCgN%LkkN}z(sTKxtXlSj^eU=AOdhRzR>hyhgzK&ma%N+(5mcNIb zxW7P3f_DQ%&e%r)!71Z1fJdF~_Z2Y9J$X5}H=k+(*aeV;7qc2R21#NnZO zQPF!NY$*6?2bOy`T>`P=?l&aZcI`M2SS%!w!E`o`#F63dsF~lQP&Pt@%MHfRSHtF1 zbaJMDy1C6k|Hg9mx0#j>+ygb{n>UPH6x*wQ~aRL(ML{m1z!S79FEWD>ZTfO zC&|vAExbWSol>*P4m2cs@=D8RV`M3iR52_Oeqey!;<8|X0*B>DXdYX{AS*%H0UpX( z&`&s=h@79=|9u#-{lBo{ zafY_7<|snQ?IUH&lXO6wXlLVY$Pu1?#uk~`d=qOo1p2v}fpj8}xaLdmEu$xyWQ(|H zjiDMJ2q9P2b|WVz?rm4&)V*tM4(-&WPj`B43Mt|0di;5+Y31Yl!-3ILt?xGzIbq}a zOv-8Fu*G_AR7&N%t85R)PFEM*>f__}@p#!rr7EH0`YbI?E9RbNQqGy*V0d*Zr~C zk$Ka0YG}(;oH6}MWoxE2@_U@Nahmb5+Py=Ex>dC?^83v!4$g4~Fuk65-jQn!aFlBA z-m>1p!EMgZRF`EPGz56C=;l&;F!J(ZXivAKB0;-{BnuurKHs(5;L66thO~D&$Jn58 z^qAfL;6y)tO}lh^tYCLu+4e}g)EK{=d)2pLES-*j3!&k1KWDSxtC1j~k@^qUMy)TLoVhbPua|Jvmb+K!SNS-%S025^2Jd|m zw>2#3H8nc2T%v7`M5=G!t*MQ}L-%x>T3;|0M|>jNk`_uDp<9cJL-O^g@lmSc3MR>!dZi+A&wBjmK&Ktk?+BVW`92AK##ImqSmtz1 zua|ZqAC2;4i9o^P!Y$|>=UmMX^@s<^t30jhE{ZXz+mCDJfHaUa^*Fhf)h=LN#sGr+DCb4 zP6@6Sb?*6GIB>DcS$!n-(rHpbx=c}}3=yflA*nW*a$#&5?L3tH$w*73PMA|}rM+CU z8d7@RIf7)2(CYd3|6=T%nnMA!WF6bKZQHi(9a}rLZQHi7W81cEJDHsOcBjt6{D@W6 z)vNpKV)(G1uW~i1ou9NHEdIn~q4R`BPB0+=7IR8LW0A`}5~yAQyf8BYkj#9b>=OIC zKUF1?+bKx0PP)--?ntA-F-?Cv4dh;Gy#+q&rjh`XG^&$}PQa+bFiUrjknNQMmFwGd zib3L-k`!pum|Rw=OQf~|^!6*Hr{5gT2$srAz@py4LqWGc?tF%A$i&SNlNwmIiq!ARR5rngK~ znvw&WKrCC@vT3#WR*7SAh>A4N%9d5Dj9gI#TqV%9t|dYjMW1q>(Za;+WRVRmkSDA}Rlw zKo+F#FyGS1HMLP{Nq~=)@`=hH8UA02xCsM`1uZPCA67+^g5=V^xBy%VI=IAAUBLA! zjAWCP30CGp!0=nJjM_CgPOrfRQXiZ%TwAY~3h`W#Kffu|Pg)(}x8tk|kf$F|abP(@ zI&4KLq3famm0y&_@53m#h=C7rqx(n@?8++KpaT)1^tPDIf~Y;nXm%zM9?iF$1p@kY zm}hr{_CjMN-*2HG;E(H~K0&o*jim#F@;vpP7SwavwyKViwN@rj#tMVj-%1TF)eMIg zg|Nk!@w;Xf`L(`n1XCcEFVKW6)3bdw^-#=wYn9J&i0wtvm}R!3UMbbqlY^f_fC-Hf~F-SJ^)@ zAU%!iLru@rlxX{xtG$cZf4~kn45~(T2}%)Lua)-`1#jT7ujCo9$KsmID6t$!>|EgX z^Je0SKoeKMG#S8#Nya$p;uI`dckzit#36_q7||=D=~^b@%LnBUL7E1wMQG|YBKs@{ zv6exE+^YCA8eDUc;MXmU8}J7HaiC4_WlV!$@ApfR#FA35%N%wHo|gl|b(2Er9XiHP z1;;k0fOQP}IcLG#L5=m-898d+AVkm!4wYsWn5dPn3I$7I*+62E$wCk$yh3@jg%GIv ziTrxRhDCV5r25X>5-fj3iW)|ESmf&db*n%0*1lQ0|ZiuT)Lgp zkw23Tf)B1y0D%vQ4JO-*1V`nY3&DBlJ9S86A$8X$^4M0v8q%ND(xwAoW&x`tkf#r= z1Pz#mdGAjXo>ig|lARKT^eD8UqavqikK2v7Q?sKvRY5sGzFbdj0YVk16+%!umoSnR zw1dpsu>m}_2zj6y8~~-@HH)P)9F}v&5XrEUgY$jzXN>HB8rWQOHyTIIvUKrFv4~H zoZg;)TM@=LiT=6NzOJiyMvSTak$T6)ez~FfbF`%FVrF3W62WSL?g;^10YCN~-*c$* zIXsIKnFk;(g3H{t(oIqZ203`8UJwn@6en`t}b^yEn`au16F1`FW^nc{>ljhk-@2@oe zj|l$n@>muF008@cxd-+ZM*7xvW_J3fPX8C7oU9@H7n>ca>qLEWS}%bLaq#7rN<;OB zt(`%&-0?X9+a`uI#X?DRKIP%&;h+B=K*Fi+8PUCLq>{i+Zevi+(i+;#}L*vfY zqts|Ow#&`S#nkn6$)+=Z-aRuQ7$pZb5;rV$N}tG>TD$dJ1Y z>q*HS?^Wy81L1cbZm;crk5{J4=L=S!Ug>VmuP=bdm)67PS;gw73HwjCb$*`4?=yRk zR(;&%9^B{LyGJLDs~G&}PRmPY|Cn9%^5ZAnr}R~ z9jywzGi>NPLwM@j=p!F>GRS0|`FAPJd>|h)*;a*NX!^qYnvmrB{{HnL>Z73KaZnR~ zOT;c$D&2B|0LSSz0lFjxt6#(rl8b(oDI->a!f=|S z%Z$0&+#{+C1!-eM1A7*{4Y7lMZ8=hq`lEh;vZ4gKAsde!hzRycPCR>lo<0-_PtYPp zpigBHY`24Tv%;K`-Y-DblcHm8olGTf+mAo_g(T3bF5&q;xm}Vg6U8ijD5=>??`iT0 zMK3$af?5_xfBgAgl|clVk_9>YIKppMqhta~%zpYfu%&E|pz0xO5yBh%s2J)=Gg=WN zx2kciQIR3zb6G1N zrdT0gAx`FWOT2GPU6XP|S3ym@dS2fsg0UVn5e0wfrpn_Q8|d^V)86JELK}BvHbiI; zVRI!(;wjR$5{z!=+qoh)$Pln9b+0xw+Nd~`B|IU-T$dQd+*J&U&OaOBibcH4wS=bu94iyCu;=;)N|2zC=1vmC8LG*e2B zl(Cx-M>Gc?57a@DMgY`HP+j!cA!o63Er298bw;A^g`A9yfnr1n z#}lp`gSC`Dx@I*@Rn81V+L_z+*HiU?8?#81r)!5t zTbUup260S^_M%<}LkpfPfZ{`*3^HCSGD!9Y6{Kp}Wa?3sA9`|4P8|mA*0Eo2G&4#F z;&~CMlz`<)(hq0VLz-fF&&dJ@-suoQfR>Z8(nTATQ~_Ol=>@bKn&M{hMy(cTSq`43 z5inMCf*ep5#;_=dGS?gHLAEC^V>{_xXF6x6&fANDmr~&a2XJc$; zHli{n7)S|dz~Y!wMJ@)L2Q5a7LOaFxj$S?B%6!n7t9XUUm3rX7W2_OCpsa1~qUAVO z!y+m5<&@|KcAd{rB49Tqx|balr|K1)b1t%Ph@8<{qTPQN>GcAe+Mu3h7%4P6K?2kb z5SBtJ3uF0Da4A&9LjpuV;2L4L8u0uP372of2jljS6bR%qj;E3~I1Pj2u3jNT@utoo zD?18q>V#3ovIrQUFeJDTNsZ!Rb~~q1lZr|~?Ih43KA-IsP!(}o#6TL0%|?!}AW-;` zE6UU9Cd*d6xiosnvcrUtx*EuZgQSr z$BoVr=9A#XproOMFT3Z#G?o>mRE|!7-n0dp0;sMRccSFEyKt5|`iv2z=_3b2#mlaY zle{3=OS5>Ez+Y=040SBmLj6>qp|{`OuEh(v z8(Qe`J?b&Laa^V7nP~6IS(r$(>niNq{T=^(^8L5*#snE(MT!xl6M{@*PNY3g4YWxy zs-<`|hC`dKPM+U}RuUN`zrH~omFQ#=?w!9nrGF&0YG99nBj~3Bq31HH`;JMC{zXi5ufW zfEem=vX)Of0M(<+bSo*)nbf2aX|<%?+CAOF6p47jYr;_cE7Mm#Eyh@;S^XQ+yMciz z?P)>9K8azCz49{jWR^y^fBov~z1((gglsgtTc-f)VBR*L8!A0L-qg?MB|}ixySd)X zO$GYk0s6PS?9GMU&;Roo-#W$|b|C-&{v((EyO6@H2LQnNFG9-cuepVzlfL2qw}N1! zd;H&45LmLz6p+VPhE;2JlS>K~0f^KUEWnbGGQu#D$qMEnkqDH8PYnPNlhKgkwgrnM zVY|>Jg&;*e;7LK^@GK!f^nUQS;XBNpC#I*My96yOv52EdioByzo_qyoJhR`_)cegI$ggZN3ZamtYm&?m-Nb*elfd5QW@Ow z?qprzx$3oHc^!2Rf86Bbi|gy^axODuzN?s2C|b+>L-#QnN1>(xZLJg8zj4oDr}hc% z@jAGFgU(g$;eB^5)*@%6(L4l%kk23;ixt z?)LWG=OPoW{&`#Hb7AmoL7NjWOIo@7O}ZIPrZy!vtCYh}c3*8{W>@|p-xmXCj)K+i z{X&^qkPTXO96D=huP?2A<7g9JH(7G$bn8Y6@3<{B{qtz>10rTcR~UXc8UVSJcQ@h1?eMSAA1lSok1xGLBtedGd1kPkMPZ@J)HoOjn==r7;13{p!+dn zeSLb2`>JJ=o@5}Jv|R*FlSLf%dl$cOKgwOq&QU%kyMfA`0f?ldwjM2|Ov@)5JtmIr z7%di{Aif3S1L#a`rH&r96A^wTkcvoLH^-jA&g(O*7j=#y{08< zbO3h|{0Z(@p;NW&I>)xYrqvw1LhN&EE^W`B64jjaxotve5!5oU%`+Uct1n{O*RYze zSuJL_tlD0kUH^8c07!{$i$AtAyqNY7Apd^e*nyWYDiY|^DjKEQB=htf!e=X#v2>M~ zk^o5zsMQ%XBYrgZNuV%7Y z^H`aiJt~O4h??f=RgZU8(MWj!UlWk{9arT|89J4I?4!cu;DKOqC!e^_+OBvj6~p)d9$~ufwB{MA%UctBmv=xWkh~5GNR{@IvpkLTa0}d z`d};Xty^^#y3bl&cv5l?xx~@-F(V60Q0`Oj;wCQYl9>E~=uILHaC55^tffY=RrPK; z+*E}5-*kq#>$K)dB*SU6h}ApL?bgj@bg6~!K^st|E+f*SFMM*7vcHWv3n`zcFNb)~ zn4C>e0CKF~X(x zcuIe`{)Fb?0Vo4GeM%|m;HX061GzEU7)&KT7Znv@JqQecGZMBIKG40-y|2WK0jW@H zp4PPlgl29aAvC&UTg`Q)A#oKMS46~)cEccX)GHx#4|j19+03Q5@b#%&tU98;LBgBa zIl_PUk53C+ix%Y&_3HQBiW&rKN-x^Gke!l=CuR}ZU2Ou5J6P=q9`rrYvWrehP#N9T+8Gp6 zIh*OR)_J_)J3`@y^B@#Vvp0=poIoQOrO@6odI>P9*wpNNAwhTV(`ZU>@`%|g)02{8 zQ|-tg?gogU{efa(uG()4-+BSiR8G^-Dbc>O0N#PLN>wACBqGY4mBUO_(33(H!pL2rXJ=Y6)bR?FE)93QY&}d#*>wXMHPO zbZ&=Hp_h*NK-E_QQ@6L{7WyCTvdD3EA|C%uWQj4RgP}A0A0U)RRCa%C8VGnOA!*dm z*D?I~`^MzLWs|uV+?)70tXzg%NU37`+P{vGmY?`%xuE~d1Oz-fSa+qjg?8{`NsQVn zw^O8)(B^lKf@~#rJwQc&n($>*Ku28Vzt0Y_sYN>(*J$@X;XWt${W(!M}XrLQ}(| zw5`#KiEHc{UCMe_qo5V-cgVMqlN(-nhmcK*w>`~u8+fn_HRPJA%QpS%JICRGXJ`L| zwF>!#SpTt;W0tMm25>=&mJpCj!v7-s+I*_iys04U?NnS8s3+AwFT_-LDBItkfam9a zl^6^_tpvN3JtslAHnw4ivEn|3wy{2z8WuME;hShuQ^`$U=7s(aDf}JaKYR)K7pK-l zL9s3ouu=0}+hPT+qrCpf+_EiJgVw8s^VVZhDCbFqJ9DXY{a?J1oB8%2ovPKttuXg5n5p(m+duhZY7;WEG(?xR^MSMZ!F--9}#k# z(V2tdj2m05A^yN)2bNB+xIE0y(oH#QW_>M=f@7W+OlL1_b!AtRygei}V<>fVj`2Re zjh*;aB3h@wcm*yX=~Dpy!AA_h8M2X#${7f#sl_ZnFE9^b(aZAthq9&*NwNJdKx!(x zCMoBIyRI%tAAVcV(>7>INta0&+$G#4wc3$0sL_!Iynmyoz8VrceOJ%YtfK>@)Mdcs zTABGl!J-JCQhI`t;uD-u7&Kp;O|e&z%IAY?44;zH-cMBI-&vOJUZ%9cVlY7 z8cLG6NIMP`xz&ZkN|Nh?SRkq@9T6acHcjK;IOj|TT&5?SMJInr%hq6*-kIYpX+&Pf zt(&pA&P6CF9i?HZC2%)vrw5mHA5_) z?Qtj2Mi%=;mQ9^=N{#IWA&;;oILy`xhYXaX3*7~ja7opq^q!Z6=|dMet}>U`|8reh zRz6d?tb6FQYC4Jn&W0n}OhGIi&M0;+sM2=%iR)kOuo?$RZ=>sVGLO2Jc%l3pWR%RP ze>$k3B9;jW$%(%0S<*+1=z6tc)#0_K8LhF=%p6u5=Ysv~Sm`?fFcfr{0^avaz)7h% z@$XEWBHFQ2M=ldV)gv?ZMMHSIo-m$EIK(xv)lw-U58U1w@N)UsQMC_5gU!uFii)pC z&BlB#%6@`Fm1A>b(wcdBP~j86lP<#7msux47Uxrm!r-;e?H-IV@}Y7^&GotN$m*wn z3^&TVtEq=5%I_Rd4y^WPy7~+7RIYw!-_QiT7ccWA6-^<{B{a{F*$x+zyiHlNqOBqa z4jMa{5k`2$gR&IlnHDCr)I*{S4GuZm#YKObZ+lSjtJ6=%!1@BKnT-I!828(_8m3+6 z<54#)LftD;!E{{o2>r*|(X2y0+TT5oAEKNBC0Ez>*F%k;I!lubog)C@PI&0vd(<*{1%S$>vVgY@&p z2ShI4%1%}(5sZ&Xht+2Vh8q<<$og1Vy1;Af=nocIM^VnT0mB5oa4a;7S2~k+UAWZ` z5!TFs9WCw_n(6V8Dn=f0w(O zBo7V+;_4}=Z=Czk>n(22>-Bm0(C9FK_IQc)fCY|r8#(S>l5<<4uTIQkAu?$>Vj-A* z#Y>)%{TpBU&R3t0xCr4G*JQwnXy=<53m(3>$4*P6)5%n&oGyiWWu!uhIHiT}f~r z-M!;Uha)$QNPrcd`3cL4?aHc_`s{I))k=*?v0nXv+)mludJ*o*wwkN5$ZS`XJS5jgPQ*iB3Jc@`-wQw_13-1$vba;e`J)3l7T|-yHc}E;o<5ZPp60P(Qx9jc)BeAO9-Apo) z3&@71A0pIb^Q_vylZ}L35;)^qQnW9PIm$$>uT4)5HvZ?z7puHozv1?> z=Hukt3v~V*tt5!-e}P=siW?r017c89g}#_mR`U2PQ0OaJFBL7{4*!P(ygfzT8f8!a z4V%ZPhYN7RK)}D5mPdJ$2037|Wg_yDqK6n)>ah1J#D$abUPt>krQP8hQOCLW)RAa+ zoy}l8HuQM11#-$hb~K19bbDCP(XRYL4S(VOaVJ$k_RZ-QoR!+9wA5VnJO&X{6w~3r z(4DQ;l4E*NGCBh?-*N)q2uw{qhEJhRi@2b~yfXZ4f!M^GeFuc?C!n{Ir1|fs9kD=b zfr1?&D?8atJJk21tUkdKOwgW>77YO4>OyDKjuqPu4Gt4>oJk0bIr(xs@1@n^&$L1Z zk^2m!H}utL*zuPS!anM=iR{5^@u_O+b{1M?gt?9%-WFz~k+|4dHlUx^;4+g#i_kSPUYf~kOhTLsM$Y!%P0s1$Wt*+hgr#eq-@{hk2*Gh z-R1l5E(s9bD3rGfWS^Zq+?m+IiUMy|+COME4_WLzsiokF#RLuSGqYi!{g!aPcC;O% zJy3ZhP57HTRVediEr$jddOtaW(huD39ndPfPhHSb&yRWAZSoML?`jreaai6Jw{a?~wEUQk?j1@d296COLbFlMigq<1r ze}|Y=1o2Fa$KINhwOn0tX!V)DrTC-ig@#w#8`pJIWFyjNdgO6pBJ?YAFQUb&LZU~N zN8+*$(H&)jin0HiykGm!Z^qXR<1v3b7zTc3%3$Q}-(aMe< z;WJ|tQW6pLa8kG0cPZgmOCY=OYU8YeQjPn@wS&KE7e-p0)8q}QX=of1EotI;<1O0d zsFF^-wf^7^E0#T2cI;D&Ez;G75i=fS0mmUUp|taHwQI#owV(<;1%!x#Os?WNc_E@p z-2qEMx@_ju`X^#tbhc)|WomkgM5_K)zA%=)v4|mZZN8IJ7%#G!Q4*8LrH`&|wh8G? zS@Z}?J0i3f6aK9reNIrkhL6d8SkwFaapm*!Ek_;XDj6+{-c`B_A%ICWw$6t~HbOP% zzSdaxCtdAv4D!DIkv4i$Jciq&4$FH)`-0ouQRd-Yt6%8Ba|u%4M#)cdxbo7G!k)yWo^!^a)|SJGt%SmwlLwn;-b!5|athwkZ=(I4@DO!ZQv(c&E4UT9_%gmTJa(f`1M_VgMpYK$MTAc@~dWn`& z3=onvh5W|_d3laKZ5c`0TzP)xVARkirqR3z(I6UO1Acv@F2=S;}a z_cFK$a^#vj3%jmguHRY%RZ+ik`4GTYn-DhZ!7bJ{?ZgPS4rS#)WrIuL^2t?IsAS#w zlgao#36bhPZd1+dD)E}O?r`SQUAtuK@Yv#*^RcXPIEb<_uz#kso7TgUU4 zxWfP{OEVnvkl;lXZw(t3){eejrZDfCywJ?%;!&Zl zvlyW5v`^)h=_iK1hyWBM91XQPoEZG2f9~X>yV=C@^4q>~yg^|aY)`XN{#|Lz3ko;z z{e^~<+EZAGmz)b_WDE2xwxqko?JceYXTxM!Mj268gu7tgCsS7uQTK`1Iyk+pVZ5Ph*&uc}Rpcv_ee&D1eUg^S+0pq366g_#3m zTM;KqdJvM9h(>pRM=6Ls^zPKX9n(M_hS5AJ&~Y$BT7<+gn-a_sFl0YDWDF+#a+-dM z86gWx5{T0!^sJo9*iKG#IukYC=u>rGk@wZtc>-EF#6|roCUVkF^2XDL{8GyeG+Aso z5NxGcXBp%A-B%A7mksudlHRy_=VM@|;}HQu=N*CW^(z7o85yf**hF;ufB_{{(NucX zBj;YTxOEY0&@2OR&Y0kSAn&go(+ASa^?0D)9y8uKGE=hbe8gJ3@(x=pLaw|Xu*jlW zRWL_Pz`n|=3|c2AbCBs)EE_ZwRDvbGrpr__)ro6OPNm`agsD_1%9wYT?KXO}s-YOx zlO#JBOie6p8#LW0Z*%8ll^U?01{tvnS(@1qBR!h`Z8yo!Ucau2XA4q`6mYH*V(3hW zvaFacz;)+4znP`JO($143Zl05Nbk~UbBCb#_~HP?^Z{e;;(AO>c*^Pw)9LLR*ZPNr zrc$D=9a9*)zy?u^)!D`q1u1p7!SFO`J7nZLx z#rDdBiKZ?BqVYj4vtYqa1*gIt)(&G0Q_GqzqL~_O=K}V;z9{FO^eQ=m;A(RFeg|$B zAopV=;I?0CkwzKTZqZiliWw!O%lq$3Fy^4&KJ%*3QE9d#({F~i4?XZ>y*ru@DJgwc zSz88_x`#~G7mjV*Jd`l?*;A0uGcmuTKn#^2#4 zyi>w#tM8PtVvdcM1557tRBO%seSO)LP`buA)Z>lPsJ$6AeXNuA=AeBYZLNnQTI*u= zQ0KWu;co;0+W|Y6yJ928BSmlFjaQiw_~?0UFU?M8VVB(~4BO`Tq+vw;Q#su^J@~b2 zdvpsc31sIk(oJ>Gr_AuXc=qJE8M7LDfP~1VD_zv1ZRy13hg`8v?Ps8E?C>ldqZnwY z$wFYWXgddo^AUV%?%I4WehE^ivtHy^2aR&~t|y0@0kwVv5v#!V+a?xYQ&lT%nkHny~Yk$EONc2#O z;^OhzH?=u1qb=zk9UzmVv0wHW`DutC#=xR~{$OC3qZ*YUQUEJ+)|npI_lMw^Hk*JB z=`8MUliz!PJX}>1D!`k1e?PHv@J^zVCfkgXFiJJ$D%37hM6J8Tp^UM*``aUG^TB|H z90$Fjg*&H0z#1IgZ8iMp#gjHX3MuJes3F$-{&fWIYyHC1Ub3`X;;#Pm++}CO7QU6% z&28@xgvlzY6a%@rwaWn0Es-guhH}!~aOIb}Cp=V)BbtmaleJfQ_X{?H4OrhutO}-F z&OuLdI`?nBcY*G4G9zIU9z*a5m^s6@Po;k>FjQz3Sv^*s=`-b7FYv^ndJfnl@R=vb ze&Ba2#KXoLEEm#M8fY5;n5EYd(zbBU7<&sI=qf<)R#p};{OC_dP7jqrO{LF@n``ut z=H7RI&R;=QQeDS26i{kG(8$t>onqiLGO@qI#woQ^-Bf=~wLQ)a`yw~*I*$&{E0Ho; zC8w9R%+Bi~tpj!J)&$%#E5Ui-owSx~PM)^YHe+@FOiUzVKtG%d?^Ge2m7U&3HoLRT z!v$NqY)+mSj_+YxVpG-2JpEIaQK1G0(X;+#GLHP63q@!)@U2*=JMqkiTD6*S*{{^J zt+cGF<0C}7o%PqHR3PA1>hv(iWT50um`-DAopzeWIK~Fz3%S6N1QXV-QztvV?bRu5 zm%zBU<%j!leQJVGgRPy!fRAH2Gt8nR%_4@uK3> zdq+nddhh18bIq`SrRFD{C9jS$UQoFD$uc?DNC$9I=4|Q?SV6;TX-{!vPbP@JPmGmx z;KJ1B#fe!2>B;NaOZ7_U82(IqS7vOwDJ%9g)9Dp`jTfo6<4;GGu3?__johcm^0h-f z5obi_EoJ}R(iQji{CHCmI7zuwBSGbt2w4%d_SsxR{NY144|Z1DJZS6pAk{U>cRYm_ zeG_YZ>NeFMR86XisHvNgEPn32KLu*>8+~1+&ojU999bE|tm|UJse&X{3T1ts@>rhrk=AB+Z{}Evgs4yb5 zpCF%)vQ1;6$^s?xylRJKhxsBjPFySYLYbg=y?kO$PNJOBL8!2TI<}fuR78TjlX0|S zr;^T+2Qe#-rTPvn#Zca+a7IeUVLU7A+TdfCe_jI+&t@zCib7`|kkW1<{bdt#ckd(@ zoo+60?aVO2al?fGe~3Kp@1RLtcKRh$F|RIv6|w*IJ&3fxhH>5`&(SmPU+xR(p3nPq zH(%J22tivrVkQcPa6z+NnEdqg%Yi#MJ2I_IL@SSeM3l=rd-4u{b9@6!OkC$w7Nu9H z%W>4(n{Lywh)q_a#XYxuGBPoPE1|N>){QUnmYZ=Hux_EXPHmBLLmL3lInA ziMN1NN_9Ox>mJvR^NGYAm%a)y=>f@^;=|?~DyC2Rvh4VWa2_W33X8bP3%gBAQ3q=* zCdT!!(N~KL>m;2;3`>^Kwfd;|{U#?Tv=~t=s(&w&(%6dp6g9YqtYRisdvV5r0k86~ znHD+2wLJHvj!gXXYA^ZnDI6;8(?nmEUVM4(6@pkJEI}pRCJ!7|ql2jIfY_cvR}-Me z>are-7rE`Pu<>kmTII@yCKGpwViQNGq%j#ATAtz$!WbHa?gZwK2 z!Ti;Vcch^hMwk1j^{i8DENTdI+E(as-fe5)>Dn1my`NwP{4wd5gT_lCEGJ1IG0${V- z-EV_A0HhNgeg6y&26<>b08@oJ{V)?I7T6qJp)RSqg}B|e$wsW|y^4K5Z6eRq|c8Yh@p>!R{v3c2f{ z+_lp*L#JR)Bu$hT<0>A_2i3F^iD~2D5$I)@+P!FoxTfl^*`3GSh&UVf5DUNkBYbuc zvxfqaw={j?08+L|pD3V4&%WJ8*Qiy~qe9TVnG@MgN6`#JmdBY;?`4!ICikG@jWkuZ zaaf5tqErm{5xh>$53YYo0N-LtSc**>g*9$EkWws3CR^{WkvN8EGYzbTy+^R5j*8^Y zOQq=b{1g?TWGMIko1HBGte{aTs`OXq)Q#s6aeU&4)wXy!hna8v_0%el>1LP+av6WvSd-@ z5{oIR*7YACb49-H&V=;VVD%pvrVc~MRSARx1*dh)>D0SK^mT_5(~!R=(E6b?rPST6 z0hkX>J)dmPg>&3l=mbDDh zP{93@k;9b`0)!O@a#CB4hkbZtI#j)pUpHLymrs2Atb}j3CTt2X(&rS}>bix+S0~!g zYNv6*2{wdhr=g%rKrZ{Bm?E*qSK_rw(sd;*6TdmM9d3M%dh44t5r2u_KLEtOFlAMq zO(Xgk)gTjQqCg(Xx=yj^v+K3tb{RH`Ah0+B436r+u)lfQVkgo}twNt#`K5->7uKIw z5b4&bFJ!bdGCan!8z51mf00_ChqDE#Eaa-V9w2MaiQZx5Nz#c93d zgt=LN^eFSGzCZoCv_cJuMffdDRt5Qj)Gg+~g_kIK78!TU6W1d^%44a;|JxL9 zl!+8>O)qzBGI^El06w5man-+zK6m}SD)&&y?dKmHfm>5G!=c68s_3vn*@>i9&50CB z$mKVf)FBq{zAe+W|BYdxx4opTZ^nzG0^ZK$TV%}q1&)aiUUK<5Ae$7#oflo1 zmj6nPNW`SWMg#tNr`HrkEJG{mXE({kx<;1cE>v(s7Z~F?pVsh2)v!tB!uXas(A1RY z@{aG#6Y$jh7g-xWNXOoZGi3{|H>l$JB;{6dsvbk#BwNe6W~-1vqFtXoVGa zK^`p2LY;-b+5qL(os1@+JnRqbU8vaIqG5xh-=60w&!Xmic(-5?gvGs`B#2I*?x(<$ zCGFKHX6J15yW0CsteGd><`CBeFzDBSt|;1XGIB7c^t1<9xy_UE zeGHqM{%GvYUfY~whUwpkl{)Ybo#5V?VA`1U<8f2*1ZL?!#D5lq#MfFu*107ul5Wpj z`ogUh?{W+#JU(I1->AFrSPjFO*^TBnRR0*};y0?{)0*O9D`|K6#5lRhwp3r5{PDfh zxuUMNY^ZzzBt9(3qLOK4buS)V9bH)lPZ7R&QZKW~=iOnX1CTmCKzI)G3xMLpw!4zA z2EzL8qfC+0nDZYz&IL<6I`mfnp*7uRu{b?t)^S<7ryrVPCnhwwz8{>ifv+bM5ZkHs z(C52`9ze|j!k{49Ud!a~%F1@Y&q_KPb1-{L2)HLth)S%+$zGnWReKS7)#S#r836kFlL1dKxVqCzt&MpZCHe*RVa@TFlKblv7Ps>j=tCN26mbc_Ed$JhbiEA z19q(7(eh#^BCMZG&W%cg-z#=W22b6AI{x`0mNK+g#A`u*tZj6fw#3@k&dPO6`@C#~p109XSR{gsUJOG&oGvN1 zjwhbICSB)+_W5iRPf1N8{Z#{4?&xeB;J6yy?VSQ6(E{3rm{n2CSanpYC^4OTGmeqn zf>a3R2}zDq3cEDl$5BmMOpZFz^3X`S*B7g*xWf5#g536c@S8+Y(8noH1#iR5@kS?u zR5Be?=*>IxB0R7z*YiwlJM7tX$#)^=9K4mr;Y0Tlz>8UHxXaJYQkEyxC#AuCKS9Su zr8a1@6LhbG>mxN4%N%*=cZFN%WLG~0Q%?>KnoKOwR5kvR8 zj)kLZil%RoorZ;o!u?8I5Q2wIKh*I|@+0U}yLo77QfMp8O>Qx=nVvzL9bL%f|IXpw ztHG~a_-@0lZ=nDoyS~1QCG#5`dC?q7o1Jk66#8am{mjZR@`NV_ktmOC6~^2thw9=W z@$I3zI@ag~bZ|;Rq>+|g{b!`@OH!&rBs6`MiOx4pRf{6sLmLZg15ih_sS3gOAqzXm zx89_s_Xk(+8ILC%gm4MpX8iuB8NSCrT=MC?9Wqm^K#v`UTF%s_GdeuT8XmJ)j7O0O zesQacU0CMxO&PZ=ehj~azSvi(l*u0QHwO=^N=<)dcpIDdj4SX#7eWasxqwY_v*G3?i8mj6j0+_xxzhgBNrePprVR?cBA8Q}?fMO`_Gn(M z72_HhJgo~4y+kztpFl=y{~)a&9>dOXrL+ExhpB>yTMmo^O+Gkr(SeS5)wwnRp_$68 zobC?XwyB=!Gz2hK!>?dOLYmKZI)`s!pGNulr%?h?^ifVe9iTuk%9qk>TL$#dr$f%7~r`j4$#00eor%7m+ z!UQ+5wcOKpgIAFYH{P;}RXz_tM?zfxN@@rX<1@15K$DUHz86|cShHiA-oKVMEAK?P zgy69$XBSXhzOC|>$|U6i_BDpcXV33$md$8fX=8Z0h7s)loj{q+%9X8Ud8$XljAf!8 zwgW2}rpw2%z+stR+0&x(he5F)nj|b%Q3dU|ny8s~Zh#(;eTjJqRB(032bI04(6~<# zKG7z=3*~P%+e8`K+luNPcE;$D+w1hJC-tS{koV+Ea`+4PmNdOIlfGoAVUhet1{j3x z{-2I?M%LkcCd40rA+GnoP7e>==5ke=gFACB@as9ipTZCCDgCGvej?zd@9Mm@ae&Wt z=fsKbU$V4F8G`1cdcM8m&j|8cmR>?HEdK)9gpo$ncVqO%xVK=J>EbWV`CwhOci^zB zIk6ga15zcpQ(6|e=cH#cO1|XBw*HEL{TXK}_in(^;F%En?Kpdr7qHC!P=Gs1jC9+rah+y%$YEWVXZ-dzE!;ZIRON_VDX;gK%<;p7L&4zu+xW#Uow}$)n^W_Yt+ZIM)#-3Tx!%GNR7i#g}Z&ou1 zZ%W~!L*AV7=<#TCubz=dXg0r9^;rq865tM0VM7t<^+YH@<~sQoo2yFGux#XJRVm$# zQc{E(Y12iu-C$0J0T;ZI1Kx!4 zK<~hmRixI+iv%qMz<}8JUCe`QqqQ6_Ai-hR&L4fgls&zr-Z<67Y)RVhsbqew+3GFa zGct4cAT2G>%YskkPs-|m>%syH;U&M)z{N74|YrN`y|{AjRZY zFXj06GTwK11HKxuGrbLImOI0D}KO`SJ?mar+r!pRj zk-RNWmlyW)pLZsF`;Iw*nfvdLAO%`8!W{oR=OORy;fQ7-settOh|fl)aEa`^Y_=;Y zXGEd^dt?Fb(y%lSopot#M3&( z$>K;Y;_FZX@xAlNb*k4(eaB_;`+E3M1*J5e^p>PXYj-mXgs4=Q|Kw0=K5|vdg5db{ z1Dt$MqVT_lqGm7?%v;QTNP=dKDbd(^1*)=O|*DG8by4zs6rvYk`p0U1Nb zyCj2^Cl(&U*0k9?N11NOVAl0yOMPq*lWykF330}EFe1+bTU56%XUnMCy6aeaM68uQ zG3FBjy<|4T-W==LD$pUoo+bgJTdD&9rBMn_(!10)>cflxVOZX6(k-J^Ch)1>Du1D~ zS6RtPOjzI>>GYHO-!Tt=z3Ew5=@>TS?Mo0~9!v0+WY`}u@Mq?yR@;S?pS5orbG$XJ zFv2ecL#CHqOOJl+4Iv(dV0;#19+pX8ccm+Ro#3$;jkp-IFCMdx*eqL_?x(%$FIQ@V zx)Y5(>NqEHj~yd^BOaVSR#~d``=LnnM1c&#D*ccD810LR$-p}Jt~Wie;84{S5X_93 z=JtwOkKO5nE;99>o9izK4nF@@^=NJ&NUmi(-nw5`1?0038XaCk7};BpeVAJhfCzeA z1kXMeBFv0vsFWCwd-y5&jb5aTYb7KcbwFNqCt(EqpYHdWb?>of+^HC|d}HTQU)>{A z`{h`ngM0-#&9k<_PN$$~Gg+*D39;JZEd?qfLeOj5i zDI}5wV(|yJo`r@qXXZzq|jkqpGZagI|&YS9+l6qF{x1M5fEQ^JFw7 zXC>8WrAVV$RjVrS;40u$eqTswgQ>r*H%t%kzg`^l!)$R4iC=+TXk0H93q9t8IVpXx zx8KPTzKF})Q{hXr3DPEHcq7z9EJvh5K*E$L=R zTU2*xN5W?4(Ej?jqq%Cw1w`KUYyt;He+)M&Gi19~FCJIX&k(ou>it8>?LTdy^aXEW z`eR8vU`;jO2V4(_EnZn*I(S2V{_j@~aoaqidVdR1vv46DD%)<7 z*1DgJi;2TT-|EE1fu2I2hnmCC(@RVp@%x*iC&Mruv=pZ&gxqf@_Z3t|e;1?9_fX8o zCx2IN%$|L46ijL8#1CRCY^S;Y%Wh<0!!f6wDnH^i>ue)b3KOvE3_w|FXzFZ~8LA+R;PYkY+L zcSvS2y-O^%@@nAv!kRqu2S>3xm8Wr(?>XXef@2$@Yrg`N6cGk>@96bA(Uih&F!R>k zV`eITg9>iHTCc}U28z5#^}JGvuMONXBo2tHWcNU5m2PVj%W?X}5spI?#YrI_)1>-& zvTbi3$zpW<_(@Xp@_{U0zcN|!y$7i0_4DH?wHR0x^=7FqGQJo%HEG;^z!cb_r%qlR zpZqaty4ozFhKQQ-Dc0$cFG(!g`jrGx*%=pq-DC{8efne>H(J-dP#UX#B~L;hmf`Ab z{V2xt5?CCh#ZsXwq`al}z|*%(N=v}Etl}z8Sv_IllA_sYTw1Vu_n5vpH|M;J49_0){6T-d_k+5YRYZ{BgR24x zW&!Zime^V2(}|Z)HasW3xJ?%YV}_;l^b)2{=hwP-Dy%bh+b(R5e^tB3E2Vg9Cwr<_ zKJDqAGjY@nh5*7B2Bd-+*2eFdh1 zc)4ugXc)h$se_!vys=Y0PGRN_Q~*wv1$zc~q<#N{7*fYKfY7Mfd`l4j-JHx1hnq8q zy_Eq*+bBczsxtZq_p=bT)$guRRT>l9yRXj)CpW+0ZLtx!$9aSk=ZG}+NM15heZ{4F zZ|mk29wCSs;d{H7UP@)LwrW5Un3-rN?O*kVU)!nO)xGXkv%|q)7%ZMuJl$L`Wn9+u z<3OC>1*ZEOH@-&JR0t%f83y=KZ4r69yYJ8~RDlhl-&G@i=Q?!L6TK+gN<0Y-0r#8p z*Y_%JZLjp@kKgG2ZbNQgJtUcksr}8#ahG>O?^t7#juapg^pyM*5-QV++!RM(l{ljW zF)HE!_d_Y*w1fIDndR>ti#(T?x1OFx>>c#x#^9RGa3|GL@K_83@*t?_yT z)2leDbV}as(3O^l~Q^@6O0hTLyS6&Bkfxwy2$!dGFctl3aXF zUh=%-=dPc@Y;12oJK|(5mCg_f$X_=#HtbUcz2VTsJ$EUJYulj?4Sk`B)rnH6bt2vt z@EM~Q(>ZA$25%t#qts3g_+;-Qx|3;7KQ{3s;3M-AJcW^FN#UY4Y`?pCl{lVcZJG2% z4=C%IaBks-H+dh=fPynMq=i*eXRi$>w}90b8_=d(v!eV z*c{qaPqt)l^GZ()b!Si-5HOjuvVhB-R;#T;I{jI7Tf%vd7!Dv3q(r`6;;0|N^*^=X#xi%X5^Y!A!dgG! z&tYRrPxD!DPGE0FLK}s8%1?faiQ12S_$fwF94wqyG8D+=?Yz~ZP$B}}8uHay(T=A` z2~Du4`P?~{QgB5_KIkwE(ML}ZUiLLhr5mpnF{KFrajn5xxdl8a1xj)wr63HX5~{tn z==<(84W<0zL*kDqQv zI{HqXWW;-ujwW}~j%VKltfh;`CiJHnN{6fansO<;uf5x$Pg$^8?wn|zA|bOj7YjDedJPxj&x!oPf9bJ$El*}L1SJK?U0T1Yh` z8XSJbci>eBY)4Au{oI1h;~Vpla3p!??|X#15hfSSBRsy9ygldVKi6jV+L23qL|RKm zKUFeYyaa0my2@5vZ3}U-Mq%_&DzWiE(cZArmF*n9n#+PRTuohW&Rd$463P^@ul8Mg z(Q@|tUF9-`;?RB^LsIBraEGiIS@n^rrrEaj=$*R8-7s>dFXM+@yB^2yry@W@ZhMh4mzud!@=CM+qweP z7w>N-SS@df&Sr0k2YaQ@XF~|Ksw(pG*ggoQ%=ulDRz0Wj+P`@Pi0?ba%oom;%9Z~+ zXW#h%F=5n{co_g4pwt#;7&EsvKvuRjmvXPjGxWHLCssK3CvW5vUZakNxx~k$q&pJ& z)wZqd$4zut=*PraNr<7B?z$wzxVa8#eZ-)MwikAL24e`~kKt0Rj3Zh@dw}muTN9;x zzNG$AHr?;}^Hlu2weM<_y@hZ z<%;9(lC!-v+x88G*rA1F*MPMo$_l9z!^vm!Gs8nz+pO8r-l zCxw0XoK^umi0(-|6jH2&XjoU`@LKDBxRT(!GZ{K`Lpx2896p97=?bXrNL%i%!lr?Y z(af0$VBfJG&E{iQDvjA%cBuYZez0lib>UfHh4ikK6JZc7Q)hva;xLhX9k^f2(ctMo zRGUcO$5jY#PcZ9Ck~QpKaX4xtzR_owXJ3$$tXUrUq{5sEGv zPF<}D%=)RzHjIekSzBH z5UgPNe*h>z*T0u9wv2&K{wJ)rm1{=MU&C?byE+KMmRGoew2@pLJo?SQI{znJ^P!950-Zf{wTfTqmA6?EZGQxAt!@f3W4iXn_$hwfGaAvh8>Np!DAHuKH~N^{9xQb;Nb#MHiHV zKm5ZICp z4eCyYZ|gE%R~&S1U9r*WCr%k#t^?UN#%!$XZme8cjBzdYjPaYW_|75-V(|jA+!n&Z zvGaK`gLCVOgAPBMImtr|7o!~o=bcq`xuzPVc@bxA;;mm9x7GMuKXKgf$u@IIwb!^Y z=W5QFcWb%4yd(~=fQI6-%@?0tsNO#=B zj;rY?ejIdVU^CWE(m^|_F5_BWEP78>(UFT-c?07@hi@Bx=9HI$)z-$y11Sbw_NhX= zsP~N``)1y}P<@CIpZPD(JG8lc@7x)|jgAU26~+s(lzZYj^A|RKzT7;!5VydwbS}p- zh;Nr$_n8~YhX3a`;+H><)w`s%M(U27e5&T?KmCX0(9@n;hH<)@`(>T0(HbXS@Ns{l zvrqWhfAzdcf>q8m=P^dMSEr5_YnEn6t8<=Mn|U(DAG_4LjHRueAJt*}qK_1{{u$Tm zLS9*SD~mCdPi}z(Mwd4NTO2$#I?RIcloCA+oIA&zXRHxo^;bIu-Z=6(hPaj*8Eo55 zHmEr^HG9NuW022gZsMBHI2i|CSsy41@!TU*E7 zS7vxlSQqI7`vsoXi|@(V{PzD{rhYHJ9gx#}$AFqSJ>7A7IsEEZmitfNT4ihPqE2RL zjXmzSW79Q0_OUup&)CPYQ7<*GvQ)fwDRy}=>M|v-bvqBWW3w)FHsiJN#iJ*tIQ9BN z^=;!LJNL8&Hl8t!T3w9iop;_$D9=|36>I>4UYXQbU&KPm%)Ps4j=FZkf|4gkd z>oVRv(ma^x*qmI@>??1bt*qV{$i`HcWqI=0Sk_0UhUJ4(hw5K)a7xP2k$+rM{^jI> z@;h7a8jb&h3>o$D;eI~qefpc;T>4jkc=RP!j5S+)kySZzf0?@G<7GPjmeR>VE!8*t zb5ke9)-~SfbKm6A=Z2mJWenKhiLbtkYS-5KIG)C@!Qv(3#Avf0%2NAkEahCUSTV@* z;+3K8rhj11XZ<19#TehCa#8U0nWF(PI#BAm0-6}SIC%6nI!()iA=a2;vtAtw(t#6C ze01hfkB_|6INFr6-8fM7(6*@)lkMt=(Y0BxHt~G^^v;>(@~^gkuDoX54e`S?bFpLi z*DIgv9Vx%K`Q~!pWIP6VU^zK`<%wCxIgW_4cimk!{Zf2beE;pScVqX?#3ye)_xZBn zU;k{`@e99PrVk&9yQeEBM=P_|C~b}Ec|M+dSZ1obG3OL zcYMqt-xUWPwOWgLb6j(2Gmd&>ZBoY#*;qj*$Lnvj7{f2V#Ph@fMaIcMS*nf@)R^bNC^>5GSdbg9`B+)=YyV%po7(?h ze_gi!i&vGcfA;qHP(kD#2?iTEvXw*Y)So@JS}MqXsaT_8iQ@n4~6x?`rsq@3Lo|HDn!e zt;t%zwapx2q&cR3*`^(xJh9>PB1C4>W{j#BaPsNSAXSfhc{QoiP45^tgI84X^xYz`isSu?dX+r4DnF)4KBVe zaC~YSgZl(d1)cCZKygx!LvGl>WPG+~UMzXM(Q~SP#A!bkhtB%oX?bFdG$&#*-oXHu z^<6x1Y5ItHu%GuXg`f0Nk&m#*V(JIhen_#k_ADE}OGk_xXDmMvpL%4B3A9&`1uFw0D6+v@8yF`n zd{=Ylfio7AW_)G+#VKcs%}xJohqvBVkKE=`XDq0^Sg87pN7uGon?A-dEBwlMV0I_s>Xp_nzHJ4KoU!h_>Tl^a+#W9X9$#FlTyAlupkvFQtjeE9P2 z?_c_3w`Crk`Q@{$j}#mJ)Sq$kxejz}E!J4pp)Y!MVzlMB+Qfs=E>$PiIQl@*vE{MN zIC)|kSO07?mNqC&4Ev(1kr#}y;lV1md2gA!> ziBAmUwRUCg)&ylivJh<w~OMFW3CoMT-#Us(B)@7ZLO?c zO6(lpx)^&}wrkUu*j=@RZgy|1!?>vyU$7Ys5CK_;ZUoEMYT!)ZqRPQ71gc&hS-bh5 zCu`uTNnbmRkNM%j(Zp3Dy;#d?_5`glh`n0fVvVT`ZR-G&ahY%N$l9gW&|=ZM=||0M z_-21&sLNxB&DhwDsZTXFFZ%0?+1Od9n>OVxnlZ#MM;G=~bjE|`Sd7o9w6-6_F{UDNQYyFh<#Ropi_|kGs>d@yH z=0Tq^_!=|E0Y}q@54>BpRp9tVeAdaE7fc&ZKQa1rQRY-WlgshI8w;LzZA^3Lxr`4R zx)yJ|97`-YXkw%z?eSOivF%|o#-Dqi*i7gSK<4z2zazxaodmU+$fCrw9RLT$IN0^g zvB2c`$Q-e4`k=S9JTf>o2e-xGn{~+G)fodlO&fY`nZk=RH?sMwF};XSs>9_7T_8Tmy?TU)tzz z%+^=Exv}FzqYvsct;X?-xv|S@H;%sQq0H-ue@6T{TW=c$(*W8sPp4=U#@<)n{%Y?e$D3{>98St~);kBontFV9(Q+QHg)ef0;E`_cN~=bR3oZ9Ll8iUKFVHSl;%BGXI;#zg2i zg~gXYQSmeuy>VEa_<%vLzqyD-Lq1spmwoJ%KCP@CY9Gv%b*JKYG7PaCkCw-;E4OuI zo8xN?D7qXQUG_oNo@2`U2Ab>8M@-I(&G_P=H1Q*8^oq{d@NPMVc03+zALrODPaN}M zgQuBGSsi-vF$VPj5o5{UYUUUA0h_M(|>@F7xKe6gz&z)E~-*E$dsX z7^vd|Mn30hd3z zhK;5@Q~Yyoar%lim-+N_a!B=aKS`Y|#>;t(iOoFXjHezyc;o7e{#05UC;MlfSjgmA ziZ63MW9PQA=gb{tIerm(7@us4x0agD`nqy!vo9@%F>_;{)5yn0bMCVicr##KfTuB@ zoJD$hhaP;?ylwJ3pa0ygv*GZU|LdKx*W(#pd@C8h^H={x-F$rtMbSY!Ej2lIlF$e) z7M=x(&7E37@nT1fO)UMO%Gkw(SH$7^HvZ;syzamnE5}w3r8yWaR-cxd6Dr?gvJ8eC zP#Sry0ogdlvM#auW*>OR0bJXR)#~vxey*p*SrdBkt#2N;97|vD@Y&xy>aaUkvdwtv zGBs}2!DqekGbY>laiN{3Z!X(5Zz`X@{>GTh1mN%zBsTkCANB2uOAhpTvwn2MfU>aU zS#UJ^E>@e17@u(+TPG){C)YjuTds^1JXQYcf4{5D$5C!}hR-k7az`{+CxwOAEb(G+ z78@7`-J(fEVm9q!hyhM&!N|r1JHqhHGycjweoS=q^VTu4;fjwPs)5EYIabz-T`liw z@ra?#7&)$XDfNTTKHAXHh+`~qd2GaJt4`yWtjjSlXB)Ei)%aWo7+dyhb=Yk3=9OZH zr)5l4G%xy`45tlO@cJNQGZ(VszirED>G-KS zej1Hphyku`>Yy3pz<|$s@#tu+oOP@5_!1vq^PkC3BRb4v9`cHfCNm+`V)n{n`w*Jhk9N=$J2v>5c&{=ZyCQb$Cw9!YhzdEurYrj(WWQYu3cOI zp61ArLAl`EJ!SW|oKm<+wSH zdSk4H*T~b*2nK(#_y2aaqx5T9bKGCj*e0*3nn~? zr3|$%@-9U3dcDV-bdHPDuNE_|sTV(*GGb#)D-&-Nv34TmXg@)F{pq-*o1U4SWk<&8 zU;u~lweja{oGqL8>?lX(7t2kDj+DC&A1%k?Cy$nRM~DbBL2HX6(^71`_z9)azz~O9 z$Xq{;(~mnzC)g}rnKM+6s zX=~4eM;%$lJJ;6w8Xdj9;#tj6=RHSgIAwps>9c&PMk9K9LIf@ z^wB4PW%)%x(Ov*H4V`a^7r{C)V-CjNuX{4kGc#+H2RXi=P(hm2-EWQ9kjh z8#uqDbL@~4YI2;V)|LA~4s%IcJQ#iZEJ9L^{YV{YqrMm)wh#vKbA9zrZ!D|HII>Jn z#Z8vDP^?FpUVOd74`J^^@iPotw-4`{v5c2k$NS9-WWBK##B3pN%_2 z5t3u(Qe84NWpHuWipA;hShSs@P&RikdSr2QW`&Q=4C0Ph{JLm4ZT*_E{q$}1rzE(k zG#T%1%kc(6?_84juGY+(?dHz9md~}dF_7EV;&YD7>z8A$^gE1BOygnGjt+Zn#>Pg= zRGSkAdya)nQzsssxuDv`ngiMWnRV!ubIi`g~*9mkT31Q@ z9(WzALEK}(Zz>L4=kGbYT=ul5PEW=mdzvF#e7$r{ytF(Q-!eTc8`khxB9agIk?TR( ze%frgaM${B*S)bQ?>Sob$Cn!2GtU6V!~gz5>BsHcdQ{|YXC0XlaS$n#o@GhO`WAs4tnt`VoPQFx~Z~t{cPDd)hp*c>HPAz^Y%=~x~o5H zJH^7AiUm0prBBAfnT~f9CV5EpSHzZwOR?xC%G#|{W%t%i<^ITW`;lYirUM7d?FWyP z!?8Gf)3dRVxwT7KOpH-^bP0CU*;*>X$XN9&Y{gV5%yCv7zd^BF)~#Jro_X1&wJrxG zq6dt~Y~8JE2kPJLaiVr*=bWfMUSsHq$IhU&_*Txjb8X_Xj(Fg;$(sk7Tehpu@yv~m z%?Xq-_=z(HRJ@A}o%vdSZ+H2^{`lGSX}&uz<`*jlWOYh?42Zd)F@CmhHm1yU+h)MG z*fKjAOEbO{xBiv*#G3lpgWsg559$B@^@Sjtd+iK89r;?MdneD(*M zF>M@Uu}H9G-@I_KfiYH&qaQYT;=1sRiS41bE+6C7Sj-{jL%oL)ny6taE@h@;4#)qP zD}!?RQ=eRJyy50@$AQCTB5v$(6rHFGmzfzYCSiSS76S7zf~?#RK^)yI3@&^|vl$>W zn%vCo(O--V;`t&6t_?H8vSnjjUaebGPG2_@XLfO5>+=L4#-}b=zO-+)%*K&=-KI73 zJhxa_8JmbYh~IZ-0dXjw<&y(Jne-g;r{jW{LTGUc95Lf}(qq+6&GgFFP20=)XKpVC z4&7Hif7d-_|2>Dx!J`Z1$nr#7@`ZmdK7SWQ^y3E4L~P3wi^nGz2bMV9tvfNY@!Nyk zyxFmSeK~F2)^hgtt&w|lYB8EDqf_2yZPdElX(#Ncu(Yzc>NI{qCr*3TWh}f{_4;HR zn5=KHIR?C&G4Rbba3f2dv7ns(yJ(Qb5YNTyBEn7+BX4dfw%n9620r_WH*UsiTP?P+ z#C6ftFf}F%G5(J#igAnpl-G+z(c|%4%+u31Z!F*W?awa1^G9zhbH^6q22Y&*#hhI3 z$6b#A_hN2ylw$tZ8-&~_jBTPnx@6;sSAUc?;szHpHI9C<5P00i56rHajNdw0J5_dW zTvv9Uwy|uQoemv0J$V$zD#9_&KI3N>mKM2YjP(}2GcmVkXQmf8UeBZDU4jlQ#&@U; zqwtAvn1}^98HZBZLD@*Wf`C{EAj7x+BPY+XRpy~VO-%S<_Y)0t&q`OI>7 zeyQAj-_desd_U*yM~;@mN9W3sx#hAD3vCe3Cn#n-Y!Q!vi^5{?c5T>L&WM{ebmrc} zhYJsGqgcwQrvT$QFdF>&=5T!SfF4zbEV>;>U3d3tCNaX2HT~>ZcHgU7fxI`Qy*y?tJNFF92rk+AT~w~UZeKhlI9BGuFcsHw{NqxMXXe9LJcIGkZ*(RXvojWLeMG^B zTX^G(EYpGC5~rW1Z=Q{to$JevP3y|qn5S`{C>Apda9GyGN8+a9pjDq%L=E)2AN4Fx zFPHf^f-b~*mTRY*v(7<3*hUPf>q04!y^Y|tEWy!1Z4Y|!hKU!Rl(Z%On51D6pnH15eg+<81;8{6mhM0E$|LwgCkmuP|-`73U zJ+FN~B(0EyUR1eUCW)00r-DrxK{-oo3yNSZWrCGZwt{&&RzZj>38gZLp)8S=Z3I=? zSi%BJND5#=sz7nYmMbMw0#gPF1>r(kMMww!wM((%aJ{fKd-NE@fWNwlFTC_^U$peJY{9%>t%4Jj#r1y-%lX&Lj#YT{L+Bpq>BU2b%C3c zJodv(r#$OchPn?+ovzFy_{&lEeE}~y7N6#6E#&L%q+CGWlI7~>KK{pRFUm&b3!ZVy z+QrOt7xPDe&Sq73KC3xikcgpm&3P&-L^ga*Z)V9EcqW@Ex&08mJHc~%Z~WT`AN9nW zYh&ibiQMN*sbq`HJLd z&i{}L%bWguej|)goWKq~{1H0FgXNK~!DoukX<##deV4NVLBg40Cyh;X)$(*JGbgKZ zf)oQ$xswM9wpV`Wzxc z_%iR?uCLvi+h)(owH`6R!vb;GtN`QRIeFpVL6?43e4FfFgtie~YfM;)liJg$88XvS za6BB7YAaT-YdteAE5NOI|7K(}4-J*^<@&d~`{{g;YW-7XeCndo3txD+t`BJj%D7)y z84QYn$JV)@I5YtW(7GR)ins}n&D^J~#>dFr7`VNYO`rr4=L#Mu7*8G$gyYq%#9=mc z#zqlFZf7ZbiP(}%Hq0x@(R0NW#y+VPJPfw;z#M=U-+(; zn0xSxE7M9Y1ay>7#z$|vbxBP=9%jHqG3qXay;?F<8(V&CbKfE4^(qPTwDKCqGj!& zYDE;= zVa9JC)T<2~4l$=0hmNjOhm>!LzNAxrXxdc{5&fi2w~kqNF-||~5>DhQGUJ)xQ@^-_ zpf(A$2YztauP$NNv;x`r01af!?M>c_Oz3tYuoAZ$G_SS{y z%(Jms;u1^M*D$WQDOV9$7*?qUhDxT?9Rbo@2B)5CBketco?c&4Q%Z+YfP( zOC=ZCRXY2HTAChDgs#J#gi+kU&rVGaYUa;-GSelBF*w0TK(PT+Q*dU$ognyA)nnF- z{>T&5oLQI=+2Em~?d{#Qty~`>&rpwIpJsR(j+? zkLe&;>r&RTvf`ERW%Jh2Wz9oV7kTwaw+yr$%E&{R)a&ay2X*|a&y&m^A6=1y=To@@ zz^abRCRStk9%<+&m&ZL5jQA2a{kf%fEWVC!@V%mXuNGaESgeFbprTMu*4H6iU}vy z@Y%Ivnaws>rp90{+nAcEl%-|5v*2zbJ9AnpU!B!*MoBDH@YjO?nRbsO9LtzRX+SiD zgQ=WON|t;AGPNWdqu{{G$XrZt?!@T3b5E!^XUyPj zJZ;l9+o{e{u<+CCCqI`JnQfWz$Z6l6j^OYKe)i;7?HcmKCxU`w?Y7%*V~JN!l^u^e zAJ6XSrT7_pH%vn7OdKhXORmVoM{6T8YK{?rXj#=+{zyJJ{Fh~J{>P5&ljL4~GV$9H zQ(Kv6>iOC9|D}r;D}QPGVkV?>pUCy=?t|Nj4tA8j@W+3=w!wx>Hd=`4S|i6`s;TYa zPzalx1`@+@oSZQ-B4Y-mkul`*F=WRB;lyzmGFuX=q35XE9T~{1#A_x5$5~@5XAlCD z-PZHD*LgDc7jMnhGn+h|nW%Q>Ql1WqUC0b=l_}aP_eFzwp!Wuw8q=x0yi}P^B9vcQ z@i;CtmN#=!20Z-A%sM(A-dWBvum?X_%P!<1%S??M!acpSk_!wVls>E?$?(r07{b){|iI!~`D~X%%$w z&)qCNQOk8AD>w>Vwh<%8G8v&aH3koffXs}TpeFDuPU6FLO}R37Tz{rshCh?ng@+%0 zFss^)50`TX`}t3OG8M$`Ot;5!;mI`5t%)(ajr)cKS3S`X##B>{txhJNgHUD#O5%|p zKS4kPGKMv?60`&;fyuyf#$kD}9o)qP;`uC5pOudYoxX{O)kiJI<_+va&M`9pL1#ER-gsj}A)kkh(1fi#Y4)_NZIE z^2!7BgdvY`39r6c&k`?slHVilN znVC%+Pa|-#N|-TSZ)P`>o0;pG z?KY0{jnpX0nSh4pyj~U1VD1~TjI9nyK-ESIK^Z-@Zm)nN_)=*a!nI}H-UyvX=Y9+372=m3U>mRBdSjAL_H z2AYT0gHG;AJ>urFc%VAunS)Q=ovuyF>hzY;tDWX8mqRpr)e9d<-SR^xZ&|2ZFKfrp zbfpc}tBoDXf30xT9p^~W4wsJuncvl{SbjrHtaxwFJ?z~C54RcWdFa}tsVQbGA6IRr zKbVx55V_Zlzt`lKeqrJv5Q`^yEMaL&;DMvE>Zd?vP_7?CO3La2mm#LskMG=b@zh6; zt-ti8J2?k@^z7$8yLRcq*#uptTzKR3OwwHZ))KYe!pIqe$YvmctgG`dIhC<-!=rGQ z3dZml&uquVY#Ce)W0^V}n_DGx9y)PkPo_Z2ogZ9x{7yr(mu-U( zS~*J7-D${^zzJ6`a52_^;*6fMD@^P9n6KCK){b<1O=W= zuqDMmPiLq8%&oW8L*paZG6UubG<5Co27Vr0t5sVZn3Wt4rc@aXEM3Eg?~-R0#Lv@d ziHl5NDKk4J+QP#`Mcv^`+}OTLtIMv$+(%#f>Q^TYVcA%F@a!LdG7-<5lnySrC{2MK zq;WGd6-OCCMvM?RV*@75ivi&4tPvTeWd?=AASLK%5RIWx%!2Tbvr6=>W>ntqy5~9f zj2oq++p0I2O?j@5PA(%cJZT=xUbfLoe4SQ`rk_qnC(fwzQ||RBsthz8k$lH%i#(L2 zn;&P-a+$q);PL46UJvpnc(GSr>zM7PtS#swS&#Wbu70dfeM0rX*7IE!{8Bmyzr-u< z;5x8>a1{>|%Bl=Dr7*<7V+xbW-Fc{F3xCW#$DJ(Eb`o6YvQfB|a`|aibLc@w?e=FD z-QoGt_$zTxQ&xO`1Y#;kV8UGevVzF!KiE(c9R3tLLdq<=`yluV#@)+1A2|DoY~Iwp z#cbi`dJ$o^a}y@?ZYk$lFDZ1-NxV!$Yn-PpEHKfHK1k zxzQk&wV74p2p1BFc`|P88Toinbz8M-G>o%QeJmO4lW1V|C}5Qi8dUK@`In&11?1=s zy~IE3RIWpK)Yb9m?q&1VGnd5!2?|bjq|RraIz8Yuh)Q53V;-oSIAv$3&GOB1lxH4! zh00uwPyT}-dU{Hes~y1P>O_zIp1g5iZ*y?DwUZg*?wt5{v$|swb2k$NKFI_z#D)$w z7i;ClIyGsJmJBg~?_voXHnb^5)C85DNSW0nPpz@S8+}uoJuBO5QoFqS0rc`t6i)uW zFMRr;2#zNPPO$V$D3Pdy%Hx`WWP-_2OV=0yirpy!tsWrH#b!NdUNIbFD^PKsm2<=- zW>l^vD|iXknkjekkZzW!yu+A}&Z2YFPIaShobSr+$HK#tvU1G>D4w>>wC;%TNk7Pm zY9PW_{iNcRoU#Ok`Np!Bh2GPwOFPlg^^l+KMUQ;59%$Oq^{Bt=QipXc@yml=(h^VC zJ-C+b)7B;aF1JjNLsoLe-;=1IEdNPV@)#$#=uYGd0MC5Rv)4ZUp%2w0bUfRtygtZn ziA!8dvRcfTFyY18f|v7v_f~F&5Zqb9q;~Et29;1)dTOI1|d`mj#y1RVOBWu}{g=J}$ zXV`7fR(Nz6akG8Ob;ww9bewJN^^%{`C|O0m3xDL=I;ThDb^7VH^p zCW;(z#g}=>JubNRjORY9UXs7a24YV57c(jBWFs*yy2isawLE3at8MrU0T(TiuL&hO z*@$GSVD4e(b@vj}7d*r6Tte0*1ARlKW2w6LFu?mTsb=T)mE5M?I>q9;!HKu4fApb*0XP9c4 zRo9SNw{o$}?D~wmpHYl#@Nl-N%7S5L<%yrDD0>(f2P&vTlLIT01KS}q%jPZX1e8tY zJG365v{}Y7upX3_+wC_o@FEfvXL2-TNYTs)XozI zJV3yw1;SAQ=Cuu-Mgu9ceC13-J*>yKa@~lDx1>{`AE&^tS6;exs?Rd8AM&fO zLuqwVO#xjb+pbP<(6B)sX!3#MpzMJRsq<4tP8{Wf5~C7UexqbxPw``??JT}AhCB*) z%k8(v2MHWDXtK$e6F)1wL_+!ec5oSigh6IAzJQSf|D>+E<(CYPabjbw3`d34cJa^# zeH8=Pleqi-fAlM#hrMP-GP(Kq+j)TY`6sh^Lq$YyUFRi4ym`sY#Z1NaEbD3VbRsii z!Yi|5HdzvwS>R^for8yP!e_=IL~4@*PG~=j=erLPsA5PG{;m&G&lc>ri=hFY#lC`nqh-D-X`R zx~zjTw63e?mF;lO_cF2u9lF(zy{4|;JbcP^95U(vPkv6)J8u{>TOi9UHriMIgpTsR zp=aM)A|3qco6h7j82JDrK-|A<%%xld#$>o^^_MX%x!h+zkv?s)kTuWZg--hAV9(yQs1NX)28&lz7M;6(r`YqeF7mRt0x`?mf#QNuye|+xsj>;#F=~yIs9BFuIJ!mJG*He zYiZ6n$X({igM=@`R6DFOiu?P=Z^|s3AZA@3>A*BLbsppOtCFW4O}`R4V8TxAI0scI z-#oCC4M2I(Lz36BIxIt12AU2DokJS=P7^OgR(>F=H*hA1+CvDM1Jx!Mcy0I$ZtnPUHy!lt<(8usBcDFo9&CFe-tZP0<7< zmsl)utKNzi;w!*3|X1Ok}z7Kl(DfDf1{1OI^NNzL{B<3tt}iW(H;Et*z$hVA*?;B>*}J#NbA! zCzAx7wfCUyFIkobrUX_$4pPU>`6V6VW_j@7=o|Cuquk|YdJSlp7dX{Wb1}LBPFG2Zdn)1T3H$MayCof_n zowL_R!=pfs{>Ro+S&`w>HCx3G`2(xGy`R6*wiiVBJNIql?2$xE;sT$I%kt_~#YlAF z!CbP{EsT`;z#HL%_l6R&j90kmC*rQq`PmD`GrRZvo68%Y-HPA|rdi(S8bQd}3r!=^ zsVILGVDBu#rw6#$<#LXTQ|=S8JYaW~7dRh2d%o(g7cnzsUydwqSJ#6Ad4u@k1wN;d z3*B@U4P%3dcO_|I)Fh2Yj}4qOhvEUL4@PGJ&taM!L%dL49c1RW9`N!g!@!zXpHRF! zUC+#8o$_>guh;q+So58Z96CIp^*nUt$eYB?_0RRd508m_pS@>V*V|>pi#sap_H`YF zk6&>TPwNj<2OkID$I;z*43ydIMEo(+O!W_!Z%igUHN%r(d>nZMV&v1O%pq{|kC`?R zm^wYtj@V(`S)N8=1@7fbyIUu|{H}kaal}@o@A&DTzL0?VO+G2G86#?zWbK%Wc^xVt zl1-KIR&;%KAV#wO9Z^39m?vsDXcX^hZPxV7?Ga{?im&Kk{d~C^lfSr=nUHrH`C?Yi z9yk=%>{&&Dt_(f_N+%rLt?)iF(a}9QU_g&fCohi!CB#1S@>vF&kf-BkJ3kk9YFuS#90KS8+I&qUc~#2S0`HWR|X*Cz(7V z$7NTpqwr6jSQ}#KMjSt5mMkwW|79`)pQY<>e#fhS`hxac;r7|#d^a02<^HK8{h5Rk ztR>oW;A8}8Qhk^wD3=0U-|^XuVa1Rka8I%1&6HoATkT5?=>gL%U6TeG3z);Pv<*G_bglH#Y9$J_%PRT z#gjH9gL72?Ld)qekHh8N!UP%tl^JWaGm`aE11q(a-}q<2LkX2W9OKE#joA>@{AH<} z3W^5L&;c9|0`Rs5_N{Lm+gqZBIaaik>Goe_5n0vH0b@66T&p3>0P@y_sh%wjcQriK zGqtmegk3}s8!;!cT;&5*?9kQ&v{|a|=Hb`U$8J-YS?cnDdQLz2zv`sO@Q>D^uI|;0 zimIcu;YLFTmG*m32Y3(4(0UmhN%>LQmxJHb^Wcziw(CJW>yj6!4tap!`T?JbvE$@7 zC-n$tI%NYD9puOIEMv9mlUYWaz@yi?fz~s_S%R%LPeFTm8nz_G75bvx$aax-ytQz@JMtLqV z&utH8RVKPvRrf4Q-@njy;NCSOh0~`t-<5X?FJ#Q>MM6Hg$fxXTnvVfAD&0HQ$Xx%i zgOs4VoON`qnbWAeot$-XW1q2W5IAw*>s{I8nG{Bys|jSq>pk&!d|j?(3N791;}3ZR7r)LoS1;#b^YNNr^loy`GPumNm7x=9G}09h+&=?IU`_OP34>=naP4+DazI^ zX9ceMPG)C`rx*y(oH%lDj>)@=d2yKU-CW3*oYB3Rh7fq@<=`wc1`6jJx|y9xI1R_D zJIk&jJjy>hjwgfJIVg+66!<+ft@Ef)9A)}15|FtQMTTB=0d+Sn)SnPoyw`h z@fLz7DT^Fq(cw&2cL}y1b%0VwuV2YX8G!?#gGebJ&MZGn0Zi{;!C) z-i9k?MhIC>{%X!A_wv_!avfU%$C{VN-9`fm$1!_xkFa({38sVz_Xz6&@YGf_CC0}1 z)L%a@s@**F}jj%!gmb#zYa*w{e_54*~&y`OpD zmU#A3{(!N9Ow#P%aUC~d}X$IM7O2!zqc@+i&* z&iQla$Hagq$F4eLV8O?pM@)~Jnvj?&>o#2KpdHwEJTb$53YO!)R9F2=Tf)aPu4Pkr zBlRn)7Y+}z6qt9peub}A?c|1i1zH4o_pp@IzD?BBZV-)*Kn)rSn6uKsu@+r>%5Kp7`&VBA&-4jp9tmXTq zHOs{z>zXoa&{)YfcZyViNn>`Eb>vcOe%cV zBZ9v=+y01P{A>T<9lw`p?Sl!w)pL2{T5UWU7x6>{X9zkSL-y`P#xN`yeByfwXwqIy7 z2T5J_5oL66$X|@BAL$)uUR^@umr}>mYF1PvY_c|M30ZsUN&oZnx-bC_$CjvY~|~2(5sH1Cw(PMsUqI0*~_%yGL7@(ul*sKOPCH zk0GZX2Z?TF#;m`VoO(m3hWXSzjieLAVHj>0IL3x+>z+szu-=Kj z2!fn6>jbf~pYBQ5+eUUe&*d+k)yu(LUy;&Q92d{7Ptg#ZLG!m7Nz9HcU5ShRVI<&& zC{Lo1I0;vLuz3<9qG)A zmC>;^V98f|II|FqX$rF>Gbsj==%|{?lLwwWb-Er($LP{g&98ndUN>_b(7{ux4*Y@l zD5>);>9tNFJm!@ZQXhGE)TJ|aoOaE;U61lz4!X0CbqS>j4H)&n*YlQV9P%7X^-2?> zV@}d$z4AdPbx6LqOJ4cZCG2$b(n@{$-)xa!Mt>^jBJdfPvNm}aMOgc^+th3Psa z8cgTc?GC2#7=0>#35X7WFT~JBsMZF~>MUG};7P|gkSXpZI~hdJ?=c)9qf-Dqmc+XL z*_KWt?|~j^T{rpei1Glt?l}*gf$sd)F&to=P@yj!@W>DB`Y9XCgoirvTT9oB*1!8N zfASrBZ)$|FmlkJ6s99#do$rG1VV-*9zb@v+?o_?M7#_EAYkA7R|I~0&_k0IZssMFr59J>iA-2ZO$x;w$ULD3aaJ=?XZEG`OBu& z=*{`AN4?;5Ci0yJ-QtAefZ7f8fX}?V>I51v&+5*)%BiRGi-T9b zS-*NZM2=*=Jr5svgO|LrCA5+Qx0GhQ@-wgX;5vMx3E#u%<{i}_%AWK2i`t3C@?YGm z`grBbb=$4@GUhM~Um*Y>LK3(Pd z5O>J6D%{=`mx(_Uj{nCiviihSzUADIYUC;^Gjmsx98p9}(ny85&6y)dIdaZ5NA4U8 z$u(DQW8_-Sx#k#}ZH762{oa4T`~7~rkJtP8HqW@^&=%C1qCP|aNsSk{FLLovMjw4S ziS#gKqw|hU@Ey42i0f}^wUs~>SF9LF7*ZS!dTnZdUnp8_Y)ybL9>Qxgdg^X8B)^2K zZ}n``g>VkDP>BQgLg*=9o*2LG8|0kb7?THo(2F5qxhqpJv% z53ErY#d3!$G{S3gC;!U=xQ1U_EX6U4t*0y>1R5q*Yo-~gt=c@k8N(l-a~l|g0Nlm; z?!NE;_n4)8yT#t)heZm;7dmYsj~FAF;bF1ucGq@(7l;2T;!mve5`-oEFN-0@<*6j! zT*i4h0La~WJYVg+kA1Vp^Y*^Eqd=Y(Q7rv&*V%`NGj{*EDcZnO2#1)`e2F%=Id4b7 zHCtsx&+TtjrqM0eh59=b4T)y$_mlZf$n;fi##XCO|4k;g0&eCPkA1s!>%N^KYz8Qk z3*1$H^TGYUcAujYcRs&a)0xo-s#s8Q^t`eQopnjdmet^cZ>2(D=tO=`@awrXk6#e* zn^eCVQB^D#_O&Y34#9Tv8sOzwFxyW$Dea`&2`dd88znG4P0BM1PU{iol=44IIo;vf z9H#ISGdb>D$68vnn(bWtd?%<=HuCCq{>JDe#UD;?vLRs3k$n_06CMGZ z_{_1I3n_O@mOd^%w|>xd`i5BQ-h+d%TWl7*(M`rWwWP(sYBgpsJY?|usDaC!w$@47 z*6(`6UvyD#A5aVdUaT+OGItuOJ(jj6X@ji>M;uOQDGqjfp?fDzUNwS`*lxZd$#5XL zX!Wy-#U)Hn|IH`K1Fo3x0@+y#)~3cf?I5w(-e5jxX)e`~6VM1Da7w6sR3G)NTcp?g z_kDK0ik~ma@0En}lhDtJk-`0G?P8*4Z9yfXrZuX&CMT+`gH6JCnhot^xns+&T~PGf zxS3T~1USX;pob4+;5U{(dAAJYwC?JwZ*|HqmTvxhj^J1`jw3y+EpxfMV@EZ#eD-~b z`};(;RQTr{?h}>kEo1kcf~$gMJXN|aHx+;@iviaU`Z7mr+E;r~7~w_`Fdn4NTjc%P z2LWQ}t$o2GGwLy;g(0g^ici5%(nlccMxm9)t}6G9-iaJFw67I4j--Iw#CL=$0&G*ut67dn`t3D=Bm`)g#~@HyE1^^tk$X5tzc%AG3p z$aya`^$Y*sy32Xtez%E8fcKu$>Oq}r;{i8K{=g#NT`#TiA0`Ldj_ zb>Qi+s-+Sa-o?nT&4@q@K4M`n8e2S}ij+#acKtJvbvw%HD#Bn%??p+I@C_3IYhls* zBAW_XUNV4gvTFCmq}1SZbFRei8y*%~DG#iRQ7d(sWHs;Z9R)O3K37_!+Ie4H_~cQfBr*2YMJ+E(bNipp(;PK#%g!so<84`C-TrzI}HR)0@}rT zxyXp+zw$|`38psk!1|hi+w#fA^_elp*wQnpFQ}$E)c&J|9KEOOD(-fnb2FmoVP6H` z#_-M|sMr0vu?2nqCdW1dNy@|p{V$d1w$zX+j@Az0p}zO5r>Fdrk*DI4#ixZO%T>*{ zjdeV(C(*7E;dswV^4yob6YCW}`!wCx-jqIrAm6BZAhysl^ygXdDmi4!!Wr($Jr$hK zVmO8q3>jt1668b8{Iw`5ywG@{*qz ziJ#W6Wdgda_w=#D-+wGXf|m$RdilybBc5N@?XGev4n;qWQ;2B&oM};R92o2~ zWzXr0bo~%&W-Mw><=B2mO%iYi=kdcGAs%2PtnuB(mRz_Mv}>i%|16<}nA=9&_3wE` z_PWRDmXg*5O>iNmraGNC*fU&|k>P(EpvsH$8M&X@c6CO~>v%^lf-+bt5m-YsYUraPIf{m4{&_*D5}c^t%dxBt&cP@C z{-@+JqvFvzautqu{^z@$SibA*FQDT2eM=@YNqwHonJTaSH2eB&Xa4_Gezbwz+X&NP ze%3dtUYdSnXJ4v0_I8(hD~eyuhXiW+0z-8E>tyZ!C19SCtT7Y4FNr5Af<6xkWK0|X zr&|l|Y<)^|>qrsGGrB2I*lqO7!X69@Et3pB=+j5b-MKHUo5Q#XY1>GA^{`^G1s9JL zU&+h@SWa+{dI{Vs03^beU@8Fx#m&sVyPkz>tv{}YsG;jKsr#2DlYI|2Nhy)s>#)ug zo+%mLtnD+cpgSy|FPeZ_1TQqUoU{ic){hcCeKL>jzZ9>)n8R6`%)cx~-WTQ5VY}K@ zd!zR5THouFRrB+nG80KStA+@C4DGYM+@A@c!8!`r-om~&B4hVy4Kz^Oi74n*kd#0i zxz>M2)L!;b5FCu$E0bHc`D1y&aGKYhS)Jdz^}ll3nVa19fKP@~7g}-?I$OeSHS&RB zD)w zdPV>p)9F+$dC}Ty_$`DedecfCnh^9KFHCpw;}WKK1^&o5T=U_$tuCUmx5pMOdi~GE zs8XS?UkreuzGOL1n3Tfj(KcB+#nw{ow1Q%=eVpDf`;karpWneDkJFJ`kLh$=R&+F+ z(0^8pl#TJOeDAfR==DA$Aa~n}2dpeWJ8aETPEY&0tm|G7AoQFR#_i{6ax0#=c$doo zF2~>W3=jo^I3>oE*~vMXdnN2zC}%bMF8;}1{>Ez_M$dL)z3!1Ygg(^!Aqc^t3QX*b za)wQ_@fsiKj2P#gyu4A(NaDbWA=E+dmv0+MI35N0HqF-Z^9Eqt{Z|5VQ zuw&#Y_nBq{o;AK0+rRD<1M1%#8jUF3lW%;k$ssh;2Y}r^e$^DEsY~i`nIMt+t)k+TPX29kpV8?f%W?v zjR48j+YAxn%?ObtPOHmml%8REu&J!Ndx8SUxEVfA0cbH-kQ~PQWxU`w)V#;WHGWpW z43CGR#<>BMQ7PU*Jflj4lIr;-sK_TpBg=SCryT)yuhQatzaNztamBYHE{m91xEc^3(DQl3sqA-{FC6es8 z$9cJDVAaDqIOi9u5z-*KG|N1}RwgLF>i5aM#P_@jxHVm(NVWFqn7uRYR1EB$^U?+0^~k;YHcz!T1)2PirvQqaVcl>Z$1*3` z5>Vgn)u`${VyoIHJ3AsyHa1UVy}%$>^w6jgFC(e~HI#(kFhcmrr>k>c(RuZ(?T$oi z!p7c6$Uu4L&6jZN#&6AjKD&1-xjoougNSW$D5G@!jGA13O5%Sy{x(JF2QMaZbrbpl z)Ron=;0vw&lX8dmS|F(fy6YJiQKP#_hNMObyRNH5EqL)wt~WC5jIq`VmhTOfV$Qst zm>&bP3tAa5eliz*}BQ)IEYW%?bv&WALX*@F^0RXer2 zC~xPAS4xL1<&re%Uxxp^eJq)@OhAq2MGo+x*1bk@v!enxg{PzqQ8Vt$RKpqeR6={t zo&0y(PURp&C#NGxkO@xj^aPvpT4%@6@7f>X%}+EIR$mG|;9KQXSX55P(7h?gb3--< z{Q8{^chFE3EdrQvUeH*62Y(xNc%HZY^5nhLJc%N`1{s3H3}dQ1AJza|^a<{q<$K!u zHtVj|LiXPnZNuhb;B+oY6EO|q#T8FV;=Zq~qhC{2*#W^u&91+QIN+P>C`LrO_<@Y{ zTF`~pbalJV;9U6;MbG`;Eu}HeQKR3T{ipld<*bX> zb~_2b==XxIp?M|ZGb~(PYGBY zuS!O?4%~K`crU0NPnl5)aor+2HF!!pj{CIi9Q4_<<8B6|ir1lT@uHSRHSa!<^sixP zCs(MA@L;V>EK3bI&pxLZ7S>t&C9eyOoaf zx%Rd1f3{)cqth zv6kOs7x|w>1&Bs~v0-1ENk$wmD_=MQJoD}{wXO#ixsp2^I|3k^d(Wor z6GvWp81-sBRJ8{2zwn{D(>LQ_`Xb&e_l#DK+u{Q`!=KCy>d&hI6Z{e>aa@+)&Z)(t zeqItp4SiNtpAJBmTAy(y6+SL(Q(P;6FU(35J11@jQUIQZ^E=AnF^Ej2wvOqu-yK=( zPTt7xr$()9@#Zf1UT?=<|4;eP{>z z5XV@{C>Z@^!_(9E$0hJ4qnP6ldNBdm3}t7d|94BBakfMB^jAG)8=SRBecy{_zcGo% z-pC>*zjtrg2MK7>0MfYN#NC&!T@p>u3GFwX@%0b-oUQmX`$BK2RVH70oOq>*Zy7n= zW%XeJeFY-E*+ypU1Z*!%pj1)g2{_GRrK8p6T|Ni0GfAxD;n>uj{(QRawi{o__3Iz& zyloyG-8&V>MbAdlMxyk4e_y!XWUK>7DPMUX7v55CW^Tj31_cPgfX?PtdXST-a1d4J zpKk1SnDF1;D-<0&n-NPT6c~b9GE1Gy_586UJpPvx06y=ihy?ETwbeZBx(GxhcoY|E zqdzdtQW5}J3)&OA7AeeJ0{_?G^E0&;#sQVDKGUn;>N#Vcm-W6hj5Kr@F|nHye8jA- z?T;o0umiWENq*8C(W(yST~;QU;oVi(eXH^4UXHu?(jMZsozsdpOYSI5HnCMo;W#t> ztApO(mI_`t6B)^xA|ZPAX?-zkL!(?V?HXuM#Dg0`-avLJmX?jz432_zyJ;wTU^fNt z4OQDjjv?p5!(Xdv;iO~<98a4y#~l`Rsn{INs~H=DLko)z4R)aJhkU)cY8yXgtPV9C z%-THmY|yL@yoKFG({;xPv*c%%({J_2D&?C|prH%xelWXZpNm;S&TreP>myE-OKd&z zeUT!j&s>w46)voMdS^oE*kav>ue|-|tp^G_%xe@_^&+}4?Pyq#6Pe;lPcK#rLQjHf z^0|+bxc)eNp$>nU)0bSobt@aZxqWg518S{;{OFa`c~U1xqBB6JYreg@Fd}BCXk*_l z`2L(nT+Ni@33~;3+%AxE(q6cQHG6?KgSi=GGVr+OFK~G;r}#yYs-90rPp;b9WwJ+) zgkvI!X&${^Fz@A}P#=>mQ>QUu_ut*4RNs2KzE28|2m>Cnah9Og)`hma&3!Q-9OKYe+p-uF&oc+WucImd zGIyEKZ5&cDB#o|d;WkupKyO_}g#6-GE*`JAzCHviU(S)IZ;ttY{JIrf;e08I^~!JJ z-iJ}=0IHC}bS3eS?$@3E;hs{UwtGUfFnpUqG0du8O%|oz^}EFuz8od*%Mw=ec)v5W zbMdM2aa5I_(6a@t?-USDlR%?B_Ep}ob81pnDW-5Q%%^ms%6cXO-puFsXH@*z(6u-- zPQ3~$OaboZC@#0sO8vz=j8MJi0OX2DuRGxBgNLA{pq16L8LS@Zb^K85b*l_{0=@8Gko8%Ol7{NAxqou&1z$zcSrI?y@@mM`k*+ zM81~ZFXZI7d0x4smacFrO|jfXGdXwAFa!F`eP&SX`&xp~lav?N$)Cv*E)qjL=N?3{ zmyRj=&iy*=qA$OZeV^S3x_#vhR4nL0TTWKD+@;uG`J=hAP+iLIC8ZhNlGZb6!c}={ z&}4hdTR*eZY5^3R@TFTSCGMMyBE5`fo<4PNcOyxVoqofV?VSYs10F9JwGpw{qv(QCb}B?SxAzP{WV|>6*ur zlKepZlC=dHee+Dy-ss~*Q)~G?VWB!oYv#kf`5@Fk9GJZ$~wtV>T`s_`i zN4D4tXGYQ)i#)v3^$Ydn@@Fs055kd}_g&p2(V*|>FL|O|aTN>pO=`7_Rtbb;x%R+c z4SHjy+_~wyXH-BUNH%w^R_W`cwc5YC-9>y*rgRM_<+Q82YL%P=HLm=9xFRodx8j8w z+U^WlQ&*^*gCByzBn`G)GCUQ3>d3sIc)o2w!kOK#W($7Z!xFEV*|k+F+0JT21uRo` zrUQ@J5mSTiZ6O!d{_baycYWDh-Q-0*!tIxw3*IjRrsN-gLBM``E{!RAyeNc8`bnI` zawH5K(*=1~rOPihW1BC|xLqbFX0USxpuK+@6O-S-c&obJwmkYl%#&U=#&`(I%#Ui0 z*Uz!e^Ogbf+_zFOHQJ1;6dof2D4y0;I_Wbj?yLm?=;HAjyDDY>MU!BZC#Gt24fMy^ z@)Z;6*W*()rh0__IR;qFlo58Wjt{H2ggiP)DNeX z-Y?+;Vj__4Ti}1V8CMZidN&B7xz^S4cR?lghaeG_bYXkX-kd-^|F@@9z>~`3|5xx8 z&Ukv;M)B}_V^xy9KKq@qdB?Q~FGgg5lgsAWPD|+~`s5KQaIflZ?eEPe=N@o3?r#s1 zFH6{VsFs_~dosj*$$mbcrq+-$S1OP}x__ovR zh_Wj8EV?&re}1tfLlwA}HXz41`$Vnqq?$7_gRtFCpxb+>3vE8(dB7b&F+A#{*>O-C z+%0E+X?LG`SDcVGHsZ?eJW*y;Rq z4!JCN6>~LW(0&?vXAcSkHIsOuI5V1a>Bq+S4^ z?+av}8U$o}q?$FulkK6yvhrH5ZU8XK8CzZFxZ8?r#a zu%_479R7U;QaWF!enrV>wUqkocz5IYs(qoT#F6Z#{{qJ!;mG>;cto?yq5_8Q_4-Y<(i zT9VBk?t*MFyTK()he-RF6SOIe#R%!jmg7`W_noGF=UMS=2zEM0f(03UBkdt+9I+~sl$=V zJgr2zRl7HH!(LLrltXX()4js7;2fBrD^=P%)<{D~^d{iR6NlOS)EaJiKWH?xcQI&b z^z2Obc}VD($A_9JbbG_=>dX?&MLY0%CJ1pj!qe;uBC^Mc7vHK6QhtX$2)Or?*>|^F zCexMVEcgd)Tm&*koG5>)-&Vd!5j`Hyw%PfgI=mCg)g`K`>c2FS-o)f--tr2Y%{|^v zIW3{j?j;mj3*rutM;|Cme0bWT|UTXQ_-`EsmqGaUPWzGv_ZuWtp1TJVguyvq6LieK64ExVj-GN zK78WKO>LloXti5?)h6ULooTZFi{QAJmnYsjT@@=~o_i`#07aEb#jg-r-6&$0Tv!Vl zo>RsFkpr6RgK$ru>;b$x_CqBb0RTF`Y{|78@CtBDHpI?0$Zd-J$;B&d23tR3Xer8% zTxUH`=2t^^oYd`&8X7Ev54P}oS}tqP_>`Wj_ZCB<+f6cAn z(9wNc$JxAr8UN+f1+vdbbDZY1(iPd*k?29c4>4wq3!r7^2FhQ|wBK6l4#utgR5=(p z5Yo`HwY-v6%D*x-FWrYa1z7%Yqg)_L=tE=$?{kPp4Dkr79o<$msS-GLH%LIn8?%s=!oc=eN}O#9YCHt6nm>V+G& z=1DLO<%4i>kKvMx-5+S1Cl>^C!mP)VrS8rO{j<9pnk#tildD=DLCk z@ve%AGvYpvRpo&ZnFhmQM2RdsV?mu2*`e|FM&P3`K{r;Z1KOgzOFjNwmv8fa;S3|y zoM!tZz%n>4%>U5;c(jYLLT+4L2#1%5j=Uu83dV;#2S0;{_&gJCv(r*l>Oh;FJ<^EtVIH$9UipaxfNNgnmF*lQ(GD~^7v=LIM7!JD>CJ&( zONqiEV=Ma^N>@qPuhQ->gEsqgcyBWbh=pz*X+Eu~kQ03a3Y#9n4M*kLb;LtpNhI^es z7CkX;)perrs=eyOTXT@rfF(bkomKDp`hJIm^QJnGn?LE=B9-l*7Pj8kvtMje0;{4{PAp8vR)%hK&xzQCz?vdisNaQv^3#nC%$`5I68zi12h=eBJ-bd}a%Mmb{e zM)=w*r2!-IK(LG60plcq)^a{-lD(kU?Wz*;W${*R**Si7&-Y&Y?*g`tcb944j940t z?~1@`FmAu|c<*ox5)@ ze%@VV0#jIAiz^xJX?^*(a#N}VoW0#W>7wfFkHxKBmFGpX;;kR8-1Vr7!8CC;JT8 z`HQ{WXPp9q$GBW>)k;QpgvuE?dNz6QgGgq_sDuIRi;wDTg5Auvz{_7VU}QbdP}vJ1 z{MD@@J)Y9JL|PMNF$yVuj6UZd$s|7(D)t!vZ{gp!$TfuZ=T%3hS1vTZ3e>&J3E3z zz>x7E43FMHpLfe1UnVLJSUwmP#Md zF;{!tF>taBgtbPX#?BEd73N`?2Qtp)0Xg`V%tZhRtuj!(gz>P;V94`+YW|y!psV8k z8-OlYmN2?L1O|qRhV+)#e8L5;W*r}q56X5LxBnM7^HzNIF_yEO*L8pZF^~j97r4*c zw;0gS*ymP*(E4b`yIf?*nK!C>KcDMhYJd(_;Ec0su`y;CR&jVGnq5t*bVmm1==K)V zBo)jSR_|V-QKqM8%?BJ=hwIwMn{O*)l@4_;M7a-Hc}=tI8KhU_Fa(3EjsYW zdDsuc-P8r`=NL{OKNyH*k^^r zM3!R~g=Vv4e@~wHUux@I3f)c64h5@r&qjNk^wsLrR@GorMu993JbG4!Ty z#V@Jc`*$QI2XsZgla!gPO3!!ae)iWA19KT>6?A^XEVaXUh@RLG#LR~jP0iOaAE?SY ze6J?9zoRGssb{Wm&$@Go^uq0W#`s}_8i3PahTHk>b7jmM(gtcG7(7Zhrv9PcZI(?q zoO<1x=K9ovY^@#oF`5BR-S_%tSiOC-_<>)0MCA9kP-9{U=B zpx^H^>>`}YU~Wp3z+D$rM3KSZj2b0^gSwA7&%LXsQ}@+B5=;&AREx8 zr2O&YHHAU=NOXp72FyoLgu>P^4e%I1zHVpXS%`B_dCyz@8&LO|ZUpxcK%E|Gc#s_K2FisnAVVoQ6l!1N^V%RDq>i;~InJwnqML&pzndR@E(NwD1jxcWi zyCsUp2^D@nOokGQkafui(zkYwxX0WY#-~%;y)rmti3<4Hc9Y~Wms$NGsWxr2LGPn< z@vQ(28sG=`fEo@++iNko9+}(s_%l4R5XDIKz_adszqIo2a9Z`0=`39)K)&@bEb@mUF;MfL^qNxTcHQ9rZaK_H*^ zX?P|PqrN*E(p;?(Xq;Ov(gX1@0Xz7WUu#wfIZSZL#;u0TfW9sGf*oO{X*q5mFa?iE zQq4x--rfYWFt{#O5iI0NjdObW2oPVYt%jmrC-W(a1KipDFT%3mej`%YXmRG4)V&A3 zJv(`bSxq=L%WwB6>ww)tI|@~#87u3!gLkfQ6HBkqadDqiJW(5A z(N%0R6Y^$LSCPz0HM3rRw!^K0V`v12T{UPzn5t`z(KoN)fb5n88vdWKpE=IRjtjLS z^)=iGRM-SmUG-<4+$!YWld5@aC6p>-6}bPmfp$c$Jb)#%2I`9BOq5BSX()w?-)2DL zVmOKTs&loOiTsbMO7Xjby^usTj6K{P-RCvg(KEbp!rnY0fY}>tGJ~%K@%E3t`XS#wP`Wl#tIz@< zqZ_p~{!A5XxOcIPnKL|s?jb2<3B4aUY3+$m9G#S_^~pQ9#UX zOoI$N6}Qms#U{Sb&j#<}p0agW_=nRRcy-M9YEu2ji9O;*qaGZS?O zDLGTD<0S9GGJWgKA`;I;h)w7O)-H9JlWtlcjrJ?aNv#q_6OTsKe^QXEaP8cJR0_ zd6|gaUxJQU^Xxae3?)FX>likca(Kbe=)80J=BCXQ;AlnOi>B1OnBOOH^`*ROo19-; z&lspN^5iC&Ar=RHKD0jin4&%LV1BqNTh;9*ekdKdiC2+PRy<0huV8`@!sM=DcANc!4|P%!ng2u=p}WsbfSzl z|B+qqRl2)N1t1gH+2K^@`8vb*@U*;ltKP+oV{`^{Eq6}+Y`IfXwj+@19qPfgGtecm zI785;NMfRDQMnuh=d;g!R=)uziZ4F4Z1FvHOdAZirjm1fmwk)Uw&`B~7Yy}&je9{E z4&G`Z1#FO<{5C^G{d7fG1DzGe??rY>-24Q8%$_*y;e&!68OIk)UF3x>QdA>!K${mo zj2Si&f~|ia-P{cX`O}DfJAe6`cRP-^t!O?ZqUK&!r*$AN927+&dy!-Wbpnwx9E?FJA<$-z|qmIQtP$ zon;WK`Tw3`H6hkzpZJ?LKMwTfqWzw)oj#k%A9j3NITO3^SH$bImsjw@_8`-Yxg8#* zp-`Qj#(`2&$l@Uv{$d(24x%Gtmv>RUyafkyd=P_0RtrEqr@U}(VVGlIVt;q!*u6|= zJ;Jfps`uEBv^Yu7ie?Hzb)oaXn#dx7yTa7wO!ue6`uQVJ> z_Fq`@P1~rT1s#i~a~|fFk`MMz{4?GA2KUOfUIzakP)i30yl(!Y^{@Z{8L@ z6aWYS2mp+IQ;;Z8)8yE;ZQHhOd+y8~+qP}nwr$(CZS4JGH+DDv{U5epPIPp{dCRPd z>a5HWKT}zN|Mdhz{`(3*0AOKlPVZ`Jw!3M>G)sm`AE zK+LP|e@^muqJwpHq)&idR$P!1J;QE8^RTxoHC zimxw4H&mm&G&x*SzSvZjdGL5OXyV$71i##%Ee}1tIVx18+^pq_5zNz3yD&&Ueb}TR z1UW4fYP1#v<=^sbqgB;u7saBllkJJ^;C;pb!B|6A-T*?te6mf z&+ze7@I6ZZ{aE$l{#Ia|cl_!Uj8Vf@zGV8+^i_TZ%LiAX+I@Djq4JZwanT`Vi|*dz zCUxCwK{hQuZW6#r#iz=m@SKaZb8Vc>`7-aZH(9=u<5l}w?WZ^7;{PNt66~^|S%~_H z`0rOI5o#0%Ikj`s$R>jjKGRD1pCO(>LXFCoI>-4-0;Y)-ab(XV>!+3HGS?A{i88en ztbci*l+uFsA zZ6b#X%$Tb%f=}Dj4iq|HQQl$IKXscR2kfAO52857YPFbn8XZTy)KL^}fQVgl4ibv5 z`yql_;C4Z2O$A075F2w0f(&bJAv`Z|^Grk#2B(fN=>$#EbU*NkJYcG+i63f;NS;m4 zq$@93R`z=d+2>>jT8GqGk>His}TFlV7pO)RdFm?Wfck-5g7W-P})YQ;)GIc zk=TjehI9ctmF=UnoJDnCMIr)!#k}?aI^k6gQiJ=hAy~m$ zWIN_-5{7;Ip54j^2NHziHoJbkN^z zX4&q#`e2S!s`DEN?{S>zlfCn2ukZectL#Mn*olGw0Q`rM{(G)kfB*nM`G2{}=KqJL ziq)iTHv|xRPSveiQ$-q9FWJS?%9=>giBx4h&x;-IM_i1%#&!VSU$eKLp|OhcGzO+- zE;HZF&=@;;t)!Zaot5vXM%eN(>Mf@i3nq-d9!D3l43@%*q!JU?A3$su)={^o?3_d~mhth~51jzZ_U`&ib=2Vdnb;7Qf8eTqm*E@q&(?NTd zfWlTxJt!hC&RNB|BZ#CmxmQoZ!<~JOK0{Bflu4}BO{UpXUK%REW@{068sSUAZ#0H4 zMD9Ey@RD%bhe+W%T5vDg*~dg|B_m`SrzxQn8{T!Nb6c6E@tX)ur#*h!&B6^R>nI-3 zVy9?KFS_tD+n4%MS4_$zjK65d(<~;-m%b!ri;T9%t;~T=Mhj@T3zMcl+Cgkvj8Wy4 zAr#`2?;Aj`zXPW>5*P)9Gr4IzDWu;Jz+Rp0?T zFHA!i1}&U$`n!!K(k_-9ma#pkuC?a9a9XyYRruW!kf^FLIcA3ai?t|(3!M(29XS*2 z4lU-_a)(JwIG-WNE_YF>;#aAZQrga?)G1C%CbH{#6+Xb06Ci3@AWC&WWAr8 zaGarXMqu4SSn*;d`B+x2Q;EHjJLoRPN#=A4-ws%_dv(4LTrdNG%d1(DKi>i7nSilf z4dYqg9s<865vU{}@<((Vvi=M4hdxI@xx=Xk4E?ogJ;?RXTLZ*qA}{bN9cj+~2Z@gU*sPPeIS^`M%dkC+Ss&c zuLF#HVZU1nAQ4}pX2LZURN*<#yiX@6A@&MC=hq4x+3{zf4oVfd4^N*$KYR6A%Evf3WjEQT3m~|9^J? z|9Stfs4_Ej`PT&4(Esn^AGSID-xdG=9;dbZ0021u1*cA~7EVs44z$LG4kmPVHvgxs zu+}}%{%_ifY)?=H9qA>rSq2V})IB&t4oJGdPBM@HX#xodG?uZw8>B5t{*Sy<=8dlHGYwz{-6MTs!B=AU;r-q zK|nA`pS7bRpYZ^B0J6)c4zCy6+qfJ*ytEFkurLCT^ZVP`Bi*QfhT!qHvf+2Paq;Dg zfXbJ`RR(_!J3TMAx8IMqbt}Nq($kND;yOFOJ1Z#x+KK?4ZrsN1a$A&$M_mPo4{vOU zoxf%euCwF!yVv6)BdJewYpzS^ZrN^c28agW!HpA(`USHGa zUz8&+Ppa!VPx{85qL+xLkZU>R`~{H&6cFz0aIa(El?CfBe^A@_XG$?XQ)9o!wXsW! z_v7u_ytmt7nZ&u1dkfa~)K;|Q(2Fk(>Z+-!DRg&t)FvR}r+vG~JDQ;n8nS28*}Wb) z84b+=)OW2we67f%jqYaez1rBWN~Vcmv>;u27d$8c{T1I8`Ja664M|>mF!r?!W%>zFbT&%t zbq<996-)qQui+aur{2K9LK;w+j^Iyn5*Uak0G-C~{IU*ILP2|uJ4`ihKoj3zDqC@J z@Uj@S+g8B2)qd1D9~h@zcosl@d12~V3GnEz&mUneL1|XEzu)GjO@I>rawp*JJ{{smh0Zk;XK8i4KFI$XLJB{0r&6sb7K10TJZqF)~Uv&cwf^tzYl)ly%F16O-)P{ z?tW=YY&<<+U#v972Fq=gqiR2%|Lz(hPwLo9KL2Sk(9g%*_A3zZkva!5^Bvf@F^}B| zZtPGO53N$DT7aJ0Gf^~28M$S0=*pGo;m+F`-5e8p=ZAUz;w}!HVMrql@Yjs|JtwMQ zwgw@`{1cX|+plP|cGnY+%QCdesS{x5D)UzMBX7?a_s-Ju#~j|YN{tjMpbUZn*%RV3 zJf(9jkIZi0xFWZHKXI6xBM))pZF<8W;=WnT`V<5`=pc_= z#*oFRPk;G&rxp2nA@d|mVAlKF9|trp|G*MfH1Aj|0YSsBIL`9pNz!r5>}vE&5YbCq zGmw0KIYZ!RSe><_xXkVn6)fx-2OJ%xA)jiLUq0BNYK;i|6XVbOQ5{U#iNB9L6)n!Y zgc*+%!1B}eq6|bBWGeB7Kxrq4G)CXNNSIw(D7KCg(Wn2R-FgQ51Qype6ck0YL?c~K zkkyKS!7N{cLK+g1cr)?4Zc|=j<)In?OqDn1tA*cE9q1X> z>jq+cm=Kp1Jr52pyg7jOS6Vom=nWsr@od3_DIlzfkLT!+4g&GH_WX9O_UCJ*R7{EP zKdn-j6I9UDIc4j-aGg(+O2TtSfH{&S7V$e@Rxbc6`}G$UY=GTJ*YY~T(THqw@LgI{ z?@Tz6C=2!UE>+8?mj9Nk4j*soU`?bB4^RF2%}?(VL_gkD!1qgTh!?H6NDGCk^4@2G zc~wU>?Of|;(j$V-6RncE*GO_;oHU77!FXbNIt9~M;B+Vd0aO}81oD=Spn2iWw_(Ol z%?C8+E4$Hh$GV75K7C2$Ii!0Ue7?nIuokxv6fJ&R#`q7OLhPR*6g?dtCHof9ed$L3 zAKqSt1>y$2ub?Teu=w>ewT^tEF|7gMN~+Sfw%Gm*0I1o`DZp=} zQwd8yLfUhd6*14}k;PJsWV%uIpChYuHI%(j&FU&Ijml<|_j3J~7Z(rbH$cDYJC1g{ zvcv?40^!saJ4jTgEF9MCo>3IH>v1d}cd@{r4CmG_khVRt^Hsu86WHrPk4$Flx+go{lfd_2 z6LR_De_7{{iw{zz-|nW>YCjmSz-6JUdLn=ki6vO5bTFKhS{qMHH1^Hd>}XJJnH>Im zY?50%`UgC&#LPH4X&0QT<}fD9ojG!7D?UYxj9Gm4ueRp^p+Bo#g^Asb$)*Urfi&Ay zYiGt_c5Aw7LSr?|4%)7fgJyh#4g3_{*>?AQ_E7kr5XP*4T^8!p>EC*7Pw zc-dRksm1q%Lh6?$nou0-O`l{to2FLU>bZQ&;J6Mh;LmxPzvi(?AW%)y=jpbyIN$qB(1yA62P+m{^6|28#l!ipFH(totO(@mA!#)=Ox?8=a_bty@!cZ2J50A1! zqT}!_zTVg~^oxdQ`3`$R$+^a2x!rauA|xTBP{+sKLKL=Bh!juK5exs0qQX^GM23{@ zUUFx;-;{c=;>Z#K{{d+6QYvtE6#nD8jw1N*K?%}ZVfHm%a5bBRMQw(_Fr4_amIxL9 zEIu0yEl~QlkUXKduXECtz+T4iLi1pVPKzQtFM+f=3>~Hkt?w~LMl#dTkd7i?H6Hp* zl;`B^K^H3^AV^NqSO>oFTR>I>2l>hoNoRKBKV;oowZu&Xjxo4f9oZ}?=(wcp1L31I z;ieLgVOP>3?Y}Uef8v+L`Dbg16q$46psKltlP#cv9Tz(QAC;+QLl`&(Io0QSW;IA! z8Zk5~a~b6Drl-P9Q`TaXSOeX%mu7TfzK~NS>LE&zDrmv3Y(g~K@8xeMKCFFVeib%3 zq67==@e~+m_ACKU8lhuv^bi5@Yb5ArlOK^RQb+jZ7-&oy9UGvXH}eN5nTTH-gT_S> zxTF_WYm)Sifm|WtzbWq0OFy~_2mV^)@X&cZzrG*jJki#ct&qB&3|zqgX5X8#$t7RF#31S71tAP|!k3}?OcTO21*KwQ?3 zZV;J$zKmp~QCU_~n3Az!2f=S`3;qi{NJVqVPX)dwK2El->(+|l4s>)$P~9E;b73L- zZN-UPW}p-?2TA1j9SOer{DPyS?*vhn?KpJ)m;zE(7aRNZcK3YBQMV&Ws+v8iOeL+4 zkJK~M(YwXHS11A|`eM4(C8_g9eYQ;I3eHI;=rdvKsueIOk~dwXcutJAh{I~a)q6sq za%6v`{lyD==K3E!k9Yc#_-`$ud5lGzEx8z`r#*btgwoLdTOdp zpkr1v*e_usU+y2OpNOxq-Z9Z5){ft&k#%!iAw_F|zfixEka#3Eyh0MumZQCGdPEfX2ShNWp>gzw4__FuTr;0+}T5)BH&l#3RnCKx$*Mc5>Rnv?+ z&NswpA0tT#*h2EoRhBzPbsNKU*2^g?7r0`DS}pElpSeKyq6)I{>PfabJ_YsD3hwh~ z7Jfnv+PjFD5?eWwpt6qbL~7yk#o)^ymnZEo6sC%2pI{lvq@fi-+W>=$I<)EX2YRS#w-Z&!3{%x2B(u*F-~XCw_b8r zna`u+0O*S_PZ?#;;mW`~wj4^}5RgAz(_QPpB?GIPbEG}GfZv5ha!fG`+?ZLh!M9~{ zz3c8_YIP%YuRV4+nF=aIb?1JaEF@r{%7G+Sd<^$dSfD>&G<1Boriec8)NI?mlRGLD zUSI#L&Is7$9Ut!NDLF9lqNm~JuGGshtlkY1b8Uit3Cw0&-BXm*viYw^AV`B|4@8e7 zA054MP9myowc_dz_<|RkSZerB0i)SZz(3GHuiisDo4{W1Ut3F~Po8$;bTWTvMz7Ns zOO|O8S}X|q#%KCkY``Mc9%W6_$L+@x8QtdHin7+DwTo-yATd^=Le;n^UCDwvvnmWW^y@TC?{!xUOPQXH~6Qx2o zIjGUyU#u%3bO_dkd5NA8woj;nMgUT|OWmQFS6(@nS z5A+wQ-|p6f17PR*lOn;c&F;|Q{wIGKYoNlNsci?rTZ^dUk1R;1Cg7}Jz2Q9jBOinw~^I9U%ah;4NSwc z3aPakybE&DzRJ>(UXh9HslN#ab57(@$>ulrw|P!Wi(?w*5r8Qt)uOR{pS2gqm4cPl z%L#P8@G0HVYPEYB;3WI>Tb1Zv>Kmma*Zy+3tkf8TFe$9g4rQY@7pgE@a@L) zFQoc_0v+Z8z~ULimV8CV|2as|cG&}FlUcNbd=+isAgL%aTYySduh{$gdI=uQMC0K0 z@&_ML28(C_$IV731)taOZCt6I@XgMxU%zz-OFat3L?aBLIyerz>`mN@_L=SbE=q4` zA}>O}`ATSLD3;I7_>3hAo?Jr=1r(o%MSUO1S0|P$#H!zrOXuyTrpp!Q!yGHE-k9S* zfB5RoT#L_zWw~ZvAjXB&&G}m~^vz7KX_tfJq~tmV@w@KpQk*fak({betW$j)ZK37) zRF?(<=kdNsJpBHHkm$kag>mGR0EoSKw)! z&N&9_f6;uJvuA&QV0*!gO9O@CaE0Y?K4OXlsgaeAo|=zyA#jp!y)j0U5q|CN_Xv7)PXLydv3^qgpS4szVRkt4+!ue`)9Fz=WjK(DgCLZk} z_K+y_0MFQZ>i}eatN~ECNj2?x!*n*AD?9hJmgH2mLh@~X*8-s4}2%D zGfN@?}8g*MlF7E2*y7@+HYeVi1&>3P`X3y121eFbRC*x4q>E4}0V zPVCKb*1!4cfKG(Ru$yEO`*geJdF}G5*Gyr3)7GUq(wBG7krm%UKTtcin>eh8xI!Nzz}XQHlJ_*2u4dc%mxpLBHc8?eQinY>S2L zCdmtAX_4>*)Y$rSIW}vjk!oy7ybUJ=KwA&JV53gl68nS1R!O!@EM7*fgZdmCj+?ro z0@}{Q!3DjKsBQ`shfvgi#VU?=9+My;%11#}kBakuPQ*sZK4dmIDIE~<_4crYhF|(6gXfwM!|2sn3|=5pO2FL zU4+XyG0so`Y5hJPit2DQOM^ZCnS%cuW(?KVx?v59?vPli;t&P+?U9*bkS+Zy>>Hssrn3mAJ9vikfzm3<(P1USfgDHk?-4y7~ptOUG5rHE$154?8gLtleVcD6^r5}%AB z2)2g8x2PyG%M(T5Ii3XA6L3`Q1}^}{Lrm^!S!#^iUd{zo+1%HzWJ!P-3` zeVTDIa=kAR>6wU$P~yB5VdQchq+Y17)ya=4{f`m`lIyf?;+`3FVW;hoe$>{Ja$Z?;+Yh)cnDYbmeQWrNcV(SGZ7%m0bT=GOu ze~EaX1#(|-LwouBIHj(|cLX8|!`{wP+FXcx!ua_2FEzO5LN^(aVJ>!WC15X#mL!Mu z4cJ)}rMrwB+4X#X@(aq^tor%P_^DW}b6WRD`5%FaUekb`ChdQ#Gg}rf|*Y;ABp;vvr+FH0LxfzW( zo!T7A&7gkdf1wYarCwoo3~K}@pcR$gOj%)eZrL*|>aL^xi^_4&4mZ>1ITW{VJ`2pc ze#77o*6apxR3`H&G{F82TkG2CvoV8h{=iSs}7;bZlAIGn|VXTc%H0g>p==s^zMr{!Ib)2y(HW$AF3ThttN zn-ktkrwqguudn;)!a2rt342do?8+;*i@)q9Z?Ev})QEio14c&=gRa@**f?M5ea`!X z2HY=eRegB=Zga=v{1GZH2+zP0*|B|hf{!v`Dds&W4rk>rq3-ELc3 z-P2}mdaJ%IYfQKM6g7w!2!@E%UEvcdAYNqFILK+T*+(fHF=P2+L~Wo)&5716!(D>& zA?y=zs;kjJ9vG40Uz=>mQR#jwVVJ{a3Ip`8rz9jhobBO&sTlp9450_sU~t3!Q>-L} zmIdi$NXc}n7As0YM#EI*&>R%Ayp*oPj=ALZIS7$g(qSs!QS;K$`X}t*(T4LHZa>>` zGJoD=Gp>ej2pyYNBz(!&6as5;_bG68pY36?Aiapf*%J}oqWlEDe$uN}T z{p^QlnCLKQ6~<`Y_4C?SO0F~OxrIlKyx)S<35 zwuT4ga1OSfJvdx<$9rkJxil~N1@#PXTA1ft!NP|K>Xd3s@Y`&O%DyH0G|COgN!*Ae-DQ{W)?mPq+rMT zgUp8Gjts4*8RC@|la@Fv67xY|#k#e33q7uo2oQIi-fPKaV!Zk{CgO#MRyRgi^Mu5c za6;+)i0lA$Qkis1D%EmxP#mcj9xm6AtQ1a5Nu^_bymE*rCJTCV{c&RVhg1y{HLj|f z@3!s!#eQ0?kl=M_q&#CvnL>9cV_Y|_Vag8>6>(=kI?>2s5kk%`tyzzobRuN1qz+J# zI6~ydN#Kxsa-SmLad#Z)f+*{7#DH^_c-x43wqQjb8Fnw1qoA4HKDFppBEkj=&=5xU zbzpis0j4Ot+@s^6j-fW7@Ode%@j$LSRv=$86^N#9F$ZO|0pZR?CfARFgU z+U(1Gd}w-{%w@jQLhkp4=ef@{odd>1L|q$$7?^a*-J*F&d?obGdu;pbfwjih4Ao3d z2+I^!>WppFOg-&%D}3`r`>d9gOo0R?_(dJ1@fGB@ma}pWqjefeGVj|^n0o)`{gDC- zGDtpRn$JeZMt~_{TDA*&VtV2oWo7NI+P_R^5Zj()V&>RRx3>_lt?JC0UmBe$7w7+$gc@P>3ch4btxeC(LcuaDAAFY;yI&Z)hrzGoYsocI ze>U{cuhmhxOJmPo4&kH|s~_;Re9n0Oimg|k^1px%$ zppQDhR4KW~dJV{qk4gM(sbL?ULH6tWlKPi;nJ3>GtO6gkx*+Rz2t@3=hNFXA0-zAL zZ)UvbU)#kq{Uu_ilJsITM?%GXK%X(JBe2$k7Qjlcs*DdIm|18QgJlOa&JY*73k7{v zozw*QW}Kw#z@oz?yr&^tB-aw+Ac|=kI6a3%m2DggkdMRTZV%>HLs@so*3uh4#&5>E ziykn`9t4V`efDS6C%pn|FE;WL*h{p9gbATeFy;k?Z|+T;u2=C9wgf&x;@N)hdiOgQ&Vc$5fV}dL_w`rZ5smK^<&u z5r%;RJrsurDzXinl`40-g*z&IODF{**`2hQrA7rQ@R(knp1Jl~^3R*QSmXFXj%OBp`*grzZ~gnNer@gJt=gE&2cJXs_taHnXgqen#7koEA?Y^to1KjF z`}D3@`|{x-Ug4}L3~-GUqIrrW@p9$BAkakJ&Pc!8%2)O}yf)gjB~CU8WSQ`; zkqxHje7i8BS~+;(T3RX~&Z@t*3C_$nezq{i7@;;tbkU8%Do}RrzJ6l3m19ylB~#BO z^v&g4n`9D*T8lXHl$foXY$RG{eI4UH>mQSJ!?YU1uk^PazPg4(hL@n!4Lo+TiqX}f zGCDB)^TQ2-;Y^JeJbWhfn3acB3oKP&cvVl|KXB7Z6-IXN5hTV{#|Mtb@UUG#t5>rU z_K_5xsZSRtfkDWPvs+uW4bTIg=*)Z@407Fg((5W-Flm`PUk9&*$PE}}2 z#;mK2UgUuq%0W55aPzKQhCNInVknCZ$9LAs_Wq~)`Z?Or+p>qI5QIuujYI=6JVs|^ z(Ew6Dh#p)YBeQJ_AApWaR!ZrT5ZB52M(N%<_9E9NoeX9X3^ImaJ^1XUGhni6@g?s6Iz`<_s@I@P42zbQr;4 zMEoae*+sc2KM?JvuZN82HlvtsR!(2!!(O1PaJM^Lojp#qHm_%)m5S3MA)D~@$$6?J zQz4u3qy^mBULFBrMQ^fnRRe;-8aW|GmJdD*f)F$f<(DDCdkUg^9D--pfXeBlC z{eBTy3D~6opNckt1&_SWkU+ANKfsGh7d~q~LZL#!f6LjO+JY67%|@g}bw2$`h$AwHKDGzF8Oe8)P^Ns$obBJ~Y!%fE+K zzV~k&q)Fy?z}z?Omxi7?8C%V$4UHz!nw6ZV$(b6JMLZVqV?==uXzMRC;dk$Se0}ew zWtHa2|C@tenYL8f*Da+`d$ASS8SB0Y8c49Fs16^3H}`^bBLamXX7@ z$J@`dK!0n^0~UEE_uufs;UmR!#tS>n`LQ4&8Jwr_(tFde^a?wuTt-Yswt($ldn;+9FIAmQ@|p8L_4+jtL41?wLky$6&>@7J@i)4W zt;*Wl%aVLEEEJ#gwdUi4YPv?QP!gz6vWyrUpznn^#H;5x6-Uv}SGHX6-6N;u* z_n!iSWqI{R^r%jp2Y_^C+fM{vRFd4<`j?AKxz6T}eXayqQC`NOqRV*jlCB-bsq-BN&z3wBmVyo*?<5dRLXdFkye@V433Bu@cAm1b!ERC)XO zmqF!J^ZFWx7eAKsR1j-J3yV~r0w?v?GYV%Ji@eo>;oa~DRvGFqz+Fwm^6Ztp^3KNB z+Xe1s5ma7-7ql+ZXy1PjN4nQ12Ar~`qrG7u08B$&LPz;-uZXT zXUB^xGZl;pZ6g5q85i#bsF}_5B?Gn(I@uo81#UQO0~) z-zT#P*62Ya`Cpb;ssO1804}PDl-!X8p$gDlGJID=>l_c@%=cOX9 zkLY{tX%UNpNu<7a5cu-;D6<#ChHC2uEwD`muJa@wrclNSgn0MnnYEai=_^+{z@|rZ z+xqhcXcX<6D~x%fG!!BTal@!cYO57m`})%j7VKCTq=w>sd&$g96)=Zb*Y>Psa_$@$_cqe_~c zcZ_h^+MHQprSumZaGTPZ?2ncSV6_ve$j1#|8`sT7t_jIuz0IS54JMLv&n zO2QdI`FgiVfX;ivUYhVqeTG?TbWDM9lNEN9RR(khiex1Hj+&T{uj)8~(_YjlxscDX zI7vZijES!_1aSVv?{g~5`YeAzLR`_|N6h>x8u1I*qrwl7e=SzXn;Sc2|(wl5@ zjR?dctyrD>QXW;t&dwZdeH5C{ve8py9OnEs>@VxXzfEZ)BT(PxBhTH&X;BT*IB)g0 z7k9vT-P&fPH}lLbx9~xF(4RD~DQR7M&=9V zyLpGW?$gt8a2-PAh>|j^fHhIrN@@(vwYFcL!(&80Pzb&1kpqJ0_MR-0uEFg`OM12J zbS+2;D5%VAQ&Y94k}CSqqozuqfbaIA1jFP$kLQh(hc#Dfdlm#n?jl8!t?99KI-$9s=crN37W|(Uv`UY$jf3;%Ld#q zs~1;=()-w1b)nB0hQXXD!w3Y8Ab5Rzu5 zhn}Y)&X0Dezh^dXui;#E31cLtz*@PF9&dN>o6iAtJx#a%Bf$f zsj)<-thaE)24A_*;sLj~=RdOht2ZYMKaMW?dezk9)u=}zF;_UvI&8|6OK~$QwwKqUK3|d<+jSE}K zSyI_F_+er(HaNHRwb;5&QF@06U-V2jt0kWkd=B4>GQr!?)T?*ak&?txsl`DZBeh4e zhwvS}fuKsl%0Y?F{1O*7+;QuvTBRo9HYm;LUHAu!vedgQ->TZ>bq@)`L_=G58IGL$ z8@agjq27K5sH=IUq*%mi_ly(O1n@b+^|Al4+$ z{9B>Y@uICmaO(<2n@;C6mplNq!}c-JaH;HNEQImUaA%J-*1E8rn0fyM)C%2+kW7#A zTr-1Q`Bu2$vRDJW9qnFDN(L+H$1Xe#EUq~7v z9FQL}56z245vS$R==%Q%o-MFTDWdFmi3@k8>X3$)l0SS>$kz_9&uoi@yts;EU0&?; zPUkCvMt>%aSWwSnxo@&DFl>z49YD}d3_FBx0L9|B9lHriN30RwCi&YW3n%j>djSK( ziK?jSS=KU-;!bMo$2<5pZ_u+*2|)b~escWWhJmReb%%gN(tau0QBj5&`(4AV$)buW zfnxf%O|Rov!_T{<`M6_UzufO{VZ);kmr1x%uH>A)kK+|68>%5M&Fm&8p2`!?s>aJ= z(&(q@L^nLearu298ZZjny0J21-CgcPgu}LB92?0J3X>{JvDI;ZKnWg zBu7zCt}v|GoUpkV5q8(PQP_7TAt*6VQ*jW?<9(aR7P_{o~%P-q5pq#YGq+yk4rfXo-Jc)T+D9U4zUL)OdQMi+VXCb=N@?Y<9 znrY7&9QK02^!1#($Ckf7)wcCp#|7i5{@j1O{`qMQu^~E_&p1*E&RY@Zs3L(v+tQ#i zVnb2}l5!iK%=NBg4#68fY&;X?$eZlDhgxU8?*mk?6U|rGBNq1xcwNp`uDNztQT2rb zs<0w>T9B$nX{^gS!lC~Seh;K}#BA~q6RpNlul@ifXLC1`Xok~#I$ri?&s6)(B#=Yi znh#t~bc7*oynmEu*mg}i$D6UlzT_^Ge_Dp@#9t%*qN{6x8HHt@=TI?6_i=G-8X1zO zTtYNaM#ww-*6BEkXI{Ut{wFwJIovZFxow!h=RFx^5Y0L_uju6zngG@K&=5ta#ov9n z^^I2p+9@LEe)w3on5h+u#Gtuf_xa5sipr6BYpQeDY02EJDu2(!5^Kyi*nA-sABhHD zz=b8NlZS{kZqP;t_Yq~e9tB7_wg!OTBFEZs;#HlR8(~Y5>zp;a4*Yq+;)zFEH zh6nC-8@kanF8j&}O89Ix8b8Ay(>KxCyE0~zdjwCycmD19r1gR)Ax^6xs@yN^QIQtM zud{)J2lKMZ=s(HM4AGR<-gUm~XPB_UvgUJ)5pw*n($E?IyBg9-*eS1oC)R>3s;dY% z;*r~>KqleKc#Po7Z}!ajfz}oEwv0dYJlGr%b7`uS*{&nt;;#?mTrEC(-Dp3;HYg5< z^}L?~u#CUeRmGY=$cVkHq7Fm2LCSO8LxVuOHkY3&fzkT}pW5KV#xWXfR|(37K5#>8 z1biIA_vD<}=SZpJn88>KVm1WIS9ff}pk>?310uKic0Y508&7+L+)o) zcU3X=Ub z$39QU_Hkt#w52wEBxAHj3IZ4U$CfI*x-2|jO~GUv?ZOJ4(>dk<`4^x#=)7rk0fTdf z74#MIjd%V6L3Ls;V=6y^firXlex}5C?p?dB=Jh4qs`DYzSJP}domxcjTF1|yw@%}&}yl`yS;Gj>ch-VWPQjkFPR%o>QJYRUTv z=Dw!-kijK>`LP)U%p1$3XEO0fWD6lqrb)%i8P|ijf$J?w zIfWaviULTuP@1?Qce(A-x{F2uK0%_OO$jNfKn54Mb>t|~9_haGC z5mkO4oG?P9YYct<((h|uC9SHpnHDa}h9jZDNEzahiVx+RaHEJ#1X3&v;mhsgOIZE5 zf*uj1J!5FAFKn7xY7jJ+|1v-Rbt6yWggwgoC>(!EExz%=SLuVfpfVAXuwUBmtHYOr zSx_}Xr;ML#ToZ>NsMQca?Q^~uq6v7+X#xYEkL{?A`c7iU>yc3{!7-!l)K5|u0Bo(J zt-Hgj@iT|2>$Y@vtE5iy<`=@6>Z);I7-AQh?^~%E%WDXk2Lh3VsvvNW?VJyB@wIT2 zC7Pp`Q^oAZL5uZVwZ^DrTo}UYoR+NaFb(zdCbh3}PWO?!HE897(0+?wF;tdZeeQiV zej5NkCawtDgDnSrJaLuenzybsvKR=&7{!g?*3!9C6wuxQq}-jPn5u0*d^}S5=Wqy< zT-9DphDRDi*nrd%f_}3TKN;QA3^EEr?F-3vFOk>4mYP&u2hLlSws?n819|QhCz!nX zHnx1qtfD|^0EEd7O{%6MfGacULSNUgm(DyaSPo(aXBFGEWpX68D$lOl_Kk=tY9fLT zl>Rn;ln7_@t~oPjC|DY>ycfc&>Xtv4Ge7Y%ydEdcJwGiwz0q=0nnsZId1E=xk`jkZ z;aZlEuWzO1u0NZvEqMZ}Lqr~zlK4l!N2K4wkQntBh3tTI+uCQ_67|lXgt;Tnb`~$Epsx2@-~&3qj}L>g#_nc1~S_XhE{BF59+k+qP}nHoI)w zwr$(CZTt4QkF(}s{=#074?8pBi<12=*ba9H{|DD?4j)2`D13yw!E6bS&`h%9#&Zxp zS{;1X>g~Ce2qE`)eN%dZvoBbrCbuv95aZe+au^D}L2Q$~86IKgwb-}!8Gp(SlqL&T z>nQ|N1ld>Hg6Rb$h)zr|P8z*USxMmXpSPe-s7~W^%TUr*kDF%c)50CoHRdMF!{ysz zBhJGn*NdZkYEOzfjdzhKh945y5Dmd7omc5Tlnz{!m$!-Ba8HWz(377F9<4i|EK{0k z@Pe;Zk(e9$;7*dC#c(2zGK-X{MiT)zX9>g~v$!w6?wt|V8El?X&4(m{&hE4PClkaX zI%Bi~%2R^C*^UkG=O*k^X$LyA+Ce=Un>KeWzHGDMFbLfDlVL!ys|w9##(OJ^X_g>* zOq1+uS}iodX^Pl{KS*6^X>8E8YItTXoM{VhNfC-~R|FBp>cE3)FjkU}fw@Cj${dfJ zQ~#!WD|-e#R6$p#0?N?4Mcag4VDKrqAj<6n_SvNf>IbzdQ$x`h3A}k&mEwsB{Ac;1 zy;4LTNmNv>7+hMXOj)tKU9D6L&jUL_)}d)U&UWPA2d#!<+it=-B23{}CYb5t=Q)+H zIi6diNABo~D(3#ke)j={{(nQU@i#ZBW0-(XIBWT)yg+em`)9c)=kEp(j( z*QjCSo%#_LRSPxv<@QSKxtc_RxRks1pRF6ZKZ6^3XvOHo5Vnb=zGp_4D;FHCOl@@v z`?=a#t0~YjVR_+Emv_nqu(aH>D9;)d7s><*>4=I!p4e+v!wj#Vvn|3%b=3md=M_n&G9e-| zPi%AW15Ve}RR`D0ykviIk1BBM9^8G`YJGWN1`#%JI8@QsJ9|xz_(=8y>XRc5o4$Z` zY4CN#7WlT=QV>>e-Ua&s^cWoXIC1*K2OX3KQsyGN-NbK=>6?zoC!L8$CC_s*mocl( zS6ffTyFh?v-fU|hg@jXs-7y&2i##B6!rHJi@W$FtTdhFBT`hL@ppXQc%yQHXZvzK8 zfn+N`%}YwPRn1S;&mH8zfqW1NJrp!I8#qOyWTdQ#2f5kCy6EmH-yxeNn~J$wTw$sQ za;J5y5}O|y_#Rmyh9=V0m($UqaK&*_$0V7H9Y3Y`iu7u~SBd)z%Q-qX49$6GB4|``j8AEU3$8<)p2e!;!vpyHn%3SeH!|YQ+tiFYx<}?P_5AOh!F~s!y%l;wOmi zlIUs-`e2{WtZ+uRw|oOAYN;HXjmdC=&bB>j-j{|NYfBltbw!np;@DzN*1g((#AQiq zjp0g;pKzMH|RV)Aqbfdd0_3PW{{K^UIoEHUrYQ=i^N)zQ9d8ST(y zj`dxD*~!hoR_Tm6um2`e!0Y(R#K6FTtC&=G+t~J{H=d~LcW{>UmyS_D2<26d4PDKR zrpe*KG3k9KE47v@beOmXj?Ikuc`x=FkFuC<(j%Q5?zq;cSg_Cm<9bWPq)W9^7X z#4SdoRv=+9P5^gL*~&Rp%j_g|%-C;a(U<3xn`i9JgN%T_(Hth~Lb;I(;b%d}MMV=T zp;tBCtX8i-cg}&t#wMP5W}Rd%!W(#-VRpZx#S@7gz@7wExaLIu-7_dH*VwEpMkt1M za5QMu*n0&`i~o5dV*3ObX^t>$K(Rq&{cR~^2ybB#p7YOHN6SNhE-rI$#53JqH`ntu?XGnanA-v7Ul+I4$Gw*GO8{*%l9E~NiBNtpjb zNcI*+dd^Pf7LLyU7j6M_mYF=##OjDj&0caz!4d$Wn!E*Q5@JRedNOIj0t6zyqR^Q> z075baVh&&cO(KAxDKjt<8PeddRVYo(O4kFa^C%;vf7;M{4ZVuwf-9a#+vy02YZn;}%uL9;+n~#gpm6e<*~ zuj*cb17`{!0fBBNlBNa4p~-EL3~@wVulattjniirYAFNaD4Y`TP)j@IyeuA=?<=df z^BApfR(-lXWeln^FZg9hvCmrGSQcQrTRzqh7#h7|FubrS_*QDzr$52Fb9*{I1S?HI zPch`uFhI{!#>U3XIM;Q{79H_mG)cQKtOm0f%+DTP;X#y#sGXx+N_GRK2R$HhXKg)d zN|~l_Hd;&^>j`QsKtX&9_$T1G>S`SwOcw&&Y7ix%m`;v8y`A@0STWA1{yhzGmJDyB zp!FK}TblTNEPexK`9R6vB{4pEB5Crpia57l@brBAUgiwc0g|CT7{7|}ExmpWXwr0l znf8Q{;ktEA5u-!c%aAWH#|rJL6}NfTjdjiD=v5-$J98;}zLcouq^}(l3X9;D!5!|A zm_0pV)Bc9Fe2r>RyA_r8>g@XWd-*>UXtsFcyCX|!kAZR@7mb~`31h-RzO5orDoxVQ zFMoM$1v8ef6H^i(i2i8y#rMfHd4`%CN~~>MTtlQuxl&tbs^Dk;^{54tw!>|y(y-pX z2(~rf{nb-7*{XS}%*`GXKwCmdbMvmpJ+Ek_IE1SSO#F$f@}UTwPCxNgW_0j`x44%} zJYebGC-9D`s(F;2W44Q?oi}55gVwv zRT9Qhz1XUHuN-zd!rUpHe*Pw{xf0QE1~p>s9%QF=YXwbm@n^^eM6uh5r05%u%%sez zF=sL5>+JOi_XUHa2@*h-FjsbKFfqdZ_I#halz$`p`t0CzKCkM1PEO9x z+WFm_p{#3+tQ~jhFQ-9h9xi|qp!1icqBgb)cs`&zgN^=l;!9Cc5#}TR$PWWSYvCj9 z$Na}?%s8MjmBv|JOJHc`CL(;J2bR@*cN!vRk#R*t>{t&pB740e64yvKC!x)JiYsrw z^5vQ%$~y#{nVlot&%neC|BXmd4q=~O@12N#h=$a%-BF0H%uEmHhsx1E zlEaKBcfua0NQ6h(zIA0M&^=Q656z~_2GglSSG!2%vfvS1>SkrC;DsNb8t?>0#P-J4 z<$c|l^zqziICIatV_*iY1K4^PO(Jq$Qt%k^4N*+j>2NYxwC@Km)cv5yuZK*Q@GEWR zg0v|0m%Fp$=)V!#T`CW??C;^NV$(s4v*rV(ze^fMRlQi?!fSxf1u~kOq9P*QyP3?a z%Nxa{>%{;+acY(|QLS&-CkU+>V|*xhk_zc~cCf;bLSWsoOl^%C+qG{w+eBaC$}gIw zFdQjMKHah9f_g40uhP~po}u?0tmNjIa$6g%;L3h+W$m@F^i{0`YfA5P0BxC5w*4G;#h~866(W3u`@y zp=)n1ts<#S+KbNZG%EDgHXp3|PGIcuaok2Tz$%NJU?b!X*g_H?XFMD}$NL3DenMdj zz@i3+gA|lP34I&Ki+^ZLE?hC0f5o|tpU2Fl&xMdIwy$+^jI{j1JI@8_FyrU<>}1)K z+7aBvizPN{uiQzIR773aI}WxL-}3|!`EA0JRt6b$llwV8!lDxCVpylqTQ4I>ti`+& zlcMjn=OdW2ZCUlsCu?h>hwX~i%xBCA{nL?kjgaECJIEgIB;6R;ziC``0q(0##!~}j zW`cM1%89CqOJQ51857soJ+_?np-N68GT@MJBP%pu8s7i!2kU6*a@ zupo*EW5^68goQd7xAR_2ZN0U`7g z7%*}L;e=glBCk-F_@`0hL(5_nwX?kb+1#=%R-MMXh2ze1N-*bHnJaU-bfY6Se8i$k z(eTT6d2IIA!5?+xHHGhhZq|yM29nCnh0=jhh1GoLt4Okb6_3r@_57AGLN+2y^z zg&vy>z_KR(2P16vhbVk6YTLQdNopxjDY@mLrbf$jdI zQl8j9s|Lbk*kiMY#TmD@n8SQQCl1VA-f?*tU!_~J)=YYu>;)&>uNW@gSZYdcCVBga zs>YCN=Ij&wyqml6YlJk;LGkjOfKq1wd_zy@e`ZNXGb(4nA*YwJ{&<6W3W;2mKRlK- zeM*QPbpN5Ev}=-dS-kJ=mhk1X1vzVjqL6T%g2q|KSyrtbJ%=0{ZNTjqJM&W)-|fGC zkzyGeB%vw;D%Z@+4-OH5|B}@G1Nim+x2`q0Om`MRWPlyGdeItEf~iO=4g{&ymEB5$^OJ}_swy1;Ac7`M{qQ8`TpCQeH=J2Je_7L3 ze~-?E{XA(@PTReQsVh>`@6rO;azR!RQB#)O3=VFGIR>ANQVQyh*GFs5wTjbmDs^%Xvkpe7{D)(V>xguNTh6@*|}#iaCshnewH z2Pv*HmnYzBLrO+2Q>mj?I!sj zMn|krZXO~^dMqFvL_h)4gqZkL&-Og&vqog2TA}LbM#GH8*l2bhvyEfX{$IWE2R;xa zRG2*O&uidmsTk3<4UyGyDFQd_{yNY~`S@|Q zFL;B^?PZFxpJ&bHLN4+_fv@z0= zQfJN0h0f^O7r!(Y@`szLrwB5x4O$M2)>pdPE6{YVURVF{B%L=8(-kFkA@vm$_psS6 zC!?HAS+jzz0y{P;8>kU_c*UcVB*eKU29)GuqBJ!&8SCZcK$>5BaPgb-Z|C5~B8!;~ zKmIt^`-CcnUDwlb4-I_X8)CssT=Xd2=lSy&58}hM5YM+sv6bx=_a38>AEji@y<))2PU}-^zU7&1*E6D_)kxW|AB5X+GZGAPuyW_ z$`SotY7u=?H=z-Aa6L2&zB4dOP)S-}X$T)9FSae?2jc6@jpwvYMOf4<7lh4Fi;3ll zYWaD7mV1NL%jPF|F7N7YRw*I0uSuuXR|UE|B^~g_cvw3BTkO~`CTV9;&W%3(B%V+# z6tj0aqgGwG)h{9D?4cbE&Niy)$?`$z))0R+4Nq1P-qrXm4*=;hFaQ}7oO&kIFa5d3 z!)oc5W=}x3hpGfOHaWuD8Hit;$MD-7PVd{zMfvd92w(O@iS?ibwpJS%&V7zcUBxH;MEi zi`!~%{WL}hiVvkAe5RYG@3|W{Bhr<4s|yq$5?_Yev;_hzajx}gsmF|@`mZ{LeIRhCIKQo~$s zd!GzMD!TWx$%wANn;QNIkWgiFz*WTS7Ltk~89~a#mbX zgD*xZrs9A*PrQ!k!etYAG!n2~hPD=hTpSPu8)waAScgV;=EZsYZEm2WFy;BahZnCR z`XSG6FqZCdYvitOqK$w&(lbgnx>5vgL6byEu77ohmGuvRu<3bEU@?Bz(&=i`lS7O< z+<0S^cIr3XU)Oz|UHSkoUZNERkOD4|3R`i)BXWTCYpT$ea>`1cUib_BB|#je0r%OzQIoG}CY^ZBZiyPPI%%UXk|_;Yc3!UH^6EV0h5hs+I%k z^oywD*njR!w7bcsHy$5;I^707V;esn!V$bXD(GxidZmK9^!U7&EFk^ia1Y5!ZBtxs zu6h{o@T#Pa9Y zT}{&H_-#ih&|D;EgU`xNHq#3A`z)(Zumlyb=cPdf0Jy%?9mI|}vMEa2uqBal+DOxaB^-*39QR_MuPEjOEf$-urfO%VQG%cE{N-t3G8&Eh z=~mZ-Y#^}`ZRpYfLQToa95* zLR3};_4235T-aFSw~jT_JZni?QImT}q-2@h`^^r%>ox8x)hXaL{nfJS6xCSXQ{18R z6DS8OpIXR;fzQ5@OIZNd#CZI@NlDYqHHSuz=|_?;noe+Jt-WzWTUjO|eYRH)J0?P} zBKI;{wCZp4n9^u`zgmzBNIXev?0eLJ3szme5Ygt^x&za$a>z;d)SzBdY_&iJ0rt;3 zqE7*4Xg+G$@e^ETjC@KWye@X?cKaR$EK3PQH*Rg5RdA|t|Abb^ckSY6t4o@kAr&>X zW1=N>JWsquyDVkWnUAIc&WJ+Uqh;p-mFN;}Z5R>5VHQvvd=qjzFK4@EykrZC;B(+# z5#XscTxV|tG|77)NeI`ioZ5gy%*(FU4A@K!FX2d)*4rEOY$oKy zBr>Vv>)RayI#Xs{g3`_it)+yHRm87J^0)AD*?-B10DsPW9^RFx!(2t96_NW&4?%cP z$;Q@&@W@8U2A#JW>w%=}efA-qHv=i7cZCz!eX6j$C)97)y8;wS7+S zl;uB{DAQj(o2AfbkCre|)=njKhyq5vWu6Pe3jvvqhfDAXNQCys2X^`|1IG%y4>5jnG?(W`+5HP-}4_EDH}7T zc@m-U)YVr{_Eq&-{Ts>fj5AJpA*qX&Ant9ntM@`8+R`#J7L42fGgZ>rY8lWTlDGGiV0I4L5(E|UWqt%6amU@*)uU1xW@JeVP^0%alSGYLM{>g0 zeHG5?s%2dW*!y3HmVl4la_3++^vd;GYalD?SFaued218G<~+GX+h&{@KsO+*94KvY z@Lj(+s|ppZyM8knKBmA^Jtl0bncT$R(l#8=0L6Gg zu(`m=ru^gLGYD{|w z*Ok&xDfO$MVq|lZUdFVK2?f(-skfoj_v#PQG@?ee4Q%LL&+Vqz}lc)FcD=cznC!6#BGclqyEyv4AsAPy!h7 z8BA7aW^?%@U)NO((010Ze8>13Lsx_k0vwKtQXNhN_Bt?sdfC%#VtMsr-#F1AKLfh2 zQ7QMKIPMLJ6ZG*)O+w`*q{u_Yi9EUuavodK)8hUf*NMGpvLda7pd-vxu;81iqky1h zQ1mO)7V#V9NycN1pTnT10L&2v_0C$-M#h`6giyQI&66Rh_*Tl`7#SQ zxxccK8N!n#q*Xma{0z)@HiY?WTn3^|&K5L_n7$3UUJY=Vzw}id(y8k$GtJP4?db`% zcp4;18W6)vbBZBMkg|J2DhrEUMe4Jg2fw75`d6Kv$dbVEa9}YiX|er&&M;lmHcH>J z@5ndx>bxw7qfi^|ARc(;_>eH0H*!cgBAQTy4Zgw_?34+41p==X`;4OCkum|BfwD-d>^eRb${11h?{;aPZDGT)Q|=~aonZ^V-yt0 zUls|SQLmhOfP7Za!jc&LY#A*pr!uyS1C7>1l_&a4jYs%n?QH>{Miya7uZoe3q>HTa z>@mO8auZbs3lIEhd z%|38YQAH$`PUYC8&n#|3*cv2DAB-a=WB}0Td)M@lLZ*x|#CSttO|^aAML_vJ`pT zr`vW1En3A;6!Tev4HUX2mZlAgc8sUFYpO~W$X}h5$dxqB?3jTLHQ=s?_;-ImN7<_d zu|*OnR}mp}_OFtRs1CqQ*9V`OrJhX}XE-u~mey$B@>p}HfY`*+AoOiXyn z+AQPQ-8$#Sr-g=MqK+M77#sg3(;~=h<{}XG_`h>-x3hn=jc;EO1zx72oH*smz-f;J zsLR*)8-H+_=HX0nsIQ&=)pl^3-2Ki;Z>2YPHP%1)6t>Y4BF7TQQVMTP2|tWJ0?@## zXmqiya9mU>C;<|G5O3|aNbdZmXMkTkZ6H<4m^VKVJ?$E!EObI{5|F_Lk(lgx(2pe2(jZj5q%wZ6tP|#;1gS4x0=!;{`TahHl_+;%w8A{!ItcvE?mDB)D{cf*HO8Ty?-WMu%_!;PT{O3c z?Hj1;z2woFmvcwjFE#Q`5df@*Y@i+rjp$G0eTBE)Wkz6Q7qxxVyIqCdc4N@2TN6`; z5%tgIv=?+>H*W3GEiA+kU3-YP)xBTRBOhYfQx|4Ts%(Mc!dq^%QBSs|lUtv%#oD!B zLAJ3YbF>ViAfYCULCqrV?CdVbaH+ZL3w?Mch+Qtak>8!vNN&GafweO9Yk3os%w|Ng%Umbhgm$9wWEPB1af51UIby{x1a@5O3P8`2htwTH$ zgVSyT1X>`_LdlDZCu-kS=Ru9OrFyjiO^(NHTzkmQ{tBQEE(PQd1%)}PQVJjjvM^w^A#3XE&9@@tdK;p{c}e+@M|KcO@q4qC{v(-~TLaL5O)!_wYW!;M`&Yr!FtkPL+yVtyRlMBu#DFHY|#OSvcR z>CMbvbv10`S!v$h^$mlYtdU64lbKt)4l>>mno_7MCEbryeye%GLB=?uO8YTddzbgT zV!_*h_K(IYW60(l_9mxuiJ8zZ(mqXPBuv4f3mgM6W%%_g4~z$e3eF*^#mX^$rM&0{ zo&NLC19=9$a0lBDemc2$+W3IxLbyo*?f?KW_c=n?7S0=EZNmXx2MXND$ovUEHt5Xh zrIfF!^j&p#iyqe4{~5?}5>O%0aa>0Rp%MUzES=mf21+9pbs8~Fsh#ejbTZZQyfEyK z+`8{NKD?+z%w&<6S>86gsEf1?(zaXYch9T@)Ud6ztg7QBK)ss_(4mmW=ThwQG{&H(;7XWDV{Dyqo=C3ibUSo%*F5^_pAy&< zfYEK{y=umTf=A~Q9d+chm)p)c%l4g`pLCwQHpXyC?&dGU=u#sU$U%{_r88&+1*54o z&7M7#AoejiUebvJU7r^xY7wj}r)w|SCzWIPJL6NCvE{C$(A!L_Tl76qq}Gl%6IHs7 zao#`rkRrp|4*5)!5uLZ3?X;~U=HvDGuE>9ya-~X)!YBTBRlwSJYaQX27tK7xMRn`2 zZNQU6$0*fU%>g@CrYhMQZI09@ zy@2jB!upT=sNg|@Tt4y+wTTKdr1Z<09i|<|tKbAtt>`O7g2KP_x;YuKQc5R*{3^=$ zT3%5RG16|v@v5D2I&&WQoEWCc2b3gzd7Jz>2`#(voQzw8uU-B{4M04rt=tCp_E{(nNrR236VFw_wGBn%s57!S~M);vy^hMUxzR z??gbkAB0Cf&-494VM`)7P3@?e2q^p|^-5v#^Rr8J)ZzKDX=Ng6dGr&4Y~J~^Px!mz zJ7{9!28WUeoqS!6qwfApo3=%4vLX%6h3&JEi5YAOrCqj8e36gb^xXTgrt+`-!Ja2L zr-Kg`{#?;nqBs0^9yhuH`6DPSyMyi$G_~9lOX);0kU~hp%-pS3kP7o7^wrPYSs98X zFR^|>kuopd5WSG-+QqnJ?OH4;18TZum$vqtn3*OEqi^5zdB-+Ukc(<-3-Rse^Q&l% zt9)l5ntk^lZ0u*A0v1V?jrgnw96OF@VhKZ;n+wR8eyOXnlV5@b=#Xnn zqAG8!HcbU>%<-5Qx1&ZsO-{_ybY@XZ83MQJjmdwLxWfL^PsdQ2Xq?)Ra>7$ci7CJZjNJmi+wW3Q0NN~ZYKfWu`r2ly7D!KVfH?ZxLC7YMZh{8_N4B%7U0 z9{2K;}Q@5z{IqJzrek6VeGwt+s3j+9|8;Jp+#K0 zD8GNlj?P>GZ1#EvY%m4^wWFgSUcf*hj;sfvt59YhXTwB;nxiY!BviH$cG|XBiBx=6 z(}N6i=Fsmf-DuK|eq*6Wp_ZIUs(91yJ>?{1MDi-8Q~|KGs%FhnY}sePL_?wOuX9u5 z1Tt&?VRuX+_B@rkcbjHu<;@AD2=ijx#G-j2n^q$+Y#cm;ybV)(mdp^=RXj9$@|YSC z=Heb>;dXw7&JSbuk-_tpXHFe}%eLqe`BmxIcG_qgHEVj6@q4y%BHL-no1sbbI1=i; zjS@v=AGLiDr^_~vDltYCi~oFvY>@GR>7C)jwU`o=V$nolPM8j+6iblG)O)BWjw9I2 z0BK_F<1eeBAbRjnDtNy<+|Y9%V#1`a2)W|wrq9GE_Kgb#VCP$CF4y$(6DIgG?*!_f zMCz+2CperQ#L^EY*jBjewZId%t6`V|0N&7|ymVRUb5oGChdqmM z8I-d=!JH~d6h$sGo04eW7yz0p@b+{iq_>8s{Yo=-8bYjz!yn2!Z(z)%-Y24MIGmdP zbuxj{3#Bfl>S+zccx);kuR0$sFTL$m?d}VT=V|_;01k;3MR)YyHe92^Df{k45zlU2$P`Yv z-#N0?Z5xxfPNbpLPW_StbQsr8U0w&DOy*G`MSP#P#Cwgn`&vpmertFq-1q|J&M#{+ z{t9nk5Rh$g+NwO8TI4CJK|0Jto-CAQgM7(%&wJDTDr^j%e`yp548?)|VC$^KPPmy$ znJ%^RTNRHtY#^^7(!EPhP@i6+xp%W}N$&^5Yt3K$xLL6SjaIh;`MgRn{PfiFfO4Z3 z6DWFrABor1d86c%sabFAIP*?G9A2yk8 zPTJhc0oSk7(`&r~b{&scBmkUZ6@QiM)Xh~1_5czEII@!SLCUh!J?7ArhcI~#31{33 z$1_mUbGaqp#}syqkpy;KH+Ot0d5!fDF0fHyEufn&cjKcf_ejzGw*wa6y{Vf1$YOp? zWJJE~R6?`nR1&#lcsH|kpXCMe2$Sc)mhmRw*09jWUc%Nd1nT(UBBCBpy`Eg(l$Qe&izvtiWVFn5QU8?itXaYn_F+PKwz6=zxvvR z5K(;#FpzkV3M;IFJQ(K1I*S0+L5lBtX^lT}FuySOp`!Ooh7FGX`(9_^qAm4*JBB+4V z07EgQXT3m5ZC(@~<5*mD$K&tzTITGtj2)v^YCylV0{iCzY2#8)Cr!nZ7^NKu9To&c zH=4oLxg{+U?k}8rLah}avh*h0zF{vvD0^_24I`P^jpo>t9rW|@o7He>O>wc6G<&?F z99*Q^Dz8lecs}WzQPpO&Oi$uu%Lmyd3aZp=ex@Za32SJ`9>9?(*Oh@GFn z+(-EZfN`Qb-O1O3Vf_zLrbuZ_`H!9#0wtcEdaHk+G~DMfIlQDdaF}~$9-Cq(C)GKB z9$m12Zl)3t+NpHW7P^NYLCgWdAi>+-%H;0L%67rdOFA3lm|lGu&5Fq)4@*rZtXS!W zT1r79K{&l^YeosFlKKbtzP@*$mjTOo-i6kow=5cD26&15AeaMT&nD`SNZ6HNibAp; z!e8NXcmNwG3Y4rzw@Q8k$`pt~-x{;bR7p`7B}?GeW-)_A4=`*`u$&`$8!a6u0xu+_ zlSnaoDa#+K<>l2fv#`ny&>bQu@bh6dE3|sPH&9A#n1!U2DURXMXSFY|T=uVze>QLj zcbgCQRfJYX$YFT`cdg)1^I|6>te;ITj7md3D)xwn&O87+JNytz>Dw#fH6cFNH@i$* zV(n{kV{9^Slc+|o6lbDKTjy?{!!7g^Oshxo;rPgshufnY_Y@3p~ZS?!R zmbuqc?^o*|x~r)QbLa^69oNtk-v#85fD(Q#bOy6@vst@vZ+>eHt}`KO!X`zzbB-}DtS>!rOuQSbZX;GBX$EhV$oVWj0pT&hecICGte#yde-i!9Yk6ANPl zP)E3>0?zv>12e?C(WI$sfTR0@%N-6(u#9Ij@o?M>*Q+lk@%+&ak*Qgr%LYv)YiiRK z9Ug2Ahfyrbtw0F3v|UB)bkPab%QofT!Z}d37GR@QuraehR69}t3J)5H)O?~n+85Jl z{$@n(+Gzk zq8&=-Z&LwS(NxIlCke##A*%YNoWvKHu*-7;q!UZh58{oA3Cta1%5@sy#2Y_y*-l(I zzy0eOuB_q2or|0tp{6dMlKt;_6=L3#Hxtpljc$C%U{zx`xN2Mk$b$Yk)x zhIeWWkx{FI{gdcG8;DDlDG73y3LhYP6ar>p)>v=W07tkPtkq~v^0IpU{2OG6x{sukJ;|mrCAFH-ukJd2w<#=SHXaYxRC990oTMfgZ$f}UJN`8NNpRF)ix9x z@ks3bh4FA6Y0U@u_vyF0bI60i;2l>yK+?Z<27poeiwIFnHLw_>3CWRD=0UD}WpoBk zJa_@6n33+(mY3YM`I#%pqOutY5;nb@L|BKaNWS|xs_At$(ut8O+9y7TawX}BK?}1^ zr8S(85poMwgTO9@5q5HWrMLeUw;~sIqGb)Ud;xBrn5h1Z#1IbJcXZo$jw?)~2USR-=I4o8{8TF)^u$gCmknRuLGSf1M zz}m1c3R_d5alZmwqD_1^vQsweWEtxFs>(f9#@Mm@+svC6)s^G0&(v#j_$$}86rB{K zo z_$zZ>7&on5SWIgU%m$snRB^79mL;xvso9K@Z@KYpC$VpX3C41t25fciNl}YM3Lmlp z=DA;TFh|LJt2qMZ+s2dgY&r_#fGf;Iwu)Y1OddCN3iOa2V4DM&iPmiKiB?+ms!sP@ zX-FOYWdg=qQWW*qiglCySQ>}ZJ{aGX(cKyOBl$0kvWHr)znz|$LIgtgP_BN1|NP)N z^w}ULqCqFeva6f!>ienZk&cFwdhUiPA{qgcX!-%{e^5h}g&Bb4@`<&%nX0(L)P9Y+ z(?mRsjO%0DKRI|w)74a{Ap8?v_hmUqnk4;>-;!{cfhCllW*H^) zO9)sNYwJ53X=oRckwMX zSCyt=+Q`nSPE^|L!S=IReTAX{BxLPc0|u>#Ap6JS|j*er)fswi1TUx z`FpSJ2>G6+8~>}N9uNDIF;s&RQ_yDVP#&{x(Iz9^QK(ccwz<5%FoH*-_)son`m_V1 zTFouh+}rVYXE!nEvo<||=%xYuDncu-#hVlVBEZ#^tL&Vfxz_!s(RoDI|MwPZCde@ecd)khR3dZMm^; z_4)D?Sa)++?8KvE0Ok|K$LvHm68*i&dvZt>3E8OHo+rn3Z^2xvN=bSlv5= zW~|4RMG|phe91!!@YkNtQu>$4DcYw7gk#0%XL#QCyIl+%Z>Oq(hv=(gC&~+>v}CaC z4*u|w8r|{RE8~uvJ5UcEH}Nm(a*1$gx0DLOmU#13zcUrPVsda7Y$CiyB_A;!*9{Nn zZYd*fM0^*GTq@ejW3C&i_h$@8K>FuxEIx=P(*X7__bI{c^?sNsLAn3aTiC2Ye zmvsvjg@qmp;9P-ypDRg4s@v{IP65fydYC`LZYbh6oOw7<{GVYfpP7mRPf(f#+Cg?J zEXskxQnkyCL4#w%Dxt0^4T<+1yczd?)Dgw^9Cq%&)u^^H0IS?8u8@8!$+2pJX|3~; z*QH8~e~;Y>$nSZUdVjc>T@ZK-Ts@B|ESutjIIUlP*@~U(+%X#&4t8kAad#}mZ(Alh zta^G;r$BZ6vLqG%7Zp1Mt<;3=A1`l43asF9nv=WYU_ZFP^Ky?eZkz000-31C_T0+g4 zQuSKgKQYzaO%#f_d9VDwQksn&VpwIzk1(;W5|-!C{_p)LsmWWnzRYbKYwY9=x3t8M`YPTbuZJNE{oE3$8j{z`^i&(i1UEqDy*Pm-<`x z!q6h;@c4l^&B3KS;C=Vwm`lZ~l+UQi!>8w)0!T4)&QnT}sFfQNRB)Mc+V7FPC9k8( zWZ>T06Hu17T)|!M-vU#5q$#Z_AMrrbXo~qYPmqcRcT26@a92inZ%+F~)GH(eW(tT5OxVU!*M@AR zqdyozqn*S-$z-Uw11nAI++yjrWBM!4#!^1k@QJo3a}W+AZuEq+Kw8SJbY_!f8y%PG zp2AhhybLEufZfKdLp#`)Ym{>YeL19m3bZPK0E!hLWfwY^ST6>n01VW3Y!+w=RY>p3 zcPahy8`U(%C8X8&u+EL-{QjFK|81BqYN>w*Ql5(5v zu$;PBs_6&lfQ3p@b);f_uV4spL-f5-jc`*W^xTT6e6siI(WBeY8|iQxW7nv)(r-$; zFX_}QgF29+c`n$=9Aa^Ze2H+gcvUqjols}Kv^MkxWIHwz1`ejS=%$YQ*d?D&L4ro9q2?gg|_&fR+z}zCZLVAL-;RphS zTK-vzcqoVyKn(A}T603ntmcied(By#iSB)O7kWE?8wx9`e1r570M$J6&I4o@AfG7lzsKYErQB>tJ$RC?s|2xp9ZZRV8ZnRbj-EsP@w*` z(s5Au)V1!8^Y|q6uR}V=nRjkJ26YOH++L5kIDS?}hck4e$b^FE5y;9SZlD7TLN;6@ z@Y0-{ifbvmS%?jop3VJyv=+8oj)Dm9JX-^TiTXjaQ8F2Ks?y=A&CkNOK3{wbjbHQG z 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≫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%0AF^!x4~`*$aX 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 z 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 literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index 51bdb3c7..3742879a 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "JWT Debugger", "description": "The JWT.io debugger as a Web Extension", - "version": "3.0.0", + "version": "3.1.0", "browser_action": { "default_icon": "img/favicon/favicon-96x96.png", diff --git a/package-lock.json b/package-lock.json index 3ac6d0e1..6b9d662c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2972,7 +2972,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2993,12 +2994,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3013,17 +3016,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3140,7 +3146,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3152,6 +3159,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3166,6 +3174,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3173,12 +3182,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3197,6 +3208,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3277,7 +3289,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3289,6 +3302,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3374,7 +3388,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3410,6 +3425,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3429,6 +3445,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3472,12 +3489,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/package.json b/package.json index 67adbfca..c0f747ec 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,8 @@ "start": "node server.js", "test": "grunt test", "test:unit": "grunt unit-tests", - "build": "grunt build-website" + "build": "grunt build-website", + "build:extension": "grunt build-extension" }, "heroku-run-build-script": true } From a2f7614fbeeb598b78bb2884f82b1a9c8de32bbd Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 21 Jan 2020 12:42:51 +0100 Subject: [PATCH 369/611] Update GTM scripts --- views/website/layout.pug | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/views/website/layout.pug b/views/website/layout.pug index ebf32c0c..1b1f2378 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -36,9 +36,19 @@ html(lang='en') // Chrome extension link, required for inline installs link(rel="chrome-webstore-item", href="https://chrome.google.com/webstore/detail/ppmmlchacdbknfphdeafcbmklcghghmd") - body - + // Google Tag Manager + script. + ​(f​unction(​w​,d,s,l,i​){w[l]=w[l]||[];w[l].push({​'gtm.start'​: new​​Date(​).getTime(),event:'​gtm.js'​});v​ar​f=d.getElementsByTagName(s)[​0]​, j=d.createElement(s),dl=l!='​ dataLayer'?​ ​'&l='+​ l:​'';​ j.async=​true;​ j.src= 'https://www.googletagmanager.com/gtm.js?id='​+i+dl;f.parentNode.insertBefore(j,f); })(​window,​​document​,'​script'​,'​dataLayer',​​'GTM-W7FRLJ')​; + // End Google Tag Manager + + body + // Google Tag Manager (noscript) + noscript + iframe(src='https://www.googletagmanager.com/ns.html?id=GTM-W7FRLJ"', height='0', width='0', style='display:none;visibility:hidden') + // End Google Tag Manager (noscript) + + // Google Tag Manager legacy (remove soon) noscript iframe(src='http://www.googletagmanager.com/ns.html?id=GTM-PT2SNS', height='0', width='0', style='display:none;visibility:hidden') script. From 29ee3b05be912e8770e99473e2236eed0d3e00a3 Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 21 Jan 2020 13:05:18 +0100 Subject: [PATCH 370/611] Fix typo --- views/website/layout.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/layout.pug b/views/website/layout.pug index 1b1f2378..63881de6 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -45,7 +45,7 @@ html(lang='en') body // Google Tag Manager (noscript) noscript - iframe(src='https://www.googletagmanager.com/ns.html?id=GTM-W7FRLJ"', height='0', width='0', style='display:none;visibility:hidden') + iframe(src='https://www.googletagmanager.com/ns.html?id=GTM-W7FRLJ', height='0', width='0', style='display:none;visibility:hidden') // End Google Tag Manager (noscript) // Google Tag Manager legacy (remove soon) From 76b54f188628576344e46d83d4fc5e33ebd3ca1b Mon Sep 17 00:00:00 2001 From: Maxim Reznik Date: Thu, 23 Jan 2020 20:24:21 +0200 Subject: [PATCH 371/611] Add an Ada library --- img/website/28.svg | 53 +++++++++++++++++++++++++++++ views/website/libraries/28-Ada.json | 39 +++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 img/website/28.svg create mode 100644 views/website/libraries/28-Ada.json diff --git a/img/website/28.svg b/img/website/28.svg new file mode 100644 index 00000000..543962ff --- /dev/null +++ b/img/website/28.svg @@ -0,0 +1,53 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + + + + diff --git a/views/website/libraries/28-Ada.json b/views/website/libraries/28-Ada.json new file mode 100644 index 00000000..6fe0b6b9 --- /dev/null +++ b/views/website/libraries/28-Ada.json @@ -0,0 +1,39 @@ +{ + "name": "Ada", + "uniqueClass": "ada", + "image": "/img/28.svg", + "bgColor": "#634421", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": true, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/reznikmm", + "authorName": "reznikmm", + "gitHubRepoPath": "reznikmm/jwt", + "repoUrl": "https://github.com/reznikmm/jwt", + "installCommandHtml": "alr get jwt" + } + ] +} From e6698aba4ac8b94d23c83ea09710a876b53e1f7f Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Tue, 28 Jan 2020 23:15:44 -0800 Subject: [PATCH 372/611] Update 13-Rust.json --- views/website/libraries/13-Rust.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/views/website/libraries/13-Rust.json b/views/website/libraries/13-Rust.json index 6b7cbcb6..f1d6fa77 100644 --- a/views/website/libraries/13-Rust.json +++ b/views/website/libraries/13-Rust.json @@ -53,12 +53,12 @@ "rs256": true, "rs384": true, "rs512": true, - "es256": false, - "es384": false, + "es256": true, + "es384": true, "es512": false, - "ps256": false, - "ps384": false, - "ps512": false + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/Keats", "authorName": "Keats", From 6655020f1fa6784db49711afe5e671ea94032fe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnter=20Obiltschnig?= Date: Wed, 29 Jan 2020 08:42:24 +0100 Subject: [PATCH 373/611] added POCO C++ Libraries --- views/website/libraries/21-C++.json | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/views/website/libraries/21-C++.json b/views/website/libraries/21-C++.json index 2d96bd88..3cf7d203 100644 --- a/views/website/libraries/21-C++.json +++ b/views/website/libraries/21-C++.json @@ -128,6 +128,37 @@ "gitHubRepoPath": "pokowaka/jwt-cpp", "repoUrl": "https://github.com/pokowaka/jwt-cpp", "installCommandHtml": "git clone https://github.com/pokowaka/jwt-cpp" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/pocoproject", + "authorName": "POCO C++ Libraries", + "gitHubRepoPath": "pocoproject/poco", + "repoUrl": "https://github.com/pocoproject/poco", + "installCommandHtml": "git clone https://github.com/pocoproject/poco.git" } ] } From 41b1d85372f281709c80bdea75f832721f90d8f8 Mon Sep 17 00:00:00 2001 From: Philipp Jahoda Date: Tue, 4 Feb 2020 16:17:46 +0100 Subject: [PATCH 374/611] Added Kotlin .svg file --- img/website/29.svg | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 img/website/29.svg diff --git a/img/website/29.svg b/img/website/29.svg new file mode 100644 index 00000000..3480717d --- /dev/null +++ b/img/website/29.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 7347c7fe2eb37e95fcc41d7a3734462534ca2324 Mon Sep 17 00:00:00 2001 From: Philipp Jahoda Date: Tue, 4 Feb 2020 16:25:04 +0100 Subject: [PATCH 375/611] Create 29-Kotlin.json --- views/website/libraries/29-Kotlin.json | 39 ++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 views/website/libraries/29-Kotlin.json diff --git a/views/website/libraries/29-Kotlin.json b/views/website/libraries/29-Kotlin.json new file mode 100644 index 00000000..5c708451 --- /dev/null +++ b/views/website/libraries/29-Kotlin.json @@ -0,0 +1,39 @@ +{ + "name": "Kotlin", + "uniqueClass": "kotlin", + "image": "/img/29.svg", + "bgColor": "#f3750d", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": false, + "iat": true, + "jti": false, + "hs256": false, + "hs384": false, + "hs512": false, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": true, + "es384": false, + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/PhilJay", + "authorName": "PhilJay", + "gitHubRepoPath": "PhilJay/JWT", + "repoUrl": "https://github.com/PhilJay/JWT", + "installCommandHtml": "maven: com.github.PhilJay / JWT / 1.1.5" + } + ] +} From 220bde28eb181868d1467ca1fe63a6c77390083d Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 4 Feb 2020 09:47:28 -1000 Subject: [PATCH 376/611] Update Kotlin image --- img/website/29.svg | 71 ++++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/img/website/29.svg b/img/website/29.svg index 3480717d..7534bb16 100644 --- a/img/website/29.svg +++ b/img/website/29.svg @@ -1,34 +1,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + Oval + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 82a1f1f09b0f0cd40df06fe78f957f5d64389468 Mon Sep 17 00:00:00 2001 From: Carlos Menezes Date: Sat, 8 Feb 2020 13:27:27 +0000 Subject: [PATCH 377/611] Add link to JWT Debugger This feature adds the "correct" link to the `jwt.io Debugger` feature by redirecting the user to the index page and scrolling to the debugger, whose `id` is `debugger-io`. --- views/website/md/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/md/introduction.md b/views/website/md/introduction.md index 77ee398d..2f75e7c5 100755 --- a/views/website/md/introduction.md +++ b/views/website/md/introduction.md @@ -88,7 +88,7 @@ The output is three Base64-URL strings separated by dots that can be easily pass The following shows a JWT that has the previous header and payload encoded, and it is signed with a secret. ![Encoded JWT](https://cdn.auth0.com/content/jwt/encoded-jwt3.png) -If you want to play with JWT and put these concepts into practice, you can use [jwt.io Debugger](http://jwt.io) to decode, verify, and generate JWTs. +If you want to play with JWT and put these concepts into practice, you can use [jwt.io Debugger](https://jwt.io/index.html#debugger-io) to decode, verify, and generate JWTs. ![JWT.io Debugger](https://cdn.auth0.com/blog/legacy-app-auth/legacy-app-auth-5.png) From 0f71e312067d624ebf1ff1b209232c5376246062 Mon Sep 17 00:00:00 2001 From: thomas Date: Sun, 9 Feb 2020 10:04:05 -0500 Subject: [PATCH 378/611] add jsmn-web-tokens to jwt.io --- views/website/libraries/20-C.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index b8e85af9..56e907cb 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -65,6 +65,37 @@ "gitHubRepoPath": "cisco/cjose", "repoUrl": "https://github.com/cisco/cjose", "installCommandHtml": "git clone https://github.com/cisco/cjose.git && cd cjose && ./configure && make" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/TomzBench/jsmn-web-tokens", + "authorName": "Thomas", + "gitHubRepoPath": "TomzBench/jsmn-web-tokens", + "repoUrl": "https://github.com/TomzBench/jsmn-web-tokens", + "installCommandHtml": "git clone https://github.com/TomzBench/jsmn-web-tokens.git && cd jsmn-web-tokens && cmake . && cmake --build . --target install" } ] } From fe90803e588d42cadc56214f36905753c748ecb5 Mon Sep 17 00:00:00 2001 From: Glitched Polygons <37942667+GlitchedPolygons@users.noreply.github.com> Date: Sun, 9 Feb 2020 18:09:15 +0100 Subject: [PATCH 379/611] Update 20-C.json Added l8w8jwt --- views/website/libraries/20-C.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index b8e85af9..b62c3c27 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -65,6 +65,37 @@ "gitHubRepoPath": "cisco/cjose", "repoUrl": "https://github.com/cisco/cjose", "installCommandHtml": "git clone https://github.com/cisco/cjose.git && cd cjose && ./configure && make" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true + }, + "authorUrl": "https://github.com/GlitchedPolygons", + "authorName": "Glitched Polygons", + "gitHubRepoPath": "GlitchedPolygons/l8w8jwt", + "repoUrl": "https://github.com/GlitchedPolygons/l8w8jwt", + "installCommandHtml": "git clone https://github.com/GlitchedPolygons/l8w8jwt.git" } ] } From 035346d985103e851ab15455fee5dc0bfd14c72d Mon Sep 17 00:00:00 2001 From: Carlos Menezes Date: Tue, 11 Feb 2020 11:51:56 +0000 Subject: [PATCH 380/611] Fix navigation links to Debugger and Libraries Introduction page now has correct links to Debugger and Libraries --- views/website/introduction.pug | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/introduction.pug b/views/website/introduction.pug index d7a74514..b060b086 100644 --- a/views/website/introduction.pug +++ b/views/website/introduction.pug @@ -39,8 +39,8 @@ block content img(src='http://github.com/img/logo.svg').logo nav.menu - a(href='http://github.com/#debugger').scrollto Debugger - a(href='http://github.com/#libraries').scrollto Libraries + a(href='http://github.com/index.html#debugger-io').scrollto Debugger + a(href='http://github.com/index.html#libraries').scrollto Libraries a(href='http://github.com/introduction').active Introduction a(href='https://community.auth0.com/', target='_blank') Ask a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! From 4bc7d7a5b0ed43701d59d31019bc4a6f7f2c93e8 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 13 Feb 2020 10:08:10 +0100 Subject: [PATCH 381/611] Fix GTM code --- views/website/layout.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/layout.pug b/views/website/layout.pug index 63881de6..4a69b818 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -39,7 +39,7 @@ html(lang='en') // Google Tag Manager script. - ​(f​unction(​w​,d,s,l,i​){w[l]=w[l]||[];w[l].push({​'gtm.start'​: new​​Date(​).getTime(),event:'​gtm.js'​});v​ar​f=d.getElementsByTagName(s)[​0]​, j=d.createElement(s),dl=l!='​ dataLayer'?​ ​'&l='+​ l:​'';​ j.async=​true;​ j.src= 'https://www.googletagmanager.com/gtm.js?id='​+i+dl;f.parentNode.insertBefore(j,f); })(​window,​​document​,'​script'​,'​dataLayer',​​'GTM-W7FRLJ')​; + (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': newDate().getTime(),event:'gtm.js'});varf=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!=' dataLayer'? '&l='+ l:''; j.async=true; j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-W7FRLJ'); // End Google Tag Manager body From 4bb1ed406d0d532616a64dcd15b82d0358fbccb3 Mon Sep 17 00:00:00 2001 From: Sambego Date: Fri, 21 Feb 2020 11:09:04 +0100 Subject: [PATCH 382/611] Fix gtm --- views/website/layout.pug | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/views/website/layout.pug b/views/website/layout.pug index 4a69b818..dccaeeb6 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -39,7 +39,11 @@ html(lang='en') // Google Tag Manager script. - (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': newDate().getTime(),event:'gtm.js'});varf=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!=' dataLayer'? '&l='+ l:''; j.async=true; j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-W7FRLJ'); + (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': + new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], + j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); + })(window,document,'script','dataLayer','GTM-W7FRLJ'); // End Google Tag Manager body @@ -48,17 +52,6 @@ html(lang='en') iframe(src='https://www.googletagmanager.com/ns.html?id=GTM-W7FRLJ', height='0', width='0', style='display:none;visibility:hidden') // End Google Tag Manager (noscript) - // Google Tag Manager legacy (remove soon) - noscript - iframe(src='http://www.googletagmanager.com/ns.html?id=GTM-PT2SNS', height='0', width='0', style='display:none;visibility:hidden') - script. - (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': - new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], - j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= - '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); - })(window,document,'script','dataLayer','GTM-PT2SNS'); - // End Google Tag Manager —> - block content footer From 0f4fce8f0f0cf4c34276c16f360fca715a93b1a2 Mon Sep 17 00:00:00 2001 From: Zbigniew Mandziejewicz Date: Sat, 29 Feb 2020 19:53:58 +0700 Subject: [PATCH 383/611] Mark claims validation support for square/go-jose Reference: https://godoc.org/gopkg.in/square/go-jose.v2/jwt#Expected Source: https://github.com/square/go-jose/blob/master/jwt/validation.go --- views/website/libraries/9-Go.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index ce46408e..fda53924 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -164,13 +164,13 @@ "support": { "sign": true, "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, "hs256": true, "hs384": true, "hs512": true, From 8001080660d13c34adb9392cf1002a841040909f Mon Sep 17 00:00:00 2001 From: Artur Troian Date: Thu, 19 Mar 2020 12:23:10 -0400 Subject: [PATCH 384/611] fix: rename josepp to jwtpp as project renamed Signed-off-by: Artur Troian --- views/website/libraries/21-C++.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/21-C++.json b/views/website/libraries/21-C++.json index 3cf7d203..9100fe61 100644 --- a/views/website/libraries/21-C++.json +++ b/views/website/libraries/21-C++.json @@ -31,9 +31,9 @@ }, "authorUrl": "https://github.com/troian", "authorName": "Artur Troian", - "gitHubRepoPath": "troian/josepp", - "repoUrl": "https://github.com/troian/josepp", - "installCommandHtml": "git clone https://github.com/troian/josepp" + "gitHubRepoPath": "troian/jwtpp", + "repoUrl": "https://github.com/troian/jwtpp", + "installCommandHtml": "git clone https://github.com/troian/jwtpp" }, { "minimumVersion": null, From fff0a7c56d92c7d4dddf80526cce452a2729b46c Mon Sep 17 00:00:00 2001 From: Artur Troian Date: Thu, 19 Mar 2020 22:53:17 -0400 Subject: [PATCH 385/611] feat: jwtpp support EdDSA Signed-off-by: Artur Troian --- views/website/libraries/21-C++.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/21-C++.json b/views/website/libraries/21-C++.json index 9100fe61..e9992ecf 100644 --- a/views/website/libraries/21-C++.json +++ b/views/website/libraries/21-C++.json @@ -27,7 +27,8 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": true }, "authorUrl": "https://github.com/troian", "authorName": "Artur Troian", From 8a1cef094296f0042301b50e04bb3dea81920ad0 Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Mon, 23 Mar 2020 08:43:38 +0100 Subject: [PATCH 386/611] Update introduction links in the navigation --- views/website/introduction.pug | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/introduction.pug b/views/website/introduction.pug index b060b086..20773463 100644 --- a/views/website/introduction.pug +++ b/views/website/introduction.pug @@ -39,8 +39,8 @@ block content img(src='http://github.com/img/logo.svg').logo nav.menu - a(href='http://github.com/index.html#debugger-io').scrollto Debugger - a(href='http://github.com/index.html#libraries').scrollto Libraries + a(href='http://github.com/#debugger-io').scrollto Debugger + a(href='http://github.com/#libraries-io').scrollto Libraries a(href='http://github.com/introduction').active Introduction a(href='https://community.auth0.com/', target='_blank') Ask a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! From b3e5f02fce438245c8287690028e520b6bbbb49a Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Mon, 23 Mar 2020 08:47:58 +0100 Subject: [PATCH 387/611] Use clean url in link --- views/website/md/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/md/introduction.md b/views/website/md/introduction.md index 2f75e7c5..fe2143fa 100755 --- a/views/website/md/introduction.md +++ b/views/website/md/introduction.md @@ -88,7 +88,7 @@ The output is three Base64-URL strings separated by dots that can be easily pass The following shows a JWT that has the previous header and payload encoded, and it is signed with a secret. ![Encoded JWT](https://cdn.auth0.com/content/jwt/encoded-jwt3.png) -If you want to play with JWT and put these concepts into practice, you can use [jwt.io Debugger](https://jwt.io/index.html#debugger-io) to decode, verify, and generate JWTs. +If you want to play with JWT and put these concepts into practice, you can use [jwt.io Debugger](https://jwt.io/#debugger-io) to decode, verify, and generate JWTs. ![JWT.io Debugger](https://cdn.auth0.com/blog/legacy-app-auth/legacy-app-auth-5.png) From 067ee8cd88047fba355b15d1f3d5605636d92192 Mon Sep 17 00:00:00 2001 From: Yann Crumeyrolle Date: Wed, 1 Apr 2020 18:18:11 +0200 Subject: [PATCH 388/611] Add .Net library JsonWebToken --- views/website/libraries/0-.NET.json | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/views/website/libraries/0-.NET.json b/views/website/libraries/0-.NET.json index 2e841745..e18eaffc 100644 --- a/views/website/libraries/0-.NET.json +++ b/views/website/libraries/0-.NET.json @@ -155,6 +155,38 @@ "gitHubRepoPath": "jwt-dotnet/jwt", "repoUrl": "https://github.com/jwt-dotnet/jwt", "installCommandHtml": "Install-Package
    JWT" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true, + "eddsa": false + }, + "authorUrl": "https://github.com/ycrumeyrolle", + "authorName": "Yann Crumeyrolle", + "gitHubRepoPath": "ycrumeyrolle/jwt", + "repoUrl": "https://github.com/ycrumeyrolle/jwt", + "installCommandHtml": "Install-Package
    JsonWebToken" } ] } From cbec674f871ecfef475964e69337a0ebb45e3220 Mon Sep 17 00:00:00 2001 From: Yann Crumeyrolle Date: Wed, 1 Apr 2020 23:07:58 +0200 Subject: [PATCH 389/611] Remove BR --- views/website/libraries/0-.NET.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/0-.NET.json b/views/website/libraries/0-.NET.json index e18eaffc..a3beef25 100644 --- a/views/website/libraries/0-.NET.json +++ b/views/website/libraries/0-.NET.json @@ -186,7 +186,7 @@ "authorName": "Yann Crumeyrolle", "gitHubRepoPath": "ycrumeyrolle/jwt", "repoUrl": "https://github.com/ycrumeyrolle/jwt", - "installCommandHtml": "Install-Package
    JsonWebToken" + "installCommandHtml": "Install-Package JsonWebToken" } ] } From 068323c0f9d1fe4393b0ebfb90a3c904ff88804e Mon Sep 17 00:00:00 2001 From: Nicolas Mora Date: Thu, 9 Apr 2020 07:55:05 -0400 Subject: [PATCH 390/611] Add rhonabwy library --- views/website/libraries/20-C.json | 34 ++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index 6613fcd4..3e092cf8 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -126,6 +126,38 @@ "gitHubRepoPath": "TomzBench/jsmn-web-tokens", "repoUrl": "https://github.com/TomzBench/jsmn-web-tokens", "installCommandHtml": "git clone https://github.com/TomzBench/jsmn-web-tokens.git && cd jsmn-web-tokens && cmake . && cmake --build . --target install" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true, + "EdDSA": true + }, + "authorUrl": "https://babelouest.github.io/", + "authorName": "babelouest", + "gitHubRepoPath": "babelouest/rhonabwy", + "repoUrl": "https://github.com/babelouest/rhonabwy", + "installCommandHtml": "git clone https://github.com/babelouest/rhonabwy.git && mkdir build cd build && cmake .. && cmake --build . --target install" } ] -} \ No newline at end of file +} From 8b8d60b77afaace5ed90a6f23b8f05d852109baf Mon Sep 17 00:00:00 2001 From: Nicolas Mora Date: Thu, 9 Apr 2020 07:56:47 -0400 Subject: [PATCH 391/611] Fix eddsa case --- views/website/libraries/20-C.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index 3e092cf8..eee0d755 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -151,7 +151,7 @@ "ps256": true, "ps384": true, "ps512": true, - "EdDSA": true + "eddsa": true }, "authorUrl": "https://babelouest.github.io/", "authorName": "babelouest", From dceaa8b2f495c5a1057b0b7372aa78d1d284113d Mon Sep 17 00:00:00 2001 From: Nicolas Mora Date: Fri, 10 Apr 2020 09:31:32 -0400 Subject: [PATCH 392/611] Update rhonabwy claims support and installCommand --- views/website/libraries/20-C.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index eee0d755..fa2c4388 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -132,13 +132,13 @@ "support": { "sign": true, "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, "hs256": true, "hs384": true, "hs512": true, @@ -157,7 +157,7 @@ "authorName": "babelouest", "gitHubRepoPath": "babelouest/rhonabwy", "repoUrl": "https://github.com/babelouest/rhonabwy", - "installCommandHtml": "git clone https://github.com/babelouest/rhonabwy.git && mkdir build cd build && cmake .. && cmake --build . --target install" + "installCommandHtml": "Download release package or install from source" } ] } From 03be71fbe3011e4a25e31d8b6d75be2f9f7fdf6c Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 14 Apr 2020 14:46:44 +0200 Subject: [PATCH 393/611] Add joseswift --- views/website/libraries/19-Swift.json | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/views/website/libraries/19-Swift.json b/views/website/libraries/19-Swift.json index c2373cef..ee588373 100644 --- a/views/website/libraries/19-Swift.json +++ b/views/website/libraries/19-Swift.json @@ -129,6 +129,37 @@ "repoUrl": "https://github.com/IBM-Swift/Swift-JWT", "installCommandHtml": ".package(url:\"https://github.com/IBM-Swift/Swift-JWT/", from: \"3.5.0\")" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": false, + "hs384": false, + "hs512": false, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true + }, + "authorUrl": "https://github.com/airsidemobile", + "authorName": "Airside", + "gitHubRepoPath": "airsidemobile/JOSESwift", + "repoUrl": "https://github.com/airsidemobile/JOSESwift", + "installCommandHtml": "pod 'JOSESwift'" } ] } From 45d982dda0f06480b4f84540f7af972be7162bf6 Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 5 May 2020 16:06:02 +0200 Subject: [PATCH 394/611] Exclude the editor from heap analytics --- views/token-editor-common.pug | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug index 36637470..991402f1 100644 --- a/views/token-editor-common.pug +++ b/views/token-editor-common.pug @@ -8,10 +8,10 @@ small edit the payload and secret .tab-content - #encoded-jwt.box-content.current + #encoded-jwt.box-content.current(heap-ignore="true") .input.js-input include token-editor-warnings.pug - #decoded-jwt.box-content + #decoded-jwt.box-content(heap-ignore="true") .output .jwt-explained.jwt-header p.text-line HEADER: From f67bf6e9313447c141fd6c671560ccd8c2bc8368 Mon Sep 17 00:00:00 2001 From: mikerosner Date: Wed, 6 May 2020 12:14:42 -0400 Subject: [PATCH 395/611] Update Artifact name for - io.jsonwebtoken-jjwt Currently listed artifact version is 0.9.0. It looks like the repo owner changed the artifact name from jjwt to jjwt-root a while back: https://github.com/jwtk/jjwt/blob/master/pom.xml. There are newer versions to the jjwt-root artifact in maven. Before: https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt After: https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-root --- views/website/libraries/3-Java.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index ce33a31f..0ad487ac 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -126,7 +126,7 @@ "authorName": "Les Hazlewood", "gitHubRepoPath": "jwtk/jjwt", "repoUrl": "https://github.com/jwtk/jjwt", - "installCommandHtml": "maven: io.jsonwebtoken / jjwt / 0.9.0" + "installCommandHtml": "maven: io.jsonwebtoken / jjwt-root / 0.11.1" }, { "minimumVersion": null, From 295d2bd472b8446c036c708a59095f04ce007b0f Mon Sep 17 00:00:00 2001 From: nov Date: Mon, 1 Jun 2020 09:03:43 +0900 Subject: [PATCH 396/611] ES256K support --- views/website/libraries/6-Ruby.json | 4 +++- views/website/libraries/support/get-libs-data.js | 2 +- views/website/libraries/support/language-schema.js | 1 + views/website/libraries/template.pug | 5 ++++- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/6-Ruby.json b/views/website/libraries/6-Ruby.json index 090fe54a..c9bf7f33 100644 --- a/views/website/libraries/6-Ruby.json +++ b/views/website/libraries/6-Ruby.json @@ -89,7 +89,9 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": false, + "es256k": true }, "authorUrl": "https://github.com/nov", "authorName": "Nov Matake", diff --git a/views/website/libraries/support/get-libs-data.js b/views/website/libraries/support/get-libs-data.js index bfbcc0e9..e4b3c175 100644 --- a/views/website/libraries/support/get-libs-data.js +++ b/views/website/libraries/support/get-libs-data.js @@ -50,7 +50,7 @@ function getLibs() { orderedKeys = ['hs256', 'hs384', 'hs512', 'rs256', 'rs384', 'rs512', 'es256', 'es384', 'es512' - 'ps256', 'ps384', 'ps512', 'eddsa']; + 'ps256', 'ps384', 'ps512', 'eddsa', 'es256k']; for(let i = 0; i < orderedKeys.length; ++i) { r.support[orderedKeys[i]] = diff --git a/views/website/libraries/support/language-schema.js b/views/website/libraries/support/language-schema.js index 52d579ec..7fabbb68 100644 --- a/views/website/libraries/support/language-schema.js +++ b/views/website/libraries/support/language-schema.js @@ -86,6 +86,7 @@ module.exports = { ps384: { type: 'boolean' }, ps512: { type: 'boolean' }, eddsa: { type: 'boolean' }, + es256k: { type: 'boolean' }, } } } diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index 1fc80912..343c1975 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -84,7 +84,10 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) p i(class=lib.support.eddsa ? 'icon-budicon-500' : (lib.support.eddsa !== undefined ? 'icon-budicon-501' : 'icon-unknown')) | EdDSA - + p + i(class=lib.support.es256k ? 'icon-budicon-500' : (lib.support.es256k !== undefined ? 'icon-budicon-501' : 'icon-unknown')) + | ES256K + .author-info .maintainer if lib.authorUrl From 297ae0a300022c92dae6c06076d2a1312e276c16 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 29 Jan 2020 15:02:43 +0100 Subject: [PATCH 397/611] feat: es256k tick --- views/website/libraries/1-Python.json | 3 ++- views/website/libraries/2-Node.js.json | 6 +++-- views/website/libraries/24-PHP.json | 8 ++++--- views/website/libraries/4-JavaScript.json | 3 ++- .../libraries/support/get-libs-data.js | 7 +++--- views/website/libraries/template.pug | 24 +++++++++---------- 6 files changed, 29 insertions(+), 22 deletions(-) diff --git a/views/website/libraries/1-Python.json b/views/website/libraries/1-Python.json index f0de596c..2f94d066 100644 --- a/views/website/libraries/1-Python.json +++ b/views/website/libraries/1-Python.json @@ -90,7 +90,8 @@ "ps256": true, "ps384": true, "ps512": true, - "eddsa": true + "eddsa": true, + "es256k": true }, "authorUrl": "https://github.com/simo5", "authorName": "Simo Sorce", diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json index 757a2f47..08584714 100644 --- a/views/website/libraries/2-Node.js.json +++ b/views/website/libraries/2-Node.js.json @@ -28,7 +28,8 @@ "ps256": true, "ps384": true, "ps512": true, - "eddsa": false + "eddsa": false, + "es256k": false }, "authorUrl": "https://github.com/auth0", "authorName": "Auth0", @@ -60,7 +61,8 @@ "ps256": true, "ps384": true, "ps512": true, - "eddsa": true + "eddsa": true, + "es256k": true }, "authorUrl": "https://github.com/panva", "authorName": "Filip Skokan", diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index bf0bc9b6..a0645bb2 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -120,7 +120,8 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "es256k": false }, "authorUrl": "https://github.com/Spomky-Labs/jose", "authorName": "Spomky", @@ -182,8 +183,9 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true, - "eddsa": true + "ps512": true, + "eddsa": true, + "es256k": true }, "authorUrl": "https://github.com/Spomky", "authorName": "Spomky", diff --git a/views/website/libraries/4-JavaScript.json b/views/website/libraries/4-JavaScript.json index f2abb58a..25b4db71 100644 --- a/views/website/libraries/4-JavaScript.json +++ b/views/website/libraries/4-JavaScript.json @@ -87,7 +87,8 @@ "ps256": true, "ps384": true, "ps512": true, - "eddsa": false + "eddsa": false, + "es256k": false }, "authorUrl": "https://github.com/cisco", "authorName": "Cisco Systems", diff --git a/views/website/libraries/support/get-libs-data.js b/views/website/libraries/support/get-libs-data.js index e4b3c175..5df52911 100644 --- a/views/website/libraries/support/get-libs-data.js +++ b/views/website/libraries/support/get-libs-data.js @@ -48,9 +48,10 @@ function getLibs() { } orderedKeys = ['hs256', 'hs384', 'hs512', - 'rs256', 'rs384', 'rs512', - 'es256', 'es384', 'es512' - 'ps256', 'ps384', 'ps512', 'eddsa', 'es256k']; + 'rs256', 'rs384', 'rs512', + 'es256', 'es256k', 'es384', 'es512', + 'ps256', 'ps384', 'ps512', + 'eddsa']; for(let i = 0; i < orderedKeys.length; ++i) { r.support[orderedKeys[i]] = diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index 343c1975..519dcda3 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -54,6 +54,15 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) p i(class=lib.support.hs512 ? 'icon-budicon-500' : 'icon-budicon-501') | HS512 + p + i(class=lib.support.ps256 ? 'icon-budicon-500' : (lib.support.ps256 !== undefined ? 'icon-budicon-501' : 'icon-unknown')) + | PS256 + p + i(class=lib.support.ps384 ? 'icon-budicon-500' : (lib.support.ps384 !== undefined ? 'icon-budicon-501' : 'icon-unknown')) + | PS384 + p + i(class=lib.support.ps512 ? 'icon-budicon-500' : (lib.support.ps512 !== undefined ? 'icon-budicon-501' : 'icon-unknown')) + | PS512 p i(class=lib.support.rs256 ? 'icon-budicon-500' : 'icon-budicon-501') | RS256 @@ -66,27 +75,18 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) p i(class=lib.support.es256 ? 'icon-budicon-500' : 'icon-budicon-501') | ES256 + p + i(class=lib.support.es256k ? 'icon-budicon-500' : (lib.support.es256k !== undefined ? 'icon-budicon-501' : 'icon-unknown')) + | ES256K p i(class=lib.support.es384 ? 'icon-budicon-500' : 'icon-budicon-501') | ES384 p i(class=lib.support.es512 ? 'icon-budicon-500' : 'icon-budicon-501') | ES512 - p - i(class=lib.support.ps256 ? 'icon-budicon-500' : (lib.support.ps256 !== undefined ? 'icon-budicon-501' : 'icon-unknown')) - | PS256 - p - i(class=lib.support.ps384 ? 'icon-budicon-500' : (lib.support.ps384 !== undefined ? 'icon-budicon-501' : 'icon-unknown')) - | PS384 - p - i(class=lib.support.ps512 ? 'icon-budicon-500' : (lib.support.ps512 !== undefined ? 'icon-budicon-501' : 'icon-unknown')) - | PS512 p i(class=lib.support.eddsa ? 'icon-budicon-500' : (lib.support.eddsa !== undefined ? 'icon-budicon-501' : 'icon-unknown')) | EdDSA - p - i(class=lib.support.es256k ? 'icon-budicon-500' : (lib.support.es256k !== undefined ? 'icon-budicon-501' : 'icon-unknown')) - | ES256K .author-info .maintainer From 93d11b2d4762e74a05b778ca24d5eb8a0f32b3d3 Mon Sep 17 00:00:00 2001 From: Renato Santos Date: Sun, 21 Jun 2020 11:10:25 -0300 Subject: [PATCH 398/611] Update 5-Perl.json Perl Crypt::JWT distribution supports ES256K since 0.027 2020-06-05 EdDSA since 0.026 2019-02-02 --- views/website/libraries/5-Perl.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/5-Perl.json b/views/website/libraries/5-Perl.json index 13e28668..c25f9068 100644 --- a/views/website/libraries/5-Perl.json +++ b/views/website/libraries/5-Perl.json @@ -27,7 +27,9 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "es256k": true, + "EdDSA": true }, "authorUrl": "https://github.com/DCIT", "authorName": "Karel Miko", From afad1aa6203600659b0aa1b23c185400e0830695 Mon Sep 17 00:00:00 2001 From: Renato Santos Date: Mon, 22 Jun 2020 13:00:09 -0300 Subject: [PATCH 399/611] Change EdDSA to lowercase! Sorry! --- views/website/libraries/5-Perl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/5-Perl.json b/views/website/libraries/5-Perl.json index c25f9068..c9333a82 100644 --- a/views/website/libraries/5-Perl.json +++ b/views/website/libraries/5-Perl.json @@ -29,7 +29,7 @@ "ps384": true, "ps512": true, "es256k": true, - "EdDSA": true + "eddsa": true }, "authorUrl": "https://github.com/DCIT", "authorName": "Karel Miko", From 855e712c344d32c772af328dc860b3f966d7ff47 Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 12:24:22 -0600 Subject: [PATCH 400/611] adding alt attribute to jwt logo asset --- views/website/index.pug | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/index.pug b/views/website/index.pug index 00cc1f5c..f8981b34 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -8,8 +8,8 @@ block content span a.brand(href='http://github.com/') - img(src='http://github.com/img/pic_logo.svg').icon - img(src='http://github.com/img/logo.svg').logo + img(src='http://github.com/img/pic_logo.svg' alt='JWT logo').icon + img(src='http://github.com/img/logo.svg' alt='JWT logo').logo nav.menu a(href='#debugger-io').scrollto Debugger From 8ad7c2b050867bd04b2cb0e7655ebcb528c46080 Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 12:25:27 -0600 Subject: [PATCH 401/611] updating alt with jwt logo mark context --- views/website/index.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/index.pug b/views/website/index.pug index f8981b34..6bd230a4 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -21,7 +21,7 @@ block content .social a.a0(href='https://auth0.com/why-auth0?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') span.by-text Crafted by - img(src='http://github.com/img/pic_logo_ft.svg', alt='Token Based Authentication') + img(src='http://github.com/img/pic_logo_ft.svg', alt='JWT logo mark - Token Based Authentication') span.crafted-by__question-mark ? a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") From f5c1ed0b29d42361d558e82e9bdd000ae1a508ea Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 12:26:23 -0600 Subject: [PATCH 402/611] updating logo mark alt attribute location --- views/website/index.pug | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/index.pug b/views/website/index.pug index 6bd230a4..08b23e7d 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -21,7 +21,7 @@ block content .social a.a0(href='https://auth0.com/why-auth0?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') span.by-text Crafted by - img(src='http://github.com/img/pic_logo_ft.svg', alt='JWT logo mark - Token Based Authentication') + img(src='http://github.com/img/pic_logo_ft.svg', alt='Token Based Authentication') span.crafted-by__question-mark ? a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") @@ -31,7 +31,7 @@ block content section.banner-jwt .container a.logo(href='http://github.com/') - img(src='http://github.com/img/pic_logo.svg', alt='Token Based Authentication') + img(src='http://github.com/img/pic_logo.svg', alt='JWT logo mark - Token Based Authentication') p | JSON Web Tokens are an open, industry standard  From 2af184100fedcac91d6478f71b332a5eae28d48f Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 12:27:18 -0600 Subject: [PATCH 403/611] adding crafted by auth0 alt attribute context --- views/website/index.pug | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/index.pug b/views/website/index.pug index 08b23e7d..bd27b0dd 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -21,12 +21,12 @@ block content .social a.a0(href='https://auth0.com/why-auth0?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') span.by-text Crafted by - img(src='http://github.com/img/pic_logo_ft.svg', alt='Token Based Authentication') + img(src='http://github.com/img/pic_logo_ft.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication') span.crafted-by__question-mark ? a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") | Supported by - img(src='http://github.com/img/ico_logo.svg', alt='Token Based Authentication') + img(src='http://github.com/img/ico_logo.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication') section.banner-jwt .container From 79ebdcecf9f4407b421e6d69cb2a94deb0f610a9 Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 12:41:22 -0600 Subject: [PATCH 404/611] replacing span with label element with for attribute --- views/website/token-editor.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/token-editor.pug b/views/website/token-editor.pug index 76e5aef0..7632a8cf 100644 --- a/views/website/token-editor.pug +++ b/views/website/token-editor.pug @@ -10,7 +10,7 @@ section#debugger-io.debugger-jwt .selections .algorithm - span Algorithm + label(for='algorithm-select') Algorithm .jwt-select include ../token-editor-algorithms.pug From 643f10460782010d5449d497206bde07b7ef28fa Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 12:55:49 -0600 Subject: [PATCH 405/611] replacing span with label element with for attribute on libraries --- views/website/libraries.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries.pug b/views/website/libraries.pug index dda33d78..0cd137cc 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -4,7 +4,7 @@ section#libraries-io.libraries-jwt h1 Libraries for Token Signing/Verification .filter - span Filter by + label(for='libraries-select') Filter by .jwt-select select#libraries-select option(value='*', selected='') All From 679494d989fda1b58757725b848eb46f5b7ee4ae Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 13:02:44 -0600 Subject: [PATCH 406/611] adding alt and title to minimumVersion question mark icon linking to blog post --- views/website/libraries/template.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index 519dcda3..369b93ee 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -7,7 +7,7 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) .version p Minimum Version #{lib.minimumVersion} a(href='https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/', target='_blank', data-metrics-lib-id=lib.repoUrl) - img(src='http://github.com/img/ico_question.svg') + img(src='http://github.com/img/ico_question.svg' alt='question mark icon' title='Learn more about vulnerabilities in JWT libraries') div(class={ 'panel-body': true, mversion: !!lib.minimumVersion }) .column p From edde7dea582837ce584f525623dc1ceaa49e92fe Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 13:07:41 -0600 Subject: [PATCH 407/611] adding alt attributes and text to all lang cards logo file images --- views/website/libraries/template.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index 369b93ee..7761468e 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -1,6 +1,6 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) .panel-heading(data-control) - img(src=lang.image) + img(src=lang.image alt=`${lang.name} logo`) h3(style=`background-color: ${lang.bgColor}`) #{lang.name} .panel-wrap(data-content) if lib.minimumVersion From 5a2d9c681f87bc8b40266026e0e2c3222e4bcd1f Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 13:16:16 -0600 Subject: [PATCH 408/611] adding alt text to jwt brand assets imagery, badges, logo files --- views/website/assets.pug | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/views/website/assets.pug b/views/website/assets.pug index c04b9c0e..50c2dc29 100644 --- a/views/website/assets.pug +++ b/views/website/assets.pug @@ -5,14 +5,14 @@ section.sources h2 Badges .hold a(href='http://jwt.io/img/badge.svg', target='_blank') - img(src='http://github.com/img/badge.svg') + img(src='http://github.com/img/badge.svg' alt='View on JWT.io badge logo') .text-hold a(href='http://jwt.io/img/badge.svg', target='_blank') i.icon-budicon-722 p http://jwt.io/img/badge.svg .hold a(href='http://jwt.io/img/badge-compatible.svg', target='_blank') - img(src='http://github.com/img/badge-compatible.svg') + img(src='http://github.com/img/badge-compatible.svg' alt='JWT compatible badge logo') .text-hold a(href='http://jwt.io/img/badge-compatible.svg', target='_blank') i.icon-budicon-722 @@ -21,20 +21,20 @@ section.sources h2 Logotype .hold a(href='http://jwt.io/img/icon.svg', target='_blank') - img(src='http://github.com/img/icon.svg') + img(src='http://github.com/img/icon.svg' alt='JWT logo mark icon') .text-hold a(href='http://jwt.io/img/icon.svg', target='_blank') i.icon-budicon-722 p http://jwt.io/img/icon.svg .hold a(href='http://jwt.io/img/logo-asset.svg', target='_blank') - img(src='http://github.com/img/logo-asset.svg') + img(src='http://github.com/img/logo-asset.svg' alt='JWT logo') .text-hold a(href='http://jwt.io/img/logo-asset.svg', target='_blank') i.icon-budicon-722 p http://jwt.io/img/logo-asset.svg .column.tshirt h2 Store - img(src='http://github.com/img/pic_tshirt.png') + img(src='http://github.com/img/pic_tshirt.png' alt='JWT logo mark t-shirt') a.buy(href='http://swag.auth0.com/', target='_blank') Buy T-Shirt \ No newline at end of file From 66d112968ed576381aeeaf6b3f701fcafeb6f4e2 Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 13:16:29 -0600 Subject: [PATCH 409/611] adding alt to counter section auth0 logo file --- views/website/counter.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/counter.pug b/views/website/counter.pug index c98a0acc..915a1bac 100644 --- a/views/website/counter.pug +++ b/views/website/counter.pug @@ -1,6 +1,6 @@ .tokens-created .container - img(src='http://github.com/img/pic_logo_ft.svg') + img(src='http://github.com/img/pic_logo_ft.svg' alt='Auth0 logo') p JWT.io is brought to you by a(href='https://auth0.com/signup', target="_blank") Auth0 p Securely implement authentication with JWTs using Auth0 on any stack and any device in less than 10 minutes. From 34da8eebc1f8dbefdd66ac4b6738bc5ec5b85c3a Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 13:19:15 -0600 Subject: [PATCH 410/611] updating alt on auth0 logo supported by references throughout --- views/extension/index.pug | 2 +- views/website/index.pug | 2 +- views/website/introduction.pug | 2 +- views/website/layout.pug | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/views/extension/index.pug b/views/extension/index.pug index 28c92576..46a32922 100644 --- a/views/extension/index.pug +++ b/views/extension/index.pug @@ -38,7 +38,7 @@ block content .pull-left a(target="_blank" href="https://auth0.com/?utm_source=jwt-ext&utm_campaign=badge") | Supported by   - img(src="http://github.com/img/ico_logo.svg") + img(src="http://github.com/img/ico_logo.svg" alt='Supported by Auth0 - JWT.io Token Based Authentication') a  -  a.keep-deco(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/blob/master/LICENSE.txt', target="_blank") License diff --git a/views/website/index.pug b/views/website/index.pug index bd27b0dd..0bf40546 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -26,7 +26,7 @@ block content a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") | Supported by - img(src='http://github.com/img/ico_logo.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication') + img(src='http://github.com/img/ico_logo.svg', alt='Supported by Auth0 - JWT.io Token Based Authentication') section.banner-jwt .container diff --git a/views/website/introduction.pug b/views/website/introduction.pug index 20773463..d86885e9 100644 --- a/views/website/introduction.pug +++ b/views/website/introduction.pug @@ -53,7 +53,7 @@ block content a.supported(href='https://auth0.com/', target="_blank") | Supported by - img(src='http://github.com/img/ico_logo.svg') + img(src='http://github.com/img/ico_logo.svg' alt='Supported by Auth0 - JWT.io Token Based Authentication') section.banner-jwt .container diff --git a/views/website/layout.pug b/views/website/layout.pug index dccaeeb6..e6727527 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -60,7 +60,7 @@ html(lang='en') .column a(href='https://auth0.com/', target="_blank") | Supported by - img(src='http://github.com/img/ico_logo.svg') + img(src='http://github.com/img/ico_logo.svg' alt='Supported by Auth0 - JWT.io Token Based Authentication') .column.pull-request span Missing something? a(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/tree/master/views', target="_blank") Send a Pull Request From 6d49d841d487d109f0210fd298328d606557ff18 Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 13:20:59 -0600 Subject: [PATCH 411/611] adding alt attribute throughout other layouts and where missing --- views/website/introduction.pug | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/views/website/introduction.pug b/views/website/introduction.pug index d86885e9..722107ae 100644 --- a/views/website/introduction.pug +++ b/views/website/introduction.pug @@ -35,8 +35,8 @@ block content span a.brand(href='http://github.com/') - img(src='http://github.com/img/pic_logo.svg').icon - img(src='http://github.com/img/logo.svg').logo + img(src='http://github.com/img/pic_logo.svg' alt='JWT logo').icon + img(src='http://github.com/img/logo.svg' alt='JWT logo').logo nav.menu a(href='http://github.com/#debugger-io').scrollto Debugger @@ -48,7 +48,7 @@ block content .social a.a0(href='https://auth0.com/why-auth0?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') span.by-text Crafted by - img(src='http://github.com/img/pic_logo_ft.svg', alt='Token Based Authentication') + img(src='http://github.com/img/pic_logo_ft.svg', alt='Crafted by Auth0 - Token Based Authentication') span.crafted-by__question-mark ? a.supported(href='https://auth0.com/', target="_blank") @@ -58,7 +58,7 @@ block content section.banner-jwt .container a.logo(href='http://github.com/') - img(src='http://github.com/img/pic_logo.svg') + img(src='http://github.com/img/pic_logo.svg' alt='JWT logo') h1 Introduction to JSON Web Tokens From 778844b40198f6cc27cea2369372a1f6d3d7cb40 Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 13:25:22 -0600 Subject: [PATCH 412/611] adding title attribute with descriptive text to assets link section --- views/website/assets.pug | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/views/website/assets.pug b/views/website/assets.pug index 50c2dc29..a70fd96b 100644 --- a/views/website/assets.pug +++ b/views/website/assets.pug @@ -4,33 +4,33 @@ section.sources .column.badges h2 Badges .hold - a(href='http://jwt.io/img/badge.svg', target='_blank') + a(href='http://jwt.io/img/badge.svg', target='_blank' title='Download View on JWT.io badge logo') img(src='http://github.com/img/badge.svg' alt='View on JWT.io badge logo') .text-hold - a(href='http://jwt.io/img/badge.svg', target='_blank') + a(href='http://jwt.io/img/badge.svg', target='_blank' title='Download View on JWT.io badge logo') i.icon-budicon-722 p http://jwt.io/img/badge.svg .hold - a(href='http://jwt.io/img/badge-compatible.svg', target='_blank') + a(href='http://jwt.io/img/badge-compatible.svg', target='_blank' title='Download JWT compatible badge logo') img(src='http://github.com/img/badge-compatible.svg' alt='JWT compatible badge logo') .text-hold - a(href='http://jwt.io/img/badge-compatible.svg', target='_blank') + a(href='http://jwt.io/img/badge-compatible.svg', target='_blank' title='Download JWT compatible badge logo') i.icon-budicon-722 p http://jwt.io/img/badge-compatible.svg .column.logotype h2 Logotype .hold - a(href='http://jwt.io/img/icon.svg', target='_blank') + a(href='http://jwt.io/img/icon.svg', target='_blank' title='Download JWT logo mark icon') img(src='http://github.com/img/icon.svg' alt='JWT logo mark icon') .text-hold - a(href='http://jwt.io/img/icon.svg', target='_blank') + a(href='http://jwt.io/img/icon.svg', target='_blank' title='Download JWT logo mark icon') i.icon-budicon-722 p http://jwt.io/img/icon.svg .hold - a(href='http://jwt.io/img/logo-asset.svg', target='_blank') + a(href='http://jwt.io/img/logo-asset.svg', target='_blank' title='Download JWT logo') img(src='http://github.com/img/logo-asset.svg' alt='JWT logo') .text-hold - a(href='http://jwt.io/img/logo-asset.svg', target='_blank') + a(href='http://jwt.io/img/logo-asset.svg', target='_blank' title='Download JWT logo') i.icon-budicon-722 p http://jwt.io/img/logo-asset.svg .column.tshirt From fe9dab7764badd8085c93af5abfc8ab2414fa13a Mon Sep 17 00:00:00 2001 From: Scott Mathson Date: Wed, 1 Jul 2020 15:37:42 -0600 Subject: [PATCH 413/611] updating non-descriptive learn more cta to blog post --- views/website/libraries.pug | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 0cd137cc..3aa27a19 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -16,10 +16,9 @@ section#libraries-io.libraries-jwt option(value=`.${lang.uniqueClass}`) #{lang.name} .warning - b Warning: - | Critical vulnerabilities in JSON Web Token libraries with asymmetric keys. - a(href='https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/') - | Learn more + b Warning: + a(href='https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/' title='Learn more about JWT vulnerabilities') Learn more about critical vulnerabilities + | in JSON Web Token libraries with asymmetric keys. svg(height='48', viewbox='0 0 48 48', width='48', xmlns='http://www.w3.org/2000/svg') path(d='M-838-2232H562v3600H-838z', fill='none') From baa0495d76fed5609a4b87bffcc497cc839f325f Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 2 Jul 2020 15:24:56 +0200 Subject: [PATCH 414/611] Add sitemap XML --- Gruntfile.js | 507 ++++++++++++++++++++++++++------------------------- sitemap.xml | 13 ++ 2 files changed, 268 insertions(+), 252 deletions(-) create mode 100644 sitemap.xml diff --git a/Gruntfile.js b/Gruntfile.js index 3c2de48a..5fa53c56 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,277 +1,280 @@ -const extensionManifest = require('./manifest.json'); -const getLanguages = - require('./views/website/libraries/support/get-languages.js'); +const extensionManifest = require("./manifest.json"); +const getLanguages = require("./views/website/libraries/support/get-languages.js"); -module.exports = grunt => { - grunt.loadNpmTasks('grunt-contrib-copy'); - grunt.loadNpmTasks('grunt-contrib-stylus'); - grunt.loadNpmTasks('grunt-contrib-pug'); - grunt.loadNpmTasks('grunt-webpack'); - grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-mocha-test'); - grunt.loadNpmTasks('grunt-contrib-connect'); - grunt.loadNpmTasks('grunt-exec'); - grunt.loadNpmTasks('grunt-crx'); +module.exports = (grunt) => { + grunt.loadNpmTasks("grunt-contrib-copy"); + grunt.loadNpmTasks("grunt-contrib-stylus"); + grunt.loadNpmTasks("grunt-contrib-pug"); + grunt.loadNpmTasks("grunt-webpack"); + grunt.loadNpmTasks("grunt-contrib-watch"); + grunt.loadNpmTasks("grunt-contrib-clean"); + grunt.loadNpmTasks("grunt-mocha-test"); + grunt.loadNpmTasks("grunt-contrib-connect"); + grunt.loadNpmTasks("grunt-exec"); + grunt.loadNpmTasks("grunt-crx"); - grunt.initConfig({ - clean: { - website: [ 'dist/website' ], - extension: ['dist/extension'] - }, + grunt.initConfig({ + clean: { + website: ["dist/website"], + extension: ["dist/extension"], + }, - copy: { - website: { - files: [{ - expand: true, - cwd: 'img/website', - src: ['**'], - dest: 'dist/website/img' - }, { - expand: true, - src: ['fonts/**', 'opensearch.xml'], - dest: 'dist/website' - }, { - expand: true, - flatten: true, - src: [ - 'node_modules/bootstrap/dist/css/bootstrap.min.css', - 'node_modules/codemirror/lib/codemirror.css', - 'node_modules/codemirror/addon/lint/lint.css', - 'css/budicon.css', - 'css/google-roboto-mono.css' - ], - dest: 'dist/website/css/' - }] - }, - extension: { - files: [{ - expand: true, - flatten: true, - src: ['manifest.json', 'html/extension/bg.html'], - dest: 'dist/extension' - }, { - expand: true, - cwd: 'img/extension', - src: ['**'], - dest: 'dist/extension/img' - }, { - expand: true, - src: ['fonts/**'], - dest: 'dist/extension' - }, { - expand: true, - flatten: true, - src: [ - 'node_modules/bootstrap/dist/css/bootstrap.min.css', - 'node_modules/codemirror/lib/codemirror.css', - 'node_modules/codemirror/addon/lint/lint.css', - 'css/budicon.css', - 'css/google-roboto-mono.css' - ], - dest: 'dist/extension/css/' - }] - } - }, + copy: { + website: { + files: [{ + expand: true, + cwd: "img/website", + src: ["**"], + dest: "dist/website/img", + }, + { + expand: true, + src: ["fonts/**", "opensearch.xml"], + dest: "dist/website", + }, + { + expand: true, + flatten: true, + src: [ + "node_modules/bootstrap/dist/css/bootstrap.min.css", + "node_modules/codemirror/lib/codemirror.css", + "node_modules/codemirror/addon/lint/lint.css", + "css/budicon.css", + "css/google-roboto-mono.css", + ], + dest: "dist/website/css/", + }, + { + src: ["sitemap.xml"], + dest: "dist/website/", + }, + ], + }, + extension: { + files: [{ + expand: true, + flatten: true, + src: ["manifest.json", "html/extension/bg.html"], + dest: "dist/extension", + }, + { + expand: true, + cwd: "img/extension", + src: ["**"], + dest: "dist/extension/img", + }, + { + expand: true, + src: ["fonts/**"], + dest: "dist/extension", + }, + { + expand: true, + flatten: true, + src: [ + "node_modules/bootstrap/dist/css/bootstrap.min.css", + "node_modules/codemirror/lib/codemirror.css", + "node_modules/codemirror/addon/lint/lint.css", + "css/budicon.css", + "css/google-roboto-mono.css", + ], + dest: "dist/extension/css/", + }, + ], + }, + }, - crx: { - pack: { - src: "dist/extension/**/*", - dest: 'dist/chrome-jwt-debugger-extension-v' + - `${extensionManifest.version}.zip` - } - }, + crx: { + pack: { + src: "dist/extension/**/*", + dest: "dist/chrome-jwt-debugger-extension-v" + + `${extensionManifest.version}.zip`, + }, + }, - exec: { - firefoxExtensionPack: { - command: 'node_modules/web-ext/bin/web-ext build ' + - '--source-dir=dist/extension --artifacts-dir=dist ' + - '--overwrite-dest' - }, - renameFirefoxExtension: { - command: `mv dist/jwt_debugger-${extensionManifest.version}.zip ` + - 'dist/firefox-jwt-debugger-extension-' + - `v${extensionManifest.version}.zip` - } - }, + exec: { + firefoxExtensionPack: { + command: "node_modules/web-ext/bin/web-ext build " + + "--source-dir=dist/extension --artifacts-dir=dist " + + "--overwrite-dest", + }, + renameFirefoxExtension: { + command: `mv dist/jwt_debugger-${extensionManifest.version}.zip ` + + "dist/firefox-jwt-debugger-extension-" + + `v${extensionManifest.version}.zip`, + }, + }, - stylus: { - website: { - files: { - 'dist/website/css/index.css': 'stylus/website/index.styl' - } - }, - extension: { - files: { - 'dist/extension/css/index.css': 'stylus/extension/index.styl' - } - } - }, + stylus: { + website: { + files: { + "dist/website/css/index.css": "stylus/website/index.styl", + }, + }, + extension: { + files: { + "dist/extension/css/index.css": "stylus/extension/index.styl", + }, + }, + }, - pug: { - website: { - options: { - //pretty: true, - data: { - languages: getLanguages() - } + pug: { + website: { + options: { + //pretty: true, + data: { + languages: getLanguages(), + }, + }, + files: { + "dist/website/index.html": "views/website/index.pug", + "dist/website/introduction/index.html": "views/website/introduction.pug", + }, + }, + extension: { + files: { + "dist/extension/index.html": "views/extension/index.pug", + }, + }, }, - files: { - 'dist/website/index.html': 'views/website/index.pug', - 'dist/website/introduction/index.html': - 'views/website/introduction.pug' - } - }, - extension: { - files: { - 'dist/extension/index.html': 'views/extension/index.pug' - } - } - }, - webpack: { - websiteProd: require('./webpack.website-prod.js'), - websiteDev: require('./webpack.website-dev.js'), - extensionProd: require('./webpack.extension-prod.js'), - extensionDev: require('./webpack.extension-dev.js'), - unitTests: require('./webpack.website-unit-tests.js') - }, + webpack: { + websiteProd: require("./webpack.website-prod.js"), + websiteDev: require("./webpack.website-dev.js"), + extensionProd: require("./webpack.extension-prod.js"), + extensionDev: require("./webpack.extension-dev.js"), + unitTests: require("./webpack.website-unit-tests.js"), + }, - watch: { - websiteSrc: { - files: ['src/*.js', 'src/website/**', 'src/editor/**'], - tasks: 'webpack:websiteDev' - }, - extensionSrc: { - files: ['src/*.js', 'src/extension/**', 'src/editor/**'], - tasks: 'webpack:extensionDev' - }, - websiteImg: { - files: [ 'img/website/**' ], - tasks: 'copy:website' - }, - extensionImg: { - files: [ 'img/extension/**' ], - tasks: 'copy:extension' - }, - opensearch: { - files: 'opensearch.xml', - tasks: 'copy:website' - }, - assets: { - files: [ - 'fonts/**', - 'node_modules/bootstrap/dist/css/bootstrap.min.css', - 'node_modules/codemirror/lib/codemirror.css', - 'node_modules/codemirror/addon/lint/lint.css', - 'css/budicon.css' - ], - tasks: 'copy' - }, - websiteViews: { - files: [ - 'stylus/*.styl', - 'stylus/website/**', - 'views/*.pug', - 'views/website/**' - ], - tasks: ['build-website-views'] - }, - extensionViews: { - files: [ - 'stylus/*.styl', - 'stylus/extension/**', - // Yes, we still share styles with the website, it's really hard - // to refactor them out without breaking stuff - 'stylus/website/**', - 'views/*.pug', - 'views/extension/**' - ], - tasks: ['build-extension-views'] - } - }, + watch: { + websiteSrc: { + files: ["src/*.js", "src/website/**", "src/editor/**"], + tasks: "webpack:websiteDev", + }, + extensionSrc: { + files: ["src/*.js", "src/extension/**", "src/editor/**"], + tasks: "webpack:extensionDev", + }, + websiteImg: { + files: ["img/website/**"], + tasks: "copy:website", + }, + extensionImg: { + files: ["img/extension/**"], + tasks: "copy:extension", + }, + opensearch: { + files: "opensearch.xml", + tasks: "copy:website", + }, + assets: { + files: [ + "fonts/**", + "node_modules/bootstrap/dist/css/bootstrap.min.css", + "node_modules/codemirror/lib/codemirror.css", + "node_modules/codemirror/addon/lint/lint.css", + "css/budicon.css", + ], + tasks: "copy", + }, + websiteViews: { + files: [ + "stylus/*.styl", + "stylus/website/**", + "views/*.pug", + "views/website/**", + ], + tasks: ["build-website-views"], + }, + extensionViews: { + files: [ + "stylus/*.styl", + "stylus/extension/**", + // Yes, we still share styles with the website, it's really hard + // to refactor them out without breaking stuff + "stylus/website/**", + "views/*.pug", + "views/extension/**", + ], + tasks: ["build-extension-views"], + }, + }, - mochaTest: { - unit: { - options: {}, - src: ['dist/test/unit-tests.js'] - }, - functional: { - options: { - // Higher default timeout to account for some animations - timeout: 10000 + mochaTest: { + unit: { + options: {}, + src: ["dist/test/unit-tests.js"], + }, + functional: { + options: { + // Higher default timeout to account for some animations + timeout: 10000, + }, + src: ["test/functional/**.js"], + }, }, - src: ['test/functional/**.js'] - } - }, - connect: { - website: { - options: { - hostname: '127.0.0.1', - base: 'dist/website', - } - } - }, - }); + connect: { + website: { + options: { + hostname: "127.0.0.1", + base: "dist/website", + }, + }, + }, + }); - grunt.registerTask('build-website-views', [ - 'stylus:website', - 'pug:website' - ]); + grunt.registerTask("build-website-views", ["stylus:website", "pug:website"]); - grunt.registerTask('build-extension-views', [ - 'stylus:extension', - 'pug:extension' - ]); + grunt.registerTask("build-extension-views", [ + "stylus:extension", + "pug:extension", + ]); - grunt.registerTask('build-website', [ - 'clean:website', - 'copy:website', - 'build-website-views', - 'webpack:websiteProd' - ]); + grunt.registerTask("build-website", [ + "clean:website", + "copy:website", + "build-website-views", + "webpack:websiteProd", + ]); - grunt.registerTask('build-website-dev', [ - 'clean:website', - 'copy:website', - 'build-website-views', - 'webpack:websiteDev' - ]); + grunt.registerTask("build-website-dev", [ + "clean:website", + "copy:website", + "build-website-views", + "webpack:websiteDev", + ]); - grunt.registerTask('build-extension', [ - 'clean:extension', - 'copy:extension', - 'build-extension-views', - 'webpack:extensionProd', - 'crx:pack', - 'exec:firefoxExtensionPack', - 'exec:renameFirefoxExtension' - ]); + grunt.registerTask("build-extension", [ + "clean:extension", + "copy:extension", + "build-extension-views", + "webpack:extensionProd", + "crx:pack", + "exec:firefoxExtensionPack", + "exec:renameFirefoxExtension", + ]); - grunt.registerTask('build-extension-dev', [ - 'clean:extension', - 'copy:extension', - 'build-extension-views', - 'webpack:extensionDev' - ]); + grunt.registerTask("build-extension-dev", [ + "clean:extension", + "copy:extension", + "build-extension-views", + "webpack:extensionDev", + ]); - grunt.registerTask('build', ['build-website', 'build-extension']); + grunt.registerTask("build", ["build-website", "build-extension"]); - grunt.registerTask('build-dev', [ - 'build-website-dev', - 'build-extension-dev' - ]); + grunt.registerTask("build-dev", ["build-website-dev", "build-extension-dev"]); - grunt.registerTask('unit-tests', ['webpack:unitTests', 'mochaTest:unit']); + grunt.registerTask("unit-tests", ["webpack:unitTests", "mochaTest:unit"]); - grunt.registerTask('functional-tests', [ - 'build-website-dev', - 'connect:website', - 'mochaTest:functional' - ]); + grunt.registerTask("functional-tests", [ + "build-website-dev", + "connect:website", + "mochaTest:functional", + ]); - grunt.registerTask('test', ['unit-tests', 'functional-tests']); + grunt.registerTask("test", ["unit-tests", "functional-tests"]); - grunt.registerTask('default', ['build-dev', 'connect:website', 'watch']); -}; + grunt.registerTask("default", ["build-dev", "connect:website", "watch"]); +}; \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..c5993ed7 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,13 @@ + + + + https://jwt.io/ + 2020-07-02T07:37:12+00:00 + 1.00 + + + https://jwt.io/introduction/ + 2020-07-02T07:37:12+00:00 + 0.80 + + \ No newline at end of file From 67db240165202285f63204e8aae9772d7415d0bc Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 2 Jul 2020 15:25:07 +0200 Subject: [PATCH 415/611] Add SEO Schema --- views/schema.pug | 26 ++++++++++++++++++++++++++ views/website/layout.pug | 1 + 2 files changed, 27 insertions(+) create mode 100644 views/schema.pug diff --git a/views/schema.pug b/views/schema.pug new file mode 100644 index 00000000..b5fde170 --- /dev/null +++ b/views/schema.pug @@ -0,0 +1,26 @@ +script(type="application/ld+json"). + [{ + "@context": "http://www.schema.org/", + "@type": "WebSite", + "name": "JSON Web Tokens - jwt.io", + "url": "https://jwt.io/" + }, { + "@context": "https://schema.org/", + "@type": "BreadcrumbList", + "itemListElement": [{ + "@type": "ListItem", + "position": 1, + "name": "JSON Web Token Debugger", + "item": "https://jwt.io/#debugger-io" + },{ + "@type": "ListItem", + "position": 2, + "name": "JSON Web Token Libraries", + "item": "https://jwt.io/#libraries-io" + },{ + "@type": "ListItem", + "position": 3, + "name": "Introduction to JSON Web Tokens", + "item": "https://jwt.io/introduction/" + }] + }] \ No newline at end of file diff --git a/views/website/layout.pug b/views/website/layout.pug index e6727527..f6c83b2a 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -2,6 +2,7 @@ doctype html html(lang='en') head include ../title.pug + include ../schema.pug //- Google Verification Code meta(name="google-site-verification", content="cFjJt_KK4v_TKnCZ3hcuLlEUBBk4RLT0iByrpjCsvLA") From bd6c7f55b104e8db1279cbd92ee8e05950cd8e8c Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 2 Jul 2020 15:35:55 +0200 Subject: [PATCH 416/611] Add breadcrumb descriptions --- views/schema.pug | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/views/schema.pug b/views/schema.pug index b5fde170..9874ca18 100644 --- a/views/schema.pug +++ b/views/schema.pug @@ -3,24 +3,28 @@ script(type="application/ld+json"). "@context": "http://www.schema.org/", "@type": "WebSite", "name": "JSON Web Tokens - jwt.io", - "url": "https://jwt.io/" + "url": "https://jwt.io/", + "description": "Decode, verify and generate JSON Web Tokens with our online debugger." }, { "@context": "https://schema.org/", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, - "name": "JSON Web Token Debugger", - "item": "https://jwt.io/#debugger-io" + "name": "Debugger", + "item": "https://jwt.io/#debugger-io", + "description": "Decode, verify and generate JSON Web Tokens with our online debugger." },{ "@type": "ListItem", "position": 2, - "name": "JSON Web Token Libraries", - "item": "https://jwt.io/#libraries-io" + "name": "Libraries", + "item": "https://jwt.io/#libraries-io", + "description": "An overview of Libraries for Token Signing/Verification in a variety of different programming languages." },{ "@type": "ListItem", "position": 3, - "name": "Introduction to JSON Web Tokens", - "item": "https://jwt.io/introduction/" + "name": "Introduction", + "item": "https://jwt.io/introduction/", + "description": "An introduction to JSON Web Tokens." }] }] \ No newline at end of file From 516c5552b5309ba89baff8ff842b8ee0a6ca43d9 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 2 Jul 2020 15:48:39 +0200 Subject: [PATCH 417/611] Add Auth0 schema ingo --- views/schema.pug | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/views/schema.pug b/views/schema.pug index 9874ca18..dee249e8 100644 --- a/views/schema.pug +++ b/views/schema.pug @@ -4,7 +4,21 @@ script(type="application/ld+json"). "@type": "WebSite", "name": "JSON Web Tokens - jwt.io", "url": "https://jwt.io/", - "description": "Decode, verify and generate JSON Web Tokens with our online debugger." + "description": "Decode, verify and generate JSON Web Tokens with our online debugger.", + "image": "https://jwt.io/img/pic_logo.svg", + "publisher": { + "@type": "Organization", + "name": "Auth0", + "legalName": "Auth0 Inc.", + "url": "https://auth0.com/", + "logo": "https://cdn.auth0.com/website/assets/pages/press/img/resources/auth0-logo-main-6001cece68.svg", + "foundingDate": "2013", + "sameAs": [ + "https://twitter.com/auth0", + "https://www.facebook.com/getauth0/", + "https://www.linkedin.com/company/auth0" + ] + } }, { "@context": "https://schema.org/", "@type": "BreadcrumbList", @@ -27,4 +41,5 @@ script(type="application/ld+json"). "item": "https://jwt.io/introduction/", "description": "An introduction to JSON Web Tokens." }] - }] \ No newline at end of file + }] + \ No newline at end of file From 2a6a0553d025180ebcbe938c688253db2a4b37e2 Mon Sep 17 00:00:00 2001 From: Daniel DeGroff Date: Sat, 4 Jul 2020 11:49:44 -0600 Subject: [PATCH 418/611] Update FusionAuth details Update to 3.5.0 with support for PS256, PS384, and PS512. --- views/website/libraries/3-Java.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index 0ad487ac..f70f12b7 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -149,15 +149,15 @@ "es256": true, "es384": true, "es512": true, - "ps256": false, - "ps384": false, - "ps512": false + "ps256": true, + "ps384": true, + "ps512": true }, "authorUrl": "https://github.com/fusionauth", "authorName": "FusionAuth", "gitHubRepoPath": "fusionauth/fusionauth-jwt", "repoUrl": "https://github.com/fusionauth/fusionauth-jwt", - "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 3.1.0" + "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 3.5.0" }, { "minimumVersion": null, From d95b757bfd53a8fc606d681d7954319cf6d30921 Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Wed, 8 Jul 2020 10:19:51 +0200 Subject: [PATCH 419/611] Update schema.pug --- views/schema.pug | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/views/schema.pug b/views/schema.pug index dee249e8..a5d5c06d 100644 --- a/views/schema.pug +++ b/views/schema.pug @@ -25,21 +25,47 @@ script(type="application/ld+json"). "itemListElement": [{ "@type": "ListItem", "position": 1, + "name": "jwt.io", + "item": "https://jwt.io/", + "description": "JWT.IO allows you to decode, verify and generate JWT." + }, { + "@type": "ListItem", + "position": 2, "name": "Debugger", "item": "https://jwt.io/#debugger-io", "description": "Decode, verify and generate JSON Web Tokens with our online debugger." + }] + }, { + "@context": "https://schema.org/", + "@type": "BreadcrumbList", + "itemListElement": [{ + "@type": "ListItem", + "position": 1, + "name": "jwt.io", + "item": "https://jwt.io/", + "description": "JWT.IO allows you to decode, verify and generate JWT." },{ "@type": "ListItem", "position": 2, "name": "Libraries", "item": "https://jwt.io/#libraries-io", "description": "An overview of Libraries for Token Signing/Verification in a variety of different programming languages." + }] + }, { + "@context": "https://schema.org/", + "@type": "BreadcrumbList", + "itemListElement": [{ + "@type": "ListItem", + "position": 1, + "name": "jwt.io", + "item": "https://jwt.io/", + "description": "JWT.IO allows you to decode, verify and generate JWT." },{ "@type": "ListItem", - "position": 3, + "position": 2, "name": "Introduction", "item": "https://jwt.io/introduction/", "description": "An introduction to JSON Web Tokens." }] }] - \ No newline at end of file + From 6d575919b878b96e81f0ac63d9a4a2174b4d1e71 Mon Sep 17 00:00:00 2001 From: Tanner Date: Wed, 29 Jul 2020 17:31:58 -0400 Subject: [PATCH 420/611] Update Swift vapor/jwt-kit Update to the just released Vapor JWTKit 4.0.0: https://github.com/vapor/jwt-kit --- views/website/libraries/19-Swift.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/views/website/libraries/19-Swift.json b/views/website/libraries/19-Swift.json index ee588373..1b10c86c 100644 --- a/views/website/libraries/19-Swift.json +++ b/views/website/libraries/19-Swift.json @@ -53,19 +53,19 @@ "rs256": true, "rs384": true, "rs512": true, - "es256": false, - "es384": false, - "es512": false, + "es256": true, + "es384": true, + "es512": true, "ps256": false, "ps384": false, "ps512": false }, - "authorUrl": "https://github.com/siemensikkema", - "authorName": "Siemen Sikkema", - "gitHubRepoPath": "vapor/jwt", - "repoUrl": "https://github.com/vapor/jwt", + "authorUrl": "https://github.com/vapor", + "authorName": "Vapor", + "gitHubRepoPath": "vapor/jwt-kit", + "repoUrl": "https://github.com/vapor/jwt-kit", "installCommandHtml": - ".Package(url:\"https://github.com/vapor/jwt.git/", majorVersion: 1)" + ".package(url: \"https://github.com/vapor/jwt-kit.git/", from: \"4.0.0\")" }, { "minimumVersion": null, From 3e020e969521158aeb135cb944ca9f82c4d2a995 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 6 Aug 2020 11:07:23 +0200 Subject: [PATCH 421/611] Link do the developer page instead of the Auth0 homepage --- views/extension/index.pug | 2 +- views/website/introduction.pug | 4 ++-- views/website/layout.pug | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/views/extension/index.pug b/views/extension/index.pug index 46a32922..3e956e40 100644 --- a/views/extension/index.pug +++ b/views/extension/index.pug @@ -36,7 +36,7 @@ block content .colophon.clearfix .pull-left - a(target="_blank" href="https://auth0.com/?utm_source=jwt-ext&utm_campaign=badge") + a(target="_blank" href="https://auth0.com/developers/?utm_source=jwt-ext&utm_campaign=badge") | Supported by   img(src="http://github.com/img/ico_logo.svg" alt='Supported by Auth0 - JWT.io Token Based Authentication') a  -  diff --git a/views/website/introduction.pug b/views/website/introduction.pug index 722107ae..76e96e4d 100644 --- a/views/website/introduction.pug +++ b/views/website/introduction.pug @@ -46,12 +46,12 @@ block content a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! .social - a.a0(href='https://auth0.com/why-auth0?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') + a.a0(href='https://auth0.com/developers?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') span.by-text Crafted by img(src='http://github.com/img/pic_logo_ft.svg', alt='Crafted by Auth0 - Token Based Authentication') span.crafted-by__question-mark ? - a.supported(href='https://auth0.com/', target="_blank") + a.supported(href='https://auth0.com/developers/', target="_blank") | Supported by img(src='http://github.com/img/ico_logo.svg' alt='Supported by Auth0 - JWT.io Token Based Authentication') diff --git a/views/website/layout.pug b/views/website/layout.pug index f6c83b2a..5ea00d6b 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -59,7 +59,7 @@ html(lang='en') .container .columns .column - a(href='https://auth0.com/', target="_blank") + a(href='https://auth0.com/developers/', target="_blank") | Supported by img(src='http://github.com/img/ico_logo.svg' alt='Supported by Auth0 - JWT.io Token Based Authentication') .column.pull-request From 71f45e04913bf0f13abd17f0d64df80b9c483685 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 6 Aug 2020 11:15:40 +0200 Subject: [PATCH 422/611] Update npm deps --- package-lock.json | 5607 +++++++++++++++++++++------------------------ 1 file changed, 2670 insertions(+), 2937 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4e9c4536..e3c257c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,31 +5,44 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.4" } }, - "@babel/core": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz", - "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==", + "@babel/compat-data": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", + "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helpers": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.5", - "@babel/types": "^7.4.4", - "convert-source-map": "^1.1.0", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz", + "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.1", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.0", + "@babel/types": "^7.11.0", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.11", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" @@ -44,741 +57,941 @@ "ms": "^2.1.1" } }, - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, "@babel/generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", - "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", + "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", "dev": true, "requires": { - "@babel/types": "^7.4.4", + "@babel/types": "^7.11.0", "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.4", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" } }, - "@babel/helper-call-delegate": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", - "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", - "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.4.4", - "lodash": "^4.17.11" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", + "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-hoist-variables": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", - "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.10.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", - "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.11.0" } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-module-transforms": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz", - "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/types": "^7.4.4", - "lodash": "^4.17.11" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz", - "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.19" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", + "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-replace-supers": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz", - "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", "dev": true, "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", + "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.11.0" } }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helpers": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", - "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", "dev": true, "requires": { - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" - }, - "dependencies": { - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - } } }, "@babel/parser": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", - "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.2.tgz", + "integrity": "sha512-Vuj/+7vLo6l1Vi7uuO+1ngCDNeVmNbTngcJFKCR/oEtz8tKz0CJxZEGmPt9KcIloZhOZ3Zit6xbpXT2MDlS9Vw==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", + "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", + "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz", - "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", + "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", + "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", - "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz", - "integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz", - "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.11" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz", - "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.4.4", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.4.4", - "@babel/helper-split-export-declaration": "^7.4.4", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz", - "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", - "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", - "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", - "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", - "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", - "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", - "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz", - "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz", - "integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", - "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", "dev": true, "requires": { - "regexp-tree": "^0.1.6" + "@babel/helper-create-regexp-features-plugin": "^7.10.4" } }, "@babel/plugin-transform-new-target": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", - "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", - "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" } }, "@babel/plugin-transform-parameters": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", - "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.4.4", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", - "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", - "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", "dev": true, "requires": { - "regenerator-transform": "^0.14.0" + "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", - "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", + "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", - "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", + "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", - "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/polyfill": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz", - "integrity": "sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.10.4.tgz", + "integrity": "sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg==", "dev": true, "requires": { "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.2" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", - "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==", - "dev": true - } + "regenerator-runtime": "^0.13.4" } }, "@babel/preset-env": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.5.tgz", - "integrity": "sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz", + "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.11.0", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-export-namespace-from": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.11.0", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.11.0", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.11.0", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.4.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.4.4", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.4.4", - "@babel/plugin-transform-classes": "^7.4.4", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.4.4", "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.4.4", - "@babel/plugin-transform-modules-systemjs": "^7.4.4", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", - "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.4.4", - "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-reserved-words": "^7.2.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.4.4", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.4.4", "@babel/types": "^7.4.4", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" + "esutils": "^2.0.2" } }, "@babel/register": { @@ -796,12 +1009,6 @@ "source-map-support": "^0.5.9" }, "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", - "dev": true - }, "find-cache-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", @@ -888,32 +1095,41 @@ } } }, + "@babel/runtime": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", - "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", + "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/types": "^7.4.4", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.0", + "@babel/types": "^7.11.0", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.11" + "lodash": "^4.17.19" }, "dependencies": { "debug": { @@ -926,21 +1142,21 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, "@babel/types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", - "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", + "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, @@ -981,9 +1197,9 @@ } }, "@sinonjs/commons": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.4.0.tgz", - "integrity": "sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", + "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -999,14 +1215,14 @@ } }, "@sinonjs/samsam": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.1.tgz", - "integrity": "sha512-wRSfmyd81swH0hA1bxJZJ57xr22kC07a1N4zuIL47yTS04bDk6AoCkczcqHEjcRPmJ+FruGJ9WBQiJwMtIElFw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", + "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", "dev": true, "requires": { - "@sinonjs/commons": "^1.0.2", + "@sinonjs/commons": "^1.3.0", "array-from": "^2.1.1", - "lodash": "^4.17.11" + "lodash": "^4.17.15" } }, "@sinonjs/text-encoding": { @@ -1016,9 +1232,9 @@ "dev": true }, "@types/babel-types": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz", - "integrity": "sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.8.tgz", + "integrity": "sha512-jvu8g4LR7+p6ao30RhTREnEhHxmP4/R9D9/rOR/Kq14FztORty9SKgtOZUNZNMB9CXLxZ54EWu4dArUE8WdTsw==", "dev": true }, "@types/babylon": { @@ -1030,185 +1246,190 @@ "@types/babel-types": "*" } }, + "@types/json-schema": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "dev": true + }, "@types/node": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.4.tgz", - "integrity": "sha512-j8YL2C0fXq7IONwl/Ud5Kt0PeXw22zGERt+HSSnwbKOJVsAGkEz3sFCYwaF9IOuoG1HOtE0vKCj6sXF7Q0+Vaw==", + "version": "14.0.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", + "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==", "dev": true }, "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@webassemblyjs/ast": "1.9.0" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, @@ -1243,13 +1464,12 @@ "dev": true }, "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "dev": true, + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" + "mime-types": "~2.1.24", + "negotiator": "0.6.2" } }, "acorn": { @@ -1258,12 +1478,6 @@ "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", "dev": true }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "dev": true - }, "acorn-globals": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", @@ -1282,9 +1496,9 @@ } }, "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, "adbkit": { @@ -1443,12 +1657,6 @@ "wrap-ansi": "^2.0.0" } }, - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", - "dev": true - }, "decamelize": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", @@ -1464,14 +1672,11 @@ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "dev": true }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "glob": { "version": "7.1.3", @@ -1487,6 +1692,12 @@ "path-is-absolute": "^1.0.0" } }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", @@ -1566,27 +1777,27 @@ } }, "adm-zip": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", - "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", "dev": true }, "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dev": true, "requires": { "es6-promisify": "^5.0.0" } }, "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" @@ -1599,9 +1810,9 @@ "dev": true }, "ajv-keywords": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", - "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true }, "ajv-merge-patch": { @@ -1718,12 +1929,12 @@ }, "dependencies": { "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "dev": true, "requires": { - "lodash": "^4.14.0" + "lodash": "^4.17.14" } } } @@ -1801,12 +2012,6 @@ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", "dev": true }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -1884,6 +2089,14 @@ "bn.js": "^4.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "assert": { @@ -1932,9 +2145,9 @@ "dev": true }, "ast-types": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.1.tgz", - "integrity": "sha512-b+EeK0WlzrSmpMw5jktWvQGxblpWnvMrV+vOp69RLjzGiHwWV0vgq75DPKtUjppKni3yWwSW8WLGV3Ch/XIWcQ==", + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", + "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", "dev": true }, "async": { @@ -1950,9 +2163,9 @@ "dev": true }, "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "dev": true }, "asynckit": { @@ -1974,9 +2187,9 @@ "dev": true }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", "dev": true }, "babel-code-frame": { @@ -2009,6 +2222,12 @@ "supports-color": "^2.0.0" } }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -2018,9 +2237,9 @@ } }, "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, "requires": { "babel-code-frame": "^6.26.0", @@ -2033,21 +2252,21 @@ "babel-traverse": "^6.26.0", "babel-types": "^6.26.0", "babylon": "^6.18.0", - "convert-source-map": "^1.5.0", - "debug": "^2.6.8", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", "json5": "^0.5.1", "lodash": "^4.17.4", "minimatch": "^3.0.4", "path-is-absolute": "^1.0.1", - "private": "^0.1.7", + "private": "^0.1.8", "slash": "^1.0.0", - "source-map": "^0.5.6" + "source-map": "^0.5.7" }, "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true } } @@ -2123,15 +2342,16 @@ } }, "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" } }, "babel-messages": { @@ -2143,6 +2363,15 @@ "babel-runtime": "^6.22.0" } }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", @@ -2213,6 +2442,14 @@ "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } } }, "babel-template": { @@ -2226,14 +2463,6 @@ "babel-types": "^6.26.0", "babylon": "^6.18.0", "lodash": "^4.17.4" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } } }, "babel-traverse": { @@ -2253,12 +2482,6 @@ "lodash": "^4.17.4" }, "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", @@ -2355,9 +2578,9 @@ } }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", "dev": true }, "base64url": { @@ -2367,12 +2590,12 @@ "dev": true }, "basic-auth": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", - "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "batch": { @@ -2402,25 +2625,36 @@ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, - "bl": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", - "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, + "optional": true, "requires": { - "readable-stream": "^2.0.5" + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", "dev": true }, "body": { @@ -2450,12 +2684,6 @@ "bytes": "1", "string_decoder": "0.10" } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true } } }, @@ -2474,30 +2702,6 @@ "qs": "6.7.0", "raw-body": "2.4.0", "type-is": "~1.6.17" - }, - "dependencies": { - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - } } }, "boolbase": { @@ -2621,14 +2825,6 @@ "des.js": "^1.0.0", "inherits": "^2.0.1", "safe-buffer": "^5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } } }, "browserify-rsa": { @@ -2639,21 +2835,65 @@ "requires": { "bn.js": "^4.1.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } } }, "browserify-zlib": { @@ -2666,27 +2906,43 @@ } }, "browserslist": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.1.tgz", - "integrity": "sha512-1MC18ooMPRG2UuVFJTHFIAkk6mpByJfxCrnUyvSlu/hyQSFHMrlhM02SzNuCV+quTP4CKmqtOMAIjrifrpBJXQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", + "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000971", - "electron-to-chromium": "^1.3.137", - "node-releases": "^1.1.21" + "caniuse-lite": "^1.0.30001093", + "electron-to-chromium": "^1.3.488", + "escalade": "^3.0.1", + "node-releases": "^1.1.58" } }, "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", "dev": true, "requires": { "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "ieee754": "^1.1.4" } }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -2699,6 +2955,12 @@ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", "dev": true }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -2755,18 +3017,13 @@ "y18n": "^4.0.0" }, "dependencies": { - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "glob": "^7.1.3" } } } @@ -2804,25 +3061,15 @@ "dev": true }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, "caniuse-lite": { - "version": "1.0.30000973", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000973.tgz", - "integrity": "sha512-/F3t/Yo8LEdRSEPCmI15fLu5vepVh9UCg/9inJXF5AAfW7xRRJkbaM2ut52iRMQMnGCLQouLbFdbOA+VEFOIsg==", + "version": "1.0.30001111", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001111.tgz", + "integrity": "sha512-xnDje2wchd/8mlJu8sXvWxOGvMgv+uT3iZ3bkIAynKOzToCssWCmkz/ZIkQBs/2pUB4uwnJKVORWQ31UkbVjOg==", "dev": true }, "capture-stack-trace": { @@ -2862,9 +3109,9 @@ } }, "chai-arrays": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.0.0.tgz", - "integrity": "sha512-jWAvZu1BV8tL3pj0iosBECzzHEg+XB1zSnMjJGX83bGi/1GlGdDO7J/A0sbBBS6KJT0FVqZIzZW9C6WLiMkHpQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.2.0.tgz", + "integrity": "sha512-4awrdGI2EH8owJ9I58PXwG4N56/FiM8bsn4CVSNEgr4GKAM6Kq5JPVApUbhUBjDakbZNuRvV7quRSC38PWq/tg==", "dev": true }, "chai-as-promised": { @@ -2933,9 +3180,9 @@ } }, "chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, "requires": { "anymatch": "^2.0.0", @@ -2943,561 +3190,24 @@ "braces": "^2.3.2", "fsevents": "^1.2.7", "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" } }, "is-glob": { @@ -3516,17 +3226,17 @@ "dev": true }, "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true } } }, "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, "chrome-trace-event": { @@ -3578,9 +3288,9 @@ } }, "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -3610,15 +3320,15 @@ } }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "dev": true }, "clipboard-polyfill": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/clipboard-polyfill/-/clipboard-polyfill-2.8.1.tgz", - "integrity": "sha512-2qclMYSM/L5Wv8mNeF2rvvtaKFJiG3y5mI2wwsFIUt0yE2hWjNg6qvsRo6D8TTaLTNXDfEI47TyaxSxjwD8ADQ==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/clipboard-polyfill/-/clipboard-polyfill-2.8.6.tgz", + "integrity": "sha512-kz/1ov+PXsBpGnW9XJH3dLWdYj12FpXqO89Dngm/GRPoI36E/tnYs6N0YPTEhxM9WHAlFiN5eoyIVuv5nzKXvg==", "dev": true }, "cliui": { @@ -3674,15 +3384,9 @@ "dev": true }, "codemirror": { - "version": "5.47.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.47.0.tgz", - "integrity": "sha512-kV49Fr+NGFHFc/Imsx6g180hSlkGhuHxTSDDmDHOuyln0MQYFLixDY4+bFkBVeCEiepYfDimAF/e++9jPJk4QA==", - "dev": true - }, - "coffeescript": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", - "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=", + "version": "5.56.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.56.0.tgz", + "integrity": "sha512-MfKVmYgifXjQpLSgpETuih7A7WTTIsxvKfSLGseTY5+qt0E1UD1wblZGM6WLenORo8sgmf+3X+WTe2WF7mufyw==", "dev": true }, "collection-visit": { @@ -3736,13 +3440,10 @@ } }, "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "common-tags": { "version": "1.8.0", @@ -3824,14 +3525,14 @@ } }, "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, "requires": { "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", "utils-merge": "1.0.1" } }, @@ -3842,13 +3543,10 @@ "dev": true }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "constantinople": { "version": "3.1.2", @@ -3874,13 +3572,6 @@ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "requires": { "safe-buffer": "5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } } }, "content-type": { @@ -3895,10 +3586,13 @@ "dev": true }, "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } }, "cookie": { "version": "0.4.0", @@ -3922,6 +3616,17 @@ "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "copy-descriptor": { @@ -3931,36 +3636,29 @@ "dev": true }, "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", "dev": true }, "core-js-compat": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.3.tgz", - "integrity": "sha512-EP018pVhgwsKHz3YoN1hTq49aRe+h017Kjz0NQz3nXV0cCRMvH3fLQl+vEPGr4r4J5sk4sU3tUC7U1aqTCeJeA==", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", "dev": true, "requires": { - "browserslist": "^4.6.0", - "core-js-pure": "3.1.3", - "semver": "^6.1.0" + "browserslist": "^4.8.5", + "semver": "7.0.0" }, "dependencies": { "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true } } }, - "core-js-pure": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.3.tgz", - "integrity": "sha512-k3JWTrcQBKqjkjI0bkfXS0lbpWPxYuHWfMMjC1VDmzU4Q58IwSbuXSo99YO/hUHlw/EB4AlfA2PVxOGkrIq6dA==", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -3968,10 +3666,13 @@ "dev": true }, "crc": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz", - "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=", - "dev": true + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "requires": { + "buffer": "^5.1.0" + } }, "crc32-stream": { "version": "2.0.0", @@ -3984,13 +3685,21 @@ } }, "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, "requires": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "create-error-class": { @@ -4085,6 +3794,26 @@ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", "dev": true }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "css-parse": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", @@ -4109,28 +3838,20 @@ "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", "dev": true }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "dev": true, "requires": { - "es5-ext": "^0.10.9" + "es5-ext": "^0.10.50", + "type": "^1.0.1" } }, "dashdash": { @@ -4143,37 +3864,16 @@ } }, "data-uri-to-buffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.1.tgz", - "integrity": "sha512-OkVVLrerfAKZlW2ZZ3Ve2y65jgiWqBKsTfUIAFbn8nVbPcCZg6l6gikKlEYv0kXcmzqGm6mFq/Jf2vriuEkv8A==", - "dev": true, - "requires": { - "@types/node": "^8.0.7" - }, - "dependencies": { - "@types/node": { - "version": "8.10.49", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.49.tgz", - "integrity": "sha512-YX30JVx0PvSmJ3Eqr74fYLGeBxD+C7vIL20ek+GGGLJeUbVYRUW3EzyAXpIRA0K8c8o0UWqR/GwEFYiFoz1T8w==", - "dev": true - } - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", "dev": true }, "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" - } + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true }, "debounce": { "version": "1.1.0", @@ -4211,10 +3911,18 @@ } }, "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } }, "deep-extend": { "version": "0.6.0", @@ -4345,9 +4053,9 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -4395,6 +4103,14 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "dispensary": { @@ -4420,12 +4136,12 @@ "dev": true }, "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "dev": true, "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.14" } }, "cliui": { @@ -4531,9 +4247,9 @@ } }, "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", "dev": true }, "domain-browser": { @@ -4577,13 +4293,13 @@ } }, "dtrace-provider": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz", - "integrity": "sha1-3JObTT4GIM/gwc2APQ0tftBP/QQ=", + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", + "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", "dev": true, "optional": true, "requires": { - "nan": "^2.10.0" + "nan": "^2.14.0" } }, "duplexer3": { @@ -4629,15 +4345,15 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.146", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.146.tgz", - "integrity": "sha512-BrUq08sx7eR4PCwLbjFxXmjcbDro6DSoc1pN8VCxq76U+o9JQzJlWH/NVtcpAqcktwpE5CVvMyqHqTQfCETNoQ==", + "version": "1.3.523", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.523.tgz", + "integrity": "sha512-D4/3l5DpciddD92IDRtpLearQSGzly8FwBJv+nITvLH8YJrFabpDFe4yuiOJh2MS4/EsXqyQTXyw1toeYPtshQ==", "dev": true }, "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -4647,6 +4363,14 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "email-validator": { @@ -4656,9 +4380,9 @@ "dev": true }, "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, "encodeurl": { @@ -4667,32 +4391,55 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, "requires": { - "iconv-lite": "~0.4.13" + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } } }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { "once": "^1.4.0" } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "entities": { @@ -4711,13 +4458,12 @@ } }, "error": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", - "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", + "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", "dev": true, "requires": { - "string-template": "~0.2.1", - "xtend": "~4.0.0" + "string-template": "~0.2.1" } }, "error-ex": { @@ -4730,23 +4476,28 @@ } }, "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -4755,14 +4506,14 @@ } }, "es5-ext": { - "version": "0.10.50", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", - "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", "dev": true, "requires": { "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" } }, "es6-error": { @@ -4812,9 +4563,9 @@ }, "dependencies": { "es6-promise": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", - "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true } } @@ -4830,30 +4581,48 @@ "es6-iterator": "~2.0.1", "es6-symbol": "3.1.1", "event-emitter": "~0.3.5" + }, + "dependencies": { + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + } } }, "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "^1.0.1", + "ext": "^1.1.2" } }, "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "dev": true, "requires": { "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.1" } }, + "escalade": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -4866,24 +4635,18 @@ "dev": true }, "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dev": true, "requires": { - "esprima": "^3.1.3", + "esprima": "^4.0.1", "estraverse": "^4.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4966,24 +4729,10 @@ "ms": "^2.1.1" } }, - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "strip-ansi": { @@ -5007,9 +4756,9 @@ }, "dependencies": { "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", "dev": true }, "acorn-jsx": { @@ -5243,12 +4992,6 @@ "strip-ansi": "^3.0.0" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -5338,9 +5081,9 @@ }, "dependencies": { "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true } } @@ -5352,12 +5095,20 @@ "dev": true }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "esrecurse": { @@ -5370,15 +5121,15 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "etag": { @@ -5415,9 +5166,9 @@ "dev": true }, "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", "dev": true }, "evp_bytestokey": { @@ -5532,131 +5283,10 @@ "send": "0.17.1", "serve-static": "1.14.1", "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - } + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" } }, "express-sslify": { @@ -5664,6 +5294,23 @@ "resolved": "https://registry.npmjs.org/express-sslify/-/express-sslify-1.2.0.tgz", "integrity": "sha1-MOhLzu0VV+sYdnK74UMKCioQDZw=" }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -5768,15 +5415,15 @@ } }, "extract-zip": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", - "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", "dev": true, "requires": { - "concat-stream": "1.6.2", - "debug": "2.6.9", - "mkdirp": "0.5.1", - "yauzl": "2.4.1" + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" } }, "extsprintf": { @@ -5786,9 +5433,9 @@ "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-json-parse": { @@ -5798,18 +5445,26 @@ "dev": true }, "fast-json-patch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.1.0.tgz", - "integrity": "sha512-PipOsAKamRw7+CXtKiieehyjUeDVPJ5J7b2kdJYerEf6TSUQoD2ijpVyZ88KQm5YXziff4h762bz3+vzf56khg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.2.1.tgz", + "integrity": "sha512-4j5uBaTnsYAV5ebkidvxiLUYOwjQ+JSFljeqfTxCrH9bDmlCQaOJFS84oDJ2rAXZq2yskmk3ORfoP9DCwqFNig==", "dev": true, "requires": { - "deep-equal": "^1.0.1" + "fast-deep-equal": "^2.0.1" + }, + "dependencies": { + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + } } }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -5825,9 +5480,9 @@ "dev": true }, "fast-safe-stringify": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz", - "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", "dev": true }, "faye-websocket": { @@ -5840,18 +5495,18 @@ } }, "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "dev": true, "requires": { "pend": "~1.2.0" } }, "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, "figures": { @@ -5909,17 +5564,16 @@ } }, "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true, + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.1", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", "unpipe": "~1.0.0" } }, @@ -6023,12 +5677,6 @@ "requires": { "lodash": "^4.14.0" } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true } } }, @@ -6066,6 +5714,17 @@ "graceful-fs": "^4.1.2", "rimraf": "~2.6.2", "write": "^0.2.1" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "flatstr": { @@ -6097,32 +5756,6 @@ "requires": { "inherits": "^2.0.3", "readable-stream": "^2.3.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "for-in": { @@ -6186,6 +5819,12 @@ "readable-stream": "^2.0.0" } }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "fs-extra": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", @@ -6249,12 +5888,6 @@ "isarray": "0.0.1", "string_decoder": "~0.10.x" } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true } } }, @@ -6360,6 +5993,12 @@ "is-property": "^1.0.0" } }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -6378,12 +6017,6 @@ "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==", "dev": true }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -6391,54 +6024,17 @@ "dev": true }, "get-uri": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.3.tgz", - "integrity": "sha512-x5j6Ks7FOgLD/GlvjKwgu7wdmMR55iuRHhn8hj/+gA+eSbxQvZ+AEomq+3MgVEZj1vpi738QahGbCCSIDtXtkw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", + "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==", "dev": true, "requires": { - "data-uri-to-buffer": "2", - "debug": "4", + "data-uri-to-buffer": "1", + "debug": "2", "extend": "~3.0.2", "file-uri-to-path": "1", "ftp": "~0.3.10", - "readable-stream": "3" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "readable-stream": "2" } }, "get-value": { @@ -6482,6 +6078,12 @@ "shelljs": "0.7.7" }, "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, "shelljs": { "version": "0.7.7", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", @@ -6496,15 +6098,15 @@ } }, "glob": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.2", + "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -6520,21 +6122,13 @@ } }, "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "dev": true, "requires": { "min-document": "^2.19.0", - "process": "~0.5.1" - }, - "dependencies": { - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", - "dev": true - } + "process": "^0.11.10" } }, "global-dirs": { @@ -6577,36 +6171,14 @@ "dev": true }, "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", "dev": true, "requires": { "glob": "~7.1.1", "lodash": "~4.17.10", "minimatch": "~3.0.2" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } } }, "got": { @@ -6629,9 +6201,9 @@ } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, "graceful-readlink": { @@ -6641,12 +6213,12 @@ "dev": true }, "graphlib": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.7.tgz", - "integrity": "sha512-TyI9jIy2J4j0qgPmOOrHTCtpPqJGN/aurBwc6ZT+bRii+di1I+Wv3obRhVrmBEXet+qkMaEX67dXrwsd3QQM6w==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", "dev": true, "requires": { - "lodash": "^4.17.5" + "lodash": "^4.17.15" } }, "growl": { @@ -6662,46 +6234,32 @@ "dev": true }, "grunt": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.4.tgz", - "integrity": "sha512-PYsMOrOC+MsdGEkFVwMaMyc6Ob7pKmq+deg1Sjr+vvMWp35sztfwKE7qoN51V+UEtHsyNuMcGdgMLFkBHvMxHQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.2.1.tgz", + "integrity": "sha512-zgJjn9N56tScvRt/y0+1QA+zDBnKTrkpyeSBqQPLcZvbqTD/oyGMrdZQXmm6I3828s+FmPvxc3Xv+lgKFtudOw==", "dev": true, "requires": { - "coffeescript": "~1.10.0", - "dateformat": "~1.0.12", + "dateformat": "~3.0.3", "eventemitter2": "~0.4.13", - "exit": "~0.1.1", + "exit": "~0.1.2", "findup-sync": "~0.3.0", - "glob": "~7.0.0", - "grunt-cli": "~1.2.0", + "glob": "~7.1.6", + "grunt-cli": "~1.3.2", "grunt-known-options": "~1.1.0", "grunt-legacy-log": "~2.0.0", "grunt-legacy-util": "~1.1.1", "iconv-lite": "~0.4.13", - "js-yaml": "~3.13.0", - "minimatch": "~3.0.2", - "mkdirp": "~0.5.1", + "js-yaml": "~3.14.0", + "minimatch": "~3.0.4", + "mkdirp": "~1.0.4", "nopt": "~3.0.6", - "path-is-absolute": "~1.0.0", - "rimraf": "~2.6.2" + "rimraf": "~3.0.2" }, "dependencies": { - "grunt-cli": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", - "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", - "dev": true, - "requires": { - "findup-sync": "~0.3.0", - "grunt-known-options": "~1.1.0", - "nopt": "~3.0.6", - "resolve": "~1.1.0" - } - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true } } @@ -6720,9 +6278,9 @@ }, "dependencies": { "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", "dev": true, "requires": { "abbrev": "1", @@ -6742,12 +6300,12 @@ }, "dependencies": { "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } } } @@ -6896,19 +6454,13 @@ }, "dependencies": { "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.14" } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true } } }, @@ -7001,12 +6553,12 @@ "dev": true }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "dev": true, "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, @@ -7041,9 +6593,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, "has-value": { @@ -7088,13 +6640,48 @@ } }, "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } } }, "hash.js": { @@ -7114,9 +6701,9 @@ "dev": true }, "highlight.js": { - "version": "9.15.8", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.8.tgz", - "integrity": "sha512-RrapkKQWwE+wKdF73VsOa2RQdIoO3mxwJ4P8mhbI6KYJUraUHRKM5w5zQQKXNk0xNL4UVRdulV9SBJcmzJNzVA==", + "version": "9.18.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.3.tgz", + "integrity": "sha512-zBZAmhSupHIl5sITeMqIJnYCDfAEc3Gdkqj65wC1lpI468MMQeeQkhcIAvk+RylAkxrCcI9xy9piHiXeQ1BdzQ==", "dev": true }, "hmac-drbg": { @@ -7156,9 +6743,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "htmlparser2": { @@ -7176,9 +6763,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -7186,47 +6773,39 @@ "util-deprecate": "^1.0.1" } }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" } } } }, "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true, + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { - "depd": "1.1.1", + "depd": "~1.1.2", "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - } + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" } }, "http-parser-js": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", - "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", + "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", "dev": true }, "http-proxy-agent": { @@ -7274,12 +6853,12 @@ "dev": true }, "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dev": true, "requires": { - "agent-base": "^4.1.0", + "agent-base": "^4.3.0", "debug": "^3.1.0" }, "dependencies": { @@ -7293,9 +6872,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -7344,19 +6923,10 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, "inflight": { @@ -7434,9 +7004,9 @@ "dev": true }, "invariant": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", - "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { "loose-envify": "^1.0.0" @@ -7455,9 +7025,9 @@ "dev": true }, "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-absolute": { "version": "1.0.0", @@ -7489,6 +7059,12 @@ } } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -7511,9 +7087,9 @@ "dev": true }, "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-data-descriptor": { @@ -7537,9 +7113,9 @@ } }, "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-descriptor": { @@ -7592,13 +7168,10 @@ "dev": true }, "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -7638,9 +7211,9 @@ "dev": true }, "is-my-json-valid": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz", - "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==", + "version": "2.20.5", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.5.tgz", + "integrity": "sha512-VTPuvvGQtxvCeghwspQu1rBgjYUT6FGxPlvFKbYuFtgc4ADsX3U5ihZOYN0qyU6u+d4X9xXb0IT5O6QpXKt87A==", "dev": true, "requires": { "generate-function": "^2.0.0", @@ -7701,9 +7274,9 @@ } }, "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", "dev": true }, "is-property": { @@ -7719,12 +7292,12 @@ "dev": true }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.1" + "has-symbols": "^1.0.1" } }, "is-relative": { @@ -7743,9 +7316,9 @@ "dev": true }, "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", "dev": true }, "is-stream": { @@ -7755,12 +7328,12 @@ "dev": true }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.1" } }, "is-typedarray": { @@ -7846,15 +7419,9 @@ "dev": true }, "jquery": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", - "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==", - "dev": true - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==", "dev": true }, "js-select": { @@ -7874,15 +7441,15 @@ "dev": true }, "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -7950,10 +7517,13 @@ "dev": true }, "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } }, "jsonfile": { "version": "4.0.0", @@ -7971,9 +7541,9 @@ "dev": true }, "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", + "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", "dev": true }, "jsonpointer.js": { @@ -8001,9 +7571,9 @@ }, "dependencies": { "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -8040,47 +7610,21 @@ } }, "jszip": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.1.tgz", - "integrity": "sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", + "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", "dev": true, "requires": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", "set-immediate-shim": "~1.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "just-extend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz", - "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.0.tgz", + "integrity": "sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==", "dev": true }, "jwa": { @@ -8105,9 +7649,9 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "latest-version": { @@ -8143,6 +7687,21 @@ "invert-kv": "^2.0.0" } }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -8193,18 +7752,18 @@ } }, "linkify-it": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.1.0.tgz", - "integrity": "sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", "dev": true, "requires": { "uc.micro": "^1.0.1" } }, "livereload-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz", - "integrity": "sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", + "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", "dev": true }, "load-json-file": { @@ -8220,11 +7779,29 @@ "strip-bom": "^2.0.0" }, "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } } } }, @@ -8235,13 +7812,13 @@ "dev": true }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", + "emojis-list": "^3.0.0", "json5": "^1.0.1" }, "dependencies": { @@ -8253,12 +7830,6 @@ "requires": { "minimist": "^1.2.0" } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true } } }, @@ -8273,9 +7844,9 @@ } }, "lodash": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.13.tgz", - "integrity": "sha512-vm3/XWXfWtRua0FkUyEHBZy8kCPjErNBT9fJx8Zvs+U6zjqPbTUOpkaoum3O5uiA8sm+yNMHXfYkTUHFoMxFNA==", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true }, "lodash.assign": { @@ -8374,9 +7945,9 @@ "dev": true }, "loglevel": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.2.tgz", - "integrity": "sha512-Jt2MHrCNdtIe1W6co3tF5KXGRkzF+TYffiQstfXa04mrss9IKXzAAXYWak8LbZseAQY03sH2GzMCMU0ZOUc9bg==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", "dev": true }, "lolex": { @@ -8398,22 +7969,12 @@ "dev": true }, "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, - "requires": { - "js-tokens": "^3.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, "lowercase-keys": { @@ -8457,12 +8018,6 @@ "kind-of": "^6.0.2" } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -8478,12 +8033,6 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -8525,14 +8074,6 @@ "hash-base": "^3.0.0", "inherits": "^2.0.1", "safe-buffer": "^5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } } }, "mdurl": { @@ -8567,32 +8108,6 @@ "readable-stream": "^2.0.1" } }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -8632,27 +8147,32 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "1.44.0" } }, "mimic-fn": { @@ -8692,9 +8212,9 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "mississippi": { @@ -8755,12 +8275,12 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" } }, "mocha": { @@ -8811,6 +8331,21 @@ "path-is-absolute": "^1.0.0" } }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, "supports-color": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", @@ -8823,22 +8358,30 @@ } }, "moment": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.21.0.tgz", - "integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ==", + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==", "dev": true }, "morgan": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", - "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", "dev": true, "requires": { - "basic-auth": "~2.0.0", + "basic-auth": "~2.0.1", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "~2.0.0", "on-finished": "~2.3.0", - "on-headers": "~1.0.1" + "on-headers": "~1.0.2" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + } } }, "move-concurrently": { @@ -8853,6 +8396,17 @@ "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "ms": { @@ -8928,9 +8482,9 @@ } }, "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", "dev": true, "optional": true }, @@ -8977,6 +8531,12 @@ "yargs": "^3.19.0" }, "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -9069,9 +8629,9 @@ "optional": true }, "needle": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", + "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==", "dev": true, "requires": { "debug": "^3.2.6", @@ -9089,9 +8649,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "sax": { @@ -9103,15 +8663,14 @@ } }, "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "netmask": { @@ -9133,6 +8692,45 @@ "dev": true, "requires": { "stylus": "0.54.5" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + } + } } }, "nice-try": { @@ -9142,22 +8740,22 @@ "dev": true }, "nise": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.0.tgz", - "integrity": "sha512-Z3sfYEkLFzFmL8KY6xnSJLRxwQwYBjOXi/24lb62ZnZiGA0JUzGGTI6TBIgfCSMIDl9Jlu8SRmHNACLTemDHww==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", + "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", "dev": true, "requires": { - "@sinonjs/formatio": "^3.1.0", + "@sinonjs/formatio": "^3.2.1", "@sinonjs/text-encoding": "^0.7.1", "just-extend": "^4.0.2", - "lolex": "^4.1.0", + "lolex": "^5.0.1", "path-to-regexp": "^1.7.0" }, "dependencies": { "@sinonjs/formatio": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.1.tgz", - "integrity": "sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", + "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", "dev": true, "requires": { "@sinonjs/commons": "^1", @@ -9171,15 +8769,18 @@ "dev": true }, "lolex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.1.0.tgz", - "integrity": "sha512-BYxIEXiVq5lGIXeVHnsFzqa1TxN5acnKnPCdlZSpzm8viNEOhiigupA4vTQ9HEFQ6nLTQ9wQOgBknJgzUYQ9Aw==", - "dev": true + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } }, "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "dev": true, "requires": { "isarray": "0.0.1" @@ -9188,37 +8789,41 @@ } }, "node-forge": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.4.tgz", - "integrity": "sha512-UOfdpxivIYY4g5tqp5FNRNgROVNxRACUxxJREntJLFaJr1E0UEqFtUIk0F/jYx/E+Y6sVXd0KDi/m5My0yGCVw==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", + "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", "dev": true }, "node-jose": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.1.3.tgz", - "integrity": "sha512-kupfi4uGWhRjnOmtie2T64cLge5a1TZyalEa8uWWWBgtKBcu41A4IGKpI9twZAxRnmviamEUQRK7LSyfFb2w8A==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.1.4.tgz", + "integrity": "sha512-L31IFwL3pWWcMHxxidCY51ezqrDXMkvlT/5pLTfNw5sXmmOLJuN6ug7txzF/iuZN55cRpyOmoJrotwBQIoo5Lw==", "dev": true, "requires": { "base64url": "^3.0.1", - "es6-promise": "^4.2.6", - "lodash": "^4.17.11", + "browserify-zlib": "^0.2.0", + "buffer": "^5.5.0", + "es6-promise": "^4.2.8", + "lodash": "^4.17.15", "long": "^4.0.0", - "node-forge": "^0.8.1", - "uuid": "^3.3.2" + "node-forge": "^0.8.5", + "process": "^0.11.10", + "react-zlib-js": "^1.0.4", + "uuid": "^3.3.3" }, "dependencies": { "es6-promise": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", - "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true } } }, "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, "requires": { "assert": "^1.1.1", @@ -9231,7 +8836,7 @@ "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -9243,15 +8848,41 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" + "vm-browserify": "^1.0.1" }, "dependencies": { + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, "util": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", @@ -9282,13 +8913,10 @@ } }, "node-releases": { - "version": "1.1.23", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.23.tgz", - "integrity": "sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w==", - "dev": true, - "requires": { - "semver": "^5.3.0" - } + "version": "1.1.60", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", + "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", + "dev": true }, "node-rsa": { "version": "0.2.30", @@ -9440,6 +9068,22 @@ } } }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -9455,6 +9099,18 @@ "isobject": "^3.0.0" } }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, "object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", @@ -9495,9 +9151,9 @@ } }, "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true }, "once": { @@ -9537,25 +9193,17 @@ } }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } + "word-wrap": "~1.2.3" } }, "os-browserify": { @@ -9643,9 +9291,9 @@ "dev": true }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -9692,9 +9340,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -9725,26 +9373,26 @@ } }, "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, "requires": { - "cyclist": "~0.2.2", + "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" } }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "dev": true, "requires": { "asn1.js": "^4.0.0", @@ -9767,12 +9415,13 @@ } }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "^1.2.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "parse-passwd": { @@ -9791,10 +9440,9 @@ } }, "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "pascalcase": { "version": "0.1.1", @@ -9813,9 +9461,9 @@ } }, "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, "path-dirname": { @@ -9900,9 +9548,9 @@ "dev": true }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -9924,6 +9572,13 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -10014,9 +9669,9 @@ } }, "popper.js": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz", - "integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", "dev": true }, "portscanner": { @@ -10092,9 +9747,9 @@ "dev": true }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "progress": { @@ -10125,12 +9780,12 @@ "dev": true }, "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "ipaddr.js": "1.9.1" } }, "proxy-agent": { @@ -10159,17 +9814,17 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, "proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, "prr": { @@ -10185,9 +9840,9 @@ "dev": true }, "psl": { - "version": "1.1.32", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz", - "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, "public-encrypt": { @@ -10204,138 +9859,138 @@ "safe-buffer": "^5.1.2" }, "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } }, "pug": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", - "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", + "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", "dev": true, "requires": { - "pug-code-gen": "^2.0.1", - "pug-filters": "^3.1.0", - "pug-lexer": "^4.0.0", - "pug-linker": "^3.0.5", - "pug-load": "^2.0.11", - "pug-parser": "^5.0.0", - "pug-runtime": "^2.0.4", - "pug-strip-comments": "^1.0.3" + "pug-code-gen": "^2.0.2", + "pug-filters": "^3.1.1", + "pug-lexer": "^4.1.0", + "pug-linker": "^3.0.6", + "pug-load": "^2.0.12", + "pug-parser": "^5.0.1", + "pug-runtime": "^2.0.5", + "pug-strip-comments": "^1.0.4" } }, "pug-attrs": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.3.tgz", - "integrity": "sha1-owlflw5kFR972tlX7vVftdeQXRU=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", + "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", "dev": true, "requires": { "constantinople": "^3.0.1", "js-stringify": "^1.0.1", - "pug-runtime": "^2.0.4" + "pug-runtime": "^2.0.5" } }, "pug-code-gen": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", - "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", + "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", "dev": true, "requires": { - "constantinople": "^3.0.1", + "constantinople": "^3.1.2", "doctypes": "^1.1.0", "js-stringify": "^1.0.1", - "pug-attrs": "^2.0.3", - "pug-error": "^1.3.2", - "pug-runtime": "^2.0.4", + "pug-attrs": "^2.0.4", + "pug-error": "^1.3.3", + "pug-runtime": "^2.0.5", "void-elements": "^2.0.1", "with": "^5.0.0" } }, "pug-error": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz", - "integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", + "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==", "dev": true }, "pug-filters": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", - "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", + "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", "dev": true, "requires": { "clean-css": "^4.1.11", "constantinople": "^3.0.1", "jstransformer": "1.0.0", - "pug-error": "^1.3.2", - "pug-walk": "^1.1.7", + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8", "resolve": "^1.1.6", "uglify-js": "^2.6.1" } }, "pug-lexer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", - "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", + "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", "dev": true, "requires": { "character-parser": "^2.1.1", "is-expression": "^3.0.0", - "pug-error": "^1.3.2" + "pug-error": "^1.3.3" } }, "pug-linker": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", - "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", + "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", "dev": true, "requires": { - "pug-error": "^1.3.2", - "pug-walk": "^1.1.7" + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8" } }, "pug-load": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.11.tgz", - "integrity": "sha1-5kjlftET/iwfRdV4WOorrWvAFSc=", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", + "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", "dev": true, "requires": { "object-assign": "^4.1.0", - "pug-walk": "^1.1.7" + "pug-walk": "^1.1.8" } }, "pug-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", - "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", + "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", "dev": true, "requires": { - "pug-error": "^1.3.2", + "pug-error": "^1.3.3", "token-stream": "0.0.1" } }, "pug-runtime": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.4.tgz", - "integrity": "sha1-4XjhvaaKsujArPybztLFT9iM61g=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", + "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==", "dev": true }, "pug-strip-comments": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.3.tgz", - "integrity": "sha1-8VWVkiBu3G+FMQ2s9K+0igJa9Z8=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", + "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", "dev": true, "requires": { - "pug-error": "^1.3.2" + "pug-error": "^1.3.3" } }, "pug-walk": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.7.tgz", - "integrity": "sha1-wA1cUSi6xYBr7BXSt+fNq+QlMfM=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", + "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==", "dev": true }, "pump": { @@ -10366,9 +10021,9 @@ "dev": true }, "puppeteer": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.17.0.tgz", - "integrity": "sha512-3EXZSximCzxuVKpIHtyec8Wm2dWZn1fc5tQi34qWfiUgubEVYHjUvr0GOJojqf3mifI6oyKnCdrGxaOI+lWReA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz", + "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==", "dev": true, "requires": { "debug": "^4.1.0", @@ -10391,24 +10046,32 @@ } }, "mime": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz", - "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", "dev": true }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } } } }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, "querystring": { "version": "0.2.0", @@ -10422,9 +10085,9 @@ "dev": true }, "quick-format-unescaped": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.2.tgz", - "integrity": "sha512-FXTaCkwvpIlkdKeGDNgcq07SXWS383noQUuZjvdE1QcTt+eLuqof6/BDiEPqB59FWLie/l91+HtlJSw7iCViSA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz", + "integrity": "sha512-dy1yjycmn9blucmJLXOfZDx1ikZJUi6E8bBZLnhPG5gBrVhHXx2xVyqqgKBubVNEXmx51dBACMHpoMQK/N/AXQ==", "dev": true }, "randombytes": { @@ -10447,10 +10110,9 @@ } }, "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { "version": "2.4.0", @@ -10461,25 +10123,6 @@ "http-errors": "1.7.2", "iconv-lite": "0.4.24", "unpipe": "1.0.0" - }, - "dependencies": { - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - } } }, "rc": { @@ -10492,16 +10135,14 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } } }, + "react-zlib-js": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-zlib-js/-/react-zlib-js-1.0.4.tgz", + "integrity": "sha512-ynXD9DFxpE7vtGoa3ZwBtPmZrkZYw2plzHGbanUjBOSN4RtuXdektSfABykHtTiWEHMh7WdYj45LHtp228ZF1A==", + "dev": true + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -10545,9 +10186,9 @@ } }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -10555,8 +10196,19 @@ "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "readdirp": { @@ -10616,44 +10268,34 @@ "minimatch": "3.0.4" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", "dev": true }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "dev": true, "requires": { "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz", - "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "private": "^0.1.6" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -10666,19 +10308,14 @@ "safe-regex": "^1.1.0" } }, - "regexp-tree": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.10.tgz", - "integrity": "sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==", - "dev": true - }, "regexp.prototype.flags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", - "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", "dev": true, "requires": { - "define-properties": "^1.1.2" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "regexpp": { @@ -10688,17 +10325,17 @@ "dev": true }, "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "registry-auth-token": { @@ -10721,15 +10358,15 @@ } }, "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -10808,9 +10445,9 @@ } }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -10820,7 +10457,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -10830,72 +10467,35 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" }, "dependencies": { - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", - "dev": true - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "dev": true, - "requires": { - "mime-db": "1.40.0" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } } } }, "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", "dev": true, "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.19" } }, "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", "dev": true, "requires": { - "request-promise-core": "1.1.2", + "request-promise-core": "1.1.4", "stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" } @@ -10923,9 +10523,9 @@ } }, "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -10979,28 +10579,12 @@ } }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } } }, "ripemd160": { @@ -11014,13 +10598,10 @@ } }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true }, "run-queue": { "version": "1.0.3", @@ -11056,10 +10637,9 @@ } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-json-parse": { "version": "1.0.1", @@ -11101,13 +10681,14 @@ "dev": true }, "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" } }, "secure-keys": { @@ -11117,9 +10698,9 @@ "dev": true }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "semver-diff": { @@ -11132,30 +10713,36 @@ } }, "send": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", - "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", - "dev": true, + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { "debug": "2.6.9", - "depd": "~1.1.1", + "depd": "~1.1.2", "destroy": "~1.0.4", - "encodeurl": "~1.0.1", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.3.1" + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } } }, "serialize-javascript": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", - "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", "dev": true }, "serve-index": { @@ -11171,18 +10758,37 @@ "http-errors": "~1.6.2", "mime-types": "~2.1.17", "parseurl": "~1.3.2" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } } }, "serve-static": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", - "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", - "dev": true, + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { - "encodeurl": "~1.0.1", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.1" + "parseurl": "~1.3.3", + "send": "0.17.1" } }, "set-blocking": { @@ -11198,9 +10804,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -11406,6 +11012,12 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, "regenerator-runtime": { "version": "0.9.6", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", @@ -11461,9 +11073,9 @@ } }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "sinon": { @@ -11697,9 +11309,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "opn": { @@ -11749,9 +11361,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -11777,9 +11389,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -11824,9 +11436,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -11881,9 +11493,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -11909,9 +11521,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -11943,9 +11555,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -11979,9 +11591,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -12019,9 +11631,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -12063,9 +11675,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -12112,12 +11724,12 @@ "dev": true }, "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "dev": true, "requires": { - "atob": "^2.1.1", + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -12125,9 +11737,9 @@ } }, "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -12159,9 +11771,9 @@ } }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -12169,15 +11781,15 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -12185,9 +11797,9 @@ } }, "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, "split": { @@ -12262,10 +11874,9 @@ } }, "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, "stealthy-require": { "version": "1.1.1", @@ -12304,32 +11915,6 @@ "readable-stream": "^2.3.6", "to-arraybuffer": "^1.0.0", "xtend": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "stream-parser": { @@ -12342,9 +11927,9 @@ } }, "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, "stream-to-array": { @@ -12433,15 +12018,32 @@ "regexp.prototype.flags": "^1.2.0" } }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -12452,13 +12054,10 @@ } }, "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true }, "strip-bom-buf": { "version": "1.0.0", @@ -12485,15 +12084,6 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -12501,27 +12091,62 @@ "dev": true }, "stylus": { - "version": "0.54.5", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", - "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "version": "0.54.8", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", + "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", "dev": true, "requires": { - "css-parse": "1.7.x", - "debug": "*", - "glob": "7.0.x", - "mkdirp": "0.5.x", - "sax": "0.5.x", - "source-map": "0.1.x" + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.6", + "mkdirp": "~1.0.4", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.3.0", + "source-map": "^0.7.3" }, "dependencies": { - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "requires": { + "css": "^2.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "ms": "2.0.0" } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } } }, @@ -12561,14 +12186,17 @@ "dev": true }, "tar-stream": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", - "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", "dev": true, "requires": { "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", "end-of-stream": "^1.0.0", - "readable-stream": "^2.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", "xtend": "^4.0.0" } }, @@ -12626,22 +12254,16 @@ } }, "terser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.0.tgz", - "integrity": "sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "dev": true, "requires": { - "commander": "^2.19.0", + "commander": "^2.20.0", "source-map": "~0.6.1", - "source-map-support": "~0.5.10" + "source-map-support": "~0.5.12" }, "dependencies": { - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -12651,65 +12273,45 @@ } }, "terser-webpack-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz", - "integrity": "sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", "dev": true, "requires": { - "cacache": "^11.3.2", - "find-cache-dir": "^2.0.0", + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", - "loader-utils": "^1.2.3", "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", + "serialize-javascript": "^3.1.0", "source-map": "^0.6.1", - "terser": "^4.0.0", - "webpack-sources": "^1.3.0", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", "worker-farm": "^1.7.0" }, "dependencies": { "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { - "bluebird": "^3.5.3", + "bluebird": "^3.5.5", "chownr": "^1.1.1", "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", + "glob": "^7.1.4", "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", "lru-cache": "^5.1.1", "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", + "rimraf": "^2.6.3", "ssri": "^6.0.1", "unique-filename": "^1.1.1", "y18n": "^4.0.0" } }, - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -12747,6 +12349,15 @@ "once": "^1.3.1" } }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -12758,6 +12369,15 @@ "ajv-keywords": "^3.1.0" } }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -12774,9 +12394,9 @@ } }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true } } @@ -12797,9 +12417,9 @@ } }, "thenify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", - "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, "requires": { "any-promise": "^1.0.0" @@ -12828,32 +12448,6 @@ "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "thunkify": { @@ -12869,9 +12463,9 @@ "dev": true }, "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -12892,13 +12486,19 @@ }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -12926,6 +12526,12 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -13022,12 +12628,6 @@ "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=", "dev": true }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -13035,9 +12635,9 @@ "dev": true }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true }, "tty-browserify": { @@ -13077,6 +12677,12 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -13099,21 +12705,6 @@ "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" - }, - "dependencies": { - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - } } }, "typedarray": { @@ -13246,6 +12837,16 @@ "find-up": "^2.1.0" } }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -13271,9 +12872,9 @@ "dev": true }, "undefsafe": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", - "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", "dev": true, "requires": { "debug": "^2.2.0" @@ -13312,50 +12913,27 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "unique-filename": { @@ -13368,9 +12946,9 @@ } }, "unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -13543,9 +13121,9 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "v8flags": { @@ -13590,13 +13168,10 @@ } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "void-elements": { "version": "2.0.1", @@ -13605,9 +13180,9 @@ "dev": true }, "vscode-languageserver-types": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz", - "integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==", "dev": true }, "walkdir": { @@ -13627,6 +13202,16 @@ "neo-async": "^2.5.0" } }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + } + }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -13727,6 +13312,21 @@ "invert-kv": "^1.0.0" } }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, "opn": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", @@ -13745,15 +13345,11 @@ "lcid": "^1.0.0" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true }, "source-map": { "version": "0.6.1", @@ -13860,43 +13456,158 @@ "dev": true }, "webpack": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.33.0.tgz", - "integrity": "sha512-ggWMb0B2QUuYso6FPZKUohOgfm+Z0sVFs8WwWuSH1IAvkWs428VDNmOlAxvHGTB9Dm/qOB/qtE5cRx5y01clxw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.0.5", - "acorn-dynamic-import": "^4.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz", + "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" }, "dependencies": { "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", + "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -13907,22 +13618,44 @@ "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "watchpack": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + } } } }, "webpack-merge": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", - "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", "dev": true, "requires": { - "lodash": "^4.17.5" + "lodash": "^4.17.15" } }, "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { "source-list-map": "^2.0.0", @@ -13938,19 +13671,20 @@ } }, "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "requires": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, "whatwg-url": { @@ -14025,6 +13759,12 @@ "acorn-globals": "^3.0.0" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", @@ -14114,9 +13854,9 @@ "dev": true }, "xhr-mock": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/xhr-mock/-/xhr-mock-2.4.1.tgz", - "integrity": "sha1-y1AuPVC4suwxvWF2bOUWv8HdBy8=", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/xhr-mock/-/xhr-mock-2.5.1.tgz", + "integrity": "sha512-UKOjItqjFgPUwQGPmRAzNBn8eTfIhcGjBVGvKYAWxUQPQsXNGD6KEckGTiHwyaAUp9C9igQlnN1Mp79KWCg7CQ==", "dev": true, "requires": { "global": "^4.3.0", @@ -14124,13 +13864,13 @@ } }, "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", "dev": true, "requires": { "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" + "xmlbuilder": "~11.0.0" }, "dependencies": { "sax": { @@ -14142,9 +13882,9 @@ } }, "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true }, "xmldom": { @@ -14160,9 +13900,9 @@ "dev": true }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { @@ -14187,14 +13927,6 @@ "cliui": "^2.1.0", "decamelize": "^1.0.0", "window-size": "0.1.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - } } }, "yargs-parser": { @@ -14216,12 +13948,13 @@ } }, "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "dev": true, "requires": { - "fd-slicer": "~1.0.1" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, "zip-dir": { From ad8b064d9ee5b48c0b47c857096a8ca464ed82ec Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 6 Aug 2020 11:21:33 +0200 Subject: [PATCH 423/611] Lock node version --- package.json | 159 ++++++++++++++++++++++++++------------------------- 1 file changed, 81 insertions(+), 78 deletions(-) diff --git a/package.json b/package.json index 5b4f23c1..7b18f9fe 100644 --- a/package.json +++ b/package.json @@ -1,79 +1,82 @@ { - "name": "jwt.io", - "version": "3.2.0", - "repository": { - "type": "git", - "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" - }, - "dependencies": { - "express": "^4.17.1", - "express-sslify": "^1.2.0", - "lodash.debounce": "^4.0.8", - "querystring": "^0.2.0" - }, - "devEngines": { - "node": "^8.12.0", - "npm": "^6.4.1" - }, - "devDependencies": { - "@babel/core": "^7.4.5", - "@babel/polyfill": "^7.4.4", - "@babel/preset-env": "^7.4.5", - "babel-loader": "^8.0.6", - "babel-plugin-transform-async-to-generator": "^6.24.1", - "bootstrap": "^3.4.1", - "chai": "^4.2.0", - "chai-arrays": "^2.0.0", - "chai-as-promised": "^7.1.1", - "chai-json-schema": "^1.5.1", - "clipboard-polyfill": "^2.8.1", - "codemirror": "^5.47.0", - "deep-freeze": "0.0.1", - "esm": "^3.2.25", - "flipclock": "^0.7.8", - "grunt": "^1.0.4", - "grunt-cli": "^1.3.2", - "grunt-contrib-clean": "^1.1.0", - "grunt-contrib-connect": "^1.0.2", - "grunt-contrib-copy": "^1.0.0", - "grunt-contrib-pug": "^1.0.0", - "grunt-contrib-stylus": "^1.2.0", - "grunt-contrib-watch": "^1.1.0", - "grunt-crx": "^1.0.5", - "grunt-exec": "^3.0.0", - "grunt-mocha-test": "^0.13.3", - "grunt-webpack": "^3.1.3", - "highlight.js": "^9.15.8", - "inject-loader": "^3.0.1", - "isotope-layout": "^3.0.6", - "jquery": "^3.4.1", - "jstransformer-markdown-it": "^2.1.0", - "lodash": "^4.17.13", - "loglevel": "^1.6.2", - "mocha": "^5.2.0", - "node-jose": "^1.1.3", - "promise.any": "^0.1.1", - "pug": "^2.0.3", - "puppeteer": "^1.17.0", - "request-promise-native": "^1.0.7", - "sinon": "^4.5.0", - "sinon-chai": "^2.14.0", - "source-map-support": "^0.5.12", - "stylus": "^0.54.5", - "tippy.js": "^2.6.0", - "tv4-formats": "^3.0.3", - "uglifyjs-webpack-plugin": "^1.3.0", - "web-ext": "^2.9.3", - "webpack": "^4.33.0", - "webpack-merge": "^4.2.1", - "xhr-mock": "^2.4.1" - }, - "scripts": { - "start": "node server.js", - "test": "grunt test", - "test:unit": "grunt unit-tests", - "build": "grunt build-website", - "build:extension": "grunt build-extension" - }, - "heroku-run-build-script": true -} + "name": "jwt.io", + "version": "3.2.0", + "repository": { + "type": "git", + "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" + }, + "dependencies": { + "express": "^4.17.1", + "express-sslify": "^1.2.0", + "lodash.debounce": "^4.0.8", + "querystring": "^0.2.0" + }, + "devEngines": { + "node": "^8.12.0", + "npm": "^6.4.1" + }, + "engines": { + "node": "12.18.2" + }, + "devDependencies": { + "@babel/core": "^7.4.5", + "@babel/polyfill": "^7.4.4", + "@babel/preset-env": "^7.4.5", + "babel-loader": "^8.0.6", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "bootstrap": "^3.4.1", + "chai": "^4.2.0", + "chai-arrays": "^2.0.0", + "chai-as-promised": "^7.1.1", + "chai-json-schema": "^1.5.1", + "clipboard-polyfill": "^2.8.1", + "codemirror": "^5.47.0", + "deep-freeze": "0.0.1", + "esm": "^3.2.25", + "flipclock": "^0.7.8", + "grunt": "^1.0.4", + "grunt-cli": "^1.3.2", + "grunt-contrib-clean": "^1.1.0", + "grunt-contrib-connect": "^1.0.2", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-pug": "^1.0.0", + "grunt-contrib-stylus": "^1.2.0", + "grunt-contrib-watch": "^1.1.0", + "grunt-crx": "^1.0.5", + "grunt-exec": "^3.0.0", + "grunt-mocha-test": "^0.13.3", + "grunt-webpack": "^3.1.3", + "highlight.js": "^9.15.8", + "inject-loader": "^3.0.1", + "isotope-layout": "^3.0.6", + "jquery": "^3.4.1", + "jstransformer-markdown-it": "^2.1.0", + "lodash": "^4.17.13", + "loglevel": "^1.6.2", + "mocha": "^5.2.0", + "node-jose": "^1.1.3", + "promise.any": "^0.1.1", + "pug": "^2.0.3", + "puppeteer": "^1.17.0", + "request-promise-native": "^1.0.7", + "sinon": "^4.5.0", + "sinon-chai": "^2.14.0", + "source-map-support": "^0.5.12", + "stylus": "^0.54.5", + "tippy.js": "^2.6.0", + "tv4-formats": "^3.0.3", + "uglifyjs-webpack-plugin": "^1.3.0", + "web-ext": "^2.9.3", + "webpack": "^4.33.0", + "webpack-merge": "^4.2.1", + "xhr-mock": "^2.4.1" + }, + "scripts": { + "start": "node server.js", + "test": "grunt test", + "test:unit": "grunt unit-tests", + "build": "grunt build-website", + "build:extension": "grunt build-extension" + }, + "heroku-run-build-script": true +} \ No newline at end of file From b57a409078d947ff37c563058b2ea33c5045b5a4 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 6 Aug 2020 13:58:48 +0200 Subject: [PATCH 424/611] Link do the developer page instead of the Auth0 homepage --- package.json | 3 --- views/website/index.pug | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/package.json b/package.json index 7b18f9fe..4ab1e3bd 100644 --- a/package.json +++ b/package.json @@ -15,9 +15,6 @@ "node": "^8.12.0", "npm": "^6.4.1" }, - "engines": { - "node": "12.18.2" - }, "devDependencies": { "@babel/core": "^7.4.5", "@babel/polyfill": "^7.4.4", diff --git a/views/website/index.pug b/views/website/index.pug index 0bf40546..6b43a18e 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -19,7 +19,7 @@ block content a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! .social - a.a0(href='https://auth0.com/why-auth0?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') + a.a0(href='https://auth0.com/developers?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') span.by-text Crafted by img(src='http://github.com/img/pic_logo_ft.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication') span.crafted-by__question-mark ? From 18ff0ca13d654c4e91049024507a8d31123eef05 Mon Sep 17 00:00:00 2001 From: Ulrik Date: Mon, 17 Aug 2020 11:02:11 +0200 Subject: [PATCH 425/611] Add OCaml and reason-jose --- img/website/30.svg | 39 +++++++++++++++++++++++++++ views/website/libraries/30-OCaml.json | 39 +++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 img/website/30.svg create mode 100644 views/website/libraries/30-OCaml.json diff --git a/img/website/30.svg b/img/website/30.svg new file mode 100644 index 00000000..05d0ce2d --- /dev/null +++ b/img/website/30.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + diff --git a/views/website/libraries/30-OCaml.json b/views/website/libraries/30-OCaml.json new file mode 100644 index 00000000..eec6f149 --- /dev/null +++ b/views/website/libraries/30-OCaml.json @@ -0,0 +1,39 @@ +{ + "name": "OCaml", + "uniqueClass": "ocaml", + "image": "/img/30.svg", + "bgColor": "rgb(242, 145, 0)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": true, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/ulrikstrid", + "authorName": "Ulrik Strid", + "gitHubRepoPath": "ulrikstrid/reason-jose", + "repoUrl": "https://github.com/ulrikstrid/reason-jose", + "installCommandHtml": "opam install jose" + } + ] +} From 05f2ab760df13a62402ae21bc931f5b745c10386 Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 2 Sep 2020 16:46:55 +0200 Subject: [PATCH 426/611] Show an error when the payload is not a valid top level JSON object --- package-lock.json | 6 +- package.json | 4 +- src/editor/index.js | 651 +++++++++++++++++++------------------- src/editor/jwt.js | 278 ++++++++-------- src/strings.js | 109 +++---- stylus/website/index.styl | 6 +- 6 files changed, 544 insertions(+), 510 deletions(-) diff --git a/package-lock.json b/package-lock.json index e3c257c3..c02772e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10138,9 +10138,9 @@ } }, "react-zlib-js": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/react-zlib-js/-/react-zlib-js-1.0.4.tgz", - "integrity": "sha512-ynXD9DFxpE7vtGoa3ZwBtPmZrkZYw2plzHGbanUjBOSN4RtuXdektSfABykHtTiWEHMh7WdYj45LHtp228ZF1A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/react-zlib-js/-/react-zlib-js-1.0.5.tgz", + "integrity": "sha512-TLcPdmqhIl+ylwOwlfm1WUuI7NVvhAv3L74d1AabhjyaAbmLOROTA/Q4EQ/UMCFCOjIkVim9fT3UZOQSFk/mlA==", "dev": true }, "read-pkg": { diff --git a/package.json b/package.json index 4ab1e3bd..5eadab55 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "lodash": "^4.17.13", "loglevel": "^1.6.2", "mocha": "^5.2.0", - "node-jose": "^1.1.3", + "node-jose": "^1.1.4", "promise.any": "^0.1.1", "pug": "^2.0.3", "puppeteer": "^1.17.0", @@ -76,4 +76,4 @@ "build:extension": "grunt build-extension" }, "heroku-run-build-script": true -} \ No newline at end of file +} diff --git a/src/editor/index.js b/src/editor/index.js index fda4c6d7..8a9f7820 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -3,40 +3,39 @@ import { downloadPublicKeyIfPossible } from "./public-key-download.js"; import { setupClaimsTooltip } from "./claims-tooltip.js"; import { tokenEditor, headerEditor, payloadEditor } from "./instances.js"; import { - getTrimmedValue, - stringify, - fixEditorHeight, - getSelectedAlgorithm, - disableUnsupportedAlgorithms, - getSafeTokenInfo + getTrimmedValue, + stringify, + fixEditorHeight, + getSelectedAlgorithm, + disableUnsupportedAlgorithms, } from "./utils.js"; import { sign, verify, decode } from "./jwt.js"; import EventManager from "./event-manager.js"; import strings from "../strings.js"; import defaultTokens from "./default-tokens.js"; import { - minSecretLengthCheck, - setupSecretLengthTooltip + minSecretLengthCheck, + setupSecretLengthTooltip, } from "./secret-length-tooltip.js"; import { - algorithmSelect, - signatureStatusElement, - editorElement, - headerElement, - payloadElement, - secretInput, - privateKeyTextArea, - publicKeyTextArea, - hmacShaTextSpan, - rsaShaTextSpan, - keyEditorContainer, - secretEditorContainer, - secretBase64Checkbox, - encodedTabLink, - decodedTabLink, - encodedTabElement, - decodedTabElement, - editorWarnings + algorithmSelect, + signatureStatusElement, + editorElement, + headerElement, + payloadElement, + secretInput, + privateKeyTextArea, + publicKeyTextArea, + hmacShaTextSpan, + rsaShaTextSpan, + keyEditorContainer, + secretEditorContainer, + secretBase64Checkbox, + encodedTabLink, + decodedTabLink, + encodedTabElement, + decodedTabElement, + editorWarnings, } from "../dom-elements.js"; import log from "loglevel"; @@ -47,294 +46,312 @@ import log from "loglevel"; const eventManager = new EventManager(); function isSharedSecretAlgorithm(algorithm) { - return algorithm && algorithm.indexOf("HS") === 0; + return algorithm && algorithm.indexOf("HS") === 0; } function isPublicKeyAlgorithm(algorithm) { - return algorithm && algorithm.indexOf("HS") === -1; + return algorithm && algorithm.indexOf("HS") === -1; } -function markAsInvalid() { - signatureStatusElement.classList.remove("valid-token"); - signatureStatusElement.classList.add("invalid-token"); - signatureStatusElement.innerHTML = ` ${ - strings.editor.signatureInvalid - }`; +function markAsInvalid(errorMessages = []) { + signatureStatusElement.classList.remove("valid-token"); + signatureStatusElement.classList.add("invalid-token"); + + if (errorMessages.length > 0) { + editorWarnings.classList.remove("hidden"); + + errorMessages.forEach((message) => { + const errorElement = document.createElement("p"); + const errorLabel = document.createElement("strong"); + const errorMessage = document.createTextNode(message); + errorLabel.innerText = "Error: "; + errorElement.appendChild(errorLabel); + errorElement.appendChild(errorMessage); + editorWarnings.appendChild(errorElement); + }) + } else { + signatureStatusElement.innerHTML = ` ${strings.editor.signatureInvalid}`; + } } function markJWTAsInvalid() { - signatureStatusElement.classList.remove("valid-token"); - signatureStatusElement.classList.add("invalid-token"); - signatureStatusElement.innerHTML = ` ${ - strings.editor.jwtInvalid - }`; + signatureStatusElement.classList.remove("valid-token"); + signatureStatusElement.classList.add("invalid-token"); + signatureStatusElement.innerHTML = ` ${strings.editor.jwtInvalid}`; } function markAsValid() { - const elementsWithError = document.getElementsByClassName("error"); - Array.prototype.forEach.call(elementsWithError, element => { - element.classList.remove("error"); - }); - - signatureStatusElement.classList.remove("invalid-token"); - signatureStatusElement.classList.add("valid-token"); - signatureStatusElement.innerHTML = ` ${ - strings.editor.signatureVerified - }`; + const elementsWithError = document.getElementsByClassName("error"); + Array.prototype.forEach.call(elementsWithError, (element) => { + element.classList.remove("error"); + }); + + signatureStatusElement.classList.remove("invalid-token"); + signatureStatusElement.classList.add("valid-token"); + signatureStatusElement.innerHTML = ` ${strings.editor.signatureVerified}`; } function displaySecretOrKeys(algorithm) { - const algoType = algorithm.substr(0, 2); - const algoSize = algorithm.substr(2, 3); - - if (algoType === "HS") { - hmacShaTextSpan.firstChild.textContent = `HMACSHA${algoSize}`; - secretEditorContainer.style.display = ""; - keyEditorContainer.style.display = "none"; - } else { - const texts = { - RS: "RSASHA", - PS: "RSAPSSSHA", - ES: "ECDSASHA" - }; + const algoType = algorithm.substr(0, 2); + const algoSize = algorithm.substr(2, 3); - rsaShaTextSpan.firstChild.textContent = `${texts[algoType]}${algoSize}`; - secretEditorContainer.style.display = "none"; - keyEditorContainer.style.display = ""; - } + if (algoType === "HS") { + hmacShaTextSpan.firstChild.textContent = `HMACSHA${algoSize}`; + secretEditorContainer.style.display = ""; + keyEditorContainer.style.display = "none"; + } else { + const texts = { + RS: "RSASHA", + PS: "RSAPSSSHA", + ES: "ECDSASHA", + }; + + rsaShaTextSpan.firstChild.textContent = `${texts[algoType]}${algoSize}`; + secretEditorContainer.style.display = "none"; + keyEditorContainer.style.display = ""; + } - deferToNextLoop(fixEditorHeight); + deferToNextLoop(fixEditorHeight); } function selectAlgorithm(algorithm) { - eventManager.withDisabledEvents(() => { - const selected = algorithmSelect.querySelector( - `option[value="${algorithm}"]` - ); + eventManager.withDisabledEvents(() => { + const selected = algorithmSelect.querySelector( + `option[value="${algorithm}"]` + ); - if (!selected) { - log.info(`Invalid algorithm ${algorithm}, ignoring...`); - return; - } + if (!selected) { + log.info(`Invalid algorithm ${algorithm}, ignoring...`); + return; + } - selected.selected = true; + selected.selected = true; - displaySecretOrKeys(algorithm); - }); + displaySecretOrKeys(algorithm); + }); } function isDefaultToken(token) { - for (const algorithm of Object.keys(defaultTokens)) { - if (defaultTokens[algorithm].token === token) { - return true; + for (const algorithm of Object.keys(defaultTokens)) { + if (defaultTokens[algorithm].token === token) { + return true; + } } - } - return false; + return false; } export function useDefaultToken(algorithm) { - eventManager.withDisabledEvents(() => { - const defaults = defaultTokens[algorithm.toLowerCase()]; - const decoded = decode(defaults.token); + eventManager.withDisabledEvents(() => { + const defaults = defaultTokens[algorithm.toLowerCase()]; + const decoded = decode(defaults.token); - tokenEditor.setValue(defaults.token); - headerEditor.setValue(stringify(decoded.header)); - payloadEditor.setValue(stringify(decoded.payload)); + tokenEditor.setValue(defaults.token); + headerEditor.setValue(stringify(decoded.header)); + payloadEditor.setValue(stringify(decoded.payload)); - if (isSharedSecretAlgorithm(algorithm)) { - secretInput.value = defaults.secret; - } else { - publicKeyTextArea.value = defaults.publicKey; - privateKeyTextArea.value = defaults.privateKey; - } + if (isSharedSecretAlgorithm(algorithm)) { + secretInput.value = defaults.secret; + } else { + publicKeyTextArea.value = defaults.publicKey; + privateKeyTextArea.value = defaults.privateKey; + } - markAsValid(); - }); + markAsValid(); + }); } function setAlgorithmInHeader(algorithm) { - eventManager.withDisabledEvents(() => { - try { - const header = JSON.parse(headerEditor.getValue()); - header.alg = algorithm; - headerEditor.setValue(stringify(header)); - } catch (e) { - // SyntaxError is expected while things are being edited, ignore those - // errors. - if (!(e instanceof SyntaxError)) { - // If it's not a SyntaxError, log the error. - log.warn("Failed to encode token: ", e); - } - } + eventManager.withDisabledEvents(() => { + try { + const header = JSON.parse(headerEditor.getValue()); + header.alg = algorithm; + headerEditor.setValue(stringify(header)); + } catch (e) { + // SyntaxError is expected while things are being edited, ignore those + // errors. + if (!(e instanceof SyntaxError)) { + // If it's not a SyntaxError, log the error. + log.warn("Failed to encode token: ", e); + } + } - try { - encodeToken(); - } catch (e) { - // Ignore error, this may fail in unexpected ways if the data - // is being edited. - } - }); + try { + encodeToken(); + } catch (e) { + // Ignore error, this may fail in unexpected ways if the data + // is being edited. + } + }); } function algorithmChangeHandler() { - const algorithm = getSelectedAlgorithm(); + const algorithm = getSelectedAlgorithm(); - displaySecretOrKeys(algorithm); + displaySecretOrKeys(algorithm); - if (isDefaultToken(getTrimmedValue(tokenEditor))) { - useDefaultToken(algorithm); - } else { - setAlgorithmInHeader(algorithm); - } + if (isDefaultToken(getTrimmedValue(tokenEditor))) { + useDefaultToken(algorithm); + } else { + setAlgorithmInHeader(algorithm); + } } -function markAsInvalidWithElement(element, clearTokenEditor = true) { - element.classList.add("error"); - markAsInvalid(); +function markAsInvalidWithElement(element, clearTokenEditor = true, errors = []) { + element.classList.add("error"); + markAsInvalid(errors); - if (clearTokenEditor) { - eventManager.withDisabledEvents(() => { - tokenEditor.setValue(""); - }); - } + if (clearTokenEditor) { + eventManager.withDisabledEvents(() => { + tokenEditor.setValue(""); + }); + } } function showEditorWarnings(warnings) { - editorElement.classList.add("warning"); - editorWarnings.classList.remove("hidden"); - editorWarnings.innerHTML = ''; - - warnings.forEach(warning => { - const warningElement = document.createElement('p'); - const warningLabel = document.createElement('strong'); - const warningMessage = document.createTextNode(warning) - warningLabel.innerText = 'Warning: '; - warningElement.appendChild(warningLabel); - warningElement.appendChild(warningMessage); - editorWarnings.appendChild(warningElement) - }); + editorElement.classList.add("warning"); + editorWarnings.classList.remove("hidden"); + editorWarnings.innerHTML = ""; + + warnings.forEach((warning) => { + const warningElement = document.createElement("p"); + const warningLabel = document.createElement("strong"); + const warningMessage = document.createTextNode(warning); + warningLabel.innerText = "Warning: "; + warningElement.appendChild(warningLabel); + warningElement.appendChild(warningMessage); + editorWarnings.appendChild(warningElement); + }); } function hideEditorWarnings() { - editorElement.classList.remove("warning"); - editorWarnings.classList.add("hidden"); - editorWarnings.innerHTML = ''; + editorElement.classList.remove("warning"); + editorWarnings.classList.add("hidden"); + editorWarnings.innerHTML = ""; } function encodeToken() { - deferToNextLoop(fixEditorHeight); - - eventManager.withDisabledEvents(() => { - let header; - try { - header = JSON.parse(headerEditor.getValue()); - } catch (e) { - markAsInvalidWithElement(headerElement, true); - return; - } + deferToNextLoop(fixEditorHeight); + resetEditorWarnings(); - if (!header.alg) { - setAlgorithmInHeader(getSelectedAlgorithm()); - return; - } else { - selectAlgorithm(header.alg); - } + eventManager.withDisabledEvents(() => { + let header; + try { + header = JSON.parse(headerEditor.getValue()); + } catch (e) { + markAsInvalidWithElement(headerElement, true); + return; + } - let payload; - try { - payload = JSON.parse(payloadEditor.getValue()); - } catch (e) { - markAsInvalidWithElement(payloadElement, true); - return; - } + if (!header.alg) { + setAlgorithmInHeader(getSelectedAlgorithm()); + return; + } else { + selectAlgorithm(header.alg); + } - const key = isSharedSecretAlgorithm(header.alg) - ? secretInput.value - : privateKeyTextArea.value; + let payload; + try { + payload = JSON.parse(payloadEditor.getValue()); + } catch (e) { + markAsInvalidWithElement(payloadElement, true); + return; + } - sign(header, payload, key, secretBase64Checkbox.checked) - .then(encoded => { - eventManager.withDisabledEvents(() => { - tokenEditor.setValue(encoded); - }); - }) - .catch(e => { - eventManager.withDisabledEvents(() => { - log.warn("Failed to sign/encode token: ", e); - markAsInvalid(); - tokenEditor.setValue(""); - }); - }) - .finally(() => { - verifyToken(); - }); - }); + const key = isSharedSecretAlgorithm(header.alg) ? + secretInput.value : + privateKeyTextArea.value; + + sign(header, payload, key, secretBase64Checkbox.checked) + .then((encoded) => { + eventManager.withDisabledEvents(() => { + tokenEditor.setValue(encoded); + }); + }) + .catch((e) => { + eventManager.withDisabledEvents(() => { + log.warn("Failed to sign/encode token: ", e); + markAsInvalid(); + tokenEditor.setValue(""); + }); + }) + .finally(() => { + verifyToken(); + }); + }); } function decodeToken() { - deferToNextLoop(fixEditorHeight); - - eventManager.withDisabledEvents(() => { - try { - const jwt = getTrimmedValue(tokenEditor); - const decoded = decode(jwt); - - selectAlgorithm(decoded.header.alg); - if (isPublicKeyAlgorithm(decoded.header.alg)) { - downloadPublicKeyIfPossible(decoded).then(publicKey => { - eventManager.withDisabledEvents(() => { - publicKeyTextArea.value = publicKey; - verifyToken(); - }); - }); - } - - headerEditor.setValue(stringify(decoded.header)); - payloadEditor.setValue(stringify(decoded.payload)); + deferToNextLoop(fixEditorHeight); + resetEditorWarnings(); - if (decoded.errors) { - markAsInvalidWithElement(editorElement, false); - } else { - if (decoded.warnings && decoded.warnings.length > 0) { - showEditorWarnings(decoded.warnings); - markJWTAsInvalid(); - } else { - hideEditorWarnings(); + eventManager.withDisabledEvents(() => { + try { + const jwt = getTrimmedValue(tokenEditor); + const decoded = decode(jwt); + + selectAlgorithm(decoded.header.alg); + if (isPublicKeyAlgorithm(decoded.header.alg)) { + downloadPublicKeyIfPossible(decoded).then((publicKey) => { + eventManager.withDisabledEvents(() => { + publicKeyTextArea.value = publicKey; + verifyToken(); + }); + }); + } + + headerEditor.setValue(stringify(decoded.header)); + payloadEditor.setValue(stringify(decoded.payload)); + + if (decoded.errors) { + markAsInvalidWithElement(editorElement, false, decoded.warnings); + + console.log(decoded.warnings.includes(strings.warnings.payloadInvalidJSON)) + if (decoded.warnings.includes(strings.warnings.payloadInvalidJSON)) { + markAsInvalidWithElement(payloadElement, false) + } + + } else { + if (decoded.warnings && decoded.warnings.length > 0) { + showEditorWarnings(decoded.warnings); + markJWTAsInvalid(); + } else { + hideEditorWarnings(); + } + + verifyToken(); + } + } catch (e) { + log.warn("Failed to decode token: ", e); } - - verifyToken(); - } - } catch (e) { - log.warn("Failed to decode token: ", e); - } - }); + }); } function verifyToken() { - const jwt = getTrimmedValue(tokenEditor); - const decoded = decode(jwt); - - if (!decoded.header.alg || decoded.header.alg === "none") { - markAsInvalid(); - return; - } - - const publicKeyOrSecret = isSharedSecretAlgorithm(decoded.header.alg) - ? secretInput.value - : publicKeyTextArea.value; - - verify(jwt, publicKeyOrSecret, secretBase64Checkbox.checked).then(result => { - if (result.validSignature) { - if (!result.validBase64) { - markJWTAsInvalid(); - } else { - markAsValid(); - } - } else { - markAsInvalid(); + const jwt = getTrimmedValue(tokenEditor); + const decoded = decode(jwt); + + if (!decoded.header.alg || decoded.header.alg === "none") { + markAsInvalid(); + return; } - }); + + const publicKeyOrSecret = isSharedSecretAlgorithm(decoded.header.alg) ? + secretInput.value : + publicKeyTextArea.value; + verify(jwt, publicKeyOrSecret, secretBase64Checkbox.checked).then( + (result) => { + if (result.validSignature) { + if (!result.validBase64) { + markJWTAsInvalid(); + } else { + markAsValid(); + } + } else { + markAsInvalid(); + } + } + ); } // The last saved token functionality has been flagged as a security issue. @@ -342,94 +359,90 @@ function verifyToken() { // Once a considerable amount of time has passed since this was put in place, // it may be safe to remove it. Enabled at: 2018-06-12. function removeSavedTokens() { - localStorage.removeItem("lastToken"); - localStorage.removeItem("lastPublicKey"); + localStorage.removeItem("lastToken"); + localStorage.removeItem("lastPublicKey"); } function setupTabEvents() { - // These are relevant for portrait or mobile screens. + // These are relevant for portrait or mobile screens. - encodedTabLink.addEventListener("click", event => { - event.preventDefault(); + encodedTabLink.addEventListener("click", (event) => { + event.preventDefault(); - decodedTabLink.parentNode.classList.remove("current"); - encodedTabLink.parentNode.classList.add("current"); - decodedTabElement.classList.remove("current"); - encodedTabElement.classList.add("current"); - }); + decodedTabLink.parentNode.classList.remove("current"); + encodedTabLink.parentNode.classList.add("current"); + decodedTabElement.classList.remove("current"); + encodedTabElement.classList.add("current"); + }); - decodedTabLink.addEventListener("click", event => { - event.preventDefault(); + decodedTabLink.addEventListener("click", (event) => { + event.preventDefault(); - encodedTabLink.parentNode.classList.remove("current"); - decodedTabLink.parentNode.classList.add("current"); - encodedTabElement.classList.remove("current"); - decodedTabElement.classList.add("current"); - }); + encodedTabLink.parentNode.classList.remove("current"); + decodedTabLink.parentNode.classList.add("current"); + encodedTabElement.classList.remove("current"); + decodedTabElement.classList.add("current"); + }); } function setupEvents() { - // The event manager lets us enable/disable events as needed without - // manually tracking them. Events that need to be disabled should be - // passed to the event manager. - - eventManager.addDomEvent(algorithmSelect, "change", algorithmChangeHandler); - - // When an encoded token is inserted, it must be decoded. - eventManager.addCodeMirrorEvent( - tokenEditor, - "change", - decodeToken - ); - // When parts of the decoded token are changed, it must be reencoded. - eventManager.addCodeMirrorEvent( - headerEditor, - "change", - encodeToken - ); - eventManager.addCodeMirrorEvent( - payloadEditor, - "change", - encodeToken - ); - - // HMAC secret, show tooltip if secret is too short. - eventManager.addDomEvent(secretInput, "input", minSecretLengthCheck); - // HMAC secret, when changed the encoded token must be updated. - eventManager.addDomEvent(secretInput, "input", encodeToken); - // Base64 checkbox, when changes the encoded token must be updated. - eventManager.addDomEvent(secretBase64Checkbox, "change", encodeToken); - // Private key, when changed the encoded token must be updated. - eventManager.addDomEvent(privateKeyTextArea, "input", encodeToken); - // Public key, when changed the encoded token must NOT be updated - // (only verified). - eventManager.addDomEvent(publicKeyTextArea, "input", verifyToken); - - // The following events are never disabled, so it is not necessary to go - // through the event manager for them. - setupTabEvents(); + // The event manager lets us enable/disable events as needed without + // manually tracking them. Events that need to be disabled should be + // passed to the event manager. + + eventManager.addDomEvent(algorithmSelect, "change", algorithmChangeHandler); + + // When an encoded token is inserted, it must be decoded. + eventManager.addCodeMirrorEvent(tokenEditor, "change", decodeToken); + // When parts of the decoded token are changed, it must be reencoded. + eventManager.addCodeMirrorEvent(headerEditor, "change", encodeToken); + eventManager.addCodeMirrorEvent(payloadEditor, "change", encodeToken); + + // HMAC secret, show tooltip if secret is too short. + eventManager.addDomEvent(secretInput, "input", minSecretLengthCheck); + // HMAC secret, when changed the encoded token must be updated. + eventManager.addDomEvent(secretInput, "input", encodeToken); + // Base64 checkbox, when changes the encoded token must be updated. + eventManager.addDomEvent(secretBase64Checkbox, "change", encodeToken); + // Private key, when changed the encoded token must be updated. + eventManager.addDomEvent(privateKeyTextArea, "input", encodeToken); + // Public key, when changed the encoded token must NOT be updated + // (only verified). + eventManager.addDomEvent(publicKeyTextArea, "input", verifyToken); + + // The following events are never disabled, so it is not necessary to go + // through the event manager for them. + setupTabEvents(); } export function setTokenEditorValue(value) { - tokenEditor.setValue(value); + tokenEditor.setValue(value); } export function getTokenEditorValue() { - return { - token: getTrimmedValue(tokenEditor), - publicKey: isPublicKeyAlgorithm(getSelectedAlgorithm()) - ? publicKeyTextArea.value - : undefined - }; + return { + token: getTrimmedValue(tokenEditor), + publicKey: isPublicKeyAlgorithm(getSelectedAlgorithm()) ? + publicKeyTextArea.value : undefined, + }; } -export function setupTokenEditor() { - disableUnsupportedAlgorithms(); - setupEvents(); - selectAlgorithm("HS256"); - useDefaultToken("HS256"); - fixEditorHeight(); - setupSecretLengthTooltip(); - setupClaimsTooltip(); - removeSavedTokens(); +export function resetEditorWarnings() { + signatureStatusElement.classList.add("valid-token"); + signatureStatusElement.classList.remove("invalid-token"); + editorElement.classList.remove("error"); + editorElement.classList.remove("warning"); + editorWarnings.classList.add("hidden"); + editorWarnings.innerHTML = ""; } + +export function setupTokenEditor() { + disableUnsupportedAlgorithms(); + setupEvents(); + selectAlgorithm("HS256"); + useDefaultToken("HS256"); + fixEditorHeight(); + setupSecretLengthTooltip(); + setupClaimsTooltip(); + removeSavedTokens(); +} \ No newline at end of file diff --git a/src/editor/jwt.js b/src/editor/jwt.js index 47710f08..22a0cc98 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -2,24 +2,26 @@ import jose from 'node-jose'; import b64u from 'base64url'; import any from 'promise.any'; import { pki } from 'node-forge'; -import strings from '../strings';strings +import strings from '../strings'; +strings import log from 'loglevel'; +import { findLastIndex } from 'lodash'; // node-jose does not support keys shorter than block size. This is a // limitation from their implementation and could be resolved in the future. // See: https://github.com/cisco/node-jose/blob/master/lib/jwk/octkey.js#L141 function paddedKey(key, alg, base64Secret) { - const blockSizeBytes = alg.indexOf('256') !== -1 ? 512 / 8 : 1024 / 8; + const blockSizeBytes = alg.indexOf('256') !== -1 ? 512 / 8 : 1024 / 8; - let buf = base64Secret ? Buffer.from(key, 'base64') : Buffer.from(key); + let buf = base64Secret ? Buffer.from(key, 'base64') : Buffer.from(key); - if(buf.length < blockSizeBytes) { - const oldBuf = buf; - buf = Buffer.alloc(blockSizeBytes); - buf.set(oldBuf); - } + if (buf.length < blockSizeBytes) { + const oldBuf = buf; + buf = Buffer.alloc(blockSizeBytes); + buf.set(oldBuf); + } - return b64u.encode(buf); + return b64u.encode(buf); } /* @@ -32,158 +34,176 @@ function paddedKey(key, alg, base64Secret) { * X509 SubjectPublicKeyInfo format. */ function plainRsaKeyToX509Key(key) { - try { - const startTag = '-----BEGIN RSA PUBLIC KEY-----'; - const endTag = '-----END RSA PUBLIC KEY-----'; - const startTagPos = key.indexOf(startTag); - const endTagPos = key.indexOf(endTag); + try { + const startTag = '-----BEGIN RSA PUBLIC KEY-----'; + const endTag = '-----END RSA PUBLIC KEY-----'; + const startTagPos = key.indexOf(startTag); + const endTagPos = key.indexOf(endTag); - return startTagPos !== -1 && endTagPos !== -1 ? + return startTagPos !== -1 && endTagPos !== -1 ? pki.publicKeyToPem(pki.publicKeyFromPem(key)) : key; - } catch(e) { - // If anything fails, it may not be a plain RSA key, so return the same key. - return key; - } + } catch (e) { + // If anything fails, it may not be a plain RSA key, so return the same key. + return key; + } } function getJoseKey(header, key, base64Secret) { - if(header.alg.indexOf('HS') === 0) { - return jose.JWK.asKey({ - kty: 'oct', - use: 'sig', - alg: header.alg, - k: paddedKey(key, header.alg, base64Secret) - }); - } else { - if(header.alg.indexOf('RS') === 0) { - key = plainRsaKeyToX509Key(key); + if (header.alg.indexOf('HS') === 0) { + return jose.JWK.asKey({ + kty: 'oct', + use: 'sig', + alg: header.alg, + k: paddedKey(key, header.alg, base64Secret) + }); + } else { + if (header.alg.indexOf('RS') === 0) { + key = plainRsaKeyToX509Key(key); + } + + return any(['pem', 'json'].map(form => { + try { + return jose.JWK.asKey(key, form); + } catch (e) { + return Promise.reject(e); + } + })); } - - return any(['pem', 'json'].map(form => { - try { - return jose.JWK.asKey(key, form); - } catch(e) { - return Promise.reject(e); - } - })); - } } export function sign(header, - payload, - secretOrPrivateKeyString, - base64Secret = false) { - if(!header.alg) { - return Promise.reject(new Error('Missing "alg" claim in header')); - } - - return getJoseKey(header, secretOrPrivateKeyString, base64Secret).then( - key => { - if(!(typeof payload === 'string' || payload instanceof String)) { - payload = JSON.stringify(payload); - } - - return jose.JWS.createSign({ - fields: header, - format: 'compact' - }, { - key: key, - reference: false - }).update(payload, 'utf8').final(); + payload, + secretOrPrivateKeyString, + base64Secret = false) { + if (!header.alg) { + return Promise.reject(new Error('Missing "alg" claim in header')); } - ); + + return getJoseKey(header, secretOrPrivateKeyString, base64Secret).then( + key => { + if (!(typeof payload === 'string' || payload instanceof String)) { + payload = JSON.stringify(payload); + } + + return jose.JWS.createSign({ + fields: header, + format: 'compact' + }, { + key: key, + reference: false + }).update(payload, 'utf8').final(); + } + ); } export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { - if(!isToken(jwt)) { - return Promise.resolve({validSignature: false}); - } - - const decoded = decode(jwt); - - if(!decoded.header.alg || decoded.errors) { - return Promise.resolve({validSignature: false}); - } - - return getJoseKey(decoded.header, secretOrPublicKeyString, base64Secret).then( - key => { - return jose.JWS.createVerify(key) - .verify(jwt) - .then(() => ({ - validSignature: true, - validBase64: jwt.split('.').reduce((valid, s) => valid = valid && isValidBase64String(s), true) - }), () => ({validSignature: false})); - }, e => { - log.warn('Could not verify token, ' + - 'probably due to bad data in it or the keys: ', e); - return {validSignature: false}; + if (!isToken(jwt)) { + return Promise.resolve({ validSignature: false }); } - ); + + const decoded = decode(jwt); + + if (!decoded.header.alg || decoded.errors) { + return Promise.resolve({ validSignature: false }); + } + + return getJoseKey(decoded.header, secretOrPublicKeyString, base64Secret).then( + key => { + return jose.JWS.createVerify(key) + .verify(jwt) + .then(() => ({ + validSignature: true, + validBase64: jwt.split('.').reduce((valid, s) => valid = valid && isValidBase64String(s), true) + }), () => ({ validSignature: false })); + }, e => { + log.warn('Could not verify token, ' + + 'probably due to bad data in it or the keys: ', e); + return { validSignature: false }; + } + ); } export function decode(jwt) { - const result = { - header: {}, - payload: {}, - errors: false, - warnings: [], - }; - - if(!jwt) { - result.errors = true; - return result; - } + const result = { + header: {}, + payload: {}, + errors: false, + warnings: [], + }; + + if (!jwt) { + result.errors = true; + return result; + } + + const split = jwt.split('.'); - const split = jwt.split('.'); + if (!isValidBase64String(split[2])) { + result.warnings.push(strings.warnings.signatureBase64Invalid); + } - if (!isValidBase64String(split[2])) { - result.warnings.push(strings.warnings.signatureBase64Invalid); - } + try { + if (!isValidBase64String(split[0])) { + result.warnings.push(strings.warnings.headerBase64Invalid); + } + result.header = JSON.parse(b64u.decode(split[0])); + } catch (e) { + result.errors = true; + } - try { - if (!isValidBase64String(split[0])) { - result.warnings.push(strings.warnings.headerBase64Invalid); + try { + if (!isValidBase64String(split[1])) { + result.warnings.push(strings.warnings.payloadBase64Invalid); + } + result.payload = JSON.parse(b64u.decode(split[1])); + } catch (e) { + result.errors = true; } - result.header = JSON.parse(b64u.decode(split[0])); - } catch(e) { - result.errors = true; - } - - try { - if (!isValidBase64String(split[1])) { - result.warnings.push(strings.warnings.payloadBase64Invalid); + + try { + if (!isValidJSON(b64u.decode(split[1]))) { + result.warnings.push(strings.warnings.payloadInvalidJSON); + result.payload = b64u.decode(split[1]) + } + } catch (e) { + result.errors = true; } - result.payload = JSON.parse(b64u.decode(split[1])); - } catch(e) { - result.errors = true; - } - return result; + return result; } export function isValidBase64String(s, allowPadding = false) { - if (allowPadding) { - return /^[a-zA-Z0-9_=-]*$/.test(s); - } + if (allowPadding) { + return /^[a-zA-Z0-9_=-]*$/.test(s); + } - return /^[a-zA-Z0-9_-]*$/.test(s); + return /^[a-zA-Z0-9_-]*$/.test(s); +} + +export function isValidJSON(payload) { + try { + JSON.parse(payload); + } catch (e) { + return false; + } + return true; } export function isToken(jwt, checkTypClaim = false) { - const decoded = decode(jwt); + const decoded = decode(jwt); - if(decoded.errors) { - return false; - } + if (decoded.errors) { + return false; + } - if(checkTypClaim && decoded.header.typ !== 'JWT') { - return false; - } + if (checkTypClaim && decoded.header.typ !== 'JWT') { + return false; + } - const split = jwt.split('.'); - let valid = true; - split.forEach(s => valid = valid && isValidBase64String(s, true)); + const split = jwt.split('.'); + let valid = true; + split.forEach(s => valid = valid && isValidBase64String(s, true)); - return valid; -} + return valid; +} \ No newline at end of file diff --git a/src/strings.js b/src/strings.js index 030bd008..d282c6a3 100644 --- a/src/strings.js +++ b/src/strings.js @@ -1,56 +1,57 @@ export default { - common: { - shareThisJwt: 'Share JWT', - jwtIoUrlCopied: 'Copied', - claims: { - exp: 'Expiration time (seconds since Unix epoch)', - nbf: 'Not valid before (seconds since Unix epoch)', - iat: 'Issued at (seconds since Unix epoch)', - iss: 'Issuer (who created and signed this token)', - sub: 'Subject (whom the token refers to)', - aud: 'Audience (who or what the token is intended for)', - jti: 'JWT ID (unique identifier for this token)', - typ: 'Type of token', - azp: 'Authorized party (the party to which this token was issued)', - alg: 'Signature or encryption algorithm', - jku: 'JSON Web Key Set URL', - jwk: 'JSON Web Key Set (embedded)', - kid: 'Key ID', - x5u: 'X.509 Certificate URL', - x5t: 'X.509 Fingerprint (SHA-1)', - 'x5t#S256': 'X.509 Fingerprint (SHA-256)', - cty: 'Content type', - crit: 'Extensions or claims that MUST be processed or verified', - enc: 'Encryption algorithm', - zip: 'Compression algorithm', - kty: 'Key type', - use: 'Intended use of key: "sig" or "enc" (other values accepted)', - key_ops: 'Intended operations for this key', - sid: 'Session ID (String identifier for a Session)', - updated_at: 'Last modification timestamp', - at_hash: 'Access Token hash value', - c_hash: 'Authorization Code hash value', - s_hash: 'State hash value', - nonce: 'Unique value associating request to token', - auth_time: 'Time when authentication occurred', - amr: 'Authentication methods array', - acr: 'Authentication context class' + common: { + shareThisJwt: 'Share JWT', + jwtIoUrlCopied: 'Copied', + claims: { + exp: 'Expiration time (seconds since Unix epoch)', + nbf: 'Not valid before (seconds since Unix epoch)', + iat: 'Issued at (seconds since Unix epoch)', + iss: 'Issuer (who created and signed this token)', + sub: 'Subject (whom the token refers to)', + aud: 'Audience (who or what the token is intended for)', + jti: 'JWT ID (unique identifier for this token)', + typ: 'Type of token', + azp: 'Authorized party (the party to which this token was issued)', + alg: 'Signature or encryption algorithm', + jku: 'JSON Web Key Set URL', + jwk: 'JSON Web Key Set (embedded)', + kid: 'Key ID', + x5u: 'X.509 Certificate URL', + x5t: 'X.509 Fingerprint (SHA-1)', + 'x5t#S256': 'X.509 Fingerprint (SHA-256)', + cty: 'Content type', + crit: 'Extensions or claims that MUST be processed or verified', + enc: 'Encryption algorithm', + zip: 'Compression algorithm', + kty: 'Key type', + use: 'Intended use of key: "sig" or "enc" (other values accepted)', + key_ops: 'Intended operations for this key', + sid: 'Session ID (String identifier for a Session)', + updated_at: 'Last modification timestamp', + at_hash: 'Access Token hash value', + c_hash: 'Authorization Code hash value', + s_hash: 'State hash value', + nonce: 'Unique value associating request to token', + auth_time: 'Time when authentication occurred', + amr: 'Authentication methods array', + acr: 'Authentication context class' + } + }, + extension: { + alreadyInstalled: 'Already installed', + addToBrowser: 'Add to Browser', + noJwtsFound: 'No JWTs found', + saveBackTo: 'Save back to ' + }, + editor: { + signatureVerified: 'signature verified', + signatureInvalid: 'invalid signature', + jwtInvalid: 'Invalid JWT' + }, + warnings: { + headerBase64Invalid: 'Looks like your JWT header is not encoded correctly using base64url (https://tools.ietf.org/html/rfc4648#section-5). Note that padding ("=") must be omitted as per https://tools.ietf.org/html/rfc7515#section-2', + payloadBase64Invalid: 'Looks like your JWT payload is not encoded correctly using base64url (https://tools.ietf.org/html/rfc4648#section-5). Note that padding ("=") must be omitted as per https://tools.ietf.org/html/rfc7515#section-2', + signatureBase64Invalid: 'Looks like your JWT signature is not encoded correctly using base64url (https://tools.ietf.org/html/rfc4648#section-5). Note that padding ("=") must be omitted as per https://tools.ietf.org/html/rfc7515#section-2', + payloadInvalidJSON: 'Looks like your JWT payload is not a valid JSON object. JWT payloads must be top level JSON objects as per https://tools.ietf.org/html/rfc7519#section-7.2' } - }, - extension: { - alreadyInstalled: 'Already installed', - addToBrowser: 'Add to Browser', - noJwtsFound: 'No JWTs found', - saveBackTo: 'Save back to ' - }, - editor: { - signatureVerified: 'signature verified', - signatureInvalid: 'invalid signature', - jwtInvalid: 'Invalid JWT' - }, - warnings: { - headerBase64Invalid: 'Looks like your JWT header is not encoded correctly using base64url (https://tools.ietf.org/html/rfc4648#section-5). Note that padding ("=") must be omitted as per https://tools.ietf.org/html/rfc7515#section-2', - payloadBase64Invalid: 'Looks like your JWT payload is not encoded correctly using base64url (https://tools.ietf.org/html/rfc4648#section-5). Note that padding ("=") must be omitted as per https://tools.ietf.org/html/rfc7515#section-2', - signatureBase64Invalid: 'Looks like your JWT signature is not encoded correctly using base64url (https://tools.ietf.org/html/rfc4648#section-5). Note that padding ("=") must be omitted as per https://tools.ietf.org/html/rfc7515#section-2', - } -}; +}; \ No newline at end of file diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 3ca57a01..033fcc64 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1232,12 +1232,12 @@ footer background #fff7c9 border-radius 3px font-size 14px - color #786600 + color rgba(0,0,0,.8) line-height 2 a - border-bottom 1px solid rgba(120,102,0,.4) - color #786600 + border-bottom 1px solid rgba(0,0,0,.4) + color rgba(0,0,0,.8) text-decoration none &:hover From 84e145ea513c45a63b57f9057c16e97c59491c5b Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 2 Sep 2020 17:02:31 +0200 Subject: [PATCH 427/611] Reset payload error state before decodeing a new token --- src/editor/index.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/editor/index.js b/src/editor/index.js index 8a9f7820..627857f6 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -68,7 +68,7 @@ function markAsInvalid(errorMessages = []) { errorElement.appendChild(errorLabel); errorElement.appendChild(errorMessage); editorWarnings.appendChild(errorElement); - }) + }); } else { signatureStatusElement.innerHTML = ` ${strings.editor.signatureInvalid}`; } @@ -197,7 +197,11 @@ function algorithmChangeHandler() { } } -function markAsInvalidWithElement(element, clearTokenEditor = true, errors = []) { +function markAsInvalidWithElement( + element, + clearTokenEditor = true, + errors = [] +) { element.classList.add("error"); markAsInvalid(errors); @@ -306,11 +310,12 @@ function decodeToken() { if (decoded.errors) { markAsInvalidWithElement(editorElement, false, decoded.warnings); - console.log(decoded.warnings.includes(strings.warnings.payloadInvalidJSON)) + console.log( + decoded.warnings.includes(strings.warnings.payloadInvalidJSON) + ); if (decoded.warnings.includes(strings.warnings.payloadInvalidJSON)) { - markAsInvalidWithElement(payloadElement, false) + markAsInvalidWithElement(payloadElement, false); } - } else { if (decoded.warnings && decoded.warnings.length > 0) { showEditorWarnings(decoded.warnings); @@ -423,13 +428,15 @@ export function getTokenEditorValue() { return { token: getTrimmedValue(tokenEditor), publicKey: isPublicKeyAlgorithm(getSelectedAlgorithm()) ? - publicKeyTextArea.value : undefined, + publicKeyTextArea.value : + undefined, }; } export function resetEditorWarnings() { signatureStatusElement.classList.add("valid-token"); signatureStatusElement.classList.remove("invalid-token"); + payloadElement.classList.remove("error"); editorElement.classList.remove("error"); editorElement.classList.remove("warning"); editorWarnings.classList.add("hidden"); From 0ca79d53e59baddd8523641e961919f4c90e2ac5 Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 2 Sep 2020 17:06:04 +0200 Subject: [PATCH 428/611] Remove console.log --- src/editor/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/editor/index.js b/src/editor/index.js index 627857f6..d919711a 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -310,9 +310,6 @@ function decodeToken() { if (decoded.errors) { markAsInvalidWithElement(editorElement, false, decoded.warnings); - console.log( - decoded.warnings.includes(strings.warnings.payloadInvalidJSON) - ); if (decoded.warnings.includes(strings.warnings.payloadInvalidJSON)) { markAsInvalidWithElement(payloadElement, false); } From 364d339668595a6d5a4c31b66286ab2482554cd0 Mon Sep 17 00:00:00 2001 From: Dave Hunsberger Date: Wed, 16 Sep 2020 15:42:53 -0400 Subject: [PATCH 429/611] Create 31-CFML.json --- views/website/libraries/31-CFML.json | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 views/website/libraries/31-CFML.json diff --git a/views/website/libraries/31-CFML.json b/views/website/libraries/31-CFML.json new file mode 100644 index 00000000..1c0c5775 --- /dev/null +++ b/views/website/libraries/31-CFML.json @@ -0,0 +1,38 @@ +{ + "name": "CFML", + "uniqueClass": "cfml", + "image": "/img/31.svg", + "bgColor": "rgb(101,143,170)", + "libs": [ + { + "minimumVersion": CF11, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": true, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/jcberquist", + "authorName": "John Berquist", + "gitHubRepoPath": "jcberquist/jwt-cfml", + "repoUrl": "https://github.com/jcberquist/jwt-cfml", + "installCommandHtml": "git clone https://github.com/jcberquist/jwt-cfml" + } + ] From 417bff05f5cb17c4520bdd570ca423c275864691 Mon Sep 17 00:00:00 2001 From: Dave Hunsberger Date: Wed, 16 Sep 2020 15:45:20 -0400 Subject: [PATCH 430/611] Add files via upload --- img/website/31.svg | 318 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 318 insertions(+) create mode 100644 img/website/31.svg diff --git a/img/website/31.svg b/img/website/31.svg new file mode 100644 index 00000000..fb7fa847 --- /dev/null +++ b/img/website/31.svg @@ -0,0 +1,318 @@ + + + + From d150d57c3a0bd9a7494c65cd24fe3dd18519f6bf Mon Sep 17 00:00:00 2001 From: Gilbert Gilb's Date: Sat, 3 Oct 2020 15:00:19 +0200 Subject: [PATCH 431/611] add go jwit library --- views/website/libraries/9-Go.json | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index fda53924..14729056 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -405,6 +405,39 @@ "gitHubRepoPath": "cristalhq/jwt", "repoUrl": "https://github.com/cristalhq/jwt", "installCommandHtml": "go get github.com/cristalhq/jwt" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": false, + "jti": false, + "hs256": false, + "hs384": false, + "hs512": false, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "es256k": false, + "ps256": true, + "ps384": true, + "ps512": true, + "eddsa": true + }, + "authorUrl": "https://github.com/gilbsgilbs", + "authorName": "gilbsgilbs", + "gitHubRepoPath": "gilbsgilbs/jwit", + "repoUrl": "https://github.com/gilbsgilbs/jwit", + "installCommandHtml": "go get github.com/gilbsgilbs/jwit" } ] } From 1e4831e6f792716e2ca557acfe20997a7d5a6404 Mon Sep 17 00:00:00 2001 From: Dave Hunsberger Date: Mon, 5 Oct 2020 10:01:03 -0400 Subject: [PATCH 432/611] Update 31-CFML.json --- views/website/libraries/31-CFML.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/31-CFML.json b/views/website/libraries/31-CFML.json index 1c0c5775..ae8e8bab 100644 --- a/views/website/libraries/31-CFML.json +++ b/views/website/libraries/31-CFML.json @@ -5,7 +5,7 @@ "bgColor": "rgb(101,143,170)", "libs": [ { - "minimumVersion": CF11, + "minimumVersion": "CF11", "support": { "sign": true, "verify": true, From 81acfe8c821ac5de8761e7a7bd2a5ef48304e503 Mon Sep 17 00:00:00 2001 From: petrichor8 Date: Mon, 5 Oct 2020 10:28:54 -0400 Subject: [PATCH 433/611] removing to set up for svg file --- img/website/31.svg | 318 --------------------------------------------- 1 file changed, 318 deletions(-) delete mode 100644 img/website/31.svg diff --git a/img/website/31.svg b/img/website/31.svg deleted file mode 100644 index fb7fa847..00000000 --- a/img/website/31.svg +++ /dev/null @@ -1,318 +0,0 @@ - - - - From d9c993c9c31b4e628cd40a5e9b7b7bc10098ab17 Mon Sep 17 00:00:00 2001 From: petrichor8 Date: Mon, 5 Oct 2020 11:35:47 -0400 Subject: [PATCH 434/611] convert to true svg --- img/website/31.svg | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 img/website/31.svg diff --git a/img/website/31.svg b/img/website/31.svg new file mode 100644 index 00000000..f9f53ea9 --- /dev/null +++ b/img/website/31.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + From 5cd897454f8bc26a9d35f21eb4b8491b410b69bc Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 5 Oct 2020 17:43:26 +0200 Subject: [PATCH 435/611] Add missing bracket int het CFML file --- views/website/libraries/31-CFML.json | 73 ++++++++++++++-------------- 1 file changed, 36 insertions(+), 37 deletions(-) diff --git a/views/website/libraries/31-CFML.json b/views/website/libraries/31-CFML.json index ae8e8bab..d428d11f 100644 --- a/views/website/libraries/31-CFML.json +++ b/views/website/libraries/31-CFML.json @@ -1,38 +1,37 @@ { - "name": "CFML", - "uniqueClass": "cfml", - "image": "/img/31.svg", - "bgColor": "rgb(101,143,170)", - "libs": [ - { - "minimumVersion": "CF11", - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": false, - "aud": true, - "exp": true, - "nbf": true, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true, - "ps256": false, - "ps384": false, - "ps512": false - }, - "authorUrl": "https://github.com/jcberquist", - "authorName": "John Berquist", - "gitHubRepoPath": "jcberquist/jwt-cfml", - "repoUrl": "https://github.com/jcberquist/jwt-cfml", - "installCommandHtml": "git clone https://github.com/jcberquist/jwt-cfml" - } - ] + "name": "CFML", + "uniqueClass": "cfml", + "image": "/img/31.svg", + "bgColor": "rgb(101,143,170)", + "libs": [{ + "minimumVersion": "CF11", + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": false, + "aud": true, + "exp": true, + "nbf": true, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/jcberquist", + "authorName": "John Berquist", + "gitHubRepoPath": "jcberquist/jwt-cfml", + "repoUrl": "https://github.com/jcberquist/jwt-cfml", + "installCommandHtml": "git clone https://github.com/jcberquist/jwt-cfml" + }] +} \ No newline at end of file From 47cdb34b66187aca4f6a3d144c2d12c89d6954a4 Mon Sep 17 00:00:00 2001 From: SP3269 <25411814+SP3269@users.noreply.github.com> Date: Mon, 26 Oct 2020 09:53:27 +1100 Subject: [PATCH 436/611] Adding PowerShell class, library, and logo --- img/website/32.svg | 42 ++++++++++++++++++++++ views/website/libraries/32-PowerShell.json | 40 +++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 img/website/32.svg create mode 100644 views/website/libraries/32-PowerShell.json diff --git a/img/website/32.svg b/img/website/32.svg new file mode 100644 index 00000000..b427df2f --- /dev/null +++ b/img/website/32.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/views/website/libraries/32-PowerShell.json b/views/website/libraries/32-PowerShell.json new file mode 100644 index 00000000..bda25055 --- /dev/null +++ b/views/website/libraries/32-PowerShell.json @@ -0,0 +1,40 @@ +{ + "name": "PowerShell", + "uniqueClass": "powershell", + "image": "/img/32.svg", + "bgColor": "rgb(25,40,57)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": false, + "hs512": false, + "rs256": true, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/SP3269", + "authorName": "Svyatoslav Pidgorny", + "gitHubRepoPath": "SP3269/posh-jwt", + "repoUrl": "https://github.com/SP3269/posh-jwt", + "installCommandHtml": "Install-Module JWT" + } + ] + } + \ No newline at end of file From 4826f57e4aba7693b65034e248a32c5011896200 Mon Sep 17 00:00:00 2001 From: "Gerasimos (Makis) Maropoulos" Date: Mon, 2 Nov 2020 11:37:14 +0200 Subject: [PATCH 437/611] Add kataras/jwt Go library Hello, this PR adds a commit which includes the new [kataras/jwt](https://github.com/kataras/jwt) package to the official list. --- views/website/libraries/9-Go.json | 34 ++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 14729056..9c2f9d4b 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -438,6 +438,38 @@ "gitHubRepoPath": "gilbsgilbs/jwit", "repoUrl": "https://github.com/gilbsgilbs/jwit", "installCommandHtml": "go get github.com/gilbsgilbs/jwit" - } + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true, + "eddsa": true + }, + "authorUrl": "https://github.com/kataras", + "authorName": "kataras", + "gitHubRepoPath": "kataras/jwt", + "repoUrl": "https://github.com/kataras/jwt", + "installCommandHtml": "go get github.com/kataras/jwt" + }, ] } From 2cdf569144331ba8da20aef546afa44302670a4e Mon Sep 17 00:00:00 2001 From: "Gerasimos (Makis) Maropoulos" Date: Mon, 2 Nov 2020 11:38:17 +0200 Subject: [PATCH 438/611] Remove unnecessary comma --- views/website/libraries/9-Go.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 9c2f9d4b..419af8af 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -470,6 +470,6 @@ "gitHubRepoPath": "kataras/jwt", "repoUrl": "https://github.com/kataras/jwt", "installCommandHtml": "go get github.com/kataras/jwt" - }, + } ] } From 081ad36692649f47ee8c8cfe8f844b004a566025 Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 4 Nov 2020 13:49:14 +0100 Subject: [PATCH 439/611] Update CFML and Powershell logos --- img/website/31.svg | 52 ++++++++++++++++---------------- img/website/32.svg | 74 ++++++++++++++++++++-------------------------- 2 files changed, 57 insertions(+), 69 deletions(-) diff --git a/img/website/31.svg b/img/website/31.svg index f9f53ea9..a61323cd 100644 --- a/img/website/31.svg +++ b/img/website/31.svg @@ -1,27 +1,25 @@ - - - - - - - - - - - - - - - - - + + + + Oval + Created with Sketch. + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/img/website/32.svg b/img/website/32.svg index b427df2f..f0d570b9 100644 --- a/img/website/32.svg +++ b/img/website/32.svg @@ -1,42 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + 32 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 6f55cbcbc7a46e7465acba798a47f50055b961c1 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 5 Nov 2020 10:04:35 +0100 Subject: [PATCH 440/611] Update extension permissions --- manifest.json | 90 +++++++++---------- .../content-scripts/check-install.js | 4 - webpack.extension-dev.js | 25 +++--- 3 files changed, 53 insertions(+), 66 deletions(-) delete mode 100644 src/extension/content-scripts/check-install.js diff --git a/manifest.json b/manifest.json index 3742879a..503a3894 100644 --- a/manifest.json +++ b/manifest.json @@ -1,50 +1,42 @@ { - "manifest_version": 2, - - "name": "JWT Debugger", - "description": "The JWT.io debugger as a Web Extension", - "version": "3.1.0", - - "browser_action": { - "default_icon": "img/favicon/favicon-96x96.png", - "default_popup": "index.html" - }, - - "background": { - "page": "bg.html" - }, - - "content_scripts": [{ - "matches": ["https://jwt.io/*"], - "js": ["js/check-install.js"] - }], - - "icons": { - "16": "img/favicon/favicon-16x16.png", - "32": "img/favicon/favicon-32x32.png", - "48": "img/favicon/android-icon-48x48.png", - "96": "img/favicon/favicon-96x96.png", - "192": "img/favicon/android-icon-192x192.png" - }, - - "commands": { - "_execute_browser_action": { - "suggested_key": { - "default": "Ctrl+Shift+K", - "mac": "Command+Shift+K", - "linux": "Ctrl+Shift+K" - } - } - }, - - "content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'", - - "permissions": [ - "activeTab", - "", - "cookies", - "storage", - "clipboardRead", - "clipboardWrite" - ] -} + "manifest_version": 2, + + "name": "JWT Debugger", + "description": "The JWT.io debugger as a Web Extension", + "version": "3.2.0", + + "browser_action": { + "default_icon": "img/favicon/favicon-96x96.png", + "default_popup": "index.html" + }, + + "background": { + "page": "bg.html" + }, + + "icons": { + "16": "img/favicon/favicon-16x16.png", + "32": "img/favicon/favicon-32x32.png", + "48": "img/favicon/android-icon-48x48.png", + "96": "img/favicon/favicon-96x96.png", + "192": "img/favicon/android-icon-192x192.png" + }, + + "commands": { + "_execute_browser_action": { + "suggested_key": { + "default": "Ctrl+Shift+K", + "mac": "Command+Shift+K", + "linux": "Ctrl+Shift+K" + } + } + }, + + "permissions": [ + "activeTab", + "cookies", + "storage", + "clipboardRead", + "clipboardWrite" + ] +} \ No newline at end of file diff --git a/src/extension/content-scripts/check-install.js b/src/extension/content-scripts/check-install.js deleted file mode 100644 index 5310028b..00000000 --- a/src/extension/content-scripts/check-install.js +++ /dev/null @@ -1,4 +0,0 @@ -const e = document.getElementById('extension-button'); -if(e) { - e.classList.add('is-installed'); -} diff --git a/webpack.extension-dev.js b/webpack.extension-dev.js index a8caad52..24b441c6 100644 --- a/webpack.extension-dev.js +++ b/webpack.extension-dev.js @@ -1,16 +1,15 @@ -const merge = require('webpack-merge'); +const merge = require("webpack-merge"); -const common = require('./webpack.common.js'); +const common = require("./webpack.common.js"); module.exports = merge(common, { - mode: 'development', - entry: { - index: './src/extension/index.js', - webstorage: './src/extension/injected/webstorage.js', - 'check-install': './src/extension/content-scripts/check-install.js' - }, - output: { - filename: '[name].js', - path: __dirname + '/dist/extension/js' - } -}); + mode: "development", + entry: { + index: "./src/extension/index.js", + webstorage: "./src/extension/injected/webstorage.js", + }, + output: { + filename: "[name].js", + path: __dirname + "/dist/extension/js", + }, +}); \ No newline at end of file From 543261f38760ff21fcf677351ea1762f931d4c50 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 5 Nov 2020 10:08:37 +0100 Subject: [PATCH 441/611] Update cookie consent to be GDPR proof --- views/website/layout.pug | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/views/website/layout.pug b/views/website/layout.pug index 5ea00d6b..cdb529b2 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -73,7 +73,7 @@ html(lang='en') script. !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); - // GDPR cookie banner - script(src="https://cdn.cookielaw.org/consent/c1198aef-6105-4bf5-9af7-ab5b543482e0.js") - script(type="text/javascript"). - function OptanonWrapper() { } + div + div(id="consent_blackbar") + div(id="teconsent" style="position: absolute; bottom: -100px;") + script(async="async" src="http://consent.trustarc.com/notice?domain=auth0banner.com&c=teconsent&js=nj¬iceType=bb&text=true" crossOrigin) From f9f46bd907b28423b5c8a383e4903697e082f3e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Nov 2020 09:09:36 +0000 Subject: [PATCH 442/611] Bump dot-prop from 4.2.0 to 4.2.1 Bumps [dot-prop](https://github.com/sindresorhus/dot-prop) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/sindresorhus/dot-prop/releases) - [Commits](https://github.com/sindresorhus/dot-prop/compare/v4.2.0...v4.2.1) Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c02772e6..50964323 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4284,9 +4284,9 @@ } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", "dev": true, "requires": { "is-obj": "^1.0.0" From 2549ee03ff300552cb1fd339942c605b819c1e59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Nov 2020 09:09:52 +0000 Subject: [PATCH 443/611] Bump bl from 1.2.2 to 1.2.3 Bumps [bl](https://github.com/rvagg/bl) from 1.2.2 to 1.2.3. - [Release notes](https://github.com/rvagg/bl/releases) - [Commits](https://github.com/rvagg/bl/compare/v1.2.2...v1.2.3) Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c02772e6..4ea3922a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2636,9 +2636,9 @@ } }, "bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", "dev": true, "requires": { "readable-stream": "^2.3.5", From f1120a3147ab65fa94614e0fc3a316918d1d9237 Mon Sep 17 00:00:00 2001 From: Daniel DeGroff Date: Wed, 11 Nov 2020 11:16:29 -0700 Subject: [PATCH 444/611] Update FusionAuth maven version --- views/website/libraries/3-Java.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index f70f12b7..1237b7b1 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -157,7 +157,7 @@ "authorName": "FusionAuth", "gitHubRepoPath": "fusionauth/fusionauth-jwt", "repoUrl": "https://github.com/fusionauth/fusionauth-jwt", - "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 3.5.0" + "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 4.0.0" }, { "minimumVersion": null, From 8a1107f0e0c187def839ab237c52b239e7ba5966 Mon Sep 17 00:00:00 2001 From: Nutchanon Ninyawee Date: Sat, 14 Nov 2020 10:08:57 +0700 Subject: [PATCH 445/611] update support for pyjwt eddsa https://github.com/jpadilla/pyjwt/pull/455 https://github.com/jpadilla/pyjwt/pull/531 these are some proved about the support of pyjwt eddsa. --- views/website/libraries/1-Python.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/1-Python.json b/views/website/libraries/1-Python.json index 2f94d066..80771323 100644 --- a/views/website/libraries/1-Python.json +++ b/views/website/libraries/1-Python.json @@ -27,7 +27,8 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": true, }, "authorUrl": "https://github.com/jpadilla", "authorName": "José Padilla", From d4ceb1356c56ae7d703796a12ba521ad14541cee Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sat, 14 Nov 2020 18:55:01 +0100 Subject: [PATCH 446/611] add panva/jose to javascript --- views/website/libraries/4-JavaScript.json | 33 +++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/views/website/libraries/4-JavaScript.json b/views/website/libraries/4-JavaScript.json index 25b4db71..531c8366 100644 --- a/views/website/libraries/4-JavaScript.json +++ b/views/website/libraries/4-JavaScript.json @@ -4,6 +4,39 @@ "image": "/img/6.svg", "bgColor": "rgb(239, 200, 37)", "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true, + "eddsa": false, + "es256k": false + }, + "authorUrl": "https://github.com/panva", + "authorName": "Filip Skokan", + "gitHubRepoPath": "panva/jose", + "repoUrl": "https://github.com/panva/jose", + "installCommandHtml": "npm install jose" + }, { "minimumVersion": "3.2.0", "support": { From 0075558fbc09596d1f30000b1b65cba6c8d92666 Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 17 Nov 2020 13:42:43 +0100 Subject: [PATCH 447/611] Add stale bot --- .github/stale.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 00000000..3cc35f17 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,20 @@ +# Configuration for probot-stale - https://github.com/probot/stale + +# Number of days of inactivity before an Issue or Pull Request becomes stale +daysUntilStale: 90 + +# Number of days of inactivity before an Issue or Pull Request with the stale label is closed. +daysUntilClose: 7 + +# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable +exemptLabels: [] + +# Set to true to ignore issues with an assignee (defaults to false) +exemptAssignees: true + +# Label to use when marking as stale +staleLabel: closed:stale + +# Comment to post when marking as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you have not received a response for our team (apologies for the delay) and this is still a blocker, please reply with additional information or just a ping. Thank you for your contribution! 🙇‍♂️ From 7594e0e3daa54c52e920efa1ccd7973f4975b8d0 Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 17 Nov 2020 13:51:13 +0100 Subject: [PATCH 448/611] Remove extra comma --- views/website/libraries/1-Python.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/1-Python.json b/views/website/libraries/1-Python.json index 80771323..98a3f5d1 100644 --- a/views/website/libraries/1-Python.json +++ b/views/website/libraries/1-Python.json @@ -28,7 +28,7 @@ "ps256": true, "ps384": true, "ps512": true, - "eddsa": true, + "eddsa": true }, "authorUrl": "https://github.com/jpadilla", "authorName": "José Padilla", From da01b649f65d7f9a2bc20db52e4470d899c8bee6 Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Thu, 19 Nov 2020 15:18:16 +0100 Subject: [PATCH 449/611] Add sponsorship message --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 8a07450e..1b4236ce 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,12 @@ [![Build Status](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io.png?branch=master)](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io) +### Sponsor + +||| +|-|-| +|![auth0 logo](https://user-images.githubusercontent.com/83319/31722733-de95bbde-b3ea-11e7-96bf-4f4e8f915588.png)|If you want to quickly add secure (JSON Web) token-based authentication to your projects, feel free to check Auth0's documentation and free plan at [auth0.com/developers](https://auth0.com/developers?utm_source=GHsponsor&utm_medium=GHsponsor&utm_campaign=jwtio&utm_content=auth)| + ### How to add a library To add a library, simply edit the right JSON file located at `views/website/libraries`. Each language gets its own file. Multiple libraries share the same language file. From b2f074bb7e2988c530a6300fba40704362658adb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Dec 2020 17:06:06 +0000 Subject: [PATCH 450/611] Bump highlight.js from 9.18.3 to 10.4.1 Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 9.18.3 to 10.4.1. - [Release notes](https://github.com/highlightjs/highlight.js/releases) - [Changelog](https://github.com/highlightjs/highlight.js/blob/master/CHANGES.md) - [Commits](https://github.com/highlightjs/highlight.js/commits/10.4.1) Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index c02772e6..86c296c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6701,9 +6701,9 @@ "dev": true }, "highlight.js": { - "version": "9.18.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.3.tgz", - "integrity": "sha512-zBZAmhSupHIl5sITeMqIJnYCDfAEc3Gdkqj65wC1lpI468MMQeeQkhcIAvk+RylAkxrCcI9xy9piHiXeQ1BdzQ==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.1.tgz", + "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==", "dev": true }, "hmac-drbg": { diff --git a/package.json b/package.json index 5eadab55..10bb47fc 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "grunt-exec": "^3.0.0", "grunt-mocha-test": "^0.13.3", "grunt-webpack": "^3.1.3", - "highlight.js": "^9.15.8", + "highlight.js": "^10.4.1", "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", "jquery": "^3.4.1", From 68db98cd375ec011ae567f2f22c086b1b2f20d12 Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Thu, 10 Dec 2020 08:17:49 +0100 Subject: [PATCH 451/611] PHP lcobucci/jwt: add EdDSA support --- views/website/libraries/24-PHP.json | 1 + 1 file changed, 1 insertion(+) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index a0645bb2..19bc0e1a 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -84,6 +84,7 @@ "rs256": true, "rs384": true, "rs512": true, + "eddsa": true, "es256": false, "es384": false, "es512": false, From 837a1fe796e764c80923e56212b53f1ec5489882 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Dec 2020 18:57:01 +0000 Subject: [PATCH 452/611] Bump ini from 1.3.5 to 1.3.7 Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7. - [Release notes](https://github.com/isaacs/ini/releases) - [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7) Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c02772e6..1b6c7e6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6945,9 +6945,9 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", "dev": true }, "inject-loader": { From ad940bc08f20c74e638de3e0c5fc83dc8bc95ff1 Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Fri, 11 Dec 2020 06:57:32 +0100 Subject: [PATCH 453/611] Fix reference --- views/website/libraries/24-PHP.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index 19bc0e1a..64ee3ba3 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -53,6 +53,7 @@ "rs256": true, "rs384": true, "rs512": true, + "eddsa": true, "es256": true, "es384": true, "es512": true, @@ -84,7 +85,6 @@ "rs256": true, "rs384": true, "rs512": true, - "eddsa": true, "es256": false, "es384": false, "es512": false, From 98c852bdf246038f4a283e8d003d850028794825 Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Fri, 11 Dec 2020 09:30:03 +0100 Subject: [PATCH 454/611] eddsa available from lcobucci/jwt:v4.1.0 --- views/website/libraries/24-PHP.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index 64ee3ba3..67f03986 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -36,7 +36,7 @@ "installCommandHtml": "composer require firebase/php-jwt" }, { - "minimumVersion": "3.0.0", + "minimumVersion": "4.1.0", "support": { "sign": true, "verify": true, From 11317d4f3ef7084e0d68de58531b3e5f39349b1b Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 14 Dec 2020 09:55:24 +0100 Subject: [PATCH 455/611] Update hightlight.js import --- src/website/highlighting.js | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/website/highlighting.js b/src/website/highlighting.js index 86c93aee..cc03cca4 100644 --- a/src/website/highlighting.js +++ b/src/website/highlighting.js @@ -1,23 +1,23 @@ -import { codeElements } from './dom-elements-common.js'; +import { codeElements } from "./dom-elements-common.js"; -import hljs from 'highlight.js/lib/highlight.js'; -import jsHighlight from 'highlight.js/lib/languages/javascript'; -import jsonHighlight from 'highlight.js/lib/languages/json'; +import hljs from "highlight.js/lib/core"; +import jsHighlight from "highlight.js/lib/languages/javascript"; +import jsonHighlight from "highlight.js/lib/languages/json"; -hljs.registerLanguage('javascript', jsHighlight); -hljs.registerLanguage('json', jsonHighlight); +hljs.registerLanguage("javascript", jsHighlight); +hljs.registerLanguage("json", jsonHighlight); export function setupHighlighting() { - // TODO: consider replacing this with CodeMirror, which we already use. + // TODO: consider replacing this with CodeMirror, which we already use. - hljs.configure({ - classPrefix: '' - }); + hljs.configure({ + classPrefix: "", + }); - Array.prototype.forEach.call(codeElements, element => { - if (!element.classList.contains('hljs')) { - element.classList.add('hljs'); - hljs.highlightBlock(element); - } - }); -} + Array.prototype.forEach.call(codeElements, (element) => { + if (!element.classList.contains("hljs")) { + element.classList.add("hljs"); + hljs.highlightBlock(element); + } + }); +} \ No newline at end of file From 55fa77f0daf7956c7e60b05b392308c49198315a Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 14 Dec 2020 12:00:33 +0100 Subject: [PATCH 456/611] Fetch github stars serverside --- .env.sample | 1 + .gitignore | 2 + Gruntfile.js | 23 +- libraries.js | 51 + package-lock.json | 41567 +++++++++++----- package.json | 9 +- server.js | 37 +- src/website/libraries.js | 100 +- .../libraries/support/get-languages.js | 33 +- views/website/libraries/template.pug | 3 +- views/website/token-editor.pug | 1 - webpack.common.js | 70 +- 12 files changed, 27987 insertions(+), 13910 deletions(-) create mode 100644 .env.sample create mode 100644 libraries.js diff --git a/.env.sample b/.env.sample new file mode 100644 index 00000000..00f8ae29 --- /dev/null +++ b/.env.sample @@ -0,0 +1 @@ +GITHUB= \ No newline at end of file diff --git a/.gitignore b/.gitignore index fee5fda1..7ad7b569 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ npm-debug.log .dockerignore Dockerfile yarn.lock +.env +libraries.json diff --git a/Gruntfile.js b/Gruntfile.js index 5fa53c56..43498478 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -4,7 +4,6 @@ const getLanguages = require("./views/website/libraries/support/get-languages.js module.exports = (grunt) => { grunt.loadNpmTasks("grunt-contrib-copy"); grunt.loadNpmTasks("grunt-contrib-stylus"); - grunt.loadNpmTasks("grunt-contrib-pug"); grunt.loadNpmTasks("grunt-webpack"); grunt.loadNpmTasks("grunt-contrib-watch"); grunt.loadNpmTasks("grunt-contrib-clean"); @@ -118,26 +117,6 @@ module.exports = (grunt) => { }, }, - pug: { - website: { - options: { - //pretty: true, - data: { - languages: getLanguages(), - }, - }, - files: { - "dist/website/index.html": "views/website/index.pug", - "dist/website/introduction/index.html": "views/website/introduction.pug", - }, - }, - extension: { - files: { - "dist/extension/index.html": "views/extension/index.pug", - }, - }, - }, - webpack: { websiteProd: require("./webpack.website-prod.js"), websiteDev: require("./webpack.website-dev.js"), @@ -224,7 +203,7 @@ module.exports = (grunt) => { }, }); - grunt.registerTask("build-website-views", ["stylus:website", "pug:website"]); + grunt.registerTask("build-website-views", ["stylus:website"]); grunt.registerTask("build-extension-views", [ "stylus:extension", diff --git a/libraries.js b/libraries.js new file mode 100644 index 00000000..6348f4e2 --- /dev/null +++ b/libraries.js @@ -0,0 +1,51 @@ +const fs = require("fs"); +const { Octokit } = require("@octokit/rest"); +const dotenv = require("dotenv").config(); +const getLanguages = require("./views/website/libraries/support/get-languages.js"); +const octokit = new Octokit({ + auth: process.env.GITHUB, +}); + +function fetchGithubStars() { + const requests = []; + const languages = getLanguages(); + + console.log("----------------------"); + console.log("Fetching GitHub Data"); + console.log("----------------------"); + + languages.forEach((language) => { + language.libs.forEach((lib) => { + if (lib.gitHubRepoPath) { + const owner = lib.gitHubRepoPath.split("/")[0]; + const repo = lib.gitHubRepoPath.split("/")[1]; + requests.push( + octokit.repos + .get({ + owner, + repo, + }) + .then((repo) => { + console.log( + "Stars", + lib.gitHubRepoPath, + repo.data.stargazers_count + ); + + lib.stars = repo.data.stargazers_count; + return repo.data.stargazers_count; + }) + ); + } + }); + }); + + Promise.all(requests).then(() => { + console.log("----------------------"); + console.log("Writing libraries.json"); + console.log("----------------------"); + fs.writeFileSync(`${__dirname}/libraries.json`, JSON.stringify(languages)); + }); +} + +fetchGithubStars(); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 1d880df3..ae6d7133 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13994 +1,28075 @@ { - "name": "jwt.io", - "version": "3.2.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } - }, - "@babel/core": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz", - "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.1", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.0", - "@babel/types": "^7.11.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "name": "jwt.io", + "version": "3.2.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "jwt.io", + "version": "3.2.0", + "dependencies": { + "@octokit/rest": "^18.0.12", + "dotenv": "^8.2.0", + "express": "^4.17.1", + "express-sslify": "^1.2.0", + "lodash.debounce": "^4.0.8", + "octokit": "^1.0.0-hello-world", + "querystring": "^0.2.0" + }, + "devDependencies": { + "@babel/core": "^7.4.5", + "@babel/polyfill": "^7.4.4", + "@babel/preset-env": "^7.4.5", + "babel-loader": "^8.0.6", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "bootstrap": "^3.4.1", + "chai": "^4.2.0", + "chai-arrays": "^2.0.0", + "chai-as-promised": "^7.1.1", + "chai-json-schema": "^1.5.1", + "clipboard-polyfill": "^2.8.1", + "codemirror": "^5.47.0", + "deep-freeze": "0.0.1", + "esm": "^3.2.25", + "flipclock": "^0.7.8", + "grunt": "^1.0.4", + "grunt-cli": "^1.3.2", + "grunt-contrib-clean": "^1.1.0", + "grunt-contrib-connect": "^1.0.2", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-pug": "^1.0.0", + "grunt-contrib-stylus": "^1.2.0", + "grunt-contrib-watch": "^1.1.0", + "grunt-crx": "^1.0.5", + "grunt-exec": "^3.0.0", + "grunt-mocha-test": "^0.13.3", + "grunt-webpack": "^3.1.3", + "highlight.js": "^10.4.1", + "inject-loader": "^3.0.1", + "isotope-layout": "^3.0.6", + "jquery": "^3.4.1", + "jstransformer-markdown-it": "^2.1.0", + "lodash": "^4.17.13", + "loglevel": "^1.6.2", + "mocha": "^5.2.0", + "node-jose": "^1.1.4", + "promise.any": "^0.1.1", + "pug": "^2.0.3", + "puppeteer": "^1.17.0", + "request-promise-native": "^1.0.7", + "sinon": "^4.5.0", + "sinon-chai": "^2.14.0", + "source-map-support": "^0.5.12", + "stylus": "^0.54.5", + "tippy.js": "^2.6.0", + "tv4-formats": "^3.0.3", + "uglifyjs-webpack-plugin": "^1.3.0", + "web-ext": "^2.9.3", + "webpack": "^4.33.0", + "webpack-merge": "^4.2.1", + "xhr-mock": "^2.4.1" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", - "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.10.4", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" - } - }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", - "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", - "dev": true, - "requires": { - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", - "lodash": "^4.17.19" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", - "dev": true - }, - "@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", - "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", - "dev": true, - "requires": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", - "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", - "dev": true, - "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.2.tgz", - "integrity": "sha512-Vuj/+7vLo6l1Vi7uuO+1ngCDNeVmNbTngcJFKCR/oEtz8tKz0CJxZEGmPt9KcIloZhOZ3Zit6xbpXT2MDlS9Vw==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", - "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", - "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", - "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", - "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/polyfill": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.10.4.tgz", - "integrity": "sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg==", - "dev": true, - "requires": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/preset-env": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz", - "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-proposal-private-methods": "^7.10.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.4", - "@babel/plugin-transform-arrow-functions": "^7.10.4", - "@babel/plugin-transform-async-to-generator": "^7.10.4", - "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", - "@babel/plugin-transform-classes": "^7.10.4", - "@babel/plugin-transform-computed-properties": "^7.10.4", - "@babel/plugin-transform-destructuring": "^7.10.4", - "@babel/plugin-transform-dotall-regex": "^7.10.4", - "@babel/plugin-transform-duplicate-keys": "^7.10.4", - "@babel/plugin-transform-exponentiation-operator": "^7.10.4", - "@babel/plugin-transform-for-of": "^7.10.4", - "@babel/plugin-transform-function-name": "^7.10.4", - "@babel/plugin-transform-literals": "^7.10.4", - "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", - "@babel/plugin-transform-modules-umd": "^7.10.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", - "@babel/plugin-transform-new-target": "^7.10.4", - "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", - "@babel/plugin-transform-property-literals": "^7.10.4", - "@babel/plugin-transform-regenerator": "^7.10.4", - "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.11.0", - "@babel/plugin-transform-sticky-regex": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", - "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.4", - "@babel/plugin-transform-unicode-regex": "^7.10.4", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.0", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/register": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0.tgz", - "integrity": "sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g==", - "dev": true, - "requires": { - "core-js": "^2.5.7", - "find-cache-dir": "^1.0.0", - "home-or-tmp": "^3.0.0", - "lodash": "^4.17.10", - "mkdirp": "^0.5.1", - "pirates": "^4.0.0", - "source-map-support": "^0.5.9" - }, - "dependencies": { - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } + "node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } + "node_modules/@babel/compat-data": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", + "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } }, - "home-or-tmp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", - "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", - "dev": true + "node_modules/@babel/core": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz", + "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.1", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.0", + "@babel/types": "^7.11.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } + "node_modules/@babel/core/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } + "node_modules/@babel/generator": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", + "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.11.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "node_modules/@babel/helper-compilation-targets": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.10.4", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - } - } - }, - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "@cliqz-oss/firefox-client": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@cliqz-oss/firefox-client/-/firefox-client-0.3.1.tgz", - "integrity": "sha512-RO+Tops/wGnBzWoZYkCraqyh2JqOejqJq5/a4b54HhmjTNSKdUPwAOK17EGg/zPb0nWqkuB7QyZsI9bo+ev8Kw==", - "dev": true, - "requires": { - "colors": "0.5.x", - "js-select": "~0.6.0" - }, - "dependencies": { - "colors": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", - "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", - "dev": true - } - } - }, - "@cliqz-oss/node-firefox-connect": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@cliqz-oss/node-firefox-connect/-/node-firefox-connect-1.2.1.tgz", - "integrity": "sha512-O/IyiB5pfztCdmxQZg0/xeq5w+YiP3gtJz8d4We2EpLPKzbDVjOrtfLKYgVfm6Ya6mbvDge1uLkSRwaoVCWKnA==", - "dev": true, - "requires": { - "@cliqz-oss/firefox-client": "0.3.1", - "es6-promise": "^2.0.1" - }, - "dependencies": { - "es6-promise": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", - "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=", - "dev": true - } - } - }, - "@sinonjs/commons": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", - "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/formatio": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", - "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", - "dev": true, - "requires": { - "samsam": "1.3.0" - } - }, - "@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" - } - }, - "@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", - "dev": true - }, - "@types/babel-types": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.8.tgz", - "integrity": "sha512-jvu8g4LR7+p6ao30RhTREnEhHxmP4/R9D9/rOR/Kq14FztORty9SKgtOZUNZNMB9CXLxZ54EWu4dArUE8WdTsw==", - "dev": true - }, - "@types/babylon": { - "version": "6.16.5", - "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", - "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", - "dev": true, - "requires": { - "@types/babel-types": "*" - } - }, - "@types/json-schema": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", - "dev": true - }, - "@types/node": { - "version": "14.0.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", - "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "JSONSelect": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.2.1.tgz", - "integrity": "sha1-QVQYpSbTP+MddLTe+jyDbUhewgM=", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - }, - "acorn-globals": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "dev": true, - "requires": { - "acorn": "^4.0.4" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - } - } - }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true - }, - "adbkit": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/adbkit/-/adbkit-2.11.0.tgz", - "integrity": "sha512-j2vUhEeZmCiqBP+p77CpPWQTcT20rOmSmRHFUTZUwUpxzeCd3fXop4NAGYztSY9/FNU4bT/qqvYQ4EZKuCXhfA==", - "dev": true, - "requires": { - "adbkit-logcat": "^1.1.0", - "adbkit-monkey": "~1.0.1", - "bluebird": "~2.9.24", - "commander": "^2.3.0", - "debug": "~2.6.3", - "node-forge": "^0.7.1", - "split": "~0.3.3" - }, - "dependencies": { - "bluebird": { - "version": "2.9.34", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", - "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g=", - "dev": true + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.0" + } }, - "node-forge": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", - "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", - "dev": true - } - } - }, - "adbkit-logcat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz", - "integrity": "sha1-Adf5sM75CTowvLOwB+//MBUIli8=", - "dev": true - }, - "adbkit-monkey": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz", - "integrity": "sha1-8pG+cBou/FZ6Y/x6pq/N7TFDC+E=", - "dev": true, - "requires": { - "async": "~0.2.9" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true - } - } - }, - "addons-linter": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-1.4.1.tgz", - "integrity": "sha512-AX8nCD/gy/6DoX4B7vTMQV6pcP8tG0BjxB3Jv44VZrUTYG+ojHx26abRDyUn+fDqWGf8qzeVn0Vss/NMNjMouA==", - "dev": true, - "requires": { - "@babel/polyfill": "7.0.0", - "@babel/register": "7.0.0", - "ajv": "6.5.5", - "ajv-merge-patch": "4.1.0", - "chalk": "2.4.0", - "cheerio": "1.0.0-rc.2", - "columnify": "1.5.4", - "common-tags": "1.8.0", - "crx-parser": "0.1.2", - "deepmerge": "2.2.1", - "dispensary": "0.27.0", - "es6-promisify": "5.0.0", - "eslint": "5.0.1", - "eslint-plugin-no-unsafe-innerhtml": "1.0.16", - "eslint-visitor-keys": "1.0.0", - "espree": "4.1.0", - "esprima": "3.1.3", - "first-chunk-stream": "2.0.0", - "fluent-syntax": "0.7.0", - "fsevents": "2.0.1", - "glob": "7.1.3", - "is-mergeable-object": "1.1.0", - "jed": "1.1.1", - "os-locale": "3.0.1", - "pino": "5.9.0", - "po2json": "0.4.5", - "postcss": "7.0.6", - "probe-image-size": "4.0.0", - "relaxed-json": "1.0.1", - "semver": "5.6.0", - "shelljs": "0.8.3", - "snyk": "1.110.2", - "source-map-support": "0.5.6", - "strip-bom-stream": "3.0.0", - "tosource": "1.0.0", - "upath": "1.1.0", - "whatwg-url": "7.0.0", - "xmldom": "0.1.27", - "yargs": "12.0.2", - "yauzl": "2.9.2" - }, - "dependencies": { - "@babel/polyfill": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz", - "integrity": "sha512-dnrMRkyyr74CRelJwvgnnSUDh2ge2NCTyHVwpOdvRMHtJUyxLtMAfhBN3s64pY41zdw0kgiLPh6S20eb1NcX6Q==", - "dev": true, - "requires": { - "core-js": "^2.5.7", - "regenerator-runtime": "^0.11.1" - } + "node_modules/@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } }, - "ajv": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", - "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", + "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "node_modules/@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "node_modules/@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } }, - "chalk": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", - "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } + "node_modules/@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.11.0" + } }, - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "requires": { - "xregexp": "4.0.0" - } + "node_modules/@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true + "node_modules/@babel/helper-module-transforms": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" + } }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true + "node_modules/@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.19" + } }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", + "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "node_modules/@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } }, - "source-map-support": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", - "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } + "node_modules/@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", + "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.11.0" + } }, - "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", - "dev": true + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.11.0" + } }, - "yargs": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", - "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^2.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^10.1.0" - } + "node_modules/@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } + "node_modules/@babel/helper-wrap-function": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } }, - "yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha1-T7G8euH8L1cDe1SvasyP4QMcW3c=", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - } - } - }, - "adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true - }, - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "ajv-merge-patch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ajv-merge-patch/-/ajv-merge-patch-4.1.0.tgz", - "integrity": "sha512-0mAYXMSauA8RZ7r+B4+EAOYcZEcO9OK5EiQCR7W7Cv4E44pJj56ZnkKLJ9/PAcOc0dT+LlV9fdDcq2TxVJfOYw==", - "dev": true, - "requires": { - "fast-json-patch": "^2.0.6", - "json-merge-patch": "^0.2.3" - } - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "^2.0.0" - } - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", - "dev": true - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "archiver": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", - "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", - "dev": true, - "requires": { - "archiver-utils": "^1.3.0", - "async": "^2.0.0", - "buffer-crc32": "^0.2.1", - "glob": "^7.0.0", - "lodash": "^4.8.0", - "readable-stream": "^2.0.0", - "tar-stream": "^1.5.0", - "walkdir": "^0.0.11", - "zip-stream": "^1.1.0" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } - } - }, - "archiver-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", - "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "graceful-fs": "^4.1.0", - "lazystream": "^1.0.0", - "lodash": "^4.8.0", - "normalize-path": "^2.0.0", - "readable-stream": "^2.0.0" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - } - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", - "dev": true - }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true + "node_modules/@babel/helpers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "ast-types": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", - "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "node_modules/@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } + "node_modules/@babel/parser": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.2.tgz", + "integrity": "sha512-Vuj/+7vLo6l1Vi7uuO+1ngCDNeVmNbTngcJFKCR/oEtz8tKz0CJxZEGmPt9KcIloZhOZ3Zit6xbpXT2MDlS9Vw==", + "dev": true }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", - "dev": true, - "requires": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", - "schema-utils": "^2.6.5" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-polyfill": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true - } - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - } - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", + "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "dev": true - }, - "base64url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", - "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", - "dev": true - }, - "basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "dev": true, - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", - "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", - "dev": true - }, - "body": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", - "dev": true, - "requires": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" - }, - "dependencies": { - "bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", - "dev": true + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } }, - "raw-body": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", - "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", - "dev": true, - "requires": { - "bytes": "1", - "string_decoder": "0.10" - } - } - } - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "bootstrap": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", - "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", + "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", - "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001093", - "electron-to-chromium": "^1.3.488", - "escalade": "^3.0.1", - "node-releases": "^1.1.58" - } - }, - "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", - "dev": true - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bunyan": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", - "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", - "dev": true, - "requires": { - "dtrace-provider": "~0.8", - "moment": "^2.10.6", - "mv": "~2", - "safe-json-stringify": "~1" - } - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "^0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001111", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001111.tgz", - "integrity": "sha512-xnDje2wchd/8mlJu8sXvWxOGvMgv+uT3iZ3bkIAynKOzToCssWCmkz/ZIkQBs/2pUB4uwnJKVORWQ31UkbVjOg==", - "dev": true - }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" - } - }, - "chai-arrays": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.2.0.tgz", - "integrity": "sha512-4awrdGI2EH8owJ9I58PXwG4N56/FiM8bsn4CVSNEgr4GKAM6Kq5JPVApUbhUBjDakbZNuRvV7quRSC38PWq/tg==", - "dev": true - }, - "chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", - "dev": true, - "requires": { - "check-error": "^1.0.2" - } - }, - "chai-json-schema": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/chai-json-schema/-/chai-json-schema-1.5.1.tgz", - "integrity": "sha512-TR/xPDxRhqwFFCWg1HgL8nNWbpNfUwaib6pBN++QKpnd0t+o3+MBvAn5CM1mpdUMaM76oJAtUjGKdjGad01lIA==", - "dev": true, - "requires": { - "jsonpointer.js": "0.4.0", - "tv4": "^1.3.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", - "dev": true, - "requires": { - "is-regex": "^1.0.3" - } - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "cheerio": { - "version": "1.0.0-rc.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", - "dev": true, - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" + } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", + "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - } - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "clipboard-polyfill": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/clipboard-polyfill/-/clipboard-polyfill-2.8.6.tgz", - "integrity": "sha512-kz/1ov+PXsBpGnW9XJH3dLWdYj12FpXqO89Dngm/GRPoI36E/tnYs6N0YPTEhxM9WHAlFiN5eoyIVuv5nzKXvg==", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-deep": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", - "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.1", - "kind-of": "^3.2.2", - "shallow-clone": "^0.1.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "codemirror": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.56.0.tgz", - "integrity": "sha512-MfKVmYgifXjQpLSgpETuih7A7WTTIsxvKfSLGseTY5+qt0E1UD1wblZGM6WLenORo8sgmf+3X+WTe2WF7mufyw==", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "columnify": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", - "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", - "dev": true, - "requires": { - "strip-ansi": "^3.0.0", - "wcwidth": "^1.0.0" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "compress-commons": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", - "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.1", - "crc32-stream": "^2.0.0", - "normalize-path": "^2.0.0", - "readable-stream": "^2.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "dependencies": { - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", + "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - } - }, - "connect-livereload": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", - "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constantinople": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", - "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", - "dev": true, - "requires": { - "@types/babel-types": "^7.0.0", - "@types/babylon": "^6.16.2", - "babel-types": "^6.26.0", - "babylon": "^6.18.0" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "continuable-cache": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true - }, - "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", - "dev": true, - "requires": { - "browserslist": "^4.8.5", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "dev": true, - "requires": { - "buffer": "^5.1.0" - } - }, - "crc32-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", - "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", - "dev": true, - "requires": { - "crc": "^3.4.4", - "readable-stream": "^2.0.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crx": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/crx/-/crx-3.2.1.tgz", - "integrity": "sha1-Fyk+51790IxtHIs+F0nS1XV89Cs=", - "dev": true, - "requires": { - "archiver": "^1.1.0", - "commander": "^2.5.0", - "es6-promise": "^3.0.0", - "node-rsa": "^0.2.10" - } - }, - "crx-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/crx-parser/-/crx-parser-0.1.2.tgz", - "integrity": "sha1-fu7tnt3JXiLBiTguNGJARKiaWm0=", - "dev": true - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-parse": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", - "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", - "dev": true - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "dev": true - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-uri-to-buffer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", - "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", - "dev": true - }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true - }, - "debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.1.0.tgz", - "integrity": "sha512-ZQVKfRVlwRfD150ndzEK8M90ABT+Y/JQKs4Y7U4MXdpuoUkkrr4DwKbVux3YjylA5bUMUj0Nc3pMxPJX6N2QQQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deep-for-each": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/deep-for-each/-/deep-for-each-2.0.3.tgz", - "integrity": "sha512-Y9mu+rplGcNZ7veer+5rqcdI9w3aPb7/WyE/nYnsuPevaE2z5YuC2u7/Gz/hIKsa0zo8sE8gKoBimSNsO/sr+A==", - "dev": true, - "requires": { - "lodash.isplainobject": "^4.0.6" - } - }, - "deep-freeze": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", - "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "deepcopy": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-0.6.3.tgz", - "integrity": "sha1-Y0eA8vhlardxr4+oQx7RzO5Vx7A=", - "dev": true - }, - "deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "dev": true - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "degenerator": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", - "dev": true, - "requires": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "desandro-matches-selector": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", - "integrity": "sha1-cXvu1NwT59jzdi9wem1YpndCGOE=", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "dispensary": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.27.0.tgz", - "integrity": "sha512-bG9pSBPH8wTEaugUIBAbBvBHynqOoGxefOT4YXlPoUc9AxQGDUO1uFHafDVWnsGWiSYvTUga0aZ9xThzfGQtlQ==", - "dev": true, - "requires": { - "array-from": "~2.1.1", - "async": "~2.6.0", - "natural-compare-lite": "~1.4.0", - "pino": "~5.8.0", - "request": "~2.88.0", - "sha.js": "~2.4.4", - "source-map-support": "~0.5.4", - "yargs": "~12.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + } }, - "pino": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/pino/-/pino-5.8.1.tgz", - "integrity": "sha512-7bVFzUw3ffIfOM3t7MuQ9KsH+wX5bdGdQhGfccKgleoY7qG4FO3CmVSjywlFmmYGyMOISi1LDGC6JMEH7XkZJg==", - "dev": true, - "requires": { - "fast-json-parse": "^1.0.3", - "fast-redact": "^1.2.0", - "fast-safe-stringify": "^2.0.6", - "flatstr": "^1.0.5", - "pino-std-serializers": "^2.3.0", - "pump": "^3.0.0", - "quick-format-unescaped": "^3.0.0", - "sonic-boom": "^0.6.1" - } + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - } - } - }, - "dockerfile-ast": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.0.12.tgz", - "integrity": "sha512-cIV8oXkAxpIuN5XgG0TGg07nLDgrj4olkfrdT77OTA3VypscsYHBUg/FjHxW9K3oA+CyH4Th/qtoMgTVpzSobw==", - "dev": true, - "requires": { - "vscode-languageserver-types": "^3.5.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", - "dev": true - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dev": true, - "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", - "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "dtrace-provider": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", - "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.14.0" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "electron-to-chromium": { - "version": "1.3.523", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.523.tgz", - "integrity": "sha512-D4/3l5DpciddD92IDRtpLearQSGzly8FwBJv+nITvLH8YJrFabpDFe4yuiOJh2MS4/EsXqyQTXyw1toeYPtshQ==", - "dev": true - }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "email-validator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", - "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", - "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", - "dev": true, - "requires": { - "string-template": "~0.2.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "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" - } - }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", - "dev": true - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - } - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - }, - "dependencies": { - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - } - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escalade": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", - "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.0.1.tgz", - "integrity": "sha512-D5nG2rErquLUstgUaxJlWB5+gu+U/3VDY0fk/Iuq8y9CUFy/7Y6oF4N2cR1tV8knzQvciIbfqfohd359xTLIKQ==", - "dev": true, - "requires": { - "ajv": "^6.5.0", - "babel-code-frame": "^6.26.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^4.0.0", - "eslint-visitor-keys": "^1.0.0", - "espree": "^4.0.0", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.5.0", - "ignore": "^3.3.3", - "imurmurhash": "^0.1.4", - "inquirer": "^5.2.0", - "is-resolvable": "^1.1.0", - "js-yaml": "^3.11.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.5", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^1.1.0", - "require-uncached": "^1.0.3", - "semver": "^5.5.0", - "string.prototype.matchall": "^2.0.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^4.0.3", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "eslint-plugin-no-unsafe-innerhtml": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsafe-innerhtml/-/eslint-plugin-no-unsafe-innerhtml-1.0.16.tgz", - "integrity": "sha1-fQKHjI6b95FriINtWsEitC8VGTI=", - "dev": true, - "requires": { - "eslint": "^3.7.1" - }, - "dependencies": { - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" + } }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } + "node_modules/@babel/plugin-transform-classes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "^1.0.1" - } + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true, - "requires": { - "babel-code-frame": "^6.16.0", - "chalk": "^1.1.3", - "concat-stream": "^1.5.2", - "debug": "^2.1.1", - "doctrine": "^2.0.0", - "escope": "^3.6.0", - "espree": "^3.4.0", - "esquery": "^1.0.0", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "glob": "^7.0.3", - "globals": "^9.14.0", - "ignore": "^3.2.0", - "imurmurhash": "^0.1.4", - "inquirer": "^0.12.0", - "is-my-json-valid": "^2.10.0", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.5.1", - "json-stable-stringify": "^1.0.0", - "levn": "^0.3.0", - "lodash": "^4.0.0", - "mkdirp": "^0.5.0", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.1", - "pluralize": "^1.2.1", - "progress": "^1.1.8", - "require-uncached": "^1.0.2", - "shelljs": "^0.7.5", - "strip-bom": "^3.0.0", - "strip-json-comments": "~2.0.1", - "table": "^3.7.8", - "text-table": "~0.2.0", - "user-home": "^2.0.0" - } + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - } + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "requires": { - "ansi-escapes": "^1.1.0", - "ansi-regex": "^2.0.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", - "cli-width": "^2.0.0", - "figures": "^1.3.5", - "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", - "through": "^2.3.6" - } + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true + "node_modules/@babel/plugin-transform-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, - "requires": { - "once": "^1.3.0" - } + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4" + } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" + } }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "dev": true, - "requires": { - "ajv": "^4.7.0", - "ajv-keywords": "^1.0.0", - "chalk": "^1.1.1", - "lodash": "^4.0.0", - "slice-ansi": "0.0.4", - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } - } - } - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true - }, - "esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "dev": true - }, - "espree": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", - "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", - "dev": true, - "requires": { - "acorn": "^6.0.2", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "ev-emitter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", - "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==", - "dev": true - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "event-to-promise": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz", - "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=", - "dev": true - }, - "eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", - "dev": true - }, - "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "express-sslify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/express-sslify/-/express-sslify-1.2.0.tgz", - "integrity": "sha1-MOhLzu0VV+sYdnK74UMKCioQDZw=" - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.14.2" + } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", - "dev": true, - "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-parse": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", - "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", - "dev": true - }, - "fast-json-patch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.2.1.tgz", - "integrity": "sha512-4j5uBaTnsYAV5ebkidvxiLUYOwjQ+JSFljeqfTxCrH9bDmlCQaOJFS84oDJ2rAXZq2yskmk3ORfoP9DCwqFNig==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1" - }, - "dependencies": { - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fast-redact": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-1.5.0.tgz", - "integrity": "sha512-Afo61CgUjkzdvOKDHn08qnZ0kwck38AOGcMlvSGzvJbIab6soAP5rdoQayecGCDsD69AiF9vJBXyq31eoEO2tQ==", - "dev": true - }, - "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", - "dev": true - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - } - }, - "file-sync-cmp": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", - "dev": true - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", - "dev": true, - "requires": { - "glob": "~5.0.0" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - } - }, - "firefox-profile": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-1.2.0.tgz", - "integrity": "sha512-TTEFfPOkyaz4EWx/5ZDQC1mJAe3a+JgVcchpIfD4Tvx1UspwlTJRJxOYA35x/z2iJcxaF6aW2rdh6oj6qwgd2g==", - "dev": true, - "requires": { - "adm-zip": "~0.4.x", - "archiver": "~2.1.0", - "async": "~2.5.0", - "fs-extra": "~4.0.2", - "ini": "~1.3.3", - "jetpack-id": "1.0.0", - "lazystream": "~1.0.0", - "lodash": "~4.17.2", - "minimist": "^1.1.1", - "uuid": "^3.0.0", - "xml2js": "~0.4.4" - }, - "dependencies": { - "archiver": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", - "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", - "dev": true, - "requires": { - "archiver-utils": "^1.3.0", - "async": "^2.0.0", - "buffer-crc32": "^0.2.1", - "glob": "^7.0.0", - "lodash": "^4.8.0", - "readable-stream": "^2.0.0", - "tar-stream": "^1.5.0", - "zip-stream": "^1.2.0" - } + "node_modules/@babel/plugin-transform-spread": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", + "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + } }, - "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true, - "requires": { - "lodash": "^4.14.0" - } - } - } - }, - "first-chunk-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", - "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "fizzy-ui-utils": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz", - "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", - "dev": true, - "requires": { - "desandro-matches-selector": "^2.0.0" - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true - }, - "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", - "dev": true, - "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatstr": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", - "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==", - "dev": true - }, - "flipclock": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/flipclock/-/flipclock-0.7.8.tgz", - "integrity": "sha1-838ffKkETZAsH+4fGuf0vR7vGlQ=", - "dev": true, - "requires": { - "jquery": ">=1.7" - } - }, - "fluent-syntax": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.7.0.tgz", - "integrity": "sha512-T0iqfhC40jrs3aDjYOKgzIQjjhsH2Fa6LnXB6naPv0ymW3DeYMUFa89y9aLKMpi1P9nl2vEimK7blx4tVnUWBg==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.1.tgz", - "integrity": "sha512-p+CXqK/iLvDESUWdn3NA3JVO9HxdfI+iXx8xR3DqWgKZvQNiEVpAyUQo0lmwz8rqksb4xaGerG291xuwwhX2kA==", - "dev": true, - "optional": true - }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", - "dev": true, - "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + } }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "fx-runner": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.0.9.tgz", - "integrity": "sha1-eyPzdz3HaqzELxHZr/J2lnXLY/A=", - "dev": true, - "requires": { - "commander": "2.9.0", - "lodash": "4.17.10", - "shell-quote": "1.6.1", - "spawn-sync": "1.0.15", - "when": "3.7.7", - "which": "1.2.4", - "winreg": "0.0.12" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "is-absolute": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", - "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", - "dev": true, - "requires": { - "is-relative": "^0.1.0" - } + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "is-relative": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", - "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", - "dev": true + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", + "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "isexe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", - "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", - "dev": true + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true + "node_modules/@babel/polyfill": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.10.4.tgz", + "integrity": "sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg==", + "dev": true, + "dependencies": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + } }, - "which": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", - "integrity": "sha1-FVf5YIBgTlsRs1meufRbUKnv1yI=", - "dev": true, - "requires": { - "is-absolute": "^0.1.7", - "isexe": "^1.1.1" - } - } - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, - "requires": { - "is-property": "^1.0.2" - } - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "^1.0.0" - } - }, - "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "get-size": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz", - "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-uri": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", - "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==", - "dev": true, - "requires": { - "data-uri-to-buffer": "1", - "debug": "2", - "extend": "~3.0.2", - "file-uri-to-path": "1", - "ftp": "~0.3.10", - "readable-stream": "2" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getobject": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "gettext-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.0.tgz", - "integrity": "sha1-LFpmONiTk0ubVQN9CtgstwBLJnk=", - "dev": true, - "requires": { - "encoding": "^0.1.11" - } - }, - "git-rev-sync": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/git-rev-sync/-/git-rev-sync-1.9.1.tgz", - "integrity": "sha1-oMLj3TkqvPa3aWLif8dfsyI0Sc4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "graceful-fs": "4.1.11", - "shelljs": "0.7.7" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "node_modules/@babel/preset-env": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz", + "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.11.0", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-export-namespace-from": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.11.0", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.11.0", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.11.0", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } }, - "shelljs": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", - "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - } - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", - "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - } - }, - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "graphlib": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", - "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, - "grunt": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.2.1.tgz", - "integrity": "sha512-zgJjn9N56tScvRt/y0+1QA+zDBnKTrkpyeSBqQPLcZvbqTD/oyGMrdZQXmm6I3828s+FmPvxc3Xv+lgKFtudOw==", - "dev": true, - "requires": { - "dateformat": "~3.0.3", - "eventemitter2": "~0.4.13", - "exit": "~0.1.2", - "findup-sync": "~0.3.0", - "glob": "~7.1.6", - "grunt-cli": "~1.3.2", - "grunt-known-options": "~1.1.0", - "grunt-legacy-log": "~2.0.0", - "grunt-legacy-util": "~1.1.1", - "iconv-lite": "~0.4.13", - "js-yaml": "~3.14.0", - "minimatch": "~3.0.4", - "mkdirp": "~1.0.4", - "nopt": "~3.0.6", - "rimraf": "~3.0.2" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "grunt-cli": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz", - "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==", - "dev": true, - "requires": { - "grunt-known-options": "~1.1.0", - "interpret": "~1.1.0", - "liftoff": "~2.5.0", - "nopt": "~4.0.1", - "v8flags": "~3.1.1" - }, - "dependencies": { - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - } - } - }, - "grunt-contrib-clean": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz", - "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=", - "dev": true, - "requires": { - "async": "^1.5.2", - "rimraf": "^2.5.1" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "grunt-contrib-connect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz", - "integrity": "sha1-XPkzuRpnOGBEJzwLJERgPNmIebo=", - "dev": true, - "requires": { - "async": "^1.5.2", - "connect": "^3.4.0", - "connect-livereload": "^0.5.0", - "http2": "^3.3.4", - "morgan": "^1.6.1", - "opn": "^4.0.0", - "portscanner": "^1.0.0", - "serve-index": "^1.7.1", - "serve-static": "^1.10.0" - } - }, - "grunt-contrib-copy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", - "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", - "dev": true, - "requires": { - "chalk": "^1.1.1", - "file-sync-cmp": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "node_modules/@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } + "node_modules/@babel/register": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0.tgz", + "integrity": "sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g==", + "dev": true, + "dependencies": { + "core-js": "^2.5.7", + "find-cache-dir": "^1.0.0", + "home-or-tmp": "^3.0.0", + "lodash": "^4.17.10", + "mkdirp": "^0.5.1", + "pirates": "^4.0.0", + "source-map-support": "^0.5.9" + } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "grunt-contrib-pug": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-pug/-/grunt-contrib-pug-1.0.0.tgz", - "integrity": "sha1-tSWlwK/wRiL3Vw4x+SQQbxb4G0Y=", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "pug": "^2.0.0-alpha3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "node_modules/@babel/register/node_modules/find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } + "node_modules/@babel/register/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "grunt-contrib-stylus": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-stylus/-/grunt-contrib-stylus-1.2.0.tgz", - "integrity": "sha1-R9RG7wVESW7/naQY0A9XdFQ0crs=", - "dev": true, - "requires": { - "async": "^1.5.2", - "chalk": "^1.0.0", - "lodash": "^4.0.0", - "nib": "^1.1.0", - "stylus": "^0.54.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "node_modules/@babel/register/node_modules/home-or-tmp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", + "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", + "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } + "node_modules/@babel/register/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "grunt-contrib-watch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", - "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", - "dev": true, - "requires": { - "async": "^2.6.0", - "gaze": "^1.1.0", - "lodash": "^4.17.10", - "tiny-lr": "^1.1.1" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } - } - }, - "grunt-crx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/grunt-crx/-/grunt-crx-1.0.5.tgz", - "integrity": "sha1-nU5QHO8WtyF3KmBBxNQdH5KFirU=", - "dev": true, - "requires": { - "crx": "^3.0.1", - "es6-promise": "^3.0.0", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "xtend": "^4.0.1" - } - }, - "grunt-exec": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz", - "integrity": "sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg==", - "dev": true - }, - "grunt-known-options": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", - "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", - "dev": true - }, - "grunt-legacy-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", - "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", - "dev": true, - "requires": { - "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.0.0", - "hooker": "~0.2.3", - "lodash": "~4.17.5" - } - }, - "grunt-legacy-log-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", - "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", - "dev": true, - "requires": { - "chalk": "~2.4.1", - "lodash": "~4.17.10" - } - }, - "grunt-legacy-util": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", - "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", - "dev": true, - "requires": { - "async": "~1.5.2", - "exit": "~0.1.1", - "getobject": "~0.1.0", - "hooker": "~0.2.3", - "lodash": "~4.17.10", - "underscore.string": "~3.3.4", - "which": "~1.3.0" - } - }, - "grunt-mocha-test": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.13.3.tgz", - "integrity": "sha512-zQGEsi3d+ViPPi7/4jcj78afKKAKiAA5n61pknQYi25Ugik+aNOuRmiOkmb8mN2CeG8YxT+YdT1H1Q7B/eNkoQ==", - "dev": true, - "requires": { - "hooker": "^0.2.3", - "mkdirp": "^0.5.0" - } - }, - "grunt-webpack": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/grunt-webpack/-/grunt-webpack-3.1.3.tgz", - "integrity": "sha512-SaZ8K8lG4iTxs7ClZxOWCf3kxqS2y+Eel8SbaEGgBKwhAp6e45beIu+vhBZRLX3vonKML2kjemKsQ21REaqNFQ==", - "dev": true, - "requires": { - "deep-for-each": "^2.0.2", - "lodash": "^4.7.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hasbin": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", - "integrity": "sha1-eMWSaJPIAhXCtWiuH9P8q3omlrA=", - "dev": true, - "requires": { - "async": "~1.5" - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "node_modules/@babel/register/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + } }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } + "node_modules/@babel/register/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "node_modules/@babel/register/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "highlight.js": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.1.tgz", - "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hooker": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } + "node_modules/@babel/register/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "node_modules/@babel/register/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-parser-js": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", - "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", - "dev": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "dev": true, - "requires": { - "agent-base": "4", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "http2": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.7.tgz", - "integrity": "sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ==", - "dev": true - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "node_modules/@babel/register/node_modules/pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", - "dev": true - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - }, - "inject-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/inject-loader/-/inject-loader-3.0.1.tgz", - "integrity": "sha512-0Kd4NqMJUhknG4ECiJ/mgyHJBpfBBWZ3IKHl2BLNQiFtMO7/xiv9mmHl7mGvE0iKrBeQAZdMcQP3sMXZN0cqeg==", - "dev": true, - "requires": { - "babel-core": "~6" - } - }, - "inquirer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", - "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "node_modules/@babel/runtime": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-expression": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", - "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", - "dev": true, - "requires": { - "acorn": "~4.0.2", - "object-assign": "^4.0.1" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, - "is-mergeable-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-mergeable-object/-/is-mergeable-object-1.1.0.tgz", - "integrity": "sha512-JfyDDwUdtS4yHCgUpxOyKB9dnfZ0gecufxB0eytX6BmSXSE+8dbxDGt+V7CNRIRJ9sYFV/WQt2KJG6hNob2sBw==", - "dev": true - }, - "is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", - "dev": true - }, - "is-my-json-valid": { - "version": "2.20.5", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.5.tgz", - "integrity": "sha512-VTPuvvGQtxvCeghwspQu1rBgjYUT6FGxPlvFKbYuFtgc4ADsX3U5ihZOYN0qyU6u+d4X9xXb0IT5O6QpXKt87A==", - "dev": true, - "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" - } - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isotope-layout": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/isotope-layout/-/isotope-layout-3.0.6.tgz", - "integrity": "sha512-z2ZKablhocXhoNyWwzJPFd7u7FWbYbVJA51Nvsqsod8jH2ExGc1SwDsSWKE54e3PhXzqf2yZPhFSq/c2MR1arw==", - "dev": true, - "requires": { - "desandro-matches-selector": "^2.0.0", - "fizzy-ui-utils": "^2.0.4", - "get-size": "^2.0.0", - "masonry-layout": "^4.1.0", - "outlayer": "^2.1.0" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "jed": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", - "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=", - "dev": true - }, - "jetpack-id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jetpack-id/-/jetpack-id-1.0.0.tgz", - "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", - "dev": true - }, - "jquery": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", - "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==", - "dev": true - }, - "js-select": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/js-select/-/js-select-0.6.0.tgz", - "integrity": "sha1-woTiKCTVknrsli3N8kcXSu+w0ZA=", - "dev": true, - "requires": { - "JSONSelect": "0.2.1", - "traverse": "0.4.x" - } - }, - "js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-merge-patch": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-0.2.3.tgz", - "integrity": "sha1-+ixrWvh9p3uuKWalidUuI+2B/kA=", - "dev": true, - "requires": { - "deep-equal": "^1.0.0" - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonpointer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", - "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", - "dev": true - }, - "jsonpointer.js": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/jsonpointer.js/-/jsonpointer.js-0.4.0.tgz", - "integrity": "sha1-ACyxI/dnqv3rAZYTLOXE+ZQcyro=", - "dev": true - }, - "jsonwebtoken": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz", - "integrity": "sha512-l8rUBr0fqYYwPc8/ZGrue7GiW7vWdZtZqelxo4Sd5lMvuEeCK8/wS54sEo6tJhdZ6hqfutsj6COgC0d1XdbHGw==", - "dev": true, - "requires": { - "jws": "^3.1.4", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "xtend": "^4.0.1" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", - "dev": true, - "requires": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "jstransformer-markdown-it": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.1.0.tgz", - "integrity": "sha1-aewwzkUYvtWZezjwJ2SOjChekvc=", - "dev": true, - "requires": { - "markdown-it": "^8.0.0" - } - }, - "jszip": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", - "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", - "dev": true, - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" - } - }, - "just-extend": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.0.tgz", - "integrity": "sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==", - "dev": true - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dev": true, - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dev": true, - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true, - "requires": { - "package-json": "^4.0.0" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, - "requires": { - "immediate": "~3.0.5" - } - }, - "liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^2.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - } - } - }, - "linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "dev": true, - "requires": { - "uc.micro": "^1.0.1" - } - }, - "livereload-js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", - "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", - "dev": true + "node_modules/@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/traverse": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", + "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.0", + "@babel/types": "^7.11.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/types": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", + "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@cliqz-oss/firefox-client": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@cliqz-oss/firefox-client/-/firefox-client-0.3.1.tgz", + "integrity": "sha512-RO+Tops/wGnBzWoZYkCraqyh2JqOejqJq5/a4b54HhmjTNSKdUPwAOK17EGg/zPb0nWqkuB7QyZsI9bo+ev8Kw==", + "dev": true, + "dependencies": { + "colors": "0.5.x", + "js-select": "~0.6.0" + } + }, + "node_modules/@cliqz-oss/firefox-client/node_modules/colors": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", + "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", + "dev": true + }, + "node_modules/@cliqz-oss/node-firefox-connect": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@cliqz-oss/node-firefox-connect/-/node-firefox-connect-1.2.1.tgz", + "integrity": "sha512-O/IyiB5pfztCdmxQZg0/xeq5w+YiP3gtJz8d4We2EpLPKzbDVjOrtfLKYgVfm6Ya6mbvDge1uLkSRwaoVCWKnA==", + "dev": true, + "dependencies": { + "@cliqz-oss/firefox-client": "0.3.1", + "es6-promise": "^2.0.1" + } + }, + "node_modules/@cliqz-oss/node-firefox-connect/node_modules/es6-promise": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", + "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=", + "dev": true + }, + "node_modules/@octokit/auth-token": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.4.tgz", + "integrity": "sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q==", + "dependencies": { + "@octokit/types": "^6.0.0" + } + }, + "node_modules/@octokit/core": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.2.4.tgz", + "integrity": "sha512-d9dTsqdePBqOn7aGkyRFe7pQpCXdibSJ5SFnrTr0axevObZrpz3qkWm7t/NjYv5a66z6vhfteriaq4FRz3e0Qg==", + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.4.12", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.1.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.10.tgz", + "integrity": "sha512-9+Xef8nT7OKZglfkOMm7IL6VwxXUQyR7DUSU0LH/F7VNqs8vyd7es5pTfz9E7DwUIx7R3pGscxu1EBhYljyu7Q==", + "dependencies": { + "@octokit/types": "^6.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.5.8", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.5.8.tgz", + "integrity": "sha512-WnCtNXWOrupfPJgXe+vSmprZJUr0VIu14G58PMlkWGj3cH+KLZEfKMmbUQ6C3Wwx6fdhzVW1CD5RTnBdUHxhhA==", + "dependencies": { + "@octokit/request": "^5.3.0", + "@octokit/types": "^6.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-2.0.0.tgz", + "integrity": "sha512-J4bfM7lf8oZvEAdpS71oTvC1ofKxfEZgU5vKVwzZKi4QPiL82udjpseJwxPid9Pu2FNmyRQOX4iEj6W1iOSnPw==" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.6.2.tgz", + "integrity": "sha512-3Dy7/YZAwdOaRpGQoNHPeT0VU1fYLpIUdPyvR37IyFLgd6XSij4j9V/xN/+eSjF2KKvmfIulEh9LF1tRPjIiDA==", + "dependencies": { + "@octokit/types": "^6.0.1" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz", + "integrity": "sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg==", + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.4.1.tgz", + "integrity": "sha512-+v5PcvrUcDeFXf8hv1gnNvNLdm4C0+2EiuWt9EatjjUmfriM1pTMM+r4j1lLHxeBQ9bVDmbywb11e3KjuavieA==", + "dependencies": { + "@octokit/types": "^6.1.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "5.4.12", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.12.tgz", + "integrity": "sha512-MvWYdxengUWTGFpfpefBBpVmmEYfkwMoxonIB3sUGp5rhdgwjXL1ejo6JbgzG/QD9B/NYt/9cJX1pxXeSIUCkg==", + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.0.0", + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "once": "^1.4.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.4.tgz", + "integrity": "sha512-LjkSiTbsxIErBiRh5wSZvpZqT4t0/c9+4dOe0PII+6jXR+oj/h66s7E4a/MghV7iT8W9ffoQ5Skoxzs96+gBPA==", + "dependencies": { + "@octokit/types": "^6.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/request/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/rest": { + "version": "18.0.12", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.0.12.tgz", + "integrity": "sha512-hNRCZfKPpeaIjOVuNJzkEL6zacfZlBPV8vw8ReNeyUkVvbuCvvrrx8K8Gw2eyHHsmd4dPlAxIXIZ9oHhJfkJpw==", + "dependencies": { + "@octokit/core": "^3.2.3", + "@octokit/plugin-paginate-rest": "^2.6.2", + "@octokit/plugin-request-log": "^1.0.2", + "@octokit/plugin-rest-endpoint-methods": "4.4.1" + } + }, + "node_modules/@octokit/types": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.1.1.tgz", + "integrity": "sha512-btm3D6S7VkRrgyYF31etUtVY/eQ1KzrNRqhFt25KSe2mKlXuLXJilglRC6eDA2P6ou94BUnk/Kz5MPEolXgoiw==", + "dependencies": { + "@octokit/openapi-types": "^2.0.0", + "@types/node": ">= 8" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", + "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "dev": true, + "dependencies": { + "samsam": "1.3.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", + "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.3.0", + "array-from": "^2.1.1", + "lodash": "^4.17.15" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true + }, + "node_modules/@types/babel-types": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.8.tgz", + "integrity": "sha512-jvu8g4LR7+p6ao30RhTREnEhHxmP4/R9D9/rOR/Kq14FztORty9SKgtOZUNZNMB9CXLxZ54EWu4dArUE8WdTsw==", + "dev": true + }, + "node_modules/@types/babylon": { + "version": "6.16.5", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", + "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", + "dev": true, + "dependencies": { + "@types/babel-types": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.0.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", + "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "node_modules/acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + }, + "node_modules/acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true, + "dependencies": { + "acorn": "^4.0.4" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "node_modules/acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "node_modules/adbkit": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/adbkit/-/adbkit-2.11.0.tgz", + "integrity": "sha512-j2vUhEeZmCiqBP+p77CpPWQTcT20rOmSmRHFUTZUwUpxzeCd3fXop4NAGYztSY9/FNU4bT/qqvYQ4EZKuCXhfA==", + "dev": true, + "dependencies": { + "adbkit-logcat": "^1.1.0", + "adbkit-monkey": "~1.0.1", + "bluebird": "~2.9.24", + "commander": "^2.3.0", + "debug": "~2.6.3", + "node-forge": "^0.7.1", + "split": "~0.3.3" + } + }, + "node_modules/adbkit-logcat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz", + "integrity": "sha1-Adf5sM75CTowvLOwB+//MBUIli8=", + "dev": true + }, + "node_modules/adbkit-monkey": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz", + "integrity": "sha1-8pG+cBou/FZ6Y/x6pq/N7TFDC+E=", + "dev": true, + "dependencies": { + "async": "~0.2.9" + } + }, + "node_modules/adbkit-monkey/node_modules/async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "node_modules/adbkit/node_modules/bluebird": { + "version": "2.9.34", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", + "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g=", + "dev": true + }, + "node_modules/adbkit/node_modules/node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", + "dev": true + }, + "node_modules/addons-linter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-1.4.1.tgz", + "integrity": "sha512-AX8nCD/gy/6DoX4B7vTMQV6pcP8tG0BjxB3Jv44VZrUTYG+ojHx26abRDyUn+fDqWGf8qzeVn0Vss/NMNjMouA==", + "dev": true, + "dependencies": { + "@babel/polyfill": "7.0.0", + "@babel/register": "7.0.0", + "ajv": "6.5.5", + "ajv-merge-patch": "4.1.0", + "chalk": "2.4.0", + "cheerio": "1.0.0-rc.2", + "columnify": "1.5.4", + "common-tags": "1.8.0", + "crx-parser": "0.1.2", + "deepmerge": "2.2.1", + "dispensary": "0.27.0", + "es6-promisify": "5.0.0", + "eslint": "5.0.1", + "eslint-plugin-no-unsafe-innerhtml": "1.0.16", + "eslint-visitor-keys": "1.0.0", + "espree": "4.1.0", + "esprima": "3.1.3", + "first-chunk-stream": "2.0.0", + "fluent-syntax": "0.7.0", + "fsevents": "2.0.1", + "glob": "7.1.3", + "is-mergeable-object": "1.1.0", + "jed": "1.1.1", + "os-locale": "3.0.1", + "pino": "5.9.0", + "po2json": "0.4.5", + "postcss": "7.0.6", + "probe-image-size": "4.0.0", + "relaxed-json": "1.0.1", + "semver": "5.6.0", + "shelljs": "0.8.3", + "snyk": "1.110.2", + "source-map-support": "0.5.6", + "strip-bom-stream": "3.0.0", + "tosource": "1.0.0", + "upath": "1.1.0", + "whatwg-url": "7.0.0", + "xmldom": "0.1.27", + "yargs": "12.0.2", + "yauzl": "2.9.2" + }, + "optionalDependencies": { + "fsevents": "2.0.1" + } + }, + "node_modules/addons-linter/node_modules/@babel/polyfill": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz", + "integrity": "sha512-dnrMRkyyr74CRelJwvgnnSUDh2ge2NCTyHVwpOdvRMHtJUyxLtMAfhBN3s64pY41zdw0kgiLPh6S20eb1NcX6Q==", + "dev": true, + "dependencies": { + "core-js": "^2.5.7", + "regenerator-runtime": "^0.11.1" + } + }, + "node_modules/addons-linter/node_modules/ajv": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/addons-linter/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "node_modules/addons-linter/node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "node_modules/addons-linter/node_modules/chalk": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", + "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "node_modules/addons-linter/node_modules/cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/addons-linter/node_modules/decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "dependencies": { + "xregexp": "4.0.0" + } + }, + "node_modules/addons-linter/node_modules/esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "node_modules/addons-linter/node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "node_modules/addons-linter/node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "node_modules/addons-linter/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "node_modules/addons-linter/node_modules/semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "node_modules/addons-linter/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "node_modules/addons-linter/node_modules/source-map-support": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/addons-linter/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + } + }, + "node_modules/addons-linter/node_modules/xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "node_modules/addons-linter/node_modules/yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "dev": true, + "dependencies": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "node_modules/addons-linter/node_modules/yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "dependencies": { + "camelcase": "^4.1.0" + } + }, + "node_modules/addons-linter/node_modules/yauzl": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.2.tgz", + "integrity": "sha1-T7G8euH8L1cDe1SvasyP4QMcW3c=", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true + }, + "node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "dependencies": { + "es6-promisify": "^5.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "node_modules/ajv-merge-patch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ajv-merge-patch/-/ajv-merge-patch-4.1.0.tgz", + "integrity": "sha512-0mAYXMSauA8RZ7r+B4+EAOYcZEcO9OK5EiQCR7W7Cv4E44pJj56ZnkKLJ9/PAcOc0dT+LlV9fdDcq2TxVJfOYw==", + "dev": true, + "dependencies": { + "fast-json-patch": "^2.0.6", + "json-merge-patch": "^0.2.3" + } + }, + "node_modules/align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "node_modules/align-text/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "node_modules/ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "dependencies": { + "string-width": "^2.0.0" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + } + }, + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", + "dev": true + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/archiver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "dev": true, + "dependencies": { + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "walkdir": "^0.0.11", + "zip-stream": "^1.1.0" + } + }, + "node_modules/archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, + "node_modules/archiver/node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/argparse/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "node_modules/array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "node_modules/array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "node_modules/array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "dev": true + }, + "node_modules/array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "node_modules/array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "node_modules/asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "node_modules/ast-types": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", + "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", + "dev": true + }, + "node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "node_modules/aws4": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "dev": true + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "node_modules/babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "dependencies": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "node_modules/babel-core/node_modules/json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "node_modules/babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "dependencies": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } + }, + "node_modules/babel-generator/node_modules/jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "node_modules/babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "dependencies": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "dependencies": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + } + }, + "node_modules/babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "node_modules/babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "dependencies": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + } + }, + "node_modules/babel-polyfill/node_modules/regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + }, + "node_modules/babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "dependencies": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "node_modules/babel-register/node_modules/source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "node_modules/babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "dependencies": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-traverse/node_modules/globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "node_modules/babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "node_modules/babel-types/node_modules/to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "node_modules/base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "node_modules/base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "dev": true + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/before-after-hook": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", + "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "dev": true + }, + "node_modules/body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "dev": true, + "dependencies": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + } + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "node_modules/body/node_modules/bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, + "node_modules/body/node_modules/raw-body": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "dev": true, + "dependencies": { + "bytes": "1", + "string_decoder": "0.10" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/bootstrap": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", + "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", + "dev": true + }, + "node_modules/boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "dependencies": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + } + }, + "node_modules/boxen/node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-rsa/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", + "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001093", + "electron-to-chromium": "^1.3.488", + "escalade": "^3.0.1", + "node-releases": "^1.1.58" + } + }, + "node_modules/buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "dev": true + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "node_modules/bunyan": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", + "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", + "dev": true, + "dependencies": { + "dtrace-provider": "~0.8", + "moment": "^2.10.6", + "mv": "~2", + "safe-json-stringify": "~1" + }, + "optionalDependencies": { + "dtrace-provider": "~0.8", + "mv": "~2", + "safe-json-stringify": "~1" + } + }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "node_modules/cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "node_modules/cacache/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "node_modules/caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "dependencies": { + "callsites": "^0.2.0" + } + }, + "node_modules/callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001111", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001111.tgz", + "integrity": "sha512-xnDje2wchd/8mlJu8sXvWxOGvMgv+uT3iZ3bkIAynKOzToCssWCmkz/ZIkQBs/2pUB4uwnJKVORWQ31UkbVjOg==", + "dev": true + }, + "node_modules/capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "dev": true + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "node_modules/center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "dependencies": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "node_modules/chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "node_modules/chai-arrays": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.2.0.tgz", + "integrity": "sha512-4awrdGI2EH8owJ9I58PXwG4N56/FiM8bsn4CVSNEgr4GKAM6Kq5JPVApUbhUBjDakbZNuRvV7quRSC38PWq/tg==", + "dev": true + }, + "node_modules/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "dependencies": { + "check-error": "^1.0.2" + } + }, + "node_modules/chai-json-schema": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/chai-json-schema/-/chai-json-schema-1.5.1.tgz", + "integrity": "sha512-TR/xPDxRhqwFFCWg1HgL8nNWbpNfUwaib6pBN++QKpnd0t+o3+MBvAn5CM1mpdUMaM76oJAtUjGKdjGad01lIA==", + "dev": true, + "dependencies": { + "jsonpointer.js": "0.4.0", + "tv4": "^1.3.0" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "dev": true, + "dependencies": { + "is-regex": "^1.0.3" + } + }, + "node_modules/chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "dev": true, + "dependencies": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/chokidar/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "node_modules/chokidar/node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + } + }, + "node_modules/chokidar/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "node_modules/chokidar/node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + } + }, + "node_modules/clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "node_modules/cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + } + }, + "node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "node_modules/clipboard-polyfill": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/clipboard-polyfill/-/clipboard-polyfill-2.8.6.tgz", + "integrity": "sha512-kz/1ov+PXsBpGnW9XJH3dLWdYj12FpXqO89Dngm/GRPoI36E/tnYs6N0YPTEhxM9WHAlFiN5eoyIVuv5nzKXvg==", + "dev": true + }, + "node_modules/cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "dependencies": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "node_modules/clone-deep": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.1", + "kind-of": "^3.2.2", + "shallow-clone": "^0.1.2" + } + }, + "node_modules/clone-deep/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "node_modules/codemirror": { + "version": "5.56.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.56.0.tgz", + "integrity": "sha512-MfKVmYgifXjQpLSgpETuih7A7WTTIsxvKfSLGseTY5+qt0E1UD1wblZGM6WLenORo8sgmf+3X+WTe2WF7mufyw==", + "dev": true + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "node_modules/columnify": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", + "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "dev": true, + "dependencies": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "dev": true, + "dependencies": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "node_modules/configstore/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + } + }, + "node_modules/configstore/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } + }, + "node_modules/connect-livereload": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", + "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", + "dev": true + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/constantinople": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", + "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", + "dev": true, + "dependencies": { + "@types/babel-types": "^7.0.0", + "@types/babylon": "^6.16.2", + "babel-types": "^6.26.0", + "babylon": "^6.18.0" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "node_modules/continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "node_modules/core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "dev": true + }, + "node_modules/core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "dependencies": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "dev": true, + "dependencies": { + "crc": "^3.4.4", + "readable-stream": "^2.0.0" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "dependencies": { + "capture-stack-trace": "^1.0.0" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/crx": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/crx/-/crx-3.2.1.tgz", + "integrity": "sha1-Fyk+51790IxtHIs+F0nS1XV89Cs=", + "dev": true, + "dependencies": { + "archiver": "^1.1.0", + "commander": "^2.5.0", + "es6-promise": "^3.0.0", + "node-rsa": "^0.2.10" + } + }, + "node_modules/crx-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/crx-parser/-/crx-parser-0.1.2.tgz", + "integrity": "sha1-fu7tnt3JXiLBiTguNGJARKiaWm0=", + "dev": true + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "node_modules/crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "node_modules/css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "node_modules/css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "node_modules/css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "node_modules/css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", + "dev": true + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "node_modules/debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.1.0.tgz", + "integrity": "sha512-ZQVKfRVlwRfD150ndzEK8M90ABT+Y/JQKs4Y7U4MXdpuoUkkrr4DwKbVux3YjylA5bUMUj0Nc3pMxPJX6N2QQQ==", + "dev": true + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "node_modules/deep-for-each": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/deep-for-each/-/deep-for-each-2.0.3.tgz", + "integrity": "sha512-Y9mu+rplGcNZ7veer+5rqcdI9w3aPb7/WyE/nYnsuPevaE2z5YuC2u7/Gz/hIKsa0zo8sE8gKoBimSNsO/sr+A==", + "dev": true, + "dependencies": { + "lodash.isplainobject": "^4.0.6" + } + }, + "node_modules/deep-freeze": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", + "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", + "dev": true + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/deepcopy": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-0.6.3.tgz", + "integrity": "sha1-Y0eA8vhlardxr4+oQx7RzO5Vx7A=", + "dev": true + }, + "node_modules/deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "dev": true + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "node_modules/degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "dev": true, + "dependencies": { + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" + } + }, + "node_modules/degenerator/node_modules/esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/desandro-matches-selector": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", + "integrity": "sha1-cXvu1NwT59jzdi9wem1YpndCGOE=", + "dev": true + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "node_modules/detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "dependencies": { + "repeating": "^2.0.0" + } + }, + "node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/dispensary": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.27.0.tgz", + "integrity": "sha512-bG9pSBPH8wTEaugUIBAbBvBHynqOoGxefOT4YXlPoUc9AxQGDUO1uFHafDVWnsGWiSYvTUga0aZ9xThzfGQtlQ==", + "dev": true, + "dependencies": { + "array-from": "~2.1.1", + "async": "~2.6.0", + "natural-compare-lite": "~1.4.0", + "pino": "~5.8.0", + "request": "~2.88.0", + "sha.js": "~2.4.4", + "source-map-support": "~0.5.4", + "yargs": "~12.0.1" + } + }, + "node_modules/dispensary/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "node_modules/dispensary/node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/dispensary/node_modules/cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/dispensary/node_modules/pino": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-5.8.1.tgz", + "integrity": "sha512-7bVFzUw3ffIfOM3t7MuQ9KsH+wX5bdGdQhGfccKgleoY7qG4FO3CmVSjywlFmmYGyMOISi1LDGC6JMEH7XkZJg==", + "dev": true, + "dependencies": { + "fast-json-parse": "^1.0.3", + "fast-redact": "^1.2.0", + "fast-safe-stringify": "^2.0.6", + "flatstr": "^1.0.5", + "pino-std-serializers": "^2.3.0", + "pump": "^3.0.0", + "quick-format-unescaped": "^3.0.0", + "sonic-boom": "^0.6.1" + } + }, + "node_modules/dispensary/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/dispensary/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + } + }, + "node_modules/dispensary/node_modules/yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "dependencies": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "node_modules/dockerfile-ast": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.0.12.tgz", + "integrity": "sha512-cIV8oXkAxpIuN5XgG0TGg07nLDgrj4olkfrdT77OTA3VypscsYHBUg/FjHxW9K3oA+CyH4Th/qtoMgTVpzSobw==", + "dev": true, + "dependencies": { + "vscode-languageserver-types": "^3.5.0" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + } + }, + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", + "dev": true + }, + "node_modules/dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dot-prop": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", + "dev": true, + "dependencies": { + "is-obj": "^1.0.0" + } + }, + "node_modules/dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/dtrace-provider": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", + "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", + "dev": true, + "optional": true, + "dependencies": { + "nan": "^2.14.0" + } + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/electron-to-chromium": { + "version": "1.3.523", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.523.tgz", + "integrity": "sha512-D4/3l5DpciddD92IDRtpLearQSGzly8FwBJv+nITvLH8YJrFabpDFe4yuiOJh2MS4/EsXqyQTXyw1toeYPtshQ==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "dev": true, + "dependencies": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/email-validator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", + "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + } + }, + "node_modules/error": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", + "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", + "dev": true, + "dependencies": { + "string-template": "~0.2.1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "dev": true + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/es6-promisify/node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "node_modules/es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + } + }, + "node_modules/es6-set/node_modules/es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "dev": true + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "node_modules/escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "dependencies": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "node_modules/eslint": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.0.1.tgz", + "integrity": "sha512-D5nG2rErquLUstgUaxJlWB5+gu+U/3VDY0fk/Iuq8y9CUFy/7Y6oF4N2cR1tV8knzQvciIbfqfohd359xTLIKQ==", + "dev": true, + "dependencies": { + "ajv": "^6.5.0", + "babel-code-frame": "^6.26.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.5.0", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^5.2.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.11.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.1.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.0", + "string.prototype.matchall": "^2.0.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsafe-innerhtml/-/eslint-plugin-no-unsafe-innerhtml-1.0.16.tgz", + "integrity": "sha1-fQKHjI6b95FriINtWsEitC8VGTI=", + "dev": true, + "dependencies": { + "eslint": "^3.7.1" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "dependencies": { + "acorn": "^3.0.4" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/acorn-jsx/node_modules/acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "dependencies": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "dependencies": { + "restore-cursor": "^1.0.1" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "dependencies": { + "babel-code-frame": "^6.16.0", + "chalk": "^1.1.3", + "concat-stream": "^1.5.2", + "debug": "^2.1.1", + "doctrine": "^2.0.0", + "escope": "^3.6.0", + "espree": "^3.4.0", + "esquery": "^1.0.0", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "glob": "^7.0.3", + "globals": "^9.14.0", + "ignore": "^3.2.0", + "imurmurhash": "^0.1.4", + "inquirer": "^0.12.0", + "is-my-json-valid": "^2.10.0", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.5.1", + "json-stable-stringify": "^1.0.0", + "levn": "^0.3.0", + "lodash": "^4.0.0", + "mkdirp": "^0.5.0", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.1", + "pluralize": "^1.2.1", + "progress": "^1.1.8", + "require-uncached": "^1.0.2", + "shelljs": "^0.7.5", + "strip-bom": "^3.0.0", + "strip-json-comments": "~2.0.1", + "table": "^3.7.8", + "text-table": "~0.2.0", + "user-home": "^2.0.0" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "dependencies": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "dependencies": { + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "dependencies": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "dependencies": { + "once": "^1.3.0" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "dependencies": { + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", + "slice-ansi": "0.0.4", + "string-width": "^2.0.0" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "node_modules/eslint/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true + }, + "node_modules/espree": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "dev": true, + "dependencies": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "node_modules/esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + }, + "node_modules/esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "dependencies": { + "estraverse": "^4.1.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "node_modules/ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==", + "dev": true + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/event-to-promise": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz", + "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=", + "dev": true + }, + "node_modules/eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "node_modules/events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "node_modules/exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + } + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "node_modules/express-sslify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/express-sslify/-/express-sslify-1.2.0.tgz", + "integrity": "sha1-MOhLzu0VV+sYdnK74UMKCioQDZw=" + }, + "node_modules/ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "dependencies": { + "type": "^2.0.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + } + }, + "node_modules/external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "dependencies": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + } + }, + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + } + }, + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "node_modules/extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-parse": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", + "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", + "dev": true + }, + "node_modules/fast-json-patch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.2.1.tgz", + "integrity": "sha512-4j5uBaTnsYAV5ebkidvxiLUYOwjQ+JSFljeqfTxCrH9bDmlCQaOJFS84oDJ2rAXZq2yskmk3ORfoP9DCwqFNig==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1" + } + }, + "node_modules/fast-json-patch/node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fast-redact": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-1.5.0.tgz", + "integrity": "sha512-Afo61CgUjkzdvOKDHn08qnZ0kwck38AOGcMlvSGzvJbIab6soAP5rdoQayecGCDsD69AiF9vJBXyq31eoEO2tQ==", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "dev": true + }, + "node_modules/faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + } + }, + "node_modules/file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "dependencies": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "node_modules/file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "dev": true + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + } + }, + "node_modules/findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "dependencies": { + "glob": "~5.0.0" + } + }, + "node_modules/findup-sync/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "node_modules/firefox-profile": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-1.2.0.tgz", + "integrity": "sha512-TTEFfPOkyaz4EWx/5ZDQC1mJAe3a+JgVcchpIfD4Tvx1UspwlTJRJxOYA35x/z2iJcxaF6aW2rdh6oj6qwgd2g==", + "dev": true, + "dependencies": { + "adm-zip": "~0.4.x", + "archiver": "~2.1.0", + "async": "~2.5.0", + "fs-extra": "~4.0.2", + "ini": "~1.3.3", + "jetpack-id": "1.0.0", + "lazystream": "~1.0.0", + "lodash": "~4.17.2", + "minimist": "^1.1.1", + "uuid": "^3.0.0", + "xml2js": "~0.4.4" + } + }, + "node_modules/firefox-profile/node_modules/archiver": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", + "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", + "dev": true, + "dependencies": { + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "zip-stream": "^1.2.0" + } + }, + "node_modules/firefox-profile/node_modules/async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "dev": true, + "dependencies": { + "lodash": "^4.14.0" + } + }, + "node_modules/first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/fizzy-ui-utils": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz", + "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", + "dev": true, + "dependencies": { + "desandro-matches-selector": "^2.0.0" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "node_modules/flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "dependencies": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + } + }, + "node_modules/flatstr": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", + "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==", + "dev": true + }, + "node_modules/flipclock": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/flipclock/-/flipclock-0.7.8.tgz", + "integrity": "sha1-838ffKkETZAsH+4fGuf0vR7vGlQ=", + "dev": true, + "dependencies": { + "jquery": ">=1.7" + } + }, + "node_modules/fluent-syntax": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.7.0.tgz", + "integrity": "sha512-T0iqfhC40jrs3aDjYOKgzIQjjhsH2Fa6LnXB6naPv0ymW3DeYMUFa89y9aLKMpi1P9nl2vEimK7blx4tVnUWBg==", + "dev": true + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "node_modules/forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.1.tgz", + "integrity": "sha512-p+CXqK/iLvDESUWdn3NA3JVO9HxdfI+iXx8xR3DqWgKZvQNiEVpAyUQo0lmwz8rqksb4xaGerG291xuwwhX2kA==", + "dev": true, + "optional": true + }, + "node_modules/ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "dev": true, + "dependencies": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + } + }, + "node_modules/ftp/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/ftp/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/fx-runner": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.0.9.tgz", + "integrity": "sha1-eyPzdz3HaqzELxHZr/J2lnXLY/A=", + "dev": true, + "dependencies": { + "commander": "2.9.0", + "lodash": "4.17.10", + "shell-quote": "1.6.1", + "spawn-sync": "1.0.15", + "when": "3.7.7", + "which": "1.2.4", + "winreg": "0.0.12" + } + }, + "node_modules/fx-runner/node_modules/commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "dependencies": { + "graceful-readlink": ">= 1.0.0" + } + }, + "node_modules/fx-runner/node_modules/is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "dev": true, + "dependencies": { + "is-relative": "^0.1.0" + } + }, + "node_modules/fx-runner/node_modules/is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", + "dev": true + }, + "node_modules/fx-runner/node_modules/isexe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", + "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", + "dev": true + }, + "node_modules/fx-runner/node_modules/lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "node_modules/fx-runner/node_modules/which": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", + "integrity": "sha1-FVf5YIBgTlsRs1meufRbUKnv1yI=", + "dev": true, + "dependencies": { + "is-absolute": "^0.1.7", + "isexe": "^1.1.1" + } + }, + "node_modules/gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "dependencies": { + "globule": "^1.0.0" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "dependencies": { + "is-property": "^1.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "node_modules/get-size": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz", + "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==", + "dev": true + }, + "node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "node_modules/get-uri": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", + "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "1", + "debug": "2", + "extend": "~3.0.2", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "2" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "node_modules/getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "dev": true + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/gettext-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.0.tgz", + "integrity": "sha1-LFpmONiTk0ubVQN9CtgstwBLJnk=", + "dev": true, + "dependencies": { + "encoding": "^0.1.11" + } + }, + "node_modules/git-rev-sync": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/git-rev-sync/-/git-rev-sync-1.9.1.tgz", + "integrity": "sha1-oMLj3TkqvPa3aWLif8dfsyI0Sc4=", + "dev": true, + "dependencies": { + "escape-string-regexp": "1.0.5", + "graceful-fs": "4.1.11", + "shelljs": "0.7.7" + } + }, + "node_modules/git-rev-sync/node_modules/graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "node_modules/git-rev-sync/node_modules/shelljs": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", + "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "dependencies": { + "ini": "^1.3.4" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "node_modules/globule": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "dev": true, + "dependencies": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "node_modules/got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "dependencies": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "node_modules/graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "node_modules/grunt": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.2.1.tgz", + "integrity": "sha512-zgJjn9N56tScvRt/y0+1QA+zDBnKTrkpyeSBqQPLcZvbqTD/oyGMrdZQXmm6I3828s+FmPvxc3Xv+lgKFtudOw==", + "dev": true, + "dependencies": { + "dateformat": "~3.0.3", + "eventemitter2": "~0.4.13", + "exit": "~0.1.2", + "findup-sync": "~0.3.0", + "glob": "~7.1.6", + "grunt-cli": "~1.3.2", + "grunt-known-options": "~1.1.0", + "grunt-legacy-log": "~2.0.0", + "grunt-legacy-util": "~1.1.1", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.14.0", + "minimatch": "~3.0.4", + "mkdirp": "~1.0.4", + "nopt": "~3.0.6", + "rimraf": "~3.0.2" + } + }, + "node_modules/grunt-cli": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz", + "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==", + "dev": true, + "dependencies": { + "grunt-known-options": "~1.1.0", + "interpret": "~1.1.0", + "liftoff": "~2.5.0", + "nopt": "~4.0.1", + "v8flags": "~3.1.1" + } + }, + "node_modules/grunt-cli/node_modules/nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "node_modules/grunt-contrib-clean": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz", + "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=", + "dev": true, + "dependencies": { + "async": "^1.5.2", + "rimraf": "^2.5.1" + } + }, + "node_modules/grunt-contrib-clean/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + } + }, + "node_modules/grunt-contrib-connect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz", + "integrity": "sha1-XPkzuRpnOGBEJzwLJERgPNmIebo=", + "dev": true, + "dependencies": { + "async": "^1.5.2", + "connect": "^3.4.0", + "connect-livereload": "^0.5.0", + "http2": "^3.3.4", + "morgan": "^1.6.1", + "opn": "^4.0.0", + "portscanner": "^1.0.0", + "serve-index": "^1.7.1", + "serve-static": "^1.10.0" + } + }, + "node_modules/grunt-contrib-copy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", + "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", + "dev": true, + "dependencies": { + "chalk": "^1.1.1", + "file-sync-cmp": "^0.1.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "node_modules/grunt-contrib-copy/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "node_modules/grunt-contrib-pug": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-pug/-/grunt-contrib-pug-1.0.0.tgz", + "integrity": "sha1-tSWlwK/wRiL3Vw4x+SQQbxb4G0Y=", + "dev": true, + "dependencies": { + "chalk": "^1.0.0", + "pug": "^2.0.0-alpha3" + } + }, + "node_modules/grunt-contrib-pug/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "node_modules/grunt-contrib-pug/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "node_modules/grunt-contrib-pug/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "node_modules/grunt-contrib-stylus": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-stylus/-/grunt-contrib-stylus-1.2.0.tgz", + "integrity": "sha1-R9RG7wVESW7/naQY0A9XdFQ0crs=", + "dev": true, + "dependencies": { + "async": "^1.5.2", + "chalk": "^1.0.0", + "lodash": "^4.0.0", + "nib": "^1.1.0", + "stylus": "^0.54.0" + } + }, + "node_modules/grunt-contrib-stylus/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "node_modules/grunt-contrib-stylus/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "node_modules/grunt-contrib-stylus/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "node_modules/grunt-contrib-watch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", + "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", + "dev": true, + "dependencies": { + "async": "^2.6.0", + "gaze": "^1.1.0", + "lodash": "^4.17.10", + "tiny-lr": "^1.1.1" + } + }, + "node_modules/grunt-contrib-watch/node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/grunt-crx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/grunt-crx/-/grunt-crx-1.0.5.tgz", + "integrity": "sha1-nU5QHO8WtyF3KmBBxNQdH5KFirU=", + "dev": true, + "dependencies": { + "crx": "^3.0.1", + "es6-promise": "^3.0.0", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "xtend": "^4.0.1" + } + }, + "node_modules/grunt-exec": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz", + "integrity": "sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg==", + "dev": true + }, + "node_modules/grunt-known-options": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", + "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", + "dev": true + }, + "node_modules/grunt-legacy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", + "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", + "dev": true, + "dependencies": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.5" + } + }, + "node_modules/grunt-legacy-log-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", + "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", + "dev": true, + "dependencies": { + "chalk": "~2.4.1", + "lodash": "~4.17.10" + } + }, + "node_modules/grunt-legacy-util": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", + "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", + "dev": true, + "dependencies": { + "async": "~1.5.2", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~4.17.10", + "underscore.string": "~3.3.4", + "which": "~1.3.0" + } + }, + "node_modules/grunt-mocha-test": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.13.3.tgz", + "integrity": "sha512-zQGEsi3d+ViPPi7/4jcj78afKKAKiAA5n61pknQYi25Ugik+aNOuRmiOkmb8mN2CeG8YxT+YdT1H1Q7B/eNkoQ==", + "dev": true, + "dependencies": { + "hooker": "^0.2.3", + "mkdirp": "^0.5.0" + } + }, + "node_modules/grunt-webpack": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/grunt-webpack/-/grunt-webpack-3.1.3.tgz", + "integrity": "sha512-SaZ8K8lG4iTxs7ClZxOWCf3kxqS2y+Eel8SbaEGgBKwhAp6e45beIu+vhBZRLX3vonKML2kjemKsQ21REaqNFQ==", + "dev": true, + "dependencies": { + "deep-for-each": "^2.0.2", + "lodash": "^4.7.0" + } + }, + "node_modules/grunt/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + } + }, + "node_modules/has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + } + }, + "node_modules/hasbin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", + "integrity": "sha1-eMWSaJPIAhXCtWiuH9P8q3omlrA=", + "dev": true, + "dependencies": { + "async": "~1.5" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/hash-base/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/hash-base/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "node_modules/highlight.js": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.1.tgz", + "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==", + "dev": true + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + } + }, + "node_modules/hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true + }, + "node_modules/hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/htmlparser2/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "node_modules/htmlparser2/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/htmlparser2/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", + "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "dependencies": { + "agent-base": "4", + "debug": "3.1.0" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "node_modules/http2": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.7.tgz", + "integrity": "sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ==", + "dev": true + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + }, + "node_modules/inject-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/inject-loader/-/inject-loader-3.0.1.tgz", + "integrity": "sha512-0Kd4NqMJUhknG4ECiJ/mgyHJBpfBBWZ3IKHl2BLNQiFtMO7/xiv9mmHl7mGvE0iKrBeQAZdMcQP3sMXZN0cqeg==", + "dev": true, + "dependencies": { + "babel-core": "~6" + } + }, + "node_modules/inquirer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + } + }, + "node_modules/interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + } + }, + "node_modules/is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + } + }, + "node_modules/is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "node_modules/is-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", + "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", + "dev": true, + "dependencies": { + "acorn": "~4.0.2", + "object-assign": "^4.0.1" + } + }, + "node_modules/is-expression/node_modules/acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "node_modules/is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "dependencies": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "node_modules/is-mergeable-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-mergeable-object/-/is-mergeable-object-1.1.0.tgz", + "integrity": "sha512-JfyDDwUdtS4yHCgUpxOyKB9dnfZ0gecufxB0eytX6BmSXSE+8dbxDGt+V7CNRIRJ9sYFV/WQt2KJG6hNob2sBw==", + "dev": true + }, + "node_modules/is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "node_modules/is-my-json-valid": { + "version": "2.20.5", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.5.tgz", + "integrity": "sha512-VTPuvvGQtxvCeghwspQu1rBgjYUT6FGxPlvFKbYuFtgc4ADsX3U5ihZOYN0qyU6u+d4X9xXb0IT5O6QpXKt87A==", + "dev": true, + "dependencies": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "node_modules/is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.1" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "node_modules/is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "node_modules/is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "node_modules/is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "node_modules/isotope-layout": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/isotope-layout/-/isotope-layout-3.0.6.tgz", + "integrity": "sha512-z2ZKablhocXhoNyWwzJPFd7u7FWbYbVJA51Nvsqsod8jH2ExGc1SwDsSWKE54e3PhXzqf2yZPhFSq/c2MR1arw==", + "dev": true, + "dependencies": { + "desandro-matches-selector": "^2.0.0", + "fizzy-ui-utils": "^2.0.4", + "get-size": "^2.0.0", + "masonry-layout": "^4.1.0", + "outlayer": "^2.1.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/jed": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", + "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=", + "dev": true + }, + "node_modules/jetpack-id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jetpack-id/-/jetpack-id-1.0.0.tgz", + "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", + "dev": true + }, + "node_modules/jquery": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==", + "dev": true + }, + "node_modules/js-select": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/js-select/-/js-select-0.6.0.tgz", + "integrity": "sha1-woTiKCTVknrsli3N8kcXSu+w0ZA=", + "dev": true, + "dependencies": { + "JSONSelect": "0.2.1", + "traverse": "0.4.x" + } + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "node_modules/json-merge-patch": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-0.2.3.tgz", + "integrity": "sha1-+ixrWvh9p3uuKWalidUuI+2B/kA=", + "dev": true, + "dependencies": { + "deep-equal": "^1.0.0" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "dependencies": { + "jsonify": "~0.0.0" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "node_modules/jsonpointer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", + "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", + "dev": true + }, + "node_modules/jsonpointer.js": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/jsonpointer.js/-/jsonpointer.js-0.4.0.tgz", + "integrity": "sha1-ACyxI/dnqv3rAZYTLOXE+ZQcyro=", + "dev": true + }, + "node_modules/JSONSelect": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.2.1.tgz", + "integrity": "sha1-QVQYpSbTP+MddLTe+jyDbUhewgM=", + "dev": true + }, + "node_modules/jsonwebtoken": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz", + "integrity": "sha512-l8rUBr0fqYYwPc8/ZGrue7GiW7vWdZtZqelxo4Sd5lMvuEeCK8/wS54sEo6tJhdZ6hqfutsj6COgC0d1XdbHGw==", + "dev": true, + "dependencies": { + "jws": "^3.1.4", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "xtend": "^4.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "dev": true, + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/jstransformer-markdown-it": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.1.0.tgz", + "integrity": "sha1-aewwzkUYvtWZezjwJ2SOjChekvc=", + "dev": true, + "dependencies": { + "markdown-it": "^8.0.0" + } + }, + "node_modules/jszip": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", + "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "node_modules/just-extend": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.0.tgz", + "integrity": "sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==", + "dev": true + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "node_modules/latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "dependencies": { + "package-json": "^4.0.0" + } + }, + "node_modules/lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "node_modules/lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + } + }, + "node_modules/lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "dependencies": { + "invert-kv": "^2.0.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "node_modules/levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "dependencies": { + "leven": "^3.1.0" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "node_modules/liftoff/node_modules/findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "node_modules/linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/livereload-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", + "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + } + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "node_modules/lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "node_modules/lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", + "dev": true + }, + "node_modules/lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", + "dev": true + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "dev": true + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", + "dev": true + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "node_modules/lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "node_modules/loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", + "dev": true + }, + "node_modules/lolex": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", + "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", + "dev": true + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "node_modules/longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/macos-release": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz", + "integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==", + "dev": true + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "dependencies": { + "p-defer": "^1.0.0" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + } + }, + "node_modules/markdown-it": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "node_modules/masonry-layout": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz", + "integrity": "sha512-iGtAlrpHNyxaR19CvKC3npnEcAwszXoyJiI8ARV2ePi7fmYhIud25MHK8Zx4P0LCC4d3TNO9+rFa1KoK1OEOaA==", + "dev": true, + "dependencies": { + "get-size": "^2.0.2", + "outlayer": "^2.1.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "node_modules/mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "node_modules/mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dependencies": { + "mime-db": "1.44.0" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + } + }, + "node_modules/mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "dependencies": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + } + }, + "node_modules/mixin-object/node_modules/for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + } + }, + "node_modules/mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "dependencies": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "node_modules/mocha/node_modules/commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "node_modules/mocha/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "node_modules/mocha/node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "dependencies": { + "minimist": "0.0.8" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + } + }, + "node_modules/moment": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==", + "dev": true + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + } + }, + "node_modules/morgan/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "node_modules/move-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "dependencies": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "node_modules/mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "dev": true, + "optional": true, + "dependencies": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + } + }, + "node_modules/mv/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "optional": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "node_modules/mv/node_modules/rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "dev": true, + "optional": true, + "dependencies": { + "glob": "^6.0.1" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true, + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q=", + "dev": true + }, + "node_modules/nconf": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.10.0.tgz", + "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==", + "dev": true, + "dependencies": { + "async": "^1.4.0", + "ini": "^1.3.0", + "secure-keys": "^1.0.0", + "yargs": "^3.19.0" + } + }, + "node_modules/nconf/node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "node_modules/nconf/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/nconf/node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "node_modules/nconf/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + } + }, + "node_modules/nconf/node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + } + }, + "node_modules/nconf/node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "dependencies": { + "lcid": "^1.0.0" + } + }, + "node_modules/nconf/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "node_modules/nconf/node_modules/window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "node_modules/nconf/node_modules/y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "node_modules/nconf/node_modules/yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true, + "dependencies": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true, + "optional": true + }, + "node_modules/needle": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", + "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==", + "dev": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/needle/node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", + "dev": true + }, + "node_modules/next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "node_modules/nib": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", + "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", + "dev": true, + "dependencies": { + "stylus": "0.54.5" + } + }, + "node_modules/nib/node_modules/glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "node_modules/nib/node_modules/source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "dependencies": { + "amdefine": ">=0.0.4" + } + }, + "node_modules/nib/node_modules/stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "dependencies": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/nise": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", + "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", + "dev": true, + "dependencies": { + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "lolex": "^5.0.1", + "path-to-regexp": "^1.7.0" + } + }, + "node_modules/nise/node_modules/@sinonjs/formatio": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", + "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^3.1.0" + } + }, + "node_modules/nise/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/nise/node_modules/lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/nise/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-forge": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", + "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", + "dev": true + }, + "node_modules/node-jose": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.1.4.tgz", + "integrity": "sha512-L31IFwL3pWWcMHxxidCY51ezqrDXMkvlT/5pLTfNw5sXmmOLJuN6ug7txzF/iuZN55cRpyOmoJrotwBQIoo5Lw==", + "dev": true, + "dependencies": { + "base64url": "^3.0.1", + "browserify-zlib": "^0.2.0", + "buffer": "^5.5.0", + "es6-promise": "^4.2.8", + "lodash": "^4.17.15", + "long": "^4.0.0", + "node-forge": "^0.8.5", + "process": "^0.11.10", + "react-zlib-js": "^1.0.4", + "uuid": "^3.3.3" + } + }, + "node_modules/node-jose/node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/node-libs-browser/node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node_modules/node-notifier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", + "dev": true, + "dependencies": { + "growly": "^1.3.0", + "semver": "^5.4.1", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node_modules/node-releases": { + "version": "1.1.60", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", + "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", + "dev": true + }, + "node_modules/node-rsa": { + "version": "0.2.30", + "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-0.2.30.tgz", + "integrity": "sha1-iRLiw7G2TM5sp4PKsa8oKzAK3uY=", + "dev": true, + "dependencies": { + "asn1": "0.2.3", + "lodash": "3.3.0" + } + }, + "node_modules/node-rsa/node_modules/lodash": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.3.0.tgz", + "integrity": "sha1-ARzlLQGxTmDq7qdqy5uLpCxwWBs=", + "dev": true + }, + "node_modules/nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "dev": true, + "dependencies": { + "chalk": "~0.4.0", + "underscore": "~1.6.0" + } + }, + "node_modules/nomnom/node_modules/ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "node_modules/nomnom/node_modules/chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "dependencies": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + }, + "node_modules/nomnom/node_modules/strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "dependencies": { + "abbrev": "1" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + } + }, + "node_modules/object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "node_modules/object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + } + }, + "node_modules/octokit": { + "version": "1.0.0-hello-world", + "resolved": "https://registry.npmjs.org/octokit/-/octokit-1.0.0-hello-world.tgz", + "integrity": "sha1-mX8irutd/iiB54xpQYxJKBqt+Y8=" + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + } + }, + "node_modules/onetime/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "node_modules/opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "node_modules/os-locale": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", + "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "dev": true, + "dependencies": { + "execa": "^0.10.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "node_modules/os-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-2.0.1.tgz", + "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=", + "dev": true, + "dependencies": { + "macos-release": "^1.0.0", + "win-release": "^1.0.0" + } + }, + "node_modules/os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", + "dev": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/outlayer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", + "integrity": "sha1-KYY7beEOpdrf/8rfoNcokHOH6aI=", + "dev": true, + "dependencies": { + "ev-emitter": "^1.0.0", + "fizzy-ui-utils": "^2.0.0", + "get-size": "^2.0.2" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "node_modules/pac-proxy-agent": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz", + "integrity": "sha512-cDNAN1Ehjbf5EHkNY5qnRhGPUCp6SnpyVof5fRzN800QV1Y2OkzbH9rmjZkbBRa8igof903yOnjIl6z0SlAhxA==", + "dev": true, + "dependencies": { + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^3.0.0" + } + }, + "node_modules/pac-proxy-agent/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/pac-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/pac-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", + "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", + "dev": true, + "dependencies": { + "co": "^4.6.0", + "degenerator": "^1.0.4", + "ip": "^1.1.5", + "netmask": "^1.0.6", + "thunkify": "^2.1.2" + } + }, + "node_modules/package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "dependencies": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "dependencies": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "node_modules/parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "dev": true, + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "dependencies": { + "path-root-regex": "^0.1.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "node_modules/pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + } + }, + "node_modules/pino": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-5.9.0.tgz", + "integrity": "sha512-6sHy38gWsZbrmYq6vk343VCThy93ZdVfmLsHDVzbl/j621SjSaxCcS/ySmxK/hRmq8jpQb3n44dNRIeqbbQw6A==", + "dev": true, + "dependencies": { + "fast-json-parse": "^1.0.3", + "fast-redact": "^1.4.0", + "fast-safe-stringify": "^2.0.6", + "flatstr": "^1.0.5", + "pino-std-serializers": "^2.3.0", + "pump": "^3.0.0", + "quick-format-unescaped": "^3.0.0", + "sonic-boom": "^0.6.3" + } + }, + "node_modules/pino-std-serializers": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz", + "integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ==", + "dev": true + }, + "node_modules/pino/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "dependencies": { + "node-modules-regexp": "^1.0.0" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + } + }, + "node_modules/pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "node_modules/po2json": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/po2json/-/po2json-0.4.5.tgz", + "integrity": "sha1-R7spUtoy1Yob4vJWpZjuvAt0URg=", + "dev": true, + "dependencies": { + "gettext-parser": "1.1.0", + "nomnom": "1.8.1" + } + }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "dev": true + }, + "node_modules/portscanner": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz", + "integrity": "sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI=", + "dev": true, + "dependencies": { + "async": "1.5.2" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "node_modules/postcss": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.6.tgz", + "integrity": "sha512-Nq/rNjnHFcKgCDDZYO0lNsl6YWe6U7tTy+ESN+PnLxebL8uBtYX59HZqvrj7YLK5UCyll2hqDsJOo3ndzEW8Ug==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "node_modules/postcss/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "node_modules/private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "node_modules/probe-image-size": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-4.0.0.tgz", + "integrity": "sha512-nm7RvWUxps+2+jZKNLkd04mNapXNariS6G5WIEVzvAqjx7EUuKcY1Dp3e6oUK7GLwzJ+3gbSbPLFAASHFQrPcQ==", + "dev": true, + "dependencies": { + "any-promise": "^1.3.0", + "deepmerge": "^2.0.1", + "inherits": "^2.0.3", + "next-tick": "^1.0.0", + "request": "^2.83.0", + "stream-parser": "~0.3.1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "node_modules/promise.any": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/promise.any/-/promise.any-0.1.1.tgz", + "integrity": "sha1-Fg+JisPHW1y7cw/yOgyi8XQHvzo=", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dependencies": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "node_modules/proxy-agent": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz", + "integrity": "sha512-CNKuhC1jVtm8KJYFTS2ZRO71VCBx3QSA92So/e6NrY6GoJonkx3Irnk4047EsCcswczwqAekRj3s8qLRGahSKg==", + "dev": true, + "dependencies": { + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "pac-proxy-agent": "^2.0.1", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^3.0.0" + } + }, + "node_modules/proxy-agent/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/pug": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", + "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", + "dev": true, + "dependencies": { + "pug-code-gen": "^2.0.2", + "pug-filters": "^3.1.1", + "pug-lexer": "^4.1.0", + "pug-linker": "^3.0.6", + "pug-load": "^2.0.12", + "pug-parser": "^5.0.1", + "pug-runtime": "^2.0.5", + "pug-strip-comments": "^1.0.4" + } + }, + "node_modules/pug-attrs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", + "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", + "dev": true, + "dependencies": { + "constantinople": "^3.0.1", + "js-stringify": "^1.0.1", + "pug-runtime": "^2.0.5" + } + }, + "node_modules/pug-code-gen": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", + "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", + "dev": true, + "dependencies": { + "constantinople": "^3.1.2", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.1", + "pug-attrs": "^2.0.4", + "pug-error": "^1.3.3", + "pug-runtime": "^2.0.5", + "void-elements": "^2.0.1", + "with": "^5.0.0" + } + }, + "node_modules/pug-error": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", + "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==", + "dev": true + }, + "node_modules/pug-filters": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", + "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", + "dev": true, + "dependencies": { + "clean-css": "^4.1.11", + "constantinople": "^3.0.1", + "jstransformer": "1.0.0", + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8", + "resolve": "^1.1.6", + "uglify-js": "^2.6.1" + } + }, + "node_modules/pug-lexer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", + "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", + "dev": true, + "dependencies": { + "character-parser": "^2.1.1", + "is-expression": "^3.0.0", + "pug-error": "^1.3.3" + } + }, + "node_modules/pug-linker": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", + "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", + "dev": true, + "dependencies": { + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8" + } + }, + "node_modules/pug-load": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", + "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "pug-walk": "^1.1.8" + } + }, + "node_modules/pug-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", + "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", + "dev": true, + "dependencies": { + "pug-error": "^1.3.3", + "token-stream": "0.0.1" + } + }, + "node_modules/pug-runtime": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", + "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==", + "dev": true + }, + "node_modules/pug-strip-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", + "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", + "dev": true, + "dependencies": { + "pug-error": "^1.3.3" + } + }, + "node_modules/pug-walk": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", + "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==", + "dev": true + }, + "node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "node_modules/puppeteer": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz", + "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "extract-zip": "^1.6.6", + "https-proxy-agent": "^2.2.1", + "mime": "^2.0.3", + "progress": "^2.0.1", + "proxy-from-env": "^1.0.0", + "rimraf": "^2.6.1", + "ws": "^6.1.0" + } + }, + "node_modules/puppeteer/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/puppeteer/node_modules/mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + }, + "node_modules/puppeteer/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/puppeteer/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + } + }, + "node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "node_modules/quick-format-unescaped": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz", + "integrity": "sha512-dy1yjycmn9blucmJLXOfZDx1ikZJUi6E8bBZLnhPG5gBrVhHXx2xVyqqgKBubVNEXmx51dBACMHpoMQK/N/AXQ==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "node_modules/react-zlib-js": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/react-zlib-js/-/react-zlib-js-1.0.5.tgz", + "integrity": "sha512-TLcPdmqhIl+ylwOwlfm1WUuI7NVvhAv3L74d1AabhjyaAbmLOROTA/Q4EQ/UMCFCOjIkVim9fT3UZOQSFk/mlA==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "node_modules/readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "mute-stream": "0.0.5" + } + }, + "node_modules/readline2/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + } + }, + "node_modules/readline2/node_modules/mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dev": true, + "dependencies": { + "minimatch": "3.0.4" + } + }, + "node_modules/regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "node_modules/regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true + }, + "node_modules/regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "node_modules/registry-auth-token": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "dev": true, + "dependencies": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "dependencies": { + "rc": "^1.0.1" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "node_modules/relaxed-json": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/relaxed-json/-/relaxed-json-1.0.1.tgz", + "integrity": "sha1-fI1KovCVcEzQIOMugJm8rhA/C9Q=", + "dev": true, + "dependencies": { + "chalk": "^1.0.0", + "commander": "^2.6.0" + } + }, + "node_modules/relaxed-json/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "node_modules/relaxed-json/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "node_modules/relaxed-json/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "node_modules/repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "dependencies": { + "is-finite": "^1.0.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.19" + } + }, + "node_modules/request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "dependencies": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "node_modules/require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "dependencies": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "node_modules/resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "node_modules/right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "dependencies": { + "align-text": "^0.1.1" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "node_modules/rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "dependencies": { + "rx-lite": "*" + } + }, + "node_modules/rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "dependencies": { + "symbol-observable": "1.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "dev": true + }, + "node_modules/safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "dev": true, + "optional": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/samsam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", + "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", + "dev": true + }, + "node_modules/sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "node_modules/secure-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", + "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o=", + "dev": true + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "node_modules/semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "dependencies": { + "semver": "^5.0.3" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "node_modules/serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.1", + "kind-of": "^2.0.1", + "lazy-cache": "^0.2.3", + "mixin-object": "^2.0.1" + } + }, + "node_modules/shallow-clone/node_modules/kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true, + "dependencies": { + "is-buffer": "^1.0.2" + } + }, + "node_modules/shallow-clone/node_modules/lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "node_modules/shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "dependencies": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "node_modules/shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "node_modules/sign-addon": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-0.3.1.tgz", + "integrity": "sha512-feaoG7+8IXr9SymOEd8VTZCSlVZArWcBDZ33IIdfXlU5NWWzXdCxCjPDqAkLQplFa7RRZr1S4lSmgMPn80Ze1A==", + "dev": true, + "dependencies": { + "babel-polyfill": "6.16.0", + "deepcopy": "0.6.3", + "es6-error": "4.0.0", + "es6-promisify": "5.0.0", + "jsonwebtoken": "8.2.1", + "mz": "2.5.0", + "request": "2.87.0", + "source-map-support": "0.4.6", + "stream-to-promise": "2.2.0", + "when": "3.7.7" + } + }, + "node_modules/sign-addon/node_modules/ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "dependencies": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "node_modules/sign-addon/node_modules/babel-polyfill": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", + "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.9.1", + "core-js": "^2.4.0", + "regenerator-runtime": "^0.9.5" + } + }, + "node_modules/sign-addon/node_modules/es6-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.0.tgz", + "integrity": "sha1-8JTHBB9mJZm7EnINoFnWucf/D0A=", + "dev": true + }, + "node_modules/sign-addon/node_modules/fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "node_modules/sign-addon/node_modules/har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "dependencies": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "node_modules/sign-addon/node_modules/json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "node_modules/sign-addon/node_modules/mz": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.5.0.tgz", + "integrity": "sha1-KFkCXfA9RrV7sxcXSxlkd85kzsE=", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/sign-addon/node_modules/oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "node_modules/sign-addon/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/sign-addon/node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "node_modules/sign-addon/node_modules/regenerator-runtime": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", + "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=", + "dev": true + }, + "node_modules/sign-addon/node_modules/request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + }, + "node_modules/sign-addon/node_modules/source-map-support": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.6.tgz", + "integrity": "sha1-MlUqpktFg5KoXqs7C17mFScWeus=", + "dev": true, + "dependencies": { + "source-map": "^0.5.3" + } + }, + "node_modules/sign-addon/node_modules/tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/sinon": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.5.0.tgz", + "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", + "dev": true, + "dependencies": { + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.1.0", + "lodash.get": "^4.4.2", + "lolex": "^2.2.0", + "nise": "^1.2.0", + "supports-color": "^5.1.0", + "type-detect": "^4.0.5" + } + }, + "node_modules/sinon-chai": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", + "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", + "dev": true + }, + "node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "node_modules/slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "node_modules/smart-buffer": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", + "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", + "dev": true + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + } + }, + "node_modules/snyk": { + "version": "1.110.2", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.110.2.tgz", + "integrity": "sha512-SQE4sudrscd48EoRJqy5h5S6c8YBiOw0r0Se3rfg1l6ElJGgCB9je6XEzfe+UmfES06D7ueFYepiQPxTwH4Qww==", + "dev": true, + "dependencies": { + "abbrev": "^1.1.1", + "ansi-escapes": "^3.1.0", + "chalk": "^2.4.1", + "configstore": "^3.1.2", + "debug": "^3.1.0", + "hasbin": "^1.2.3", + "inquirer": "^3.0.0", + "lodash": "^4.17.5", + "needle": "^2.2.4", + "opn": "^5.2.0", + "os-name": "^2.0.1", + "proxy-agent": "^2.0.0", + "proxy-from-env": "^1.0.0", + "recursive-readdir": "^2.2.2", + "semver": "^5.5.0", + "snyk-config": "2.2.0", + "snyk-docker-plugin": "1.12.3", + "snyk-go-plugin": "1.6.0", + "snyk-gradle-plugin": "2.1.1", + "snyk-module": "1.9.1", + "snyk-mvn-plugin": "2.0.0", + "snyk-nodejs-lockfile-parser": "1.7.1", + "snyk-nuget-plugin": "1.6.5", + "snyk-php-plugin": "1.5.1", + "snyk-policy": "1.13.1", + "snyk-python-plugin": "1.9.0", + "snyk-resolve": "1.0.1", + "snyk-resolve-deps": "4.0.2", + "snyk-sbt-plugin": "2.0.0", + "snyk-tree": "^1.0.0", + "snyk-try-require": "1.3.1", + "source-map-support": "^0.5.9", + "tempfile": "^2.0.0", + "then-fs": "^2.0.0", + "undefsafe": "^2.0.0", + "uuid": "^3.2.1" + } + }, + "node_modules/snyk-config": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-2.2.0.tgz", + "integrity": "sha512-mq0wbP/AgjcmRq5i5jg2akVVV3iSYUPTowZwKn7DChRLDL8ySOzWAwan+ImXiyNbrWo87FNI/15O6MpOnTxOIg==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "lodash": "^4.17.5", + "nconf": "^0.10.0" + } + }, + "node_modules/snyk-config/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/snyk-config/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/snyk-docker-plugin": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.12.3.tgz", + "integrity": "sha512-ZbvaFCPCd0wxhqxjzU/iyf39tKlq2nvI9nPW32uZV3RGdHrkQH55BzCtBCF9d0dapxX+PKgae/4u2BKNw8hd9Q==", + "dev": true, + "dependencies": { + "debug": "^3", + "dockerfile-ast": "0.0.12", + "tslib": "^1" + } + }, + "node_modules/snyk-docker-plugin/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/snyk-docker-plugin/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/snyk-go-plugin": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.6.0.tgz", + "integrity": "sha512-E6aYw7XAXSs2wJR3fU+vGQ1lVyjAw8PHIQYQwBwMkTHByhJIWPcu6Hy/jT5LcjJHlhYXlpOuk53HeLVK+kcXrQ==", + "dev": true, + "dependencies": { + "graphlib": "^2.1.1", + "tmp": "0.0.33", + "toml": "^2.3.2" + } + }, + "node_modules/snyk-gradle-plugin": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-2.1.1.tgz", + "integrity": "sha512-aFeVC5y3XkJ5BxknHhtYo76as3xJbzSQlXACGZrQZGQ/w/UhNdM8VI1QB6Eq4uEzexleB/hcJwYxNmhI2CNCeA==", + "dev": true, + "dependencies": { + "clone-deep": "^0.3.0" + } + }, + "node_modules/snyk-module": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/snyk-module/-/snyk-module-1.9.1.tgz", + "integrity": "sha512-A+CCyBSa4IKok5uEhqT+hV/35RO6APFNLqk9DRRHg7xW2/j//nPX8wTSZUPF8QeRNEk/sX+6df7M1y6PBHGSHA==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "hosted-git-info": "^2.7.1" + } + }, + "node_modules/snyk-module/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/snyk-module/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/snyk-mvn-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.0.0.tgz", + "integrity": "sha512-9jAhZhv+7YcqtoQYCYlgMoxK+dWBKlk+wkX27Ebg3vNddNop9q5jZitRXTjsXwfSUZHRt+Ptw1f8vei9kjzZVg==", + "dev": true + }, + "node_modules/snyk-nodejs-lockfile-parser": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.7.1.tgz", + "integrity": "sha512-0gHELqMhzUxb/t3Tg6d6G9LTDioOXCrEMt9aetOeV8wD/ZRL5VFNjwcdrm8qILLqzDFaFjFIyMc66c0OL4zFAQ==", + "dev": true, + "dependencies": { + "@yarnpkg/lockfile": "^1.0.2", + "graphlib": "^2.1.5", + "lodash": "4.17.10", + "source-map-support": "^0.5.7", + "tslib": "^1.9.3", + "uuid": "^3.3.2" + } + }, + "node_modules/snyk-nodejs-lockfile-parser/node_modules/lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "node_modules/snyk-nuget-plugin": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.6.5.tgz", + "integrity": "sha512-3qIndzkxCxiaGvAwMkqChbChGdwhNePPyfi0WjhC/nJGwecqU3Fb/NeTW7lgyT+xoq/dFnzW0DgBJ4+AyNA2gA==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "jszip": "^3.1.5", + "lodash": "^4.17.10", + "xml2js": "^0.4.17" + } + }, + "node_modules/snyk-nuget-plugin/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/snyk-nuget-plugin/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/snyk-php-plugin": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.5.1.tgz", + "integrity": "sha512-g5QSHBsRJ2O4cNxKC4zlWwnQYiSgQ77Y6QgGmo3ihPX3VLZrc1amaZIpPsNe1jwXirnGj2rvR5Xw+jDjbzvHFw==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "lodash": "^4.17.5", + "path": "0.12.7" + } + }, + "node_modules/snyk-php-plugin/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/snyk-php-plugin/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/snyk-policy": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.13.1.tgz", + "integrity": "sha512-l9evS3Yk70xyvajjg+I6Ij7fr7gxpVRMZl0J1xNpWps/IVu4DSGih3aMmXi47VJozr4A/eFyj7R1lIr2GhqJCA==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "email-validator": "^2.0.4", + "js-yaml": "^3.12.0", + "lodash.clonedeep": "^4.5.0", + "semver": "^5.6.0", + "snyk-module": "^1.9.1", + "snyk-resolve": "^1.0.1", + "snyk-try-require": "^1.3.1", + "then-fs": "^2.0.0" + } + }, + "node_modules/snyk-policy/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/snyk-policy/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/snyk-python-plugin": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.9.0.tgz", + "integrity": "sha512-zlyOHoCpmyVym9AwkboeepzEGrY3gHsM7eWP/nJ85TgCnQO5H5orKm3RL57PNbWRY+BnDmoQQ+udQgjym2+3sg==", + "dev": true, + "dependencies": { + "tmp": "0.0.33" + } + }, + "node_modules/snyk-resolve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/snyk-resolve/-/snyk-resolve-1.0.1.tgz", + "integrity": "sha512-7+i+LLhtBo1Pkth01xv+RYJU8a67zmJ8WFFPvSxyCjdlKIcsps4hPQFebhz+0gC5rMemlaeIV6cqwqUf9PEDpw==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "then-fs": "^2.0.0" + } + }, + "node_modules/snyk-resolve-deps": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/snyk-resolve-deps/-/snyk-resolve-deps-4.0.2.tgz", + "integrity": "sha512-nlw62wiWhGOTw3BD3jVIwrUkRR4iNxEkkO4Y/PWs8BsUWseGu1H6QgLesFXJb3qx7ANJ5UbUCJMgV+eL0Lf9cA==", + "dev": true, + "dependencies": { + "ansicolors": "^0.3.2", + "debug": "^3.2.5", + "lodash.assign": "^4.2.0", + "lodash.assignin": "^4.2.0", + "lodash.clone": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lru-cache": "^4.0.0", + "semver": "^5.5.1", + "snyk-module": "^1.6.0", + "snyk-resolve": "^1.0.0", + "snyk-tree": "^1.0.0", + "snyk-try-require": "^1.1.1", + "then-fs": "^2.0.0" + } + }, + "node_modules/snyk-resolve-deps/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/snyk-resolve-deps/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/snyk-resolve/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/snyk-resolve/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/snyk-sbt-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.0.0.tgz", + "integrity": "sha512-bOUqsQ1Lysnwfnvf4QQIBfC0M0ZVuhlshTKd7pNwgAJ41YEPJNrPEpzOePl/HfKtwilEEwHh5YHvjYGegEKx0A==", + "dev": true + }, + "node_modules/snyk-tree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/snyk-tree/-/snyk-tree-1.0.0.tgz", + "integrity": "sha1-D7cxdtvzLngvGRAClBYESPkRHMg=", + "dev": true, + "dependencies": { + "archy": "^1.0.0" + } + }, + "node_modules/snyk-try-require": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/snyk-try-require/-/snyk-try-require-1.3.1.tgz", + "integrity": "sha1-bgJvkuZK9/zM6h7lPVJIQeQYohI=", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "lodash.clonedeep": "^4.3.0", + "lru-cache": "^4.0.0", + "then-fs": "^2.0.0" + } + }, + "node_modules/snyk-try-require/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/snyk-try-require/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/snyk/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "node_modules/snyk/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/snyk/node_modules/inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "node_modules/snyk/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/snyk/node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + } + }, + "node_modules/snyk/node_modules/rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "node_modules/snyk/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + } + }, + "node_modules/socks": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", + "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", + "dev": true, + "dependencies": { + "ip": "^1.1.4", + "smart-buffer": "^1.0.13" + } + }, + "node_modules/socks-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz", + "integrity": "sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==", + "dev": true, + "dependencies": { + "agent-base": "^4.1.0", + "socks": "^1.1.10" + } + }, + "node_modules/sonic-boom": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.6.3.tgz", + "integrity": "sha512-TMhj6kDJk9LLzCTTL8+HPCfFn4MwkE4P6k2Up89Rz949+DSRw90V62upRKC99rJEOmu4E9ljH5Otu2JSRmx+bg==", + "dev": true, + "dependencies": { + "flatstr": "^1.0.8" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "node_modules/source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "node_modules/spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", + "dev": true, + "dependencies": { + "concat-stream": "^1.4.7", + "os-shim": "^0.1.2" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "node_modules/split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "dependencies": { + "through": "2" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "node_modules/ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.1" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "dev": true, + "dependencies": { + "debug": "2" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/stream-to-array": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", + "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=", + "dev": true, + "dependencies": { + "any-promise": "^1.1.0" + } + }, + "node_modules/stream-to-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-2.2.0.tgz", + "integrity": "sha1-se2y4cjLESidG1A8CNPyrvUeZQ8=", + "dev": true, + "dependencies": { + "any-promise": "~1.3.0", + "end-of-stream": "~1.1.0", + "stream-to-array": "~2.3.0" + } + }, + "node_modules/stream-to-promise/node_modules/end-of-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", + "integrity": "sha1-6TUyWLqpEIll78QcsO+K3i88+wc=", + "dev": true, + "dependencies": { + "once": "~1.3.0" + } + }, + "node_modules/stream-to-promise/node_modules/once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "node_modules/string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-2.0.0.tgz", + "integrity": "sha512-WoZ+B2ypng1dp4iFLF2kmZlwwlE19gmjgKuhL1FJfDgCREWb3ye3SDVHSzLH6bxfnvYmkCxbzkmWcQZHA4P//Q==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "es-abstract": "^1.10.0", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "regexp.prototype.flags": "^1.2.0" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "node_modules/strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.1" + } + }, + "node_modules/strip-bom-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz", + "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", + "dev": true, + "dependencies": { + "first-chunk-stream": "^2.0.0", + "strip-bom-buf": "^1.0.0" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "node_modules/stylus": { + "version": "0.54.8", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", + "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", + "dev": true, + "dependencies": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.6", + "mkdirp": "~1.0.4", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.3.0", + "source-map": "^0.7.3" + } + }, + "node_modules/stylus/node_modules/css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "dependencies": { + "css": "^2.0.0" + } + }, + "node_modules/stylus/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/stylus/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "node_modules/stylus/node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/stylus/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "node_modules/stylus/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + } + }, + "node_modules/symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, + "node_modules/table": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "dev": true, + "dependencies": { + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, + "node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true + }, + "node_modules/tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "dev": true, + "dependencies": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + } + }, + "node_modules/term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "dependencies": { + "execa": "^0.7.0" + } + }, + "node_modules/term-size/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/term-size/node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "dev": true, + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^3.1.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/then-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/then-fs/-/then-fs-2.0.0.tgz", + "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", + "dev": true, + "dependencies": { + "promise": ">=3.2 <8" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/thunkify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", + "dev": true + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "node_modules/timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + } + }, + "node_modules/tiny-lr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", + "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", + "dev": true, + "dependencies": { + "body": "^5.1.0", + "debug": "^3.1.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" + } + }, + "node_modules/tiny-lr/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/tiny-lr/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/tippy.js": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-2.6.0.tgz", + "integrity": "sha512-hBcy6UXK3epiFwpkycy7Pn1SSLofUmawpPnlYg5ginbXMc/3EX2ivjzHfjvr/WPEpUg71/7ssiovhxDtCWvL2A==", + "dev": true, + "dependencies": { + "popper.js": "^1.14.3" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "node_modules/to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "node_modules/token-stream": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", + "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", + "dev": true + }, + "node_modules/toml": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.6.tgz", + "integrity": "sha512-gVweAectJU3ebq//Ferr2JUY4WKSDe5N+z0FvjDncLGyHmIDoxgY/2Ie4qfEIDm4IS7OA6Rmdm7pdEEdMcV/xQ==", + "dev": true + }, + "node_modules/tosource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", + "integrity": "sha1-QtiN0RZhi88A1hBt1URvNCeQL/E=", + "dev": true + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/traverse": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.4.6.tgz", + "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=", + "dev": true + }, + "node_modules/trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "node_modules/tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/tv4": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=", + "dev": true + }, + "node_modules/tv4-formats": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tv4-formats/-/tv4-formats-3.0.3.tgz", + "integrity": "sha1-a3l43S3IqjnQrCWU3dtvbAy/2SE=", + "dev": true, + "dependencies": { + "moment": "^2.10.6", + "validator": "^8.2.0" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "dependencies": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "optionalDependencies": { + "uglify-to-browserify": "~1.0.0" + } + }, + "node_modules/uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "node_modules/uglifyjs-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", + "dev": true, + "dependencies": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + } + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + } + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + } + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + } + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + } + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + } + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "dependencies": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "node_modules/undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "dev": true, + "dependencies": { + "debug": "^2.2.0" + } + }, + "node_modules/underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + }, + "node_modules/underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "dev": true, + "dependencies": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "dependencies": { + "crypto-random-string": "^1.0.0" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "node_modules/unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "node_modules/upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "node_modules/update-notifier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", + "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "dev": true, + "dependencies": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "dependencies": { + "prepend-http": "^1.0.1" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "node_modules/user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0" + } + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "node_modules/v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validator": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", + "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "node_modules/vscode-languageserver-types": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==", + "dev": true + }, + "node_modules/walkdir": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "dev": true + }, + "node_modules/watchpack": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", + "dev": true, + "dependencies": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-ext": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-2.9.3.tgz", + "integrity": "sha512-aZnlxuYOMUUBS5C8NBhhAj7T0ouJexlW5Cx5ObtOheoguG3fqXUl+KTY19L1Am/bJoyHC8otGTgew9Z0WHeTtg==", + "dev": true, + "dependencies": { + "@cliqz-oss/firefox-client": "0.3.1", + "@cliqz-oss/node-firefox-connect": "1.2.1", + "adbkit": "2.11.0", + "addons-linter": "1.4.1", + "babel-polyfill": "6.26.0", + "babel-runtime": "6.26.0", + "bunyan": "1.8.12", + "camelcase": "4.1.0", + "debounce": "1.1.0", + "decamelize": "2.0.0", + "es6-error": "4.1.1", + "es6-promisify": "5.0.0", + "event-to-promise": "0.8.0", + "firefox-profile": "1.2.0", + "fx-runner": "1.0.9", + "git-rev-sync": "1.9.1", + "mkdirp": "0.5.1", + "multimatch": "2.1.0", + "mz": "2.7.0", + "node-notifier": "5.2.1", + "opn": "5.3.0", + "parse-json": "4.0.0", + "regenerator-runtime": "0.11.1", + "require-uncached": "1.0.3", + "sign-addon": "0.3.1", + "source-map-support": "0.5.3", + "stream-to-promise": "2.2.0", + "strip-json-comments": "2.0.1", + "tmp": "0.0.33", + "update-notifier": "2.3.0", + "watchpack": "1.5.0", + "yargs": "6.6.0", + "zip-dir": "1.0.2" + } + }, + "node_modules/web-ext/node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "node_modules/web-ext/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/web-ext/node_modules/decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "dependencies": { + "xregexp": "4.0.0" + } + }, + "node_modules/web-ext/node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "node_modules/web-ext/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + } + }, + "node_modules/web-ext/node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + } + }, + "node_modules/web-ext/node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "node_modules/web-ext/node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "dependencies": { + "minimist": "0.0.8" + } + }, + "node_modules/web-ext/node_modules/opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + } + }, + "node_modules/web-ext/node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "dependencies": { + "lcid": "^1.0.0" + } + }, + "node_modules/web-ext/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "node_modules/web-ext/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "node_modules/web-ext/node_modules/source-map-support": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", + "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", + "dev": true, + "dependencies": { + "source-map": "^0.6.0" + } + }, + "node_modules/web-ext/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "node_modules/web-ext/node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "node_modules/web-ext/node_modules/xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "node_modules/web-ext/node_modules/y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "node_modules/web-ext/node_modules/yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.2.0" + } + }, + "node_modules/web-ext/node_modules/yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0" + } + }, + "node_modules/web-ext/node_modules/yargs-parser/node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "node_modules/web-ext/node_modules/yargs/node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "node_modules/web-ext/node_modules/yargs/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/webpack": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz", + "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + } + }, + "node_modules/webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "node_modules/webpack/node_modules/acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "node_modules/webpack/node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "node_modules/webpack/node_modules/binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true + }, + "node_modules/webpack/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "dependencies": { + "fill-range": "^7.0.1" + } + }, + "node_modules/webpack/node_modules/chokidar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", + "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "node_modules/webpack/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + } + }, + "node_modules/webpack/node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "node_modules/webpack/node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^4.0.1" + } + }, + "node_modules/webpack/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + } + }, + "node_modules/webpack/node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + } + }, + "node_modules/webpack/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "node_modules/webpack/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "node_modules/webpack/node_modules/readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "dependencies": { + "picomatch": "^2.2.1" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "node_modules/webpack/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + } + }, + "node_modules/webpack/node_modules/watchpack": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "dev": true, + "dependencies": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/when": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz", + "integrity": "sha1-q6A/w7tzbWyIsJHQE9io5ZDYRxg=", + "dev": true + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1" + } + }, + "node_modules/win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", + "dev": true, + "dependencies": { + "semver": "^5.0.1" + } + }, + "node_modules/window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "node_modules/winreg": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz", + "integrity": "sha1-BxBVVLoanQiXklHRKUdb/64wBrc=", + "dev": true + }, + "node_modules/with": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", + "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", + "dev": true, + "dependencies": { + "acorn": "^3.1.0", + "acorn-globals": "^3.0.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "node_modules/wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "node_modules/worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + } + }, + "node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "node_modules/xhr-mock": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/xhr-mock/-/xhr-mock-2.5.1.tgz", + "integrity": "sha512-UKOjItqjFgPUwQGPmRAzNBn8eTfIhcGjBVGvKYAWxUQPQsXNGD6KEckGTiHwyaAUp9C9igQlnN1Mp79KWCg7CQ==", + "dev": true, + "dependencies": { + "global": "^4.3.0", + "url": "^0.11.0" + } + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "node_modules/xml2js/node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, + "node_modules/xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true + }, + "node_modules/xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "node_modules/y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "dependencies": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + }, + "node_modules/yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/zip-dir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-1.0.2.tgz", + "integrity": "sha1-JT+QeurWKiGs2HIdi4gDKyQRwFE=", + "dev": true, + "dependencies": { + "async": "^1.5.2", + "jszip": "^2.4.0" + } + }, + "node_modules/zip-dir/node_modules/jszip": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", + "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", + "dev": true, + "dependencies": { + "pako": "~1.0.2" + } + }, + "node_modules/zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "dev": true, + "dependencies": { + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" + } + } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", + "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz", + "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.1", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.0", + "@babel/types": "^7.11.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", + "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.4", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", + "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", + "dev": true, + "requires": { + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", + "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", + "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.2.tgz", + "integrity": "sha512-Vuj/+7vLo6l1Vi7uuO+1ngCDNeVmNbTngcJFKCR/oEtz8tKz0CJxZEGmPt9KcIloZhOZ3Zit6xbpXT2MDlS9Vw==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", + "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", + "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", + "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", + "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", + "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", + "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/polyfill": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.10.4.tgz", + "integrity": "sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg==", + "dev": true, + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/preset-env": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz", + "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.11.0", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-export-namespace-from": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.11.0", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.11.0", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.11.0", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/register": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0.tgz", + "integrity": "sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g==", + "dev": true, + "requires": { + "core-js": "^2.5.7", + "find-cache-dir": "^1.0.0", + "home-or-tmp": "^3.0.0", + "lodash": "^4.17.10", + "mkdirp": "^0.5.1", + "pirates": "^4.0.0", + "source-map-support": "^0.5.9" + }, + "dependencies": { + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "home-or-tmp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", + "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "@babel/runtime": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", + "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.0", + "@babel/types": "^7.11.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", + "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@cliqz-oss/firefox-client": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@cliqz-oss/firefox-client/-/firefox-client-0.3.1.tgz", + "integrity": "sha512-RO+Tops/wGnBzWoZYkCraqyh2JqOejqJq5/a4b54HhmjTNSKdUPwAOK17EGg/zPb0nWqkuB7QyZsI9bo+ev8Kw==", + "dev": true, + "requires": { + "colors": "0.5.x", + "js-select": "~0.6.0" + }, + "dependencies": { + "colors": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", + "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", + "dev": true + } + } + }, + "@cliqz-oss/node-firefox-connect": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@cliqz-oss/node-firefox-connect/-/node-firefox-connect-1.2.1.tgz", + "integrity": "sha512-O/IyiB5pfztCdmxQZg0/xeq5w+YiP3gtJz8d4We2EpLPKzbDVjOrtfLKYgVfm6Ya6mbvDge1uLkSRwaoVCWKnA==", + "dev": true, + "requires": { + "@cliqz-oss/firefox-client": "0.3.1", + "es6-promise": "^2.0.1" + }, + "dependencies": { + "es6-promise": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", + "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=", + "dev": true + } + } + }, + "@octokit/auth-token": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.4.tgz", + "integrity": "sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q==", + "requires": { + "@octokit/types": "^6.0.0" + } + }, + "@octokit/core": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.2.4.tgz", + "integrity": "sha512-d9dTsqdePBqOn7aGkyRFe7pQpCXdibSJ5SFnrTr0axevObZrpz3qkWm7t/NjYv5a66z6vhfteriaq4FRz3e0Qg==", + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.4.12", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.1.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.10.tgz", + "integrity": "sha512-9+Xef8nT7OKZglfkOMm7IL6VwxXUQyR7DUSU0LH/F7VNqs8vyd7es5pTfz9E7DwUIx7R3pGscxu1EBhYljyu7Q==", + "requires": { + "@octokit/types": "^6.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + } + } + }, + "@octokit/graphql": { + "version": "4.5.8", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.5.8.tgz", + "integrity": "sha512-WnCtNXWOrupfPJgXe+vSmprZJUr0VIu14G58PMlkWGj3cH+KLZEfKMmbUQ6C3Wwx6fdhzVW1CD5RTnBdUHxhhA==", + "requires": { + "@octokit/request": "^5.3.0", + "@octokit/types": "^6.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-2.0.0.tgz", + "integrity": "sha512-J4bfM7lf8oZvEAdpS71oTvC1ofKxfEZgU5vKVwzZKi4QPiL82udjpseJwxPid9Pu2FNmyRQOX4iEj6W1iOSnPw==" + }, + "@octokit/plugin-paginate-rest": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.6.2.tgz", + "integrity": "sha512-3Dy7/YZAwdOaRpGQoNHPeT0VU1fYLpIUdPyvR37IyFLgd6XSij4j9V/xN/+eSjF2KKvmfIulEh9LF1tRPjIiDA==", + "requires": { + "@octokit/types": "^6.0.1" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz", + "integrity": "sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg==", + "requires": {} + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.4.1.tgz", + "integrity": "sha512-+v5PcvrUcDeFXf8hv1gnNvNLdm4C0+2EiuWt9EatjjUmfriM1pTMM+r4j1lLHxeBQ9bVDmbywb11e3KjuavieA==", + "requires": { + "@octokit/types": "^6.1.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "5.4.12", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.12.tgz", + "integrity": "sha512-MvWYdxengUWTGFpfpefBBpVmmEYfkwMoxonIB3sUGp5rhdgwjXL1ejo6JbgzG/QD9B/NYt/9cJX1pxXeSIUCkg==", + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.0.0", + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "once": "^1.4.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + } + } + }, + "@octokit/request-error": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.4.tgz", + "integrity": "sha512-LjkSiTbsxIErBiRh5wSZvpZqT4t0/c9+4dOe0PII+6jXR+oj/h66s7E4a/MghV7iT8W9ffoQ5Skoxzs96+gBPA==", + "requires": { + "@octokit/types": "^6.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "18.0.12", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.0.12.tgz", + "integrity": "sha512-hNRCZfKPpeaIjOVuNJzkEL6zacfZlBPV8vw8ReNeyUkVvbuCvvrrx8K8Gw2eyHHsmd4dPlAxIXIZ9oHhJfkJpw==", + "requires": { + "@octokit/core": "^3.2.3", + "@octokit/plugin-paginate-rest": "^2.6.2", + "@octokit/plugin-request-log": "^1.0.2", + "@octokit/plugin-rest-endpoint-methods": "4.4.1" + } + }, + "@octokit/types": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.1.1.tgz", + "integrity": "sha512-btm3D6S7VkRrgyYF31etUtVY/eQ1KzrNRqhFt25KSe2mKlXuLXJilglRC6eDA2P6ou94BUnk/Kz5MPEolXgoiw==", + "requires": { + "@octokit/openapi-types": "^2.0.0", + "@types/node": ">= 8" + } + }, + "@sinonjs/commons": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", + "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "dev": true, + "requires": { + "samsam": "1.3.0" + } + }, + "@sinonjs/samsam": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", + "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.3.0", + "array-from": "^2.1.1", + "lodash": "^4.17.15" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true + }, + "@types/babel-types": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.8.tgz", + "integrity": "sha512-jvu8g4LR7+p6ao30RhTREnEhHxmP4/R9D9/rOR/Kq14FztORty9SKgtOZUNZNMB9CXLxZ54EWu4dArUE8WdTsw==", + "dev": true + }, + "@types/babylon": { + "version": "6.16.5", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", + "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", + "dev": true, + "requires": { + "@types/babel-types": "*" + } + }, + "@types/json-schema": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "dev": true + }, + "@types/node": { + "version": "14.0.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", + "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true, + "requires": { + "acorn": "^4.0.4" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "adbkit": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/adbkit/-/adbkit-2.11.0.tgz", + "integrity": "sha512-j2vUhEeZmCiqBP+p77CpPWQTcT20rOmSmRHFUTZUwUpxzeCd3fXop4NAGYztSY9/FNU4bT/qqvYQ4EZKuCXhfA==", + "dev": true, + "requires": { + "adbkit-logcat": "^1.1.0", + "adbkit-monkey": "~1.0.1", + "bluebird": "~2.9.24", + "commander": "^2.3.0", + "debug": "~2.6.3", + "node-forge": "^0.7.1", + "split": "~0.3.3" + }, + "dependencies": { + "bluebird": { + "version": "2.9.34", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", + "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g=", + "dev": true + }, + "node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", + "dev": true + } + } + }, + "adbkit-logcat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz", + "integrity": "sha1-Adf5sM75CTowvLOwB+//MBUIli8=", + "dev": true + }, + "adbkit-monkey": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz", + "integrity": "sha1-8pG+cBou/FZ6Y/x6pq/N7TFDC+E=", + "dev": true, + "requires": { + "async": "~0.2.9" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + } + } + }, + "addons-linter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-1.4.1.tgz", + "integrity": "sha512-AX8nCD/gy/6DoX4B7vTMQV6pcP8tG0BjxB3Jv44VZrUTYG+ojHx26abRDyUn+fDqWGf8qzeVn0Vss/NMNjMouA==", + "dev": true, + "requires": { + "@babel/polyfill": "7.0.0", + "@babel/register": "7.0.0", + "ajv": "6.5.5", + "ajv-merge-patch": "4.1.0", + "chalk": "2.4.0", + "cheerio": "1.0.0-rc.2", + "columnify": "1.5.4", + "common-tags": "1.8.0", + "crx-parser": "0.1.2", + "deepmerge": "2.2.1", + "dispensary": "0.27.0", + "es6-promisify": "5.0.0", + "eslint": "5.0.1", + "eslint-plugin-no-unsafe-innerhtml": "1.0.16", + "eslint-visitor-keys": "1.0.0", + "espree": "4.1.0", + "esprima": "3.1.3", + "first-chunk-stream": "2.0.0", + "fluent-syntax": "0.7.0", + "fsevents": "2.0.1", + "glob": "7.1.3", + "is-mergeable-object": "1.1.0", + "jed": "1.1.1", + "os-locale": "3.0.1", + "pino": "5.9.0", + "po2json": "0.4.5", + "postcss": "7.0.6", + "probe-image-size": "4.0.0", + "relaxed-json": "1.0.1", + "semver": "5.6.0", + "shelljs": "0.8.3", + "snyk": "1.110.2", + "source-map-support": "0.5.6", + "strip-bom-stream": "3.0.0", + "tosource": "1.0.0", + "upath": "1.1.0", + "whatwg-url": "7.0.0", + "xmldom": "0.1.27", + "yargs": "12.0.2", + "yauzl": "2.9.2" + }, + "dependencies": { + "@babel/polyfill": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz", + "integrity": "sha512-dnrMRkyyr74CRelJwvgnnSUDh2ge2NCTyHVwpOdvRMHtJUyxLtMAfhBN3s64pY41zdw0kgiLPh6S20eb1NcX6Q==", + "dev": true, + "requires": { + "core-js": "^2.5.7", + "regenerator-runtime": "^0.11.1" + } + }, + "ajv": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chalk": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", + "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + }, + "yauzl": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.2.tgz", + "integrity": "sha1-T7G8euH8L1cDe1SvasyP4QMcW3c=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ajv": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "ajv-merge-patch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ajv-merge-patch/-/ajv-merge-patch-4.1.0.tgz", + "integrity": "sha512-0mAYXMSauA8RZ7r+B4+EAOYcZEcO9OK5EiQCR7W7Cv4E44pJj56ZnkKLJ9/PAcOc0dT+LlV9fdDcq2TxVJfOYw==", + "dev": true, + "requires": { + "fast-json-patch": "^2.0.6", + "json-merge-patch": "^0.2.3" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "^2.0.0" + } + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", + "dev": true + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archiver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "dev": true, + "requires": { + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "walkdir": "^0.0.11", + "zip-stream": "^1.1.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + } + } + }, + "archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + } + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "dev": true + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", + "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "dev": true + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "before-after-hook": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", + "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "dev": true + }, + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "dev": true, + "requires": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + }, + "dependencies": { + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, + "raw-body": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "dev": true, + "requires": { + "bytes": "1", + "string_decoder": "0.10" + } + } + } + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "bootstrap": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", + "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", + "dev": true + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", + "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001093", + "electron-to-chromium": "^1.3.488", + "escalade": "^3.0.1", + "node-releases": "^1.1.58" + } + }, + "buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bunyan": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", + "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", + "dev": true, + "requires": { + "dtrace-provider": "~0.8", + "moment": "^2.10.6", + "mv": "~2", + "safe-json-stringify": "~1" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001111", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001111.tgz", + "integrity": "sha512-xnDje2wchd/8mlJu8sXvWxOGvMgv+uT3iZ3bkIAynKOzToCssWCmkz/ZIkQBs/2pUB4uwnJKVORWQ31UkbVjOg==", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chai-arrays": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.2.0.tgz", + "integrity": "sha512-4awrdGI2EH8owJ9I58PXwG4N56/FiM8bsn4CVSNEgr4GKAM6Kq5JPVApUbhUBjDakbZNuRvV7quRSC38PWq/tg==", + "dev": true + }, + "chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "requires": { + "check-error": "^1.0.2" + } + }, + "chai-json-schema": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/chai-json-schema/-/chai-json-schema-1.5.1.tgz", + "integrity": "sha512-TR/xPDxRhqwFFCWg1HgL8nNWbpNfUwaib6pBN++QKpnd0t+o3+MBvAn5CM1mpdUMaM76oJAtUjGKdjGad01lIA==", + "dev": true, + "requires": { + "jsonpointer.js": "0.4.0", + "tv4": "^1.3.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "dev": true, + "requires": { + "is-regex": "^1.0.3" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "dev": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "clipboard-polyfill": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/clipboard-polyfill/-/clipboard-polyfill-2.8.6.tgz", + "integrity": "sha512-kz/1ov+PXsBpGnW9XJH3dLWdYj12FpXqO89Dngm/GRPoI36E/tnYs6N0YPTEhxM9WHAlFiN5eoyIVuv5nzKXvg==", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-deep": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.1", + "kind-of": "^3.2.2", + "shallow-clone": "^0.1.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codemirror": { + "version": "5.56.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.56.0.tgz", + "integrity": "sha512-MfKVmYgifXjQpLSgpETuih7A7WTTIsxvKfSLGseTY5+qt0E1UD1wblZGM6WLenORo8sgmf+3X+WTe2WF7mufyw==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "columnify": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", + "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "dev": true, + "requires": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "dev": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } + }, + "connect-livereload": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", + "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constantinople": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", + "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", + "dev": true, + "requires": { + "@types/babel-types": "^7.0.0", + "@types/babylon": "^6.16.2", + "babel-types": "^6.26.0", + "babylon": "^6.18.0" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "dev": true + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "requires": { + "buffer": "^5.1.0" + } + }, + "crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "dev": true, + "requires": { + "crc": "^3.4.4", + "readable-stream": "^2.0.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crx": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/crx/-/crx-3.2.1.tgz", + "integrity": "sha1-Fyk+51790IxtHIs+F0nS1XV89Cs=", + "dev": true, + "requires": { + "archiver": "^1.1.0", + "commander": "^2.5.0", + "es6-promise": "^3.0.0", + "node-rsa": "^0.2.10" + } + }, + "crx-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/crx-parser/-/crx-parser-0.1.2.tgz", + "integrity": "sha1-fu7tnt3JXiLBiTguNGJARKiaWm0=", + "dev": true + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-uri-to-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", + "dev": true + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.1.0.tgz", + "integrity": "sha512-ZQVKfRVlwRfD150ndzEK8M90ABT+Y/JQKs4Y7U4MXdpuoUkkrr4DwKbVux3YjylA5bUMUj0Nc3pMxPJX6N2QQQ==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deep-for-each": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/deep-for-each/-/deep-for-each-2.0.3.tgz", + "integrity": "sha512-Y9mu+rplGcNZ7veer+5rqcdI9w3aPb7/WyE/nYnsuPevaE2z5YuC2u7/Gz/hIKsa0zo8sE8gKoBimSNsO/sr+A==", + "dev": true, + "requires": { + "lodash.isplainobject": "^4.0.6" + } + }, + "deep-freeze": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", + "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepcopy": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-0.6.3.tgz", + "integrity": "sha1-Y0eA8vhlardxr4+oQx7RzO5Vx7A=", + "dev": true + }, + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "dev": true, + "requires": { + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "desandro-matches-selector": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", + "integrity": "sha1-cXvu1NwT59jzdi9wem1YpndCGOE=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "dispensary": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.27.0.tgz", + "integrity": "sha512-bG9pSBPH8wTEaugUIBAbBvBHynqOoGxefOT4YXlPoUc9AxQGDUO1uFHafDVWnsGWiSYvTUga0aZ9xThzfGQtlQ==", + "dev": true, + "requires": { + "array-from": "~2.1.1", + "async": "~2.6.0", + "natural-compare-lite": "~1.4.0", + "pino": "~5.8.0", + "request": "~2.88.0", + "sha.js": "~2.4.4", + "source-map-support": "~0.5.4", + "yargs": "~12.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "pino": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-5.8.1.tgz", + "integrity": "sha512-7bVFzUw3ffIfOM3t7MuQ9KsH+wX5bdGdQhGfccKgleoY7qG4FO3CmVSjywlFmmYGyMOISi1LDGC6JMEH7XkZJg==", + "dev": true, + "requires": { + "fast-json-parse": "^1.0.3", + "fast-redact": "^1.2.0", + "fast-safe-stringify": "^2.0.6", + "flatstr": "^1.0.5", + "pino-std-serializers": "^2.3.0", + "pump": "^3.0.0", + "quick-format-unescaped": "^3.0.0", + "sonic-boom": "^0.6.1" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + } + } + }, + "dockerfile-ast": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.0.12.tgz", + "integrity": "sha512-cIV8oXkAxpIuN5XgG0TGg07nLDgrj4olkfrdT77OTA3VypscsYHBUg/FjHxW9K3oA+CyH4Th/qtoMgTVpzSobw==", + "dev": true, + "requires": { + "vscode-languageserver-types": "^3.5.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", + "dev": true + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "dtrace-provider": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", + "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.14.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.523", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.523.tgz", + "integrity": "sha512-D4/3l5DpciddD92IDRtpLearQSGzly8FwBJv+nITvLH8YJrFabpDFe4yuiOJh2MS4/EsXqyQTXyw1toeYPtshQ==", + "dev": true + }, + "elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "email-validator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", + "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", + "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", + "dev": true, + "requires": { + "string-template": "~0.2.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "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" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + } + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + }, + "dependencies": { + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + } + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escalade": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.0.1.tgz", + "integrity": "sha512-D5nG2rErquLUstgUaxJlWB5+gu+U/3VDY0fk/Iuq8y9CUFy/7Y6oF4N2cR1tV8knzQvciIbfqfohd359xTLIKQ==", + "dev": true, + "requires": { + "ajv": "^6.5.0", + "babel-code-frame": "^6.26.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.5.0", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^5.2.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.11.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.1.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.0", + "string.prototype.matchall": "^2.0.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "eslint-plugin-no-unsafe-innerhtml": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsafe-innerhtml/-/eslint-plugin-no-unsafe-innerhtml-1.0.16.tgz", + "integrity": "sha1-fQKHjI6b95FriINtWsEitC8VGTI=", + "dev": true, + "requires": { + "eslint": "^3.7.1" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "requires": { + "babel-code-frame": "^6.16.0", + "chalk": "^1.1.3", + "concat-stream": "^1.5.2", + "debug": "^2.1.1", + "doctrine": "^2.0.0", + "escope": "^3.6.0", + "espree": "^3.4.0", + "esquery": "^1.0.0", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "glob": "^7.0.3", + "globals": "^9.14.0", + "ignore": "^3.2.0", + "imurmurhash": "^0.1.4", + "inquirer": "^0.12.0", + "is-my-json-valid": "^2.10.0", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.5.1", + "json-stable-stringify": "^1.0.0", + "levn": "^0.3.0", + "lodash": "^4.0.0", + "mkdirp": "^0.5.0", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.1", + "pluralize": "^1.2.1", + "progress": "^1.1.8", + "require-uncached": "^1.0.2", + "shelljs": "^0.7.5", + "strip-bom": "^3.0.0", + "strip-json-comments": "~2.0.1", + "table": "^3.7.8", + "text-table": "~0.2.0", + "user-home": "^2.0.0" + } + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "^1.3.0" + } + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", + "slice-ansi": "0.0.4", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true + }, + "espree": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "dev": true, + "requires": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "event-to-promise": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz", + "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=", + "dev": true + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "express-sslify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/express-sslify/-/express-sslify-1.2.0.tgz", + "integrity": "sha1-MOhLzu0VV+sYdnK74UMKCioQDZw=" + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-parse": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", + "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", + "dev": true + }, + "fast-json-patch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.2.1.tgz", + "integrity": "sha512-4j5uBaTnsYAV5ebkidvxiLUYOwjQ+JSFljeqfTxCrH9bDmlCQaOJFS84oDJ2rAXZq2yskmk3ORfoP9DCwqFNig==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1" + }, + "dependencies": { + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-redact": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-1.5.0.tgz", + "integrity": "sha512-Afo61CgUjkzdvOKDHn08qnZ0kwck38AOGcMlvSGzvJbIab6soAP5rdoQayecGCDsD69AiF9vJBXyq31eoEO2tQ==", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "dev": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "requires": { + "glob": "~5.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "firefox-profile": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-1.2.0.tgz", + "integrity": "sha512-TTEFfPOkyaz4EWx/5ZDQC1mJAe3a+JgVcchpIfD4Tvx1UspwlTJRJxOYA35x/z2iJcxaF6aW2rdh6oj6qwgd2g==", + "dev": true, + "requires": { + "adm-zip": "~0.4.x", + "archiver": "~2.1.0", + "async": "~2.5.0", + "fs-extra": "~4.0.2", + "ini": "~1.3.3", + "jetpack-id": "1.0.0", + "lazystream": "~1.0.0", + "lodash": "~4.17.2", + "minimist": "^1.1.1", + "uuid": "^3.0.0", + "xml2js": "~0.4.4" + }, + "dependencies": { + "archiver": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", + "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", + "dev": true, + "requires": { + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "zip-stream": "^1.2.0" + } + }, + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "dev": true, + "requires": { + "lodash": "^4.14.0" + } + } + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "fizzy-ui-utils": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz", + "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", + "dev": true, + "requires": { + "desandro-matches-selector": "^2.0.0" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatstr": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", + "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==", + "dev": true + }, + "flipclock": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/flipclock/-/flipclock-0.7.8.tgz", + "integrity": "sha1-838ffKkETZAsH+4fGuf0vR7vGlQ=", + "dev": true, + "requires": { + "jquery": ">=1.7" + } + }, + "fluent-syntax": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.7.0.tgz", + "integrity": "sha512-T0iqfhC40jrs3aDjYOKgzIQjjhsH2Fa6LnXB6naPv0ymW3DeYMUFa89y9aLKMpi1P9nl2vEimK7blx4tVnUWBg==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.1.tgz", + "integrity": "sha512-p+CXqK/iLvDESUWdn3NA3JVO9HxdfI+iXx8xR3DqWgKZvQNiEVpAyUQo0lmwz8rqksb4xaGerG291xuwwhX2kA==", + "dev": true, + "optional": true + }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "dev": true, + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "fx-runner": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.0.9.tgz", + "integrity": "sha1-eyPzdz3HaqzELxHZr/J2lnXLY/A=", + "dev": true, + "requires": { + "commander": "2.9.0", + "lodash": "4.17.10", + "shell-quote": "1.6.1", + "spawn-sync": "1.0.15", + "when": "3.7.7", + "which": "1.2.4", + "winreg": "0.0.12" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "dev": true, + "requires": { + "is-relative": "^0.1.0" + } + }, + "is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", + "dev": true + }, + "isexe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", + "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", + "dev": true + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "which": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", + "integrity": "sha1-FVf5YIBgTlsRs1meufRbUKnv1yI=", + "dev": true, + "requires": { + "is-absolute": "^0.1.7", + "isexe": "^1.1.1" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "requires": { + "is-property": "^1.0.2" + } + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-size": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz", + "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-uri": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", + "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==", + "dev": true, + "requires": { + "data-uri-to-buffer": "1", + "debug": "2", + "extend": "~3.0.2", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "2" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gettext-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.0.tgz", + "integrity": "sha1-LFpmONiTk0ubVQN9CtgstwBLJnk=", + "dev": true, + "requires": { + "encoding": "^0.1.11" + } + }, + "git-rev-sync": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/git-rev-sync/-/git-rev-sync-1.9.1.tgz", + "integrity": "sha1-oMLj3TkqvPa3aWLif8dfsyI0Sc4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "graceful-fs": "4.1.11", + "shelljs": "0.7.7" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "shelljs": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", + "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + } + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globule": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "grunt": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.2.1.tgz", + "integrity": "sha512-zgJjn9N56tScvRt/y0+1QA+zDBnKTrkpyeSBqQPLcZvbqTD/oyGMrdZQXmm6I3828s+FmPvxc3Xv+lgKFtudOw==", + "dev": true, + "requires": { + "dateformat": "~3.0.3", + "eventemitter2": "~0.4.13", + "exit": "~0.1.2", + "findup-sync": "~0.3.0", + "glob": "~7.1.6", + "grunt-cli": "~1.3.2", + "grunt-known-options": "~1.1.0", + "grunt-legacy-log": "~2.0.0", + "grunt-legacy-util": "~1.1.1", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.14.0", + "minimatch": "~3.0.4", + "mkdirp": "~1.0.4", + "nopt": "~3.0.6", + "rimraf": "~3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "grunt-cli": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz", + "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==", + "dev": true, + "requires": { + "grunt-known-options": "~1.1.0", + "interpret": "~1.1.0", + "liftoff": "~2.5.0", + "nopt": "~4.0.1", + "v8flags": "~3.1.1" + }, + "dependencies": { + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + } + } + }, + "grunt-contrib-clean": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz", + "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=", + "dev": true, + "requires": { + "async": "^1.5.2", + "rimraf": "^2.5.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "grunt-contrib-connect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz", + "integrity": "sha1-XPkzuRpnOGBEJzwLJERgPNmIebo=", + "dev": true, + "requires": { + "async": "^1.5.2", + "connect": "^3.4.0", + "connect-livereload": "^0.5.0", + "http2": "^3.3.4", + "morgan": "^1.6.1", + "opn": "^4.0.0", + "portscanner": "^1.0.0", + "serve-index": "^1.7.1", + "serve-static": "^1.10.0" + } + }, + "grunt-contrib-copy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", + "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "file-sync-cmp": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "grunt-contrib-pug": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-pug/-/grunt-contrib-pug-1.0.0.tgz", + "integrity": "sha1-tSWlwK/wRiL3Vw4x+SQQbxb4G0Y=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "pug": "^2.0.0-alpha3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "grunt-contrib-stylus": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-stylus/-/grunt-contrib-stylus-1.2.0.tgz", + "integrity": "sha1-R9RG7wVESW7/naQY0A9XdFQ0crs=", + "dev": true, + "requires": { + "async": "^1.5.2", + "chalk": "^1.0.0", + "lodash": "^4.0.0", + "nib": "^1.1.0", + "stylus": "^0.54.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "grunt-contrib-watch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", + "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", + "dev": true, + "requires": { + "async": "^2.6.0", + "gaze": "^1.1.0", + "lodash": "^4.17.10", + "tiny-lr": "^1.1.1" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + } + } + }, + "grunt-crx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/grunt-crx/-/grunt-crx-1.0.5.tgz", + "integrity": "sha1-nU5QHO8WtyF3KmBBxNQdH5KFirU=", + "dev": true, + "requires": { + "crx": "^3.0.1", + "es6-promise": "^3.0.0", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "xtend": "^4.0.1" + } + }, + "grunt-exec": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz", + "integrity": "sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg==", + "dev": true + }, + "grunt-known-options": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", + "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", + "dev": true + }, + "grunt-legacy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", + "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", + "dev": true, + "requires": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.5" + } + }, + "grunt-legacy-log-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", + "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", + "dev": true, + "requires": { + "chalk": "~2.4.1", + "lodash": "~4.17.10" + } + }, + "grunt-legacy-util": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", + "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", + "dev": true, + "requires": { + "async": "~1.5.2", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~4.17.10", + "underscore.string": "~3.3.4", + "which": "~1.3.0" + } + }, + "grunt-mocha-test": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.13.3.tgz", + "integrity": "sha512-zQGEsi3d+ViPPi7/4jcj78afKKAKiAA5n61pknQYi25Ugik+aNOuRmiOkmb8mN2CeG8YxT+YdT1H1Q7B/eNkoQ==", + "dev": true, + "requires": { + "hooker": "^0.2.3", + "mkdirp": "^0.5.0" + } + }, + "grunt-webpack": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/grunt-webpack/-/grunt-webpack-3.1.3.tgz", + "integrity": "sha512-SaZ8K8lG4iTxs7ClZxOWCf3kxqS2y+Eel8SbaEGgBKwhAp6e45beIu+vhBZRLX3vonKML2kjemKsQ21REaqNFQ==", + "dev": true, + "requires": { + "deep-for-each": "^2.0.2", + "lodash": "^4.7.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hasbin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", + "integrity": "sha1-eMWSaJPIAhXCtWiuH9P8q3omlrA=", + "dev": true, + "requires": { + "async": "~1.5" + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "highlight.js": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.1.tgz", + "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-parser-js": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", + "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", + "dev": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "http2": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.7.tgz", + "integrity": "sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ==", + "dev": true + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + }, + "inject-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/inject-loader/-/inject-loader-3.0.1.tgz", + "integrity": "sha512-0Kd4NqMJUhknG4ECiJ/mgyHJBpfBBWZ3IKHl2BLNQiFtMO7/xiv9mmHl7mGvE0iKrBeQAZdMcQP3sMXZN0cqeg==", + "dev": true, + "requires": { + "babel-core": "~6" + } + }, + "inquirer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", + "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", + "dev": true, + "requires": { + "acorn": "~4.0.2", + "object-assign": "^4.0.1" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-mergeable-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-mergeable-object/-/is-mergeable-object-1.1.0.tgz", + "integrity": "sha512-JfyDDwUdtS4yHCgUpxOyKB9dnfZ0gecufxB0eytX6BmSXSE+8dbxDGt+V7CNRIRJ9sYFV/WQt2KJG6hNob2sBw==", + "dev": true + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.20.5", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.5.tgz", + "integrity": "sha512-VTPuvvGQtxvCeghwspQu1rBgjYUT6FGxPlvFKbYuFtgc4ADsX3U5ihZOYN0qyU6u+d4X9xXb0IT5O6QpXKt87A==", + "dev": true, + "requires": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isotope-layout": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/isotope-layout/-/isotope-layout-3.0.6.tgz", + "integrity": "sha512-z2ZKablhocXhoNyWwzJPFd7u7FWbYbVJA51Nvsqsod8jH2ExGc1SwDsSWKE54e3PhXzqf2yZPhFSq/c2MR1arw==", + "dev": true, + "requires": { + "desandro-matches-selector": "^2.0.0", + "fizzy-ui-utils": "^2.0.4", + "get-size": "^2.0.0", + "masonry-layout": "^4.1.0", + "outlayer": "^2.1.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jed": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", + "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=", + "dev": true + }, + "jetpack-id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jetpack-id/-/jetpack-id-1.0.0.tgz", + "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", + "dev": true + }, + "jquery": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==", + "dev": true + }, + "js-select": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/js-select/-/js-select-0.6.0.tgz", + "integrity": "sha1-woTiKCTVknrsli3N8kcXSu+w0ZA=", + "dev": true, + "requires": { + "JSONSelect": "0.2.1", + "traverse": "0.4.x" + } + }, + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-merge-patch": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-0.2.3.tgz", + "integrity": "sha1-+ixrWvh9p3uuKWalidUuI+2B/kA=", + "dev": true, + "requires": { + "deep-equal": "^1.0.0" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", + "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", + "dev": true + }, + "jsonpointer.js": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/jsonpointer.js/-/jsonpointer.js-0.4.0.tgz", + "integrity": "sha1-ACyxI/dnqv3rAZYTLOXE+ZQcyro=", + "dev": true + }, + "JSONSelect": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.2.1.tgz", + "integrity": "sha1-QVQYpSbTP+MddLTe+jyDbUhewgM=", + "dev": true + }, + "jsonwebtoken": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz", + "integrity": "sha512-l8rUBr0fqYYwPc8/ZGrue7GiW7vWdZtZqelxo4Sd5lMvuEeCK8/wS54sEo6tJhdZ6hqfutsj6COgC0d1XdbHGw==", + "dev": true, + "requires": { + "jws": "^3.1.4", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "xtend": "^4.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "dev": true, + "requires": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "jstransformer-markdown-it": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.1.0.tgz", + "integrity": "sha1-aewwzkUYvtWZezjwJ2SOjChekvc=", + "dev": true, + "requires": { + "markdown-it": "^8.0.0" + } + }, + "jszip": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", + "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "just-extend": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.0.tgz", + "integrity": "sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==", + "dev": true + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "^4.0.0" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + } + } + }, + "linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "livereload-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", + "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", + "dev": true + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "dev": true + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", + "dev": true + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", + "dev": true + }, + "lolex": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", + "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", + "dev": true + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "macos-release": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz", + "integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-it": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "masonry-layout": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz", + "integrity": "sha512-iGtAlrpHNyxaR19CvKC3npnEcAwszXoyJiI8ARV2ePi7fmYhIud25MHK8Zx4P0LCC4d3TNO9+rFa1KoK1OEOaA==", + "dev": true, + "requires": { + "get-size": "^2.0.2", + "outlayer": "^2.1.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "moment": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==", + "dev": true + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "optional": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "dev": true, + "optional": true, + "requires": { + "glob": "^6.0.1" + } + } + } + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q=", + "dev": true + }, + "nconf": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.10.0.tgz", + "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==", + "dev": true, + "requires": { + "async": "^1.4.0", + "ini": "^1.3.0", + "secure-keys": "^1.0.0", + "yargs": "^3.19.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true, + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } + } + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true, + "optional": true + }, + "needle": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", + "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==", + "dev": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nib": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", + "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", + "dev": true, + "requires": { + "stylus": "0.54.5" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + } + } + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "nise": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", + "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", + "dev": true, + "requires": { + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "lolex": "^5.0.1", + "path-to-regexp": "^1.7.0" + }, + "dependencies": { + "@sinonjs/formatio": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", + "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^3.1.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "node-forge": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", + "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", + "dev": true + }, + "node-jose": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.1.4.tgz", + "integrity": "sha512-L31IFwL3pWWcMHxxidCY51ezqrDXMkvlT/5pLTfNw5sXmmOLJuN6ug7txzF/iuZN55cRpyOmoJrotwBQIoo5Lw==", + "dev": true, + "requires": { + "base64url": "^3.0.1", + "browserify-zlib": "^0.2.0", + "buffer": "^5.5.0", + "es6-promise": "^4.2.8", + "lodash": "^4.17.15", + "long": "^4.0.0", + "node-forge": "^0.8.5", + "process": "^0.11.10", + "react-zlib-js": "^1.0.4", + "uuid": "^3.3.3" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + } + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "semver": "^5.4.1", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node-releases": { + "version": "1.1.60", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", + "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", + "dev": true + }, + "node-rsa": { + "version": "0.2.30", + "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-0.2.30.tgz", + "integrity": "sha1-iRLiw7G2TM5sp4PKsa8oKzAK3uY=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "lodash": "3.3.0" + }, + "dependencies": { + "lodash": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.3.0.tgz", + "integrity": "sha1-ARzlLQGxTmDq7qdqy5uLpCxwWBs=", + "dev": true + } + } + }, + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "dev": true, + "requires": { + "chalk": "~0.4.0", + "underscore": "~1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "octokit": { + "version": "1.0.0-hello-world", + "resolved": "https://registry.npmjs.org/octokit/-/octokit-1.0.0-hello-world.tgz", + "integrity": "sha1-mX8irutd/iiB54xpQYxJKBqt+Y8=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + } + } + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", + "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-2.0.1.tgz", + "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=", + "dev": true, + "requires": { + "macos-release": "^1.0.0", + "win-release": "^1.0.0" + } + }, + "os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "outlayer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", + "integrity": "sha1-KYY7beEOpdrf/8rfoNcokHOH6aI=", + "dev": true, + "requires": { + "ev-emitter": "^1.0.0", + "fizzy-ui-utils": "^2.0.0", + "get-size": "^2.0.2" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pac-proxy-agent": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz", + "integrity": "sha512-cDNAN1Ehjbf5EHkNY5qnRhGPUCp6SnpyVof5fRzN800QV1Y2OkzbH9rmjZkbBRa8igof903yOnjIl6z0SlAhxA==", + "dev": true, + "requires": { + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "pac-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", + "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", + "dev": true, + "requires": { + "co": "^4.6.0", + "degenerator": "^1.0.4", + "ip": "^1.1.5", + "netmask": "^1.0.6", + "thunkify": "^2.1.2" + } + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "dev": true, + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pino": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-5.9.0.tgz", + "integrity": "sha512-6sHy38gWsZbrmYq6vk343VCThy93ZdVfmLsHDVzbl/j621SjSaxCcS/ySmxK/hRmq8jpQb3n44dNRIeqbbQw6A==", + "dev": true, + "requires": { + "fast-json-parse": "^1.0.3", + "fast-redact": "^1.4.0", + "fast-safe-stringify": "^2.0.6", + "flatstr": "^1.0.5", + "pino-std-serializers": "^2.3.0", + "pump": "^3.0.0", + "quick-format-unescaped": "^3.0.0", + "sonic-boom": "^0.6.3" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "pino-std-serializers": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz", + "integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ==", + "dev": true + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "po2json": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/po2json/-/po2json-0.4.5.tgz", + "integrity": "sha1-R7spUtoy1Yob4vJWpZjuvAt0URg=", + "dev": true, + "requires": { + "gettext-parser": "1.1.0", + "nomnom": "1.8.1" + } + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "dev": true + }, + "portscanner": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz", + "integrity": "sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI=", + "dev": true, + "requires": { + "async": "1.5.2" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.6.tgz", + "integrity": "sha512-Nq/rNjnHFcKgCDDZYO0lNsl6YWe6U7tTy+ESN+PnLxebL8uBtYX59HZqvrj7YLK5UCyll2hqDsJOo3ndzEW8Ug==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "probe-image-size": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-4.0.0.tgz", + "integrity": "sha512-nm7RvWUxps+2+jZKNLkd04mNapXNariS6G5WIEVzvAqjx7EUuKcY1Dp3e6oUK7GLwzJ+3gbSbPLFAASHFQrPcQ==", + "dev": true, + "requires": { + "any-promise": "^1.3.0", + "deepmerge": "^2.0.1", + "inherits": "^2.0.3", + "next-tick": "^1.0.0", + "request": "^2.83.0", + "stream-parser": "~0.3.1" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise.any": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/promise.any/-/promise.any-0.1.1.tgz", + "integrity": "sha1-Fg+JisPHW1y7cw/yOgyi8XQHvzo=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "proxy-agent": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz", + "integrity": "sha512-CNKuhC1jVtm8KJYFTS2ZRO71VCBx3QSA92So/e6NrY6GoJonkx3Irnk4047EsCcswczwqAekRj3s8qLRGahSKg==", + "dev": true, + "requires": { + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "pac-proxy-agent": "^2.0.1", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pug": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", + "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", + "dev": true, + "requires": { + "pug-code-gen": "^2.0.2", + "pug-filters": "^3.1.1", + "pug-lexer": "^4.1.0", + "pug-linker": "^3.0.6", + "pug-load": "^2.0.12", + "pug-parser": "^5.0.1", + "pug-runtime": "^2.0.5", + "pug-strip-comments": "^1.0.4" + } + }, + "pug-attrs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", + "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", + "dev": true, + "requires": { + "constantinople": "^3.0.1", + "js-stringify": "^1.0.1", + "pug-runtime": "^2.0.5" + } + }, + "pug-code-gen": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", + "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", + "dev": true, + "requires": { + "constantinople": "^3.1.2", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.1", + "pug-attrs": "^2.0.4", + "pug-error": "^1.3.3", + "pug-runtime": "^2.0.5", + "void-elements": "^2.0.1", + "with": "^5.0.0" + } + }, + "pug-error": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", + "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==", + "dev": true + }, + "pug-filters": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", + "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", + "dev": true, + "requires": { + "clean-css": "^4.1.11", + "constantinople": "^3.0.1", + "jstransformer": "1.0.0", + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8", + "resolve": "^1.1.6", + "uglify-js": "^2.6.1" + } + }, + "pug-lexer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", + "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", + "dev": true, + "requires": { + "character-parser": "^2.1.1", + "is-expression": "^3.0.0", + "pug-error": "^1.3.3" + } + }, + "pug-linker": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", + "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", + "dev": true, + "requires": { + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8" + } + }, + "pug-load": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", + "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "pug-walk": "^1.1.8" + } + }, + "pug-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", + "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", + "dev": true, + "requires": { + "pug-error": "^1.3.3", + "token-stream": "0.0.1" + } + }, + "pug-runtime": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", + "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==", + "dev": true + }, + "pug-strip-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", + "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", + "dev": true, + "requires": { + "pug-error": "^1.3.3" + } + }, + "pug-walk": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", + "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==", + "dev": true + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "puppeteer": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz", + "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "extract-zip": "^1.6.6", + "https-proxy-agent": "^2.2.1", + "mime": "^2.0.3", + "progress": "^2.0.1", + "proxy-from-env": "^1.0.0", + "rimraf": "^2.6.1", + "ws": "^6.1.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "quick-format-unescaped": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz", + "integrity": "sha512-dy1yjycmn9blucmJLXOfZDx1ikZJUi6E8bBZLnhPG5gBrVhHXx2xVyqqgKBubVNEXmx51dBACMHpoMQK/N/AXQ==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "react-zlib-js": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/react-zlib-js/-/react-zlib-js-1.0.5.tgz", + "integrity": "sha512-TLcPdmqhIl+ylwOwlfm1WUuI7NVvhAv3L74d1AabhjyaAbmLOROTA/Q4EQ/UMCFCOjIkVim9fT3UZOQSFk/mlA==", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "mute-stream": "0.0.5" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dev": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "registry-auth-token": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "dev": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "^1.0.1" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relaxed-json": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/relaxed-json/-/relaxed-json-1.0.1.tgz", + "integrity": "sha1-fI1KovCVcEzQIOMugJm8rhA/C9Q=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "commander": "^2.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "*" + } + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "dev": true + }, + "safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "dev": true, + "optional": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "samsam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", + "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", + "dev": true + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "secure-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", + "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "^5.0.3" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", - "dev": true - }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", - "dev": true - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", - "dev": true - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", - "dev": true - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", - "dev": true - }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "loglevel": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", - "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", - "dev": true - }, - "lolex": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", - "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", - "dev": true - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "macos-release": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz", - "integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==", - "dev": true - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - }, - "masonry-layout": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz", - "integrity": "sha512-iGtAlrpHNyxaR19CvKC3npnEcAwszXoyJiI8ARV2ePi7fmYhIud25MHK8Zx4P0LCC4d3TNO9+rFa1KoK1OEOaA==", - "dev": true, - "requires": { - "get-size": "^2.0.2", - "outlayer": "^2.1.0" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "requires": { - "mime-db": "1.44.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "dev": true, - "requires": { - "dom-walk": "^0.1.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "dev": true, - "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", - "dev": true - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "moment": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==", - "dev": true - }, - "morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "dev": true, - "requires": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "dependencies": { - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - } - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - } - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", - "dev": true, - "optional": true, - "requires": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - }, - "dependencies": { - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "dev": true, - "optional": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, - "rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", - "dev": true, - "optional": true, - "requires": { - "glob": "^6.0.1" - } - } - } - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q=", - "dev": true - }, - "nconf": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.10.0.tgz", - "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==", - "dev": true, - "requires": { - "async": "^1.4.0", - "ini": "^1.3.0", - "secure-keys": "^1.0.0", - "yargs": "^3.19.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^2.0.1", + "lazy-cache": "^0.2.3", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true, + "requires": { + "is-buffer": "^1.0.2" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "sign-addon": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-0.3.1.tgz", + "integrity": "sha512-feaoG7+8IXr9SymOEd8VTZCSlVZArWcBDZ33IIdfXlU5NWWzXdCxCjPDqAkLQplFa7RRZr1S4lSmgMPn80Ze1A==", + "dev": true, + "requires": { + "babel-polyfill": "6.16.0", + "deepcopy": "0.6.3", + "es6-error": "4.0.0", + "es6-promisify": "5.0.0", + "jsonwebtoken": "8.2.1", + "mz": "2.5.0", + "request": "2.87.0", + "source-map-support": "0.4.6", + "stream-to-promise": "2.2.0", + "when": "3.7.7" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "babel-polyfill": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", + "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", + "dev": true, + "requires": { + "babel-runtime": "^6.9.1", + "core-js": "^2.4.0", + "regenerator-runtime": "^0.9.5" + } + }, + "es6-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.0.tgz", + "integrity": "sha1-8JTHBB9mJZm7EnINoFnWucf/D0A=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "mz": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.5.0.tgz", + "integrity": "sha1-KFkCXfA9RrV7sxcXSxlkd85kzsE=", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", + "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=", + "dev": true + }, + "request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + }, + "source-map-support": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.6.tgz", + "integrity": "sha1-MlUqpktFg5KoXqs7C17mFScWeus=", + "dev": true, + "requires": { + "source-map": "^0.5.3" + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "^1.4.1" + } + } + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "sinon": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.5.0.tgz", + "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", + "dev": true, + "requires": { + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.1.0", + "lodash.get": "^4.4.2", + "lolex": "^2.2.0", + "nise": "^1.2.0", + "supports-color": "^5.1.0", + "type-detect": "^4.0.5" + } + }, + "sinon-chai": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", + "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "smart-buffer": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", + "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "snyk": { + "version": "1.110.2", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.110.2.tgz", + "integrity": "sha512-SQE4sudrscd48EoRJqy5h5S6c8YBiOw0r0Se3rfg1l6ElJGgCB9je6XEzfe+UmfES06D7ueFYepiQPxTwH4Qww==", + "dev": true, + "requires": { + "abbrev": "^1.1.1", + "ansi-escapes": "^3.1.0", + "chalk": "^2.4.1", + "configstore": "^3.1.2", + "debug": "^3.1.0", + "hasbin": "^1.2.3", + "inquirer": "^3.0.0", + "lodash": "^4.17.5", + "needle": "^2.2.4", + "opn": "^5.2.0", + "os-name": "^2.0.1", + "proxy-agent": "^2.0.0", + "proxy-from-env": "^1.0.0", + "recursive-readdir": "^2.2.2", + "semver": "^5.5.0", + "snyk-config": "2.2.0", + "snyk-docker-plugin": "1.12.3", + "snyk-go-plugin": "1.6.0", + "snyk-gradle-plugin": "2.1.1", + "snyk-module": "1.9.1", + "snyk-mvn-plugin": "2.0.0", + "snyk-nodejs-lockfile-parser": "1.7.1", + "snyk-nuget-plugin": "1.6.5", + "snyk-php-plugin": "1.5.1", + "snyk-policy": "1.13.1", + "snyk-python-plugin": "1.9.0", + "snyk-resolve": "1.0.1", + "snyk-resolve-deps": "4.0.2", + "snyk-sbt-plugin": "2.0.0", + "snyk-tree": "^1.0.0", + "snyk-try-require": "1.3.1", + "source-map-support": "^0.5.9", + "tempfile": "^2.0.0", + "then-fs": "^2.0.0", + "undefsafe": "^2.0.0", + "uuid": "^3.2.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "snyk-config": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-2.2.0.tgz", + "integrity": "sha512-mq0wbP/AgjcmRq5i5jg2akVVV3iSYUPTowZwKn7DChRLDL8ySOzWAwan+ImXiyNbrWo87FNI/15O6MpOnTxOIg==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash": "^4.17.5", + "nconf": "^0.10.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "snyk-docker-plugin": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.12.3.tgz", + "integrity": "sha512-ZbvaFCPCd0wxhqxjzU/iyf39tKlq2nvI9nPW32uZV3RGdHrkQH55BzCtBCF9d0dapxX+PKgae/4u2BKNw8hd9Q==", + "dev": true, + "requires": { + "debug": "^3", + "dockerfile-ast": "0.0.12", + "tslib": "^1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "snyk-go-plugin": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.6.0.tgz", + "integrity": "sha512-E6aYw7XAXSs2wJR3fU+vGQ1lVyjAw8PHIQYQwBwMkTHByhJIWPcu6Hy/jT5LcjJHlhYXlpOuk53HeLVK+kcXrQ==", + "dev": true, + "requires": { + "graphlib": "^2.1.1", + "tmp": "0.0.33", + "toml": "^2.3.2" + } + }, + "snyk-gradle-plugin": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-2.1.1.tgz", + "integrity": "sha512-aFeVC5y3XkJ5BxknHhtYo76as3xJbzSQlXACGZrQZGQ/w/UhNdM8VI1QB6Eq4uEzexleB/hcJwYxNmhI2CNCeA==", + "dev": true, + "requires": { + "clone-deep": "^0.3.0" + } + }, + "snyk-module": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/snyk-module/-/snyk-module-1.9.1.tgz", + "integrity": "sha512-A+CCyBSa4IKok5uEhqT+hV/35RO6APFNLqk9DRRHg7xW2/j//nPX8wTSZUPF8QeRNEk/sX+6df7M1y6PBHGSHA==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "hosted-git-info": "^2.7.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "snyk-mvn-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.0.0.tgz", + "integrity": "sha512-9jAhZhv+7YcqtoQYCYlgMoxK+dWBKlk+wkX27Ebg3vNddNop9q5jZitRXTjsXwfSUZHRt+Ptw1f8vei9kjzZVg==", + "dev": true + }, + "snyk-nodejs-lockfile-parser": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.7.1.tgz", + "integrity": "sha512-0gHELqMhzUxb/t3Tg6d6G9LTDioOXCrEMt9aetOeV8wD/ZRL5VFNjwcdrm8qILLqzDFaFjFIyMc66c0OL4zFAQ==", + "dev": true, + "requires": { + "@yarnpkg/lockfile": "^1.0.2", + "graphlib": "^2.1.5", + "lodash": "4.17.10", + "source-map-support": "^0.5.7", + "tslib": "^1.9.3", + "uuid": "^3.3.2" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "snyk-nuget-plugin": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.6.5.tgz", + "integrity": "sha512-3qIndzkxCxiaGvAwMkqChbChGdwhNePPyfi0WjhC/nJGwecqU3Fb/NeTW7lgyT+xoq/dFnzW0DgBJ4+AyNA2gA==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "jszip": "^3.1.5", + "lodash": "^4.17.10", + "xml2js": "^0.4.17" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "snyk-php-plugin": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.5.1.tgz", + "integrity": "sha512-g5QSHBsRJ2O4cNxKC4zlWwnQYiSgQ77Y6QgGmo3ihPX3VLZrc1amaZIpPsNe1jwXirnGj2rvR5Xw+jDjbzvHFw==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash": "^4.17.5", + "path": "0.12.7" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "snyk-policy": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.13.1.tgz", + "integrity": "sha512-l9evS3Yk70xyvajjg+I6Ij7fr7gxpVRMZl0J1xNpWps/IVu4DSGih3aMmXi47VJozr4A/eFyj7R1lIr2GhqJCA==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "email-validator": "^2.0.4", + "js-yaml": "^3.12.0", + "lodash.clonedeep": "^4.5.0", + "semver": "^5.6.0", + "snyk-module": "^1.9.1", + "snyk-resolve": "^1.0.1", + "snyk-try-require": "^1.3.1", + "then-fs": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "snyk-python-plugin": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.9.0.tgz", + "integrity": "sha512-zlyOHoCpmyVym9AwkboeepzEGrY3gHsM7eWP/nJ85TgCnQO5H5orKm3RL57PNbWRY+BnDmoQQ+udQgjym2+3sg==", + "dev": true, + "requires": { + "tmp": "0.0.33" + } + }, + "snyk-resolve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/snyk-resolve/-/snyk-resolve-1.0.1.tgz", + "integrity": "sha512-7+i+LLhtBo1Pkth01xv+RYJU8a67zmJ8WFFPvSxyCjdlKIcsps4hPQFebhz+0gC5rMemlaeIV6cqwqUf9PEDpw==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "then-fs": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "snyk-resolve-deps": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/snyk-resolve-deps/-/snyk-resolve-deps-4.0.2.tgz", + "integrity": "sha512-nlw62wiWhGOTw3BD3jVIwrUkRR4iNxEkkO4Y/PWs8BsUWseGu1H6QgLesFXJb3qx7ANJ5UbUCJMgV+eL0Lf9cA==", + "dev": true, + "requires": { + "ansicolors": "^0.3.2", + "debug": "^3.2.5", + "lodash.assign": "^4.2.0", + "lodash.assignin": "^4.2.0", + "lodash.clone": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lru-cache": "^4.0.0", + "semver": "^5.5.1", + "snyk-module": "^1.6.0", + "snyk-resolve": "^1.0.0", + "snyk-tree": "^1.0.0", + "snyk-try-require": "^1.1.1", + "then-fs": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "snyk-sbt-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.0.0.tgz", + "integrity": "sha512-bOUqsQ1Lysnwfnvf4QQIBfC0M0ZVuhlshTKd7pNwgAJ41YEPJNrPEpzOePl/HfKtwilEEwHh5YHvjYGegEKx0A==", + "dev": true + }, + "snyk-tree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/snyk-tree/-/snyk-tree-1.0.0.tgz", + "integrity": "sha1-D7cxdtvzLngvGRAClBYESPkRHMg=", + "dev": true, + "requires": { + "archy": "^1.0.0" + } + }, + "snyk-try-require": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/snyk-try-require/-/snyk-try-require-1.3.1.tgz", + "integrity": "sha1-bgJvkuZK9/zM6h7lPVJIQeQYohI=", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.clonedeep": "^4.3.0", + "lru-cache": "^4.0.0", + "then-fs": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "socks": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", + "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", + "dev": true, + "requires": { + "ip": "^1.1.4", + "smart-buffer": "^1.0.13" + } + }, + "socks-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz", + "integrity": "sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==", + "dev": true, + "requires": { + "agent-base": "^4.1.0", + "socks": "^1.1.10" + } + }, + "sonic-boom": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.6.3.tgz", + "integrity": "sha512-TMhj6kDJk9LLzCTTL8+HPCfFn4MwkE4P6k2Up89Rz949+DSRw90V62upRKC99rJEOmu4E9ljH5Otu2JSRmx+bg==", + "dev": true, + "requires": { + "flatstr": "^1.0.8" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", + "dev": true, + "requires": { + "concat-stream": "^1.4.7", + "os-shim": "^0.1.2" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "dev": true, + "requires": { + "debug": "2" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "stream-to-array": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", + "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=", + "dev": true, + "requires": { + "any-promise": "^1.1.0" + } + }, + "stream-to-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-2.2.0.tgz", + "integrity": "sha1-se2y4cjLESidG1A8CNPyrvUeZQ8=", + "dev": true, + "requires": { + "any-promise": "~1.3.0", + "end-of-stream": "~1.1.0", + "stream-to-array": "~2.3.0" + }, + "dependencies": { + "end-of-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", + "integrity": "sha1-6TUyWLqpEIll78QcsO+K3i88+wc=", + "dev": true, + "requires": { + "once": "~1.3.0" + } + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "requires": { + "wrappy": "1" + } + } + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.matchall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-2.0.0.tgz", + "integrity": "sha512-WoZ+B2ypng1dp4iFLF2kmZlwwlE19gmjgKuhL1FJfDgCREWb3ye3SDVHSzLH6bxfnvYmkCxbzkmWcQZHA4P//Q==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.10.0", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "regexp.prototype.flags": "^1.2.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "dev": true, + "requires": { + "is-utf8": "^0.2.1" + } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "strip-bom-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz", + "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", + "dev": true, + "requires": { + "first-chunk-stream": "^2.0.0", + "strip-bom-buf": "^1.0.0" + } }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } + "stylus": { + "version": "0.54.8", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", + "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", + "dev": true, + "requires": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.6", + "mkdirp": "~1.0.4", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.3.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "requires": { + "css": "^2.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "dev": true + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true + "table": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "dev": true, + "requires": { + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "dev": true, - "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - } - } - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", - "dev": true, - "optional": true - }, - "needle": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", - "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==", - "dev": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - } - } - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "netmask": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "nib": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", - "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", - "dev": true, - "requires": { - "stylus": "0.54.5" - }, - "dependencies": { - "glob": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } + "tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "dev": true, + "requires": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + } }, - "stylus": { - "version": "0.54.5", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", - "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", - "dev": true, - "requires": { - "css-parse": "1.7.x", - "debug": "*", - "glob": "7.0.x", - "mkdirp": "0.5.x", - "sax": "0.5.x", - "source-map": "0.1.x" - } - } - } - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "nise": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", - "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", - "dev": true, - "requires": { - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "lolex": "^5.0.1", - "path-to-regexp": "^1.7.0" - }, - "dependencies": { - "@sinonjs/formatio": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", - "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" - } + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "^0.7.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } }, - "lolex": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", - "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } + "terser-webpack-plugin": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^3.1.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } }, - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - } - } - }, - "node-forge": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", - "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", - "dev": true - }, - "node-jose": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.1.4.tgz", - "integrity": "sha512-L31IFwL3pWWcMHxxidCY51ezqrDXMkvlT/5pLTfNw5sXmmOLJuN6ug7txzF/iuZN55cRpyOmoJrotwBQIoo5Lw==", - "dev": true, - "requires": { - "base64url": "^3.0.1", - "browserify-zlib": "^0.2.0", - "buffer": "^5.5.0", - "es6-promise": "^4.2.8", - "lodash": "^4.17.15", - "long": "^4.0.0", - "node-forge": "^0.8.5", - "process": "^0.11.10", - "react-zlib-js": "^1.0.4", - "uuid": "^3.3.3" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - } - } - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "then-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/then-fs/-/then-fs-2.0.0.tgz", + "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", + "dev": true, + "requires": { + "promise": ">=3.2 <8" + } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - } - } - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, - "node-notifier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", - "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", - "dev": true, - "requires": { - "growly": "^1.3.0", - "semver": "^5.4.1", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } - }, - "node-releases": { - "version": "1.1.60", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", - "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", - "dev": true - }, - "node-rsa": { - "version": "0.2.30", - "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-0.2.30.tgz", - "integrity": "sha1-iRLiw7G2TM5sp4PKsa8oKzAK3uY=", - "dev": true, - "requires": { - "asn1": "0.2.3", - "lodash": "3.3.0" - }, - "dependencies": { - "lodash": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.3.0.tgz", - "integrity": "sha1-ARzlLQGxTmDq7qdqy5uLpCxwWBs=", - "dev": true - } - } - }, - "nomnom": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", - "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", - "dev": true, - "requires": { - "chalk": "~0.4.0", - "underscore": "~1.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, - "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" - } + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - } - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "thunkify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", + "dev": true }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true - }, - "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - } - } - }, - "opn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", - "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", - "dev": true, - "requires": { - "execa": "^0.10.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "os-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-2.0.1.tgz", - "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=", - "dev": true, - "requires": { - "macos-release": "^1.0.0", - "win-release": "^1.0.0" - } - }, - "os-shim": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", - "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "outlayer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", - "integrity": "sha1-KYY7beEOpdrf/8rfoNcokHOH6aI=", - "dev": true, - "requires": { - "ev-emitter": "^1.0.0", - "fizzy-ui-utils": "^2.0.0", - "get-size": "^2.0.2" - } - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pac-proxy-agent": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz", - "integrity": "sha512-cDNAN1Ehjbf5EHkNY5qnRhGPUCp6SnpyVof5fRzN800QV1Y2OkzbH9rmjZkbBRa8igof903yOnjIl6z0SlAhxA==", - "dev": true, - "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "get-uri": "^2.0.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "pac-resolver": "^3.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "pac-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", - "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", - "dev": true, - "requires": { - "co": "^4.6.0", - "degenerator": "^1.0.4", - "ip": "^1.1.5", - "netmask": "^1.0.6", - "thunkify": "^2.1.2" - } - }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", - "dev": true, - "requires": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true - }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "optional": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pino": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-5.9.0.tgz", - "integrity": "sha512-6sHy38gWsZbrmYq6vk343VCThy93ZdVfmLsHDVzbl/j621SjSaxCcS/ySmxK/hRmq8jpQb3n44dNRIeqbbQw6A==", - "dev": true, - "requires": { - "fast-json-parse": "^1.0.3", - "fast-redact": "^1.4.0", - "fast-safe-stringify": "^2.0.6", - "flatstr": "^1.0.5", - "pino-std-serializers": "^2.3.0", - "pump": "^3.0.0", - "quick-format-unescaped": "^3.0.0", - "sonic-boom": "^0.6.3" - }, - "dependencies": { - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "pino-std-serializers": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz", - "integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ==", - "dev": true - }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, - "po2json": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/po2json/-/po2json-0.4.5.tgz", - "integrity": "sha1-R7spUtoy1Yob4vJWpZjuvAt0URg=", - "dev": true, - "requires": { - "gettext-parser": "1.1.0", - "nomnom": "1.8.1" - } - }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "dev": true - }, - "portscanner": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz", - "integrity": "sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI=", - "dev": true, - "requires": { - "async": "1.5.2" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.6.tgz", - "integrity": "sha512-Nq/rNjnHFcKgCDDZYO0lNsl6YWe6U7tTy+ESN+PnLxebL8uBtYX59HZqvrj7YLK5UCyll2hqDsJOo3ndzEW8Ug==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "probe-image-size": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-4.0.0.tgz", - "integrity": "sha512-nm7RvWUxps+2+jZKNLkd04mNapXNariS6G5WIEVzvAqjx7EUuKcY1Dp3e6oUK7GLwzJ+3gbSbPLFAASHFQrPcQ==", - "dev": true, - "requires": { - "any-promise": "^1.3.0", - "deepmerge": "^2.0.1", - "inherits": "^2.0.3", - "next-tick": "^1.0.0", - "request": "^2.83.0", - "stream-parser": "~0.3.1" - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "requires": { - "asap": "~2.0.3" - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "promise.any": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/promise.any/-/promise.any-0.1.1.tgz", - "integrity": "sha1-Fg+JisPHW1y7cw/yOgyi8XQHvzo=", - "dev": true - }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "proxy-agent": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz", - "integrity": "sha512-CNKuhC1jVtm8KJYFTS2ZRO71VCBx3QSA92So/e6NrY6GoJonkx3Irnk4047EsCcswczwqAekRj3s8qLRGahSKg==", - "dev": true, - "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "lru-cache": "^4.1.2", - "pac-proxy-agent": "^2.0.1", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "pug": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", - "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", - "dev": true, - "requires": { - "pug-code-gen": "^2.0.2", - "pug-filters": "^3.1.1", - "pug-lexer": "^4.1.0", - "pug-linker": "^3.0.6", - "pug-load": "^2.0.12", - "pug-parser": "^5.0.1", - "pug-runtime": "^2.0.5", - "pug-strip-comments": "^1.0.4" - } - }, - "pug-attrs": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", - "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", - "dev": true, - "requires": { - "constantinople": "^3.0.1", - "js-stringify": "^1.0.1", - "pug-runtime": "^2.0.5" - } - }, - "pug-code-gen": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", - "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", - "dev": true, - "requires": { - "constantinople": "^3.1.2", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.1", - "pug-attrs": "^2.0.4", - "pug-error": "^1.3.3", - "pug-runtime": "^2.0.5", - "void-elements": "^2.0.1", - "with": "^5.0.0" - } - }, - "pug-error": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", - "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==", - "dev": true - }, - "pug-filters": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", - "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", - "dev": true, - "requires": { - "clean-css": "^4.1.11", - "constantinople": "^3.0.1", - "jstransformer": "1.0.0", - "pug-error": "^1.3.3", - "pug-walk": "^1.1.8", - "resolve": "^1.1.6", - "uglify-js": "^2.6.1" - } - }, - "pug-lexer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", - "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", - "dev": true, - "requires": { - "character-parser": "^2.1.1", - "is-expression": "^3.0.0", - "pug-error": "^1.3.3" - } - }, - "pug-linker": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", - "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", - "dev": true, - "requires": { - "pug-error": "^1.3.3", - "pug-walk": "^1.1.8" - } - }, - "pug-load": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", - "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "pug-walk": "^1.1.8" - } - }, - "pug-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", - "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", - "dev": true, - "requires": { - "pug-error": "^1.3.3", - "token-stream": "0.0.1" - } - }, - "pug-runtime": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", - "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==", - "dev": true - }, - "pug-strip-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", - "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", - "dev": true, - "requires": { - "pug-error": "^1.3.3" - } - }, - "pug-walk": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", - "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==", - "dev": true - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "puppeteer": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz", - "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "extract-zip": "^1.6.6", - "https-proxy-agent": "^2.2.1", - "mime": "^2.0.3", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^2.6.1", - "ws": "^6.1.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "tiny-lr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", + "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", + "dev": true, + "requires": { + "body": "^5.1.0", + "debug": "^3.1.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } }, - "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", - "dev": true + "tippy.js": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-2.6.0.tgz", + "integrity": "sha512-hBcy6UXK3epiFwpkycy7Pn1SSLofUmawpPnlYg5ginbXMc/3EX2ivjzHfjvr/WPEpUg71/7ssiovhxDtCWvL2A==", + "dev": true, + "requires": { + "popper.js": "^1.14.3" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "quick-format-unescaped": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz", - "integrity": "sha512-dy1yjycmn9blucmJLXOfZDx1ikZJUi6E8bBZLnhPG5gBrVhHXx2xVyqqgKBubVNEXmx51dBACMHpoMQK/N/AXQ==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "react-zlib-js": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/react-zlib-js/-/react-zlib-js-1.0.5.tgz", - "integrity": "sha512-TLcPdmqhIl+ylwOwlfm1WUuI7NVvhAv3L74d1AabhjyaAbmLOROTA/Q4EQ/UMCFCOjIkVim9fT3UZOQSFk/mlA==", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "mute-stream": "0.0.5" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "dev": true, - "requires": { - "minimatch": "3.0.4" - } - }, - "regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", - "dev": true - }, - "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "^1.0.1" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "relaxed-json": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/relaxed-json/-/relaxed-json-1.0.1.tgz", - "integrity": "sha1-fI1KovCVcEzQIOMugJm8rhA/C9Q=", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "commander": "^2.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - } - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "dev": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - } - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, - "requires": { - "rx-lite": "*" - } - }, - "rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "dev": true, - "requires": { - "symbol-observable": "1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-json-parse": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", - "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", - "dev": true - }, - "safe-json-stringify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", - "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", - "dev": true, - "optional": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "samsam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", - "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", - "dev": true - }, - "sax": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", - "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", - "dev": true - }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } - }, - "secure-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", - "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o=", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "^5.0.3" - } - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serialize-javascript": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", - "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", - "dev": true - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", - "dev": true, - "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^2.0.1", - "lazy-cache": "^0.2.3", - "mixin-object": "^2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", - "dev": true, - "requires": { - "is-buffer": "^1.0.2" - } + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", - "dev": true - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } - }, - "shelljs": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", - "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "sign-addon": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-0.3.1.tgz", - "integrity": "sha512-feaoG7+8IXr9SymOEd8VTZCSlVZArWcBDZ33IIdfXlU5NWWzXdCxCjPDqAkLQplFa7RRZr1S4lSmgMPn80Ze1A==", - "dev": true, - "requires": { - "babel-polyfill": "6.16.0", - "deepcopy": "0.6.3", - "es6-error": "4.0.0", - "es6-promisify": "5.0.0", - "jsonwebtoken": "8.2.1", - "mz": "2.5.0", - "request": "2.87.0", - "source-map-support": "0.4.6", - "stream-to-promise": "2.2.0", - "when": "3.7.7" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, - "babel-polyfill": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", - "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", - "dev": true, - "requires": { - "babel-runtime": "^6.9.1", - "core-js": "^2.4.0", - "regenerator-runtime": "^0.9.5" - } + "token-stream": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", + "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", + "dev": true }, - "es6-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.0.tgz", - "integrity": "sha1-8JTHBB9mJZm7EnINoFnWucf/D0A=", - "dev": true + "toml": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.6.tgz", + "integrity": "sha512-gVweAectJU3ebq//Ferr2JUY4WKSDe5N+z0FvjDncLGyHmIDoxgY/2Ie4qfEIDm4IS7OA6Rmdm7pdEEdMcV/xQ==", + "dev": true }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true + "tosource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", + "integrity": "sha1-QtiN0RZhi88A1hBt1URvNCeQL/E=", + "dev": true }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - } + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } }, - "mz": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.5.0.tgz", - "integrity": "sha1-KFkCXfA9RrV7sxcXSxlkd85kzsE=", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } + "traverse": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.4.6.tgz", + "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=", + "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true }, - "regenerator-runtime": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", - "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=", - "dev": true + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } }, - "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - } + "tv4": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=", + "dev": true }, - "source-map-support": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.6.tgz", - "integrity": "sha1-MlUqpktFg5KoXqs7C17mFScWeus=", - "dev": true, - "requires": { - "source-map": "^0.5.3" - } + "tv4-formats": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tv4-formats/-/tv4-formats-3.0.3.tgz", + "integrity": "sha1-a3l43S3IqjnQrCWU3dtvbAy/2SE=", + "dev": true, + "requires": { + "moment": "^2.10.6", + "validator": "^8.2.0" + } }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "dev": true, - "requires": { - "punycode": "^1.4.1" - } - } - } - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "sinon": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.5.0.tgz", - "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", - "dev": true, - "requires": { - "@sinonjs/formatio": "^2.0.0", - "diff": "^3.1.0", - "lodash.get": "^4.4.2", - "lolex": "^2.2.0", - "nise": "^1.2.0", - "supports-color": "^5.1.0", - "type-detect": "^4.0.5" - } - }, - "sinon-chai": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", - "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0" - } - }, - "smart-buffer": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", - "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "snyk": { - "version": "1.110.2", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.110.2.tgz", - "integrity": "sha512-SQE4sudrscd48EoRJqy5h5S6c8YBiOw0r0Se3rfg1l6ElJGgCB9je6XEzfe+UmfES06D7ueFYepiQPxTwH4Qww==", - "dev": true, - "requires": { - "abbrev": "^1.1.1", - "ansi-escapes": "^3.1.0", - "chalk": "^2.4.1", - "configstore": "^3.1.2", - "debug": "^3.1.0", - "hasbin": "^1.2.3", - "inquirer": "^3.0.0", - "lodash": "^4.17.5", - "needle": "^2.2.4", - "opn": "^5.2.0", - "os-name": "^2.0.1", - "proxy-agent": "^2.0.0", - "proxy-from-env": "^1.0.0", - "recursive-readdir": "^2.2.2", - "semver": "^5.5.0", - "snyk-config": "2.2.0", - "snyk-docker-plugin": "1.12.3", - "snyk-go-plugin": "1.6.0", - "snyk-gradle-plugin": "2.1.1", - "snyk-module": "1.9.1", - "snyk-mvn-plugin": "2.0.0", - "snyk-nodejs-lockfile-parser": "1.7.1", - "snyk-nuget-plugin": "1.6.5", - "snyk-php-plugin": "1.5.1", - "snyk-policy": "1.13.1", - "snyk-python-plugin": "1.9.0", - "snyk-resolve": "1.0.1", - "snyk-resolve-deps": "4.0.2", - "snyk-sbt-plugin": "2.0.0", - "snyk-tree": "^1.0.0", - "snyk-try-require": "1.3.1", - "source-map-support": "^0.5.9", - "tempfile": "^2.0.0", - "then-fs": "^2.0.0", - "undefsafe": "^2.0.0", - "uuid": "^3.2.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - } + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + } }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true + "uglifyjs-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + } + } + } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "snyk-config": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-2.2.0.tgz", - "integrity": "sha512-mq0wbP/AgjcmRq5i5jg2akVVV3iSYUPTowZwKn7DChRLDL8ySOzWAwan+ImXiyNbrWo87FNI/15O6MpOnTxOIg==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "lodash": "^4.17.5", - "nconf": "^0.10.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "snyk-docker-plugin": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.12.3.tgz", - "integrity": "sha512-ZbvaFCPCd0wxhqxjzU/iyf39tKlq2nvI9nPW32uZV3RGdHrkQH55BzCtBCF9d0dapxX+PKgae/4u2BKNw8hd9Q==", - "dev": true, - "requires": { - "debug": "^3", - "dockerfile-ast": "0.0.12", - "tslib": "^1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "dev": true, + "requires": { + "debug": "^2.2.0" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "snyk-go-plugin": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.6.0.tgz", - "integrity": "sha512-E6aYw7XAXSs2wJR3fU+vGQ1lVyjAw8PHIQYQwBwMkTHByhJIWPcu6Hy/jT5LcjJHlhYXlpOuk53HeLVK+kcXrQ==", - "dev": true, - "requires": { - "graphlib": "^2.1.1", - "tmp": "0.0.33", - "toml": "^2.3.2" - } - }, - "snyk-gradle-plugin": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-2.1.1.tgz", - "integrity": "sha512-aFeVC5y3XkJ5BxknHhtYo76as3xJbzSQlXACGZrQZGQ/w/UhNdM8VI1QB6Eq4uEzexleB/hcJwYxNmhI2CNCeA==", - "dev": true, - "requires": { - "clone-deep": "^0.3.0" - } - }, - "snyk-module": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/snyk-module/-/snyk-module-1.9.1.tgz", - "integrity": "sha512-A+CCyBSa4IKok5uEhqT+hV/35RO6APFNLqk9DRRHg7xW2/j//nPX8wTSZUPF8QeRNEk/sX+6df7M1y6PBHGSHA==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "hosted-git-info": "^2.7.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "snyk-mvn-plugin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.0.0.tgz", - "integrity": "sha512-9jAhZhv+7YcqtoQYCYlgMoxK+dWBKlk+wkX27Ebg3vNddNop9q5jZitRXTjsXwfSUZHRt+Ptw1f8vei9kjzZVg==", - "dev": true - }, - "snyk-nodejs-lockfile-parser": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.7.1.tgz", - "integrity": "sha512-0gHELqMhzUxb/t3Tg6d6G9LTDioOXCrEMt9aetOeV8wD/ZRL5VFNjwcdrm8qILLqzDFaFjFIyMc66c0OL4zFAQ==", - "dev": true, - "requires": { - "@yarnpkg/lockfile": "^1.0.2", - "graphlib": "^2.1.5", - "lodash": "4.17.10", - "source-map-support": "^0.5.7", - "tslib": "^1.9.3", - "uuid": "^3.3.2" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "snyk-nuget-plugin": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.6.5.tgz", - "integrity": "sha512-3qIndzkxCxiaGvAwMkqChbChGdwhNePPyfi0WjhC/nJGwecqU3Fb/NeTW7lgyT+xoq/dFnzW0DgBJ4+AyNA2gA==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "jszip": "^3.1.5", - "lodash": "^4.17.10", - "xml2js": "^0.4.17" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "dev": true, + "requires": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "snyk-php-plugin": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.5.1.tgz", - "integrity": "sha512-g5QSHBsRJ2O4cNxKC4zlWwnQYiSgQ77Y6QgGmo3ihPX3VLZrc1amaZIpPsNe1jwXirnGj2rvR5Xw+jDjbzvHFw==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "lodash": "^4.17.5", - "path": "0.12.7" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "snyk-policy": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.13.1.tgz", - "integrity": "sha512-l9evS3Yk70xyvajjg+I6Ij7fr7gxpVRMZl0J1xNpWps/IVu4DSGih3aMmXi47VJozr4A/eFyj7R1lIr2GhqJCA==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "email-validator": "^2.0.4", - "js-yaml": "^3.12.0", - "lodash.clonedeep": "^4.5.0", - "semver": "^5.6.0", - "snyk-module": "^1.9.1", - "snyk-resolve": "^1.0.1", - "snyk-try-require": "^1.3.1", - "then-fs": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "snyk-python-plugin": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.9.0.tgz", - "integrity": "sha512-zlyOHoCpmyVym9AwkboeepzEGrY3gHsM7eWP/nJ85TgCnQO5H5orKm3RL57PNbWRY+BnDmoQQ+udQgjym2+3sg==", - "dev": true, - "requires": { - "tmp": "0.0.33" - } - }, - "snyk-resolve": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/snyk-resolve/-/snyk-resolve-1.0.1.tgz", - "integrity": "sha512-7+i+LLhtBo1Pkth01xv+RYJU8a67zmJ8WFFPvSxyCjdlKIcsps4hPQFebhz+0gC5rMemlaeIV6cqwqUf9PEDpw==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "then-fs": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "snyk-resolve-deps": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/snyk-resolve-deps/-/snyk-resolve-deps-4.0.2.tgz", - "integrity": "sha512-nlw62wiWhGOTw3BD3jVIwrUkRR4iNxEkkO4Y/PWs8BsUWseGu1H6QgLesFXJb3qx7ANJ5UbUCJMgV+eL0Lf9cA==", - "dev": true, - "requires": { - "ansicolors": "^0.3.2", - "debug": "^3.2.5", - "lodash.assign": "^4.2.0", - "lodash.assignin": "^4.2.0", - "lodash.clone": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lru-cache": "^4.0.0", - "semver": "^5.5.1", - "snyk-module": "^1.6.0", - "snyk-resolve": "^1.0.0", - "snyk-tree": "^1.0.0", - "snyk-try-require": "^1.1.1", - "then-fs": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "snyk-sbt-plugin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.0.0.tgz", - "integrity": "sha512-bOUqsQ1Lysnwfnvf4QQIBfC0M0ZVuhlshTKd7pNwgAJ41YEPJNrPEpzOePl/HfKtwilEEwHh5YHvjYGegEKx0A==", - "dev": true - }, - "snyk-tree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/snyk-tree/-/snyk-tree-1.0.0.tgz", - "integrity": "sha1-D7cxdtvzLngvGRAClBYESPkRHMg=", - "dev": true, - "requires": { - "archy": "^1.0.0" - } - }, - "snyk-try-require": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/snyk-try-require/-/snyk-try-require-1.3.1.tgz", - "integrity": "sha1-bgJvkuZK9/zM6h7lPVJIQeQYohI=", - "dev": true, - "requires": { - "debug": "^3.1.0", - "lodash.clonedeep": "^4.3.0", - "lru-cache": "^4.0.0", - "then-fs": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "socks": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", - "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", - "dev": true, - "requires": { - "ip": "^1.1.4", - "smart-buffer": "^1.0.13" - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz", - "integrity": "sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==", - "dev": true, - "requires": { - "agent-base": "^4.1.0", - "socks": "^1.1.10" - } - }, - "sonic-boom": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.6.3.tgz", - "integrity": "sha512-TMhj6kDJk9LLzCTTL8+HPCfFn4MwkE4P6k2Up89Rz949+DSRw90V62upRKC99rJEOmu4E9ljH5Otu2JSRmx+bg==", - "dev": true, - "requires": { - "flatstr": "^1.0.8" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spawn-sync": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", - "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", - "dev": true, - "requires": { - "concat-stream": "^1.4.7", - "os-shim": "^0.1.2" - } - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true, - "requires": { - "through": "2" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.1" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", - "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", - "dev": true, - "requires": { - "debug": "2" - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "stream-to-array": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", - "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=", - "dev": true, - "requires": { - "any-promise": "^1.1.0" - } - }, - "stream-to-promise": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-2.2.0.tgz", - "integrity": "sha1-se2y4cjLESidG1A8CNPyrvUeZQ8=", - "dev": true, - "requires": { - "any-promise": "~1.3.0", - "end-of-stream": "~1.1.0", - "stream-to-array": "~2.3.0" - }, - "dependencies": { - "end-of-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", - "integrity": "sha1-6TUyWLqpEIll78QcsO+K3i88+wc=", - "dev": true, - "requires": { - "once": "~1.3.0" - } + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } }, - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "requires": { - "wrappy": "1" - } - } - } - }, - "string-template": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string.prototype.matchall": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-2.0.0.tgz", - "integrity": "sha512-WoZ+B2ypng1dp4iFLF2kmZlwwlE19gmjgKuhL1FJfDgCREWb3ye3SDVHSzLH6bxfnvYmkCxbzkmWcQZHA4P//Q==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.10.0", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "regexp.prototype.flags": "^1.2.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-bom-buf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", - "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", - "dev": true, - "requires": { - "is-utf8": "^0.2.1" - } - }, - "strip-bom-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz", - "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", - "dev": true, - "requires": { - "first-chunk-stream": "^2.0.0", - "strip-bom-buf": "^1.0.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "stylus": { - "version": "0.54.8", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", - "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", - "dev": true, - "requires": { - "css-parse": "~2.0.0", - "debug": "~3.1.0", - "glob": "^7.1.6", - "mkdirp": "~1.0.4", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.3.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "css-parse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", - "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", - "dev": true, - "requires": { - "css": "^2.0.0" - } + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" + } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true - }, - "table": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", - "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", - "dev": true, - "requires": { - "ajv": "^6.0.1", - "ajv-keywords": "^3.0.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "dev": true, - "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - } - }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", - "dev": true - }, - "tempfile": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", - "dev": true, - "requires": { - "temp-dir": "^1.0.0", - "uuid": "^3.0.1" - } - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "update-notifier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", + "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "dev": true, + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } - } - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", - "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", - "dev": true, - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^3.1.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "dependencies": { - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, - "serialize-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", - "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "then-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/then-fs/-/then-fs-2.0.0.tgz", - "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", - "dev": true, - "requires": { - "promise": ">=3.2 <8" - } - }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "dev": true, - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "thunkify": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", - "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", - "dev": true - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "tiny-lr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", - "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", - "dev": true, - "requires": { - "body": "^5.1.0", - "debug": "^3.1.0", - "faye-websocket": "~0.10.0", - "livereload-js": "^2.3.0", - "object-assign": "^4.1.0", - "qs": "^6.4.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "validator": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", + "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", + "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "tippy.js": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-2.6.0.tgz", - "integrity": "sha512-hBcy6UXK3epiFwpkycy7Pn1SSLofUmawpPnlYg5ginbXMc/3EX2ivjzHfjvr/WPEpUg71/7ssiovhxDtCWvL2A==", - "dev": true, - "requires": { - "popper.js": "^1.14.3" - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "token-stream": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", - "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", - "dev": true - }, - "toml": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.6.tgz", - "integrity": "sha512-gVweAectJU3ebq//Ferr2JUY4WKSDe5N+z0FvjDncLGyHmIDoxgY/2Ie4qfEIDm4IS7OA6Rmdm7pdEEdMcV/xQ==", - "dev": true - }, - "tosource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", - "integrity": "sha1-QtiN0RZhi88A1hBt1URvNCeQL/E=", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "traverse": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.4.6.tgz", - "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tv4": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", - "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=", - "dev": true - }, - "tv4-formats": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tv4-formats/-/tv4-formats-3.0.3.tgz", - "integrity": "sha1-a3l43S3IqjnQrCWU3dtvbAy/2SE=", - "dev": true, - "requires": { - "moment": "^2.10.6", - "validator": "^8.2.0" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", - "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", - "dev": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - }, - "dependencies": { - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } + "vscode-languageserver-types": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==", + "dev": true }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } + "walkdir": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "dev": true }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } + "watchpack": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } + "web-ext": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-2.9.3.tgz", + "integrity": "sha512-aZnlxuYOMUUBS5C8NBhhAj7T0ouJexlW5Cx5ObtOheoguG3fqXUl+KTY19L1Am/bJoyHC8otGTgew9Z0WHeTtg==", + "dev": true, + "requires": { + "@cliqz-oss/firefox-client": "0.3.1", + "@cliqz-oss/node-firefox-connect": "1.2.1", + "adbkit": "2.11.0", + "addons-linter": "1.4.1", + "babel-polyfill": "6.26.0", + "babel-runtime": "6.26.0", + "bunyan": "1.8.12", + "camelcase": "4.1.0", + "debounce": "1.1.0", + "decamelize": "2.0.0", + "es6-error": "4.1.1", + "es6-promisify": "5.0.0", + "event-to-promise": "0.8.0", + "firefox-profile": "1.2.0", + "fx-runner": "1.0.9", + "git-rev-sync": "1.9.1", + "mkdirp": "0.5.1", + "multimatch": "2.1.0", + "mz": "2.7.0", + "node-notifier": "5.2.1", + "opn": "5.3.0", + "parse-json": "4.0.0", + "regenerator-runtime": "0.11.1", + "require-uncached": "1.0.3", + "sign-addon": "0.3.1", + "source-map-support": "0.5.3", + "stream-to-promise": "2.2.0", + "strip-json-comments": "2.0.1", + "tmp": "0.0.33", + "update-notifier": "2.3.0", + "watchpack": "1.5.0", + "yargs": "6.6.0", + "zip-dir": "1.0.2" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", + "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", + "dev": true, + "requires": { + "source-map": "^0.6.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.2.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + } + } }, - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - } - } - } - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "dev": true, - "requires": { - "debug": "^2.2.0" - } - }, - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - }, - "underscore.string": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", - "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", - "dev": true, - "requires": { - "sprintf-js": "^1.0.3", - "util-deprecate": "^1.0.2" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } + "webpack": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz", + "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", + "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "watchpack": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + } + } } - } }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true - }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true - }, - "update-notifier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", - "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", - "dev": true, - "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "^1.0.1" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0" - } - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validator": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", - "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "vscode-languageserver-types": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", - "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==", - "dev": true - }, - "walkdir": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", - "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", - "dev": true - }, - "watchpack": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", - "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", - "dev": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", - "dev": true, - "optional": true, - "requires": { - "chokidar": "^2.1.8" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "web-ext": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-2.9.3.tgz", - "integrity": "sha512-aZnlxuYOMUUBS5C8NBhhAj7T0ouJexlW5Cx5ObtOheoguG3fqXUl+KTY19L1Am/bJoyHC8otGTgew9Z0WHeTtg==", - "dev": true, - "requires": { - "@cliqz-oss/firefox-client": "0.3.1", - "@cliqz-oss/node-firefox-connect": "1.2.1", - "adbkit": "2.11.0", - "addons-linter": "1.4.1", - "babel-polyfill": "6.26.0", - "babel-runtime": "6.26.0", - "bunyan": "1.8.12", - "camelcase": "4.1.0", - "debounce": "1.1.0", - "decamelize": "2.0.0", - "es6-error": "4.1.1", - "es6-promisify": "5.0.0", - "event-to-promise": "0.8.0", - "firefox-profile": "1.2.0", - "fx-runner": "1.0.9", - "git-rev-sync": "1.9.1", - "mkdirp": "0.5.1", - "multimatch": "2.1.0", - "mz": "2.7.0", - "node-notifier": "5.2.1", - "opn": "5.3.0", - "parse-json": "4.0.0", - "regenerator-runtime": "0.11.1", - "require-uncached": "1.0.3", - "sign-addon": "0.3.1", - "source-map-support": "0.5.3", - "stream-to-promise": "2.2.0", - "strip-json-comments": "2.0.1", - "tmp": "0.0.33", - "update-notifier": "2.3.0", - "watchpack": "1.5.0", - "yargs": "6.6.0", - "zip-dir": "1.0.2" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } }, - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "requires": { - "xregexp": "4.0.0" - } + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } + "when": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz", + "integrity": "sha1-q6A/w7tzbWyIsJHQE9io5ZDYRxg=", + "dev": true }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, - "opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "dev": true, + "requires": { + "string-width": "^2.1.1" + } }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } + "win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", + "dev": true, + "requires": { + "semver": "^5.0.1" + } }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "winreg": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz", + "integrity": "sha1-BxBVVLoanQiXklHRKUdb/64wBrc=", + "dev": true }, - "source-map-support": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", - "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", - "dev": true, - "requires": { - "source-map": "^0.6.0" - } + "with": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", + "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", + "dev": true, + "requires": { + "acorn": "^3.1.0", + "acorn-globals": "^3.0.0" + } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true }, - "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", - "dev": true + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^4.2.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - } - } + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - } - } - } - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "webpack": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz", - "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "optional": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true, - "optional": true + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "optional": true, - "requires": { - "fill-range": "^7.0.1" - } + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true }, - "chokidar": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", - "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" - } + "xhr-mock": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/xhr-mock/-/xhr-mock-2.5.1.tgz", + "integrity": "sha512-UKOjItqjFgPUwQGPmRAzNBn8eTfIhcGjBVGvKYAWxUQPQsXNGD6KEckGTiHwyaAUp9C9igQlnN1Mp79KWCg7CQ==", + "dev": true, + "requires": { + "global": "^4.3.0", + "url": "^0.11.0" + } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "optional": true, - "requires": { - "to-regex-range": "^5.0.1" - } + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^4.0.1" - } + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^2.0.0" - } + "xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", + "dev": true }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.1" - } + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "optional": true + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true }, - "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", - "dev": true, - "optional": true, - "requires": { - "picomatch": "^2.2.1" - } + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "optional": true, - "requires": { - "is-number": "^7.0.0" - } + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } }, - "watchpack": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", - "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", - "dev": true, - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" - } - } - } - }, - "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "when": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz", - "integrity": "sha1-q6A/w7tzbWyIsJHQE9io5ZDYRxg=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "dev": true, - "requires": { - "string-width": "^2.1.1" - } - }, - "win-release": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", - "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", - "dev": true, - "requires": { - "semver": "^5.0.1" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "winreg": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz", - "integrity": "sha1-BxBVVLoanQiXklHRKUdb/64wBrc=", - "dev": true - }, - "with": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", - "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", - "dev": true, - "requires": { - "acorn": "^3.1.0", - "acorn-globals": "^3.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "zip-dir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-1.0.2.tgz", + "integrity": "sha1-JT+QeurWKiGs2HIdi4gDKyQRwFE=", + "dev": true, + "requires": { + "async": "^1.5.2", + "jszip": "^2.4.0" + }, + "dependencies": { + "jszip": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", + "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", + "dev": true, + "requires": { + "pako": "~1.0.2" + } + } + } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true - }, - "xhr-mock": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/xhr-mock/-/xhr-mock-2.5.1.tgz", - "integrity": "sha512-UKOjItqjFgPUwQGPmRAzNBn8eTfIhcGjBVGvKYAWxUQPQsXNGD6KEckGTiHwyaAUp9C9igQlnN1Mp79KWCg7CQ==", - "dev": true, - "requires": { - "global": "^4.3.0", - "url": "^0.11.0" - } - }, - "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dev": true, - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "dependencies": { - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - } - } - }, - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true - }, - "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", - "dev": true - }, - "xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "zip-dir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-1.0.2.tgz", - "integrity": "sha1-JT+QeurWKiGs2HIdi4gDKyQRwFE=", - "dev": true, - "requires": { - "async": "^1.5.2", - "jszip": "^2.4.0" - }, - "dependencies": { - "jszip": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", - "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", - "dev": true, - "requires": { - "pako": "~1.0.2" - } + "zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "dev": true, + "requires": { + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" + } } - } - }, - "zip-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", - "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", - "dev": true, - "requires": { - "archiver-utils": "^1.3.0", - "compress-commons": "^1.2.0", - "lodash": "^4.8.0", - "readable-stream": "^2.0.0" - } } - } } diff --git a/package.json b/package.json index 10bb47fc..3df112e2 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,12 @@ "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" }, "dependencies": { + "@octokit/rest": "^18.0.12", + "dotenv": "^8.2.0", "express": "^4.17.1", "express-sslify": "^1.2.0", "lodash.debounce": "^4.0.8", + "octokit": "^1.0.0-hello-world", "querystring": "^0.2.0" }, "devEngines": { @@ -72,8 +75,10 @@ "start": "node server.js", "test": "grunt test", "test:unit": "grunt unit-tests", - "build": "grunt build-website", - "build:extension": "grunt build-extension" + "build": "npm run build:libraries && grunt build-website", + "build:extension": "npm run build:libraries && grunt build-extension", + "build:libraries": "node libraries.js", + "grunt": "grunt build-website" }, "heroku-run-build-script": true } diff --git a/server.js b/server.js index 8bc4e4fa..b91fcbed 100644 --- a/server.js +++ b/server.js @@ -1,23 +1,32 @@ -const express = require('express'); -const enforce = require('express-sslify'); - +const express = require("express"); +const enforce = require("express-sslify"); +const languages = require("./libraries.json"); const app = express(); -if(process.env.NODE_ENV === 'production') { - console.log('Redirecting to TLS endpoint.'); - app.use(enforce.HTTPS({ - // Required for proper use under a reverse proxy (Heroku, etc.). - trustProtoHeader: true - })); +app.set("view engine", "pug"); +app.set("views", __dirname + "/views/website"); + +if (process.env.NODE_ENV === "production") { + console.log("Redirecting to TLS endpoint."); + app.use( + enforce.HTTPS({ + // Required for proper use under a reverse proxy (Heroku, etc.). + trustProtoHeader: true, + }) + ); } -app.use('/', express.static('dist/website')); +// app.use(fetchGithubStars); +app.use(express.static("dist/website")); +app.get("/", function(req, res) { + res.render("index", { test: "This is a test", languages: languages }); +}); // Fallback for the homepage JWT handbook CTA A/B experiment we ran -app.get('/home', function (req, res) { - res.redirect('/'); +app.get("/home", function(req, res) { + res.redirect("/"); }); app.listen(process.env.PORT || 3000, function() { - console.log('Started.'); -}); + console.log("Started."); +}); \ No newline at end of file diff --git a/src/website/libraries.js b/src/website/libraries.js index eeb9e3b8..05641604 100644 --- a/src/website/libraries.js +++ b/src/website/libraries.js @@ -1,88 +1,34 @@ -import { safeLocalStorageSetItem } from '../utils.js'; -import { httpGet } from '../utils.js'; -import { - starsElements, - librariesElement, - librariesSelect -} from './dom-elements.js'; +import { httpGet } from "../utils.js"; +import { librariesElement, librariesSelect } from "./dom-elements.js"; -import Isotope from 'isotope-layout'; -import log from 'loglevel'; +import Isotope from "isotope-layout"; const librariesGrid = new Isotope(librariesElement, { - layoutMode: 'fitRows', - itemSelector: 'article', - percentPosition: true, - masonry: { - columnWidth: 'article' - } + layoutMode: "fitRows", + itemSelector: "article", + percentPosition: true, + masonry: { + columnWidth: "article", + }, }); function getStarsFromUrl(url) { - return httpGet(url).then(data => { - const parsed = JSON.parse(data); - const count = parsed.stargazers_count; - - if(Number.isInteger(count)) { - return count; - } else { - throw new Error('Bad data received for stars count.'); - } - }); -} - -function insertStarCount(starElement, count) { - const span = document.createElement('span'); - span.textContent = count; - starElement.insertBefore(span, null); - starElement.style.display = 'inline'; -} - -function getStarsForGitHubRepos() { - Array.prototype.forEach.call(starsElements, element => { - const repo = element.getAttribute('data-repo'); - if (!repo) { - return; - } - - const key = `stars_v2_${repo}`; - - const now = Date.now(); - try { - const stored = JSON.parse(localStorage.getItem(key)); - const diff = now - stored.date; - // Cached for a week - const maxdiff = 7 * 24 * 60 * 60 * 1000; - if (diff < maxdiff) { - insertStarCount(element, stored.count); - return; - } - } catch (e) { - // Ignore bad data - log.warn('Bad data in stored stars count, ignoring...', e); - } - - const url = `https://api.github.com/repos/${repo}`; - getStarsFromUrl(url).then(count => { - safeLocalStorageSetItem(key, JSON.stringify({ - date: now, - count: count - })); - - insertStarCount(element, count); - }).catch(e => { - log.warn('Failed to get GitHub stars count for repository, ' + - 'is the repository URL OK? ', e); + return httpGet(url).then((data) => { + const parsed = JSON.parse(data); + const count = parsed.stargazers_count; + + if (Number.isInteger(count)) { + return count; + } else { + throw new Error("Bad data received for stars count."); + } }); - }); } export function setupLibraries() { - getStarsForGitHubRepos(); - - librariesSelect.addEventListener('change', event => { - librariesGrid.arrange({ - filter: event.target.value + librariesSelect.addEventListener("change", (event) => { + librariesGrid.arrange({ + filter: event.target.value, + }); }); - }); -} +} \ No newline at end of file diff --git a/views/website/libraries/support/get-languages.js b/views/website/libraries/support/get-languages.js index 9463d8f5..d04b7901 100644 --- a/views/website/libraries/support/get-languages.js +++ b/views/website/libraries/support/get-languages.js @@ -1,26 +1,27 @@ -const fs = require('fs'); +const fs = require("fs"); function numericCompare(a, b) { - const lhs = parseInt(a, 10); - const rhs = parseInt(b, 10); + const lhs = parseInt(a, 10); + const rhs = parseInt(b, 10); - return lhs - rhs; + return lhs - rhs; } module.exports = function getLanguages() { - let dirEntries = fs.readdirSync(`${__dirname}/../`); - dirEntries = dirEntries.filter(e => e.endsWith('.json')); - dirEntries.sort(numericCompare); + let dirEntries = fs.readdirSync(`${__dirname}/../`); + dirEntries = dirEntries.filter((e) => e.endsWith(".json")); + dirEntries.sort(numericCompare); - console.log('Found languages:\n', dirEntries); + console.log("Found languages:\n", dirEntries); - const result = []; - dirEntries.forEach(entry => { - const data = JSON.parse( - fs.readFileSync(`${__dirname}/../${entry}`).toString()); + const result = []; + dirEntries.forEach((entry) => { + const data = JSON.parse( + fs.readFileSync(`${__dirname}/../${entry}`).toString() + ); - result.push(data); - }); + result.push(data); + }); - return result; -} + return result; +}; \ No newline at end of file diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index 7761468e..1364f705 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -98,8 +98,9 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer') | #{lib.authorName} if lib.gitHubRepoPath - span.stars(data-repo=lib.gitHubRepoPath, style='display: inline;') + span.stars( style='display: inline;') i.icon-budicon-466 + | #{lib.stars} .repository i.icon-1392070209-icon-social-github a(href=lib.repoUrl, data-metrics-lib-id=lib.repoUrl) View Repo diff --git a/views/website/token-editor.pug b/views/website/token-editor.pug index 7632a8cf..6164e089 100644 --- a/views/website/token-editor.pug +++ b/views/website/token-editor.pug @@ -2,7 +2,6 @@ section#debugger-io.debugger-jwt .container //- a(name='debugger') h1 Debugger - .jwt-playground .warning strong Warning: diff --git a/webpack.common.js b/webpack.common.js index 9903d3a7..701e5316 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -1,36 +1,38 @@ -const webpack = require('webpack'); +const webpack = require("webpack"); +const getLanguages = require("./views/website/libraries/support/get-languages.js"); module.exports = { - devtool: 'source-map', - module: { - rules: [{ - test: /\.js$/, - exclude: /(node_modules|bower_components)/, - use: { - loader: 'babel-loader', - options: { - presets: [[ - '@babel/preset-env', { - targets: { - browsers: [ - '> 0.25%', - 'not dead', - ], - android: 7, - ios: 10, - ie: 11, - }, - modules: false - } - ]] - } - } - }] - }, - plugins: [ - new webpack.ProvidePlugin({ - $: "jquery", - jQuery: "jquery" - }) - ] -}; + devtool: "source-map", + module: { + rules: [{ + test: /\.js$/, + exclude: /(node_modules|bower_components)/, + use: { + loader: "babel-loader", + options: { + presets: [ + [ + "@babel/preset-env", + { + targets: { + browsers: ["> 0.25%", "not dead"], + android: 7, + ios: 10, + ie: 11, + }, + modules: false, + }, + ], + ], + }, + }, + }, ], + }, + plugins: [ + new webpack.ProvidePlugin({ + $: "jquery", + jQuery: "jquery", + languages: getLanguages(), + }), + ], +}; \ No newline at end of file From 53aa90a844713d4dc6f59c716c14539551e81f03 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 14 Dec 2020 12:03:05 +0100 Subject: [PATCH 457/611] Fix introductions page --- server.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server.js b/server.js index b91fcbed..141b4b62 100644 --- a/server.js +++ b/server.js @@ -19,7 +19,11 @@ if (process.env.NODE_ENV === "production") { // app.use(fetchGithubStars); app.use(express.static("dist/website")); app.get("/", function(req, res) { - res.render("index", { test: "This is a test", languages: languages }); + res.render("index", { languages: languages }); +}); + +app.get("/introduction", function(req, res) { + res.render("introduction"); }); // Fallback for the homepage JWT handbook CTA A/B experiment we ran From 66c22a03e7bb0aed5564c85d3f37ed298cea6415 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 14 Dec 2020 12:47:54 +0100 Subject: [PATCH 458/611] Cleanup --- Gruntfile.js | 9 +++++++++ package-lock.json | 11 ----------- package.json | 6 ++---- src/website/libraries.js | 13 ------------- webpack.common.js | 2 -- 5 files changed, 11 insertions(+), 30 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 43498478..3b7f261b 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -4,6 +4,7 @@ const getLanguages = require("./views/website/libraries/support/get-languages.js module.exports = (grunt) => { grunt.loadNpmTasks("grunt-contrib-copy"); grunt.loadNpmTasks("grunt-contrib-stylus"); + grunt.loadNpmTasks("grunt-contrib-pug"); grunt.loadNpmTasks("grunt-webpack"); grunt.loadNpmTasks("grunt-contrib-watch"); grunt.loadNpmTasks("grunt-contrib-clean"); @@ -117,6 +118,14 @@ module.exports = (grunt) => { }, }, + pug: { + extension: { + files: { + "dist/extension/index.html": "views/extension/index.pug", + }, + }, + }, + webpack: { websiteProd: require("./webpack.website-prod.js"), websiteDev: require("./webpack.website-dev.js"), diff --git a/package-lock.json b/package-lock.json index ae6d7133..5dcd16aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,6 @@ "express": "^4.17.1", "express-sslify": "^1.2.0", "lodash.debounce": "^4.0.8", - "octokit": "^1.0.0-hello-world", "querystring": "^0.2.0" }, "devDependencies": { @@ -9177,11 +9176,6 @@ "isobject": "^3.0.1" } }, - "node_modules/octokit": { - "version": "1.0.0-hello-world", - "resolved": "https://registry.npmjs.org/octokit/-/octokit-1.0.0-hello-world.tgz", - "integrity": "sha1-mX8irutd/iiB54xpQYxJKBqt+Y8=" - }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -23215,11 +23209,6 @@ "isobject": "^3.0.1" } }, - "octokit": { - "version": "1.0.0-hello-world", - "resolved": "https://registry.npmjs.org/octokit/-/octokit-1.0.0-hello-world.tgz", - "integrity": "sha1-mX8irutd/iiB54xpQYxJKBqt+Y8=" - }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", diff --git a/package.json b/package.json index 3df112e2..455c6c4a 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,6 @@ "express": "^4.17.1", "express-sslify": "^1.2.0", "lodash.debounce": "^4.0.8", - "octokit": "^1.0.0-hello-world", "querystring": "^0.2.0" }, "devEngines": { @@ -77,8 +76,7 @@ "test:unit": "grunt unit-tests", "build": "npm run build:libraries && grunt build-website", "build:extension": "npm run build:libraries && grunt build-extension", - "build:libraries": "node libraries.js", - "grunt": "grunt build-website" + "build:libraries": "node libraries.js" }, "heroku-run-build-script": true -} +} \ No newline at end of file diff --git a/src/website/libraries.js b/src/website/libraries.js index 05641604..b57799f5 100644 --- a/src/website/libraries.js +++ b/src/website/libraries.js @@ -12,19 +12,6 @@ const librariesGrid = new Isotope(librariesElement, { }, }); -function getStarsFromUrl(url) { - return httpGet(url).then((data) => { - const parsed = JSON.parse(data); - const count = parsed.stargazers_count; - - if (Number.isInteger(count)) { - return count; - } else { - throw new Error("Bad data received for stars count."); - } - }); -} - export function setupLibraries() { librariesSelect.addEventListener("change", (event) => { librariesGrid.arrange({ diff --git a/webpack.common.js b/webpack.common.js index 701e5316..34aef2cb 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -1,5 +1,4 @@ const webpack = require("webpack"); -const getLanguages = require("./views/website/libraries/support/get-languages.js"); module.exports = { devtool: "source-map", @@ -32,7 +31,6 @@ module.exports = { new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", - languages: getLanguages(), }), ], }; \ No newline at end of file From 9bf2de5febbedad79ba06e11e4b251333d6fc540 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 14 Dec 2020 13:16:22 +0100 Subject: [PATCH 459/611] Fix pug --- libraries.js | 1 + package-lock.json | 254 ++++++++++++---------------------------------- package.json | 4 +- 3 files changed, 68 insertions(+), 191 deletions(-) diff --git a/libraries.js b/libraries.js index 6348f4e2..204a634a 100644 --- a/libraries.js +++ b/libraries.js @@ -35,6 +35,7 @@ function fetchGithubStars() { lib.stars = repo.data.stargazers_count; return repo.data.stargazers_count; }) + .catch((error) => console.log(error)) ); } }); diff --git a/package-lock.json b/package-lock.json index 5dcd16aa..07f452a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "express": "^4.17.1", "express-sslify": "^1.2.0", "lodash.debounce": "^4.0.8", + "pug": "^2.0.4", "querystring": "^0.2.0" }, "devDependencies": { @@ -53,7 +54,6 @@ "mocha": "^5.2.0", "node-jose": "^1.1.4", "promise.any": "^0.1.1", - "pug": "^2.0.3", "puppeteer": "^1.17.0", "request-promise-native": "^1.0.7", "sinon": "^4.5.0", @@ -1427,14 +1427,12 @@ "node_modules/@types/babel-types": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.8.tgz", - "integrity": "sha512-jvu8g4LR7+p6ao30RhTREnEhHxmP4/R9D9/rOR/Kq14FztORty9SKgtOZUNZNMB9CXLxZ54EWu4dArUE8WdTsw==", - "dev": true + "integrity": "sha512-jvu8g4LR7+p6ao30RhTREnEhHxmP4/R9D9/rOR/Kq14FztORty9SKgtOZUNZNMB9CXLxZ54EWu4dArUE8WdTsw==" }, "node_modules/@types/babylon": { "version": "6.16.5", "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", - "dev": true, "dependencies": { "@types/babel-types": "*" } @@ -1661,14 +1659,12 @@ "node_modules/acorn": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" }, "node_modules/acorn-globals": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "dev": true, "dependencies": { "acorn": "^4.0.4" } @@ -1676,8 +1672,7 @@ "node_modules/acorn-globals/node_modules/acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" }, "node_modules/acorn-jsx": { "version": "5.2.0", @@ -2010,7 +2005,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, "dependencies": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -2021,7 +2015,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "dependencies": { "is-buffer": "^1.1.5" } @@ -2246,8 +2239,7 @@ "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, "node_modules/asn1": { "version": "0.2.3", @@ -2599,7 +2591,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, "dependencies": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" @@ -2608,8 +2599,7 @@ "node_modules/babel-runtime/node_modules/regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" }, "node_modules/babel-template": { "version": "6.26.0", @@ -2651,7 +2641,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, "dependencies": { "babel-runtime": "^6.26.0", "esutils": "^2.0.2", @@ -2662,14 +2651,12 @@ "node_modules/babel-types/node_modules/to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" }, "node_modules/babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, "node_modules/balanced-match": { "version": "1.0.0", @@ -3214,8 +3201,7 @@ "node_modules/camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" }, "node_modules/caniuse-lite": { "version": "1.0.30001111", @@ -3239,7 +3225,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, "dependencies": { "align-text": "^0.1.3", "lazy-cache": "^1.0.3" @@ -3299,7 +3284,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", - "dev": true, "dependencies": { "is-regex": "^1.0.3" } @@ -3441,7 +3425,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "dev": true, "dependencies": { "source-map": "~0.6.0" } @@ -3449,8 +3432,7 @@ "node_modules/clean-css/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "node_modules/cli-boxes": { "version": "1.0.0", @@ -3483,7 +3465,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, "dependencies": { "center-align": "^0.1.1", "right-align": "^0.1.1", @@ -3696,7 +3677,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", - "dev": true, "dependencies": { "@types/babel-types": "^7.0.0", "@types/babylon": "^6.16.2", @@ -3780,8 +3760,7 @@ "node_modules/core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" }, "node_modules/core-js-compat": { "version": "3.6.5", @@ -4028,8 +4007,7 @@ "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "node_modules/decode-uri-component": { "version": "0.2.0", @@ -4366,8 +4344,7 @@ "node_modules/doctypes": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", - "dev": true + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" }, "node_modules/dom-serializer": { "version": "0.1.1", @@ -5249,8 +5226,7 @@ "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "node_modules/etag": { "version": "1.8.1", @@ -6677,8 +6653,7 @@ "node_modules/has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, "node_modules/has-value": { "version": "1.0.0", @@ -7151,8 +7126,7 @@ "node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "node_modules/is-callable": { "version": "1.2.0", @@ -7205,7 +7179,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", - "dev": true, "dependencies": { "acorn": "~4.0.2", "object-assign": "^4.0.1" @@ -7214,8 +7187,7 @@ "node_modules/is-expression/node_modules/acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" }, "node_modules/is-extendable": { "version": "0.1.1", @@ -7336,8 +7308,7 @@ "node_modules/is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" }, "node_modules/is-property": { "version": "1.0.2", @@ -7355,7 +7326,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, "dependencies": { "has-symbols": "^1.0.1" } @@ -7497,8 +7467,7 @@ "node_modules/js-stringify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", - "dev": true + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" }, "node_modules/js-tokens": { "version": "4.0.0", @@ -7658,7 +7627,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", - "dev": true, "dependencies": { "is-promise": "^2.0.0", "promise": "^7.0.1" @@ -7730,8 +7698,7 @@ "node_modules/lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" }, "node_modules/lazystream": { "version": "1.0.0", @@ -7904,8 +7871,7 @@ "node_modules/lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "node_modules/lodash.assign": { "version": "4.2.0", @@ -8023,8 +7989,7 @@ "node_modules/longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" }, "node_modules/loose-envify": { "version": "1.4.0", @@ -9070,8 +9035,7 @@ "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "node_modules/object-copy": { "version": "0.1.0", @@ -9528,8 +9492,7 @@ "node_modules/path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "node_modules/path-root": { "version": "0.1.1", @@ -9785,7 +9748,6 @@ "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, "dependencies": { "asap": "~2.0.3" } @@ -9890,7 +9852,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", - "dev": true, "dependencies": { "pug-code-gen": "^2.0.2", "pug-filters": "^3.1.1", @@ -9906,7 +9867,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", - "dev": true, "dependencies": { "constantinople": "^3.0.1", "js-stringify": "^1.0.1", @@ -9917,7 +9877,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", - "dev": true, "dependencies": { "constantinople": "^3.1.2", "doctypes": "^1.1.0", @@ -9932,14 +9891,12 @@ "node_modules/pug-error": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", - "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==", - "dev": true + "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==" }, "node_modules/pug-filters": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", - "dev": true, "dependencies": { "clean-css": "^4.1.11", "constantinople": "^3.0.1", @@ -9954,7 +9911,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", - "dev": true, "dependencies": { "character-parser": "^2.1.1", "is-expression": "^3.0.0", @@ -9965,7 +9921,6 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", - "dev": true, "dependencies": { "pug-error": "^1.3.3", "pug-walk": "^1.1.8" @@ -9975,7 +9930,6 @@ "version": "2.0.12", "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", - "dev": true, "dependencies": { "object-assign": "^4.1.0", "pug-walk": "^1.1.8" @@ -9985,7 +9939,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", - "dev": true, "dependencies": { "pug-error": "^1.3.3", "token-stream": "0.0.1" @@ -9994,14 +9947,12 @@ "node_modules/pug-runtime": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", - "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==", - "dev": true + "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==" }, "node_modules/pug-strip-comments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", - "dev": true, "dependencies": { "pug-error": "^1.3.3" } @@ -10009,8 +9960,7 @@ "node_modules/pug-walk": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", - "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==", - "dev": true + "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==" }, "node_modules/pump": { "version": "2.0.1", @@ -10439,8 +10389,7 @@ "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "node_modules/repeating": { "version": "2.0.1", @@ -10531,7 +10480,6 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, "dependencies": { "path-parse": "^1.0.6" } @@ -10578,7 +10526,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, "dependencies": { "align-text": "^0.1.1" } @@ -11687,8 +11634,7 @@ "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "node_modules/source-map-resolve": { "version": "0.5.3", @@ -12535,8 +12481,7 @@ "node_modules/token-stream": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", - "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", - "dev": true + "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=" }, "node_modules/toml": { "version": "2.3.6", @@ -12670,7 +12615,6 @@ "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, "dependencies": { "source-map": "~0.5.1", "uglify-to-browserify": "~1.0.0", @@ -12684,7 +12628,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, "optional": true }, "node_modules/uglifyjs-webpack-plugin": { @@ -13123,8 +13066,7 @@ "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" }, "node_modules/vscode-languageserver-types": { "version": "3.15.1", @@ -13681,8 +13623,7 @@ "node_modules/window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" }, "node_modules/winreg": { "version": "0.0.12", @@ -13694,7 +13635,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", - "dev": true, "dependencies": { "acorn": "^3.1.0", "acorn-globals": "^3.0.0" @@ -13709,8 +13649,7 @@ "node_modules/wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" }, "node_modules/worker-farm": { "version": "1.7.0", @@ -13857,7 +13796,6 @@ "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, "dependencies": { "camelcase": "^1.0.2", "cliui": "^2.1.0", @@ -15282,14 +15220,12 @@ "@types/babel-types": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.8.tgz", - "integrity": "sha512-jvu8g4LR7+p6ao30RhTREnEhHxmP4/R9D9/rOR/Kq14FztORty9SKgtOZUNZNMB9CXLxZ54EWu4dArUE8WdTsw==", - "dev": true + "integrity": "sha512-jvu8g4LR7+p6ao30RhTREnEhHxmP4/R9D9/rOR/Kq14FztORty9SKgtOZUNZNMB9CXLxZ54EWu4dArUE8WdTsw==" }, "@types/babylon": { "version": "6.16.5", "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", - "dev": true, "requires": { "@types/babel-types": "*" } @@ -15516,14 +15452,12 @@ "acorn": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" }, "acorn-globals": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "dev": true, "requires": { "acorn": "^4.0.4" }, @@ -15531,8 +15465,7 @@ "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" } } }, @@ -15870,7 +15803,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -15881,7 +15813,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -16112,8 +16043,7 @@ "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, "asn1": { "version": "0.2.3", @@ -16479,7 +16409,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" @@ -16488,8 +16417,7 @@ "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" } } }, @@ -16535,7 +16463,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, "requires": { "babel-runtime": "^6.26.0", "esutils": "^2.0.2", @@ -16546,16 +16473,14 @@ "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" } } }, "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, "balanced-match": { "version": "1.0.0", @@ -17109,8 +17034,7 @@ "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" }, "caniuse-lite": { "version": "1.0.30001111", @@ -17134,7 +17058,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, "requires": { "align-text": "^0.1.3", "lazy-cache": "^1.0.3" @@ -17194,7 +17117,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", - "dev": true, "requires": { "is-regex": "^1.0.3" } @@ -17337,7 +17259,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "dev": true, "requires": { "source-map": "~0.6.0" }, @@ -17345,8 +17266,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -17381,7 +17301,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, "requires": { "center-align": "^0.1.1", "right-align": "^0.1.1", @@ -17598,7 +17517,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", - "dev": true, "requires": { "@types/babel-types": "^7.0.0", "@types/babylon": "^6.16.2", @@ -17684,8 +17602,7 @@ "core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" }, "core-js-compat": { "version": "3.6.5", @@ -17938,8 +17855,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "decode-uri-component": { "version": "0.2.0", @@ -18284,8 +18200,7 @@ "doctypes": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", - "dev": true + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" }, "dom-serializer": { "version": "0.1.1", @@ -19185,8 +19100,7 @@ "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "etag": { "version": "1.8.1", @@ -20651,8 +20565,7 @@ "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, "has-value": { "version": "1.0.0", @@ -21139,8 +21052,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { "version": "1.2.0", @@ -21197,7 +21109,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", - "dev": true, "requires": { "acorn": "~4.0.2", "object-assign": "^4.0.1" @@ -21206,8 +21117,7 @@ "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" } } }, @@ -21332,8 +21242,7 @@ "is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" }, "is-property": { "version": "1.0.2", @@ -21351,7 +21260,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -21493,8 +21401,7 @@ "js-stringify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", - "dev": true + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" }, "js-tokens": { "version": "4.0.0", @@ -21656,7 +21563,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", - "dev": true, "requires": { "is-promise": "^2.0.0", "promise": "^7.0.1" @@ -21728,8 +21634,7 @@ "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" }, "lazystream": { "version": "1.0.0", @@ -21908,8 +21813,7 @@ "lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "lodash.assign": { "version": "4.2.0", @@ -22027,8 +21931,7 @@ "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" }, "loose-envify": { "version": "1.4.0", @@ -23101,8 +23004,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", @@ -23565,8 +23467,7 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-root": { "version": "0.1.1", @@ -23828,7 +23729,6 @@ "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, "requires": { "asap": "~2.0.3" } @@ -23937,7 +23837,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", - "dev": true, "requires": { "pug-code-gen": "^2.0.2", "pug-filters": "^3.1.1", @@ -23953,7 +23852,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", - "dev": true, "requires": { "constantinople": "^3.0.1", "js-stringify": "^1.0.1", @@ -23964,7 +23862,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", - "dev": true, "requires": { "constantinople": "^3.1.2", "doctypes": "^1.1.0", @@ -23979,14 +23876,12 @@ "pug-error": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", - "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==", - "dev": true + "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==" }, "pug-filters": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", - "dev": true, "requires": { "clean-css": "^4.1.11", "constantinople": "^3.0.1", @@ -24001,7 +23896,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", - "dev": true, "requires": { "character-parser": "^2.1.1", "is-expression": "^3.0.0", @@ -24012,7 +23906,6 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", - "dev": true, "requires": { "pug-error": "^1.3.3", "pug-walk": "^1.1.8" @@ -24022,7 +23915,6 @@ "version": "2.0.12", "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", - "dev": true, "requires": { "object-assign": "^4.1.0", "pug-walk": "^1.1.8" @@ -24032,7 +23924,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", - "dev": true, "requires": { "pug-error": "^1.3.3", "token-stream": "0.0.1" @@ -24041,14 +23932,12 @@ "pug-runtime": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", - "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==", - "dev": true + "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==" }, "pug-strip-comments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", - "dev": true, "requires": { "pug-error": "^1.3.3" } @@ -24056,8 +23945,7 @@ "pug-walk": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", - "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==", - "dev": true + "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==" }, "pump": { "version": "2.0.1", @@ -24498,8 +24386,7 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "repeating": { "version": "2.0.1", @@ -24592,7 +24479,6 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -24639,7 +24525,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, "requires": { "align-text": "^0.1.1" } @@ -25786,8 +25671,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-resolve": { "version": "0.5.3", @@ -26654,8 +26538,7 @@ "token-stream": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", - "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", - "dev": true + "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=" }, "toml": { "version": "2.3.6", @@ -26789,7 +26672,6 @@ "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, "requires": { "source-map": "~0.5.1", "uglify-to-browserify": "~1.0.0", @@ -26800,7 +26682,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, "optional": true }, "uglifyjs-webpack-plugin": { @@ -27247,8 +27128,7 @@ "void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" }, "vscode-languageserver-types": { "version": "3.15.1", @@ -27811,8 +27691,7 @@ "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" }, "winreg": { "version": "0.0.12", @@ -27824,7 +27703,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", - "dev": true, "requires": { "acorn": "^3.1.0", "acorn-globals": "^3.0.0" @@ -27839,8 +27717,7 @@ "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" }, "worker-farm": { "version": "1.7.0", @@ -27991,7 +27868,6 @@ "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, "requires": { "camelcase": "^1.0.2", "cliui": "^2.1.0", diff --git a/package.json b/package.json index 455c6c4a..1cb3344d 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "express": "^4.17.1", "express-sslify": "^1.2.0", "lodash.debounce": "^4.0.8", + "pug": "^2.0.4", "querystring": "^0.2.0" }, "devEngines": { @@ -55,7 +56,6 @@ "mocha": "^5.2.0", "node-jose": "^1.1.4", "promise.any": "^0.1.1", - "pug": "^2.0.3", "puppeteer": "^1.17.0", "request-promise-native": "^1.0.7", "sinon": "^4.5.0", @@ -79,4 +79,4 @@ "build:libraries": "node libraries.js" }, "heroku-run-build-script": true -} \ No newline at end of file +} From cac91a6b22846bc67d47849519017bddf705038b Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 14 Dec 2020 13:21:37 +0100 Subject: [PATCH 460/611] Move jstransformer-markdown-it to deps instead of devdeps --- package-lock.json | 132 +++++++++++++++++++--------------------------- package.json | 2 +- 2 files changed, 54 insertions(+), 80 deletions(-) diff --git a/package-lock.json b/package-lock.json index 07f452a2..64d2bcc2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "dotenv": "^8.2.0", "express": "^4.17.1", "express-sslify": "^1.2.0", + "jstransformer-markdown": "^1.2.1", "lodash.debounce": "^4.0.8", "pug": "^2.0.4", "querystring": "^0.2.0" @@ -48,7 +49,6 @@ "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", "jquery": "^3.4.1", - "jstransformer-markdown-it": "^2.1.0", "lodash": "^4.17.13", "loglevel": "^1.6.2", "mocha": "^5.2.0", @@ -1644,8 +1644,7 @@ "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "node_modules/accepts": { "version": "1.3.7", @@ -7632,13 +7631,15 @@ "promise": "^7.0.1" } }, - "node_modules/jstransformer-markdown-it": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.1.0.tgz", - "integrity": "sha1-aewwzkUYvtWZezjwJ2SOjChekvc=", - "dev": true, + "node_modules/jstransformer-markdown": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jstransformer-markdown/-/jstransformer-markdown-1.2.1.tgz", + "integrity": "sha512-rNLxNC3LIGAc26Qcro73eWoosKymqyNVDn909KIq2QHVHGWZ+d+JzOCrHsmUt3DNAKF+hkJQJ1JufAhFEdZ5gw==", "dependencies": { - "markdown-it": "^8.0.0" + "markdown": "^0.5.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/jszip": { @@ -7780,15 +7781,6 @@ "resolve-dir": "^1.0.1" } }, - "node_modules/linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "dev": true, - "dependencies": { - "uc.micro": "^1.0.1" - } - }, "node_modules/livereload-js": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", @@ -8065,17 +8057,29 @@ "object-visit": "^1.0.0" } }, - "node_modules/markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", - "dev": true, + "node_modules/markdown": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", + "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", "dependencies": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "nopt": "~2.1.1" + }, + "bin": { + "md2html": "bin/md2html.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/markdown/node_modules/nopt": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", + "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" } }, "node_modules/masonry-layout": { @@ -8099,12 +8103,6 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true - }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -12605,12 +12603,6 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, "node_modules/uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -15437,8 +15429,7 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "accepts": { "version": "1.3.7", @@ -21568,13 +21559,12 @@ "promise": "^7.0.1" } }, - "jstransformer-markdown-it": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.1.0.tgz", - "integrity": "sha1-aewwzkUYvtWZezjwJ2SOjChekvc=", - "dev": true, + "jstransformer-markdown": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jstransformer-markdown/-/jstransformer-markdown-1.2.1.tgz", + "integrity": "sha512-rNLxNC3LIGAc26Qcro73eWoosKymqyNVDn909KIq2QHVHGWZ+d+JzOCrHsmUt3DNAKF+hkJQJ1JufAhFEdZ5gw==", "requires": { - "markdown-it": "^8.0.0" + "markdown": "^0.5.0" } }, "jszip": { @@ -21718,15 +21708,6 @@ } } }, - "linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "dev": true, - "requires": { - "uc.micro": "^1.0.1" - } - }, "livereload-js": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", @@ -22007,17 +21988,22 @@ "object-visit": "^1.0.0" } }, - "markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", - "dev": true, + "markdown": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", + "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", "requires": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "nopt": "~2.1.1" + }, + "dependencies": { + "nopt": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", + "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", + "requires": { + "abbrev": "1" + } + } } }, "masonry-layout": { @@ -22041,12 +22027,6 @@ "safe-buffer": "^5.1.2" } }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -26662,12 +26642,6 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", diff --git a/package.json b/package.json index 1cb3344d..fad27c7e 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "dotenv": "^8.2.0", "express": "^4.17.1", "express-sslify": "^1.2.0", + "jstransformer-markdown": "^1.2.1", "lodash.debounce": "^4.0.8", "pug": "^2.0.4", "querystring": "^0.2.0" @@ -50,7 +51,6 @@ "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", "jquery": "^3.4.1", - "jstransformer-markdown-it": "^2.1.0", "lodash": "^4.17.13", "loglevel": "^1.6.2", "mocha": "^5.2.0", From effae09484c61f5954eec10bdfa7f30d45a34680 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 14 Dec 2020 13:40:03 +0100 Subject: [PATCH 461/611] Fix markdown-it --- package-lock.json | 97 ++++++++++++++++++++++++++++++++++++++++++----- package.json | 1 + server.js | 1 + 3 files changed, 89 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 64d2bcc2..ec5e429b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "express": "^4.17.1", "express-sslify": "^1.2.0", "jstransformer-markdown": "^1.2.1", + "jstransformer-markdown-it": "^2.1.0", "lodash.debounce": "^4.0.8", "pug": "^2.0.4", "querystring": "^0.2.0" @@ -2132,7 +2133,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -2140,8 +2140,7 @@ "node_modules/argparse/node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "node_modules/arr-diff": { "version": "4.0.0", @@ -4556,8 +4555,7 @@ "node_modules/entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, "node_modules/errno": { "version": "0.1.7", @@ -7642,6 +7640,17 @@ "node": ">=4" } }, + "node_modules/jstransformer-markdown-it": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.1.0.tgz", + "integrity": "sha1-aewwzkUYvtWZezjwJ2SOjChekvc=", + "dependencies": { + "markdown-it": "^8.0.0" + }, + "engines": { + "node": ">=7" + } + }, "node_modules/jszip": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", @@ -7781,6 +7790,14 @@ "resolve-dir": "^1.0.1" } }, + "node_modules/linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, "node_modules/livereload-js": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", @@ -8071,6 +8088,21 @@ "node": "*" } }, + "node_modules/markdown-it": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "dependencies": { + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, "node_modules/markdown/node_modules/nopt": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", @@ -8103,6 +8135,11 @@ "safe-buffer": "^5.1.2" } }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -12603,6 +12640,11 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, "node_modules/uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -15926,7 +15968,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" }, @@ -15934,8 +15975,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" } } }, @@ -18407,8 +18447,7 @@ "entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, "errno": { "version": "0.1.7", @@ -21567,6 +21606,14 @@ "markdown": "^0.5.0" } }, + "jstransformer-markdown-it": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.1.0.tgz", + "integrity": "sha1-aewwzkUYvtWZezjwJ2SOjChekvc=", + "requires": { + "markdown-it": "^8.0.0" + } + }, "jszip": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", @@ -21708,6 +21755,14 @@ } } }, + "linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "requires": { + "uc.micro": "^1.0.1" + } + }, "livereload-js": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", @@ -22006,6 +22061,18 @@ } } }, + "markdown-it": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "requires": { + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, "masonry-layout": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz", @@ -22027,6 +22094,11 @@ "safe-buffer": "^5.1.2" } }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -26642,6 +26714,11 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", diff --git a/package.json b/package.json index fad27c7e..4df340ae 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "express": "^4.17.1", "express-sslify": "^1.2.0", "jstransformer-markdown": "^1.2.1", + "jstransformer-markdown-it": "^2.1.0", "lodash.debounce": "^4.0.8", "pug": "^2.0.4", "querystring": "^0.2.0" diff --git a/server.js b/server.js index 141b4b62..cac04cbc 100644 --- a/server.js +++ b/server.js @@ -1,6 +1,7 @@ const express = require("express"); const enforce = require("express-sslify"); const languages = require("./libraries.json"); + const app = express(); app.set("view engine", "pug"); From 98aa909726c9022b49a962f8ca117f831c2105c9 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 14 Dec 2020 14:05:01 +0100 Subject: [PATCH 462/611] Fix Base64 encoded secret length check --- src/editor/secret-length-tooltip.js | 59 ++++++++++++++--------------- 1 file changed, 28 insertions(+), 31 deletions(-) diff --git a/src/editor/secret-length-tooltip.js b/src/editor/secret-length-tooltip.js index 6314fdc5..3727585f 100644 --- a/src/editor/secret-length-tooltip.js +++ b/src/editor/secret-length-tooltip.js @@ -1,40 +1,37 @@ -import { getSelectedAlgorithm } from './utils.js'; -import { - secretInput, - secretBase64Checkbox, -} from '../dom-elements.js'; +import { getSelectedAlgorithm } from "./utils.js"; +import { secretInput, secretBase64Checkbox } from "../dom-elements.js"; -import log from 'loglevel'; -import tippy from 'tippy.js'; -import b64u from 'base64url'; +import log from "loglevel"; +import tippy from "tippy.js"; +import b64u from "base64url"; export function minSecretLengthCheck(event) { - const alg = getSelectedAlgorithm(); - if(alg.indexOf('HS') !== 0) { - log.error(`Secret input tooltip handler for wrong algorithm: ${alg}`); - return; - } + const alg = getSelectedAlgorithm(); + if (alg.indexOf("HS") !== 0) { + log.error(`Secret input tooltip handler for wrong algorithm: ${alg}`); + return; + } - const algBits = parseInt(alg.substr(2)); - const inputBits = secretBase64Checkbox.checked ? - b64u.decode(secretInput.value).length * 8 : - Buffer.from(secretInput.value).length * 8; + const algBits = parseInt(alg.substr(2)); + const inputBits = secretBase64Checkbox.checked ? + b64u.toBuffer(secretInput.value).length * 8 : + Buffer.from(secretInput.value).length * 8; - if(inputBits < algBits) { - if(!secretInput._tippy.state.visible) { - secretInput._tippy.show(); + if (inputBits < algBits) { + if (!secretInput._tippy.state.visible) { + secretInput._tippy.show(); + } + } else { + secretInput._tippy.hide(); } - } else { - secretInput._tippy.hide(); - } } export function setupSecretLengthTooltip() { - tippy(secretInput, { - trigger: 'manual', - placement: 'right', - arrow: true, - arrowTransform: 'scale(0.75)', - size: 'large' - }); -} + tippy(secretInput, { + trigger: "manual", + placement: "right", + arrow: true, + arrowTransform: "scale(0.75)", + size: "large", + }); +} \ No newline at end of file From 9ab519a2f49b4ae97cb9915de166f1119f7264ce Mon Sep 17 00:00:00 2001 From: Stefan Saasen <746+juretta@users.noreply.github.com> Date: Thu, 17 Dec 2020 09:02:55 +0100 Subject: [PATCH 463/611] Update 11-Haskell.json The Haskell `jwt` library is maintained by Brian McKenna --- views/website/libraries/11-Haskell.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/11-Haskell.json b/views/website/libraries/11-Haskell.json index 673889ba..6b35d5ac 100644 --- a/views/website/libraries/11-Haskell.json +++ b/views/website/libraries/11-Haskell.json @@ -29,10 +29,10 @@ "ps384": false, "ps512": false }, - "authorUrl": "https://bitbucket.org/ssaasen", - "authorName": "Stefan Saasen", + "authorUrl": "https://hackage.haskell.org/package/jwt", + "authorName": "Brian McKenna", "gitHubRepoPath": null, - "repoUrl": "https://bitbucket.org/ssaasen/haskell-jwt", + "repoUrl": "https://bitbucket.org/puffnfresh/haskell-jwt", "installCommandHtml": "cabal install jwt" }, { From 89c4705d2ec8548a844d101c39ed23acafaf1237 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Tue, 12 Jan 2021 15:07:37 +0100 Subject: [PATCH 464/611] feat: add "typ" (Type) Header Parameter check --- views/website/libraries/2-Node.js.json | 1 + views/website/libraries/4-JavaScript.json | 1 + views/website/libraries/support/get-libs-data.js | 2 +- views/website/libraries/template.pug | 4 ++++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json index 08584714..fbbe4d26 100644 --- a/views/website/libraries/2-Node.js.json +++ b/views/website/libraries/2-Node.js.json @@ -49,6 +49,7 @@ "nbf": true, "iat": true, "jti": true, + "typ": true, "hs256": true, "hs384": true, "hs512": true, diff --git a/views/website/libraries/4-JavaScript.json b/views/website/libraries/4-JavaScript.json index 531c8366..8fd6e50a 100644 --- a/views/website/libraries/4-JavaScript.json +++ b/views/website/libraries/4-JavaScript.json @@ -16,6 +16,7 @@ "nbf": true, "iat": true, "jti": true, + "typ": true, "hs256": true, "hs384": true, "hs512": true, diff --git a/views/website/libraries/support/get-libs-data.js b/views/website/libraries/support/get-libs-data.js index 5df52911..5e8ac423 100644 --- a/views/website/libraries/support/get-libs-data.js +++ b/views/website/libraries/support/get-libs-data.js @@ -37,7 +37,7 @@ function getLibs() { let orderedKeys = ['sign', 'verify', 'iss', 'sub', 'aud', 'exp', - 'nbf', 'iat', 'jti']; + 'nbf', 'iat', 'jti', 'typ']; for(let i = 0; i < orderedKeys.length; ++i) { r.support[orderedKeys[i]] = diff --git a/views/website/libraries/template.pug b/views/website/libraries/template.pug index 1364f705..bb64bef2 100644 --- a/views/website/libraries/template.pug +++ b/views/website/libraries/template.pug @@ -44,6 +44,10 @@ article(data-accordion, class=`accordion ${lang.uniqueClass}`) i(class=lib.support.jti ? 'icon-budicon-500' : 'icon-budicon-501') code jti | check + p + i(class=lib.support.typ ? 'icon-budicon-500' : (lib.support.typ !== undefined ? 'icon-budicon-501' : 'icon-unknown')) + code typ + | check .column p i(class=lib.support.hs256 ? 'icon-budicon-500' : 'icon-budicon-501') From 15fb25603acc4538d9ebc0f5b129cd414740afcb Mon Sep 17 00:00:00 2001 From: Glitched Polygons <37942667+GlitchedPolygons@users.noreply.github.com> Date: Wed, 13 Jan 2021 22:40:00 +0100 Subject: [PATCH 465/611] Update 20-C.json Implemented l8w8jwt support for ES256K (see pull-request 11) https://github.com/GlitchedPolygons/l8w8jwt --- views/website/libraries/20-C.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index fa2c4388..22cb5bd7 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -88,7 +88,8 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "es256k": true }, "authorUrl": "https://github.com/GlitchedPolygons", "authorName": "Glitched Polygons", From f90b915da12cd4b6ef7a7defcffb3f72eeed5034 Mon Sep 17 00:00:00 2001 From: Glitched Polygons <37942667+GlitchedPolygons@users.noreply.github.com> Date: Fri, 15 Jan 2021 23:12:45 +0100 Subject: [PATCH 466/611] Update 20-C.json EdDSA support was added to l8w8jwt (C library). --- views/website/libraries/20-C.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index 22cb5bd7..817eb5a1 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -89,7 +89,8 @@ "ps256": true, "ps384": true, "ps512": true, - "es256k": true + "es256k": true, + "eddsa": true }, "authorUrl": "https://github.com/GlitchedPolygons", "authorName": "Glitched Polygons", From 2f81e4cb6bd7c90d4d12703792feed6504846909 Mon Sep 17 00:00:00 2001 From: Glitched Polygons <37942667+GlitchedPolygons@users.noreply.github.com> Date: Tue, 19 Jan 2021 19:59:27 +0100 Subject: [PATCH 467/611] Update 20-C.json Implemented "typ" check (l8w8jwt repo commit 74e38a7c). --- views/website/libraries/20-C.json | 1 + 1 file changed, 1 insertion(+) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index 817eb5a1..4d5ba25e 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -77,6 +77,7 @@ "nbf": true, "iat": true, "jti": true, + "typ": true, "hs256": true, "hs384": true, "hs512": true, From 35939900e82642699c72880ed26e211547a40fad Mon Sep 17 00:00:00 2001 From: lestrrat <49281+lestrrat@users.noreply.github.com> Date: Sun, 24 Jan 2021 21:21:21 +0900 Subject: [PATCH 468/611] Update 9-Go.json github.com/lestrrat-go/jwx supports EdDSA since v1.0.7 https://github.com/lestrrat-go/jwx/releases/tag/v1.0.7 --- views/website/libraries/9-Go.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 419af8af..f8d7b2a3 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -182,7 +182,8 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": true }, "authorUrl": "https://github.com/lestrrat", "authorName": "lestrrat", From deb1cc561d632969c49a90ad6829df268712d50b Mon Sep 17 00:00:00 2001 From: Alexander Batishchev Date: Sun, 24 Jan 2021 14:48:05 -0800 Subject: [PATCH 469/611] Update 0-.NET.json --- views/website/libraries/0-.NET.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/views/website/libraries/0-.NET.json b/views/website/libraries/0-.NET.json index a3beef25..642be0b6 100644 --- a/views/website/libraries/0-.NET.json +++ b/views/website/libraries/0-.NET.json @@ -130,19 +130,19 @@ "support": { "sign": true, "verify": true, - "iss": false, - "sub": false, - "aud": false, + "iss": true, + "sub": true, + "aud": true, "exp": true, "nbf": true, - "iat": false, + "iat": true, "jti": false, "hs256": true, "hs384": true, "hs512": true, "rs256": true, - "rs384": false, - "rs512": false, + "rs384": true, + "rs512": true, "es256": false, "es384": false, "es512": false, @@ -151,7 +151,7 @@ "ps512": false }, "authorUrl": "https://github.com/jwt-dotnet/jwt", - "authorName": "Alexander Batishchev, John Sheehan, Michael Lehenbauer", + "authorName": "Alexander Batishchev", "gitHubRepoPath": "jwt-dotnet/jwt", "repoUrl": "https://github.com/jwt-dotnet/jwt", "installCommandHtml": "Install-Package
    JWT" From 24f3baad209a0744c4afd7d8c16d31e96c0e71f9 Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 25 Jan 2021 13:48:35 +0100 Subject: [PATCH 470/611] Add cannonical links to the pages --- views/title.pug | 1 + views/website/introduction.pug | 1 + 2 files changed, 2 insertions(+) diff --git a/views/title.pug b/views/title.pug index 3aa95947..ab9c5a17 100644 --- a/views/title.pug +++ b/views/title.pug @@ -5,3 +5,4 @@ block meta meta(name='viewport', content='width=device-width, minimum-scale=1.0, maximum-scale=1.0') meta(name='author', content='auth0.com') meta(name='description', content='JSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is digitally signed using JSON Web Signature (JWS).') + link(rel="canonical", href="https://jwt.io/") diff --git a/views/website/introduction.pug b/views/website/introduction.pug index 76e96e4d..0ac91ef2 100644 --- a/views/website/introduction.pug +++ b/views/website/introduction.pug @@ -8,6 +8,7 @@ block meta meta(name='author', content='auth0.com') meta(name='description', content='JSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. Learn more about them, how they work, when and why you should use JWTs.') meta(name='canonical', content='https://auth0.com/learn/json-web-tokens/') + link(rel="canonical", href="https://jwt.io/introduction") block twittercard meta(name='twitter:card', content='summary_large_image') From e5b9595a8455e214f0b9e5bc231fa418d0b149f8 Mon Sep 17 00:00:00 2001 From: Alexander Batishchev Date: Sat, 6 Feb 2021 12:51:18 -0800 Subject: [PATCH 471/611] Added ES* to JWT.NET --- views/website/libraries/0-.NET.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/0-.NET.json b/views/website/libraries/0-.NET.json index 642be0b6..b473bc2b 100644 --- a/views/website/libraries/0-.NET.json +++ b/views/website/libraries/0-.NET.json @@ -143,9 +143,9 @@ "rs256": true, "rs384": true, "rs512": true, - "es256": false, - "es384": false, - "es512": false, + "es256": true, + "es384": true, + "es512": true, "ps256": false, "ps384": false, "ps512": false From 2a334984bf8a8d9a8aec959bcb570b6dbb0cfcc9 Mon Sep 17 00:00:00 2001 From: Alexander Batishchev Date: Sat, 6 Feb 2021 12:54:43 -0800 Subject: [PATCH 472/611] Update 0-.NET.json --- views/website/libraries/0-.NET.json | 62 ++++++++++++++--------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/views/website/libraries/0-.NET.json b/views/website/libraries/0-.NET.json index b473bc2b..7f0b588e 100644 --- a/views/website/libraries/0-.NET.json +++ b/views/website/libraries/0-.NET.json @@ -35,6 +35,37 @@ "repoUrl": "https://github.com/MSOpenTech/azure-activedirectory-identitymodel-extensions-for-dotnet", "installCommandHtml": "Install-Package
    System.IdentityModel.Tokens.Jwt" }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/jwt-dotnet/jwt", + "authorName": "Alexander Batishchev", + "gitHubRepoPath": "jwt-dotnet/jwt", + "repoUrl": "https://github.com/jwt-dotnet/jwt", + "installCommandHtml": "Install-Package
    JWT.NET" + }, { "minimumVersion": null, "support": { @@ -125,37 +156,6 @@ "repoUrl": "https://github.com/nuscien/trivial", "installCommandHtml": "Install-Package
    Trivial" }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true, - "ps256": false, - "ps384": false, - "ps512": false - }, - "authorUrl": "https://github.com/jwt-dotnet/jwt", - "authorName": "Alexander Batishchev", - "gitHubRepoPath": "jwt-dotnet/jwt", - "repoUrl": "https://github.com/jwt-dotnet/jwt", - "installCommandHtml": "Install-Package
    JWT" - }, { "minimumVersion": null, "support": { From c2adc15678c76b1950613e3bdc687aced119455e Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 9 Feb 2021 22:24:07 +0100 Subject: [PATCH 473/611] Adding new PowerShell library for JWT creation. --- views/website/libraries/32-PowerShell.json | 33 +++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/32-PowerShell.json b/views/website/libraries/32-PowerShell.json index bda25055..48ff5e89 100644 --- a/views/website/libraries/32-PowerShell.json +++ b/views/website/libraries/32-PowerShell.json @@ -34,7 +34,38 @@ "gitHubRepoPath": "SP3269/posh-jwt", "repoUrl": "https://github.com/SP3269/posh-jwt", "installCommandHtml": "Install-Module JWT" + }, + { + "minimumVersion": "6.0.0", + "support": { + "sign": true, + "verify": true, + "iss": false, + "sub": false, + "aud": false, + "exp": false, + "nbf": false, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/DigitalAXPP", + "authorName": "Alexander Piepenhagen", + "gitHubRepoPath": "DigitalAXPP/jwtPS", + "repoUrl": "https://github.com/DigitalAXPP/jwtPS", + "installCommandHtml": "Install-Module jwtPS" } ] } - \ No newline at end of file + From 37d7527ada03d307cb70400669a724d18ecabdd2 Mon Sep 17 00:00:00 2001 From: Paolo Date: Tue, 16 Feb 2021 08:25:15 +0100 Subject: [PATCH 474/611] Added ECDSA support to Delphi JOSE and JWT --- views/website/libraries/23-Delphi.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/views/website/libraries/23-Delphi.json b/views/website/libraries/23-Delphi.json index fa8e50f3..04a13b48 100644 --- a/views/website/libraries/23-Delphi.json +++ b/views/website/libraries/23-Delphi.json @@ -16,18 +16,21 @@ "nbf": true, "iat": true, "jti": true, + "typ": true, "hs256": true, "hs384": true, "hs512": true, "rs256": true, "rs384": true, "rs512": true, - "es256": false, - "es384": false, - "es512": false, + "es256": true, + "es256k": true, + "es384": true, + "es512": true, "ps256": false, "ps384": false, - "ps512": false + "ps512": false, + "eddsa": false }, "authorUrl": "https://github.com/paolo-rossi", "authorName": "Paolo Rossi", From ec240eea42b643cc4c942422cbb108859cdc8d45 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 19 Feb 2021 23:31:47 +0100 Subject: [PATCH 475/611] Update 32-PowerShell.json Adding new payload verification feature. --- views/website/libraries/32-PowerShell.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/views/website/libraries/32-PowerShell.json b/views/website/libraries/32-PowerShell.json index 48ff5e89..81f4594a 100644 --- a/views/website/libraries/32-PowerShell.json +++ b/views/website/libraries/32-PowerShell.json @@ -40,13 +40,13 @@ "support": { "sign": true, "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, "hs256": true, "hs384": true, "hs512": true, From 786ea061f0d7c233fcd1215184298129aa6a5dad Mon Sep 17 00:00:00 2001 From: lestrrat <49281+lestrrat@users.noreply.github.com> Date: Mon, 22 Feb 2021 23:37:50 +0900 Subject: [PATCH 476/611] Update 9-Go.json github.com/lestrrat-go/jwx supports es256k as of v1.1.3 --- views/website/libraries/9-Go.json | 1 + 1 file changed, 1 insertion(+) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index f8d7b2a3..d6540459 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -210,6 +210,7 @@ "rs384": true, "rs512": true, "es256": true, + "es256k": true, "es384": true, "es512": true }, From 9f65e7593ba0ee2cc234b9f749221f9076359bca Mon Sep 17 00:00:00 2001 From: lestrrat <49281+lestrrat@users.noreply.github.com> Date: Tue, 23 Feb 2021 00:09:10 +0900 Subject: [PATCH 477/611] Update 9-Go.json Wrong line was edited in #527 --- views/website/libraries/9-Go.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index d6540459..35bf2153 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -178,6 +178,7 @@ "rs384": true, "rs512": true, "es256": true, + "es256k": true, "es384": true, "es512": true, "ps256": true, @@ -210,7 +211,6 @@ "rs384": true, "rs512": true, "es256": true, - "es256k": true, "es384": true, "es512": true }, From f8c3c5c37aae59f314ce0bdbebd127334d5dcd9e Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 25 Feb 2021 09:16:54 +0100 Subject: [PATCH 478/611] Remove chrome extension storage permission --- manifest.json | 1 - 1 file changed, 1 deletion(-) diff --git a/manifest.json b/manifest.json index 503a3894..6c536aaf 100644 --- a/manifest.json +++ b/manifest.json @@ -35,7 +35,6 @@ "permissions": [ "activeTab", "cookies", - "storage", "clipboardRead", "clipboardWrite" ] From f7eeebd7002a3a447cde3b09def24da6da1bfa12 Mon Sep 17 00:00:00 2001 From: Sambego Date: Thu, 25 Feb 2021 09:17:04 +0100 Subject: [PATCH 479/611] 3.3.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec5e429b..b21b2393 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "jwt.io", - "version": "3.2.0", + "version": "3.3.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "jwt.io", - "version": "3.2.0", + "version": "3.3.0", "dependencies": { "@octokit/rest": "^18.0.12", "dotenv": "^8.2.0", diff --git a/package.json b/package.json index 4df340ae..b4105f15 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jwt.io", - "version": "3.2.0", + "version": "3.3.0", "repository": { "type": "git", "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" From dfc5332d673bb39f7f1682e77adf0584587aeadc Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 4 Mar 2021 00:06:08 +0100 Subject: [PATCH 480/611] Update 32-PowerShell.json --- views/website/libraries/32-PowerShell.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/32-PowerShell.json b/views/website/libraries/32-PowerShell.json index 81f4594a..01652cc3 100644 --- a/views/website/libraries/32-PowerShell.json +++ b/views/website/libraries/32-PowerShell.json @@ -53,9 +53,9 @@ "rs256": true, "rs384": true, "rs512": true, - "es256": false, - "es384": false, - "es512": false, + "es256": true, + "es384": true, + "es512": true, "ps256": false, "ps384": false, "ps512": false From 4beef1e4cc7c7229cc0831b4a2fdb67f9f7f24ca Mon Sep 17 00:00:00 2001 From: Nicolas Mora Date: Sun, 7 Mar 2021 08:28:05 -0500 Subject: [PATCH 481/611] Complete rhonabwy capabilities --- views/website/libraries/20-C.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index 4d5ba25e..3f5ea023 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -142,6 +142,7 @@ "nbf": true, "iat": true, "jti": true, + "typ": true, "hs256": true, "hs384": true, "hs512": true, @@ -154,7 +155,8 @@ "ps256": true, "ps384": true, "ps512": true, - "eddsa": true + "eddsa": true, + "es256k": false }, "authorUrl": "https://babelouest.github.io/", "authorName": "babelouest", From 044a96e5465e67b432581ebfd355f5585a86626c Mon Sep 17 00:00:00 2001 From: Nicolas Mora Date: Mon, 8 Mar 2021 07:23:39 -0500 Subject: [PATCH 482/611] Set es256k to true for rhonabwy --- views/website/libraries/20-C.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index 3f5ea023..6f55c14c 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -156,7 +156,7 @@ "ps384": true, "ps512": true, "eddsa": true, - "es256k": false + "es256k": true }, "authorUrl": "https://babelouest.github.io/", "authorName": "babelouest", From 9627d8557e1ed45cb4e798bb42e906d9d2211e3e Mon Sep 17 00:00:00 2001 From: Nicolas Mora Date: Sun, 14 Mar 2021 18:02:46 -0400 Subject: [PATCH 483/611] Remove es256k support from rhonabwy --- views/website/libraries/20-C.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index 6f55c14c..3f5ea023 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -156,7 +156,7 @@ "ps384": true, "ps512": true, "eddsa": true, - "es256k": true + "es256k": false }, "authorUrl": "https://babelouest.github.io/", "authorName": "babelouest", From 2bd0a867b4954f44b768258c539e5ba04dc71fea Mon Sep 17 00:00:00 2001 From: Andrii Danyleiko Date: Thu, 27 May 2021 02:26:03 +0200 Subject: [PATCH 484/611] Add es256k alg for PyJWT from version 2.1.0 pyjwt supports es256k --- views/website/libraries/1-Python.json | 1 + 1 file changed, 1 insertion(+) diff --git a/views/website/libraries/1-Python.json b/views/website/libraries/1-Python.json index 98a3f5d1..bbe9ed48 100644 --- a/views/website/libraries/1-Python.json +++ b/views/website/libraries/1-Python.json @@ -23,6 +23,7 @@ "rs384": true, "rs512": true, "es256": true, + "es256k": true, "es384": true, "es512": true, "ps256": true, From 40d0b52c01a3dacbad83ac4a04c91733fde4d823 Mon Sep 17 00:00:00 2001 From: Weston Schmidt Date: Thu, 10 Jun 2021 20:55:16 -0700 Subject: [PATCH 485/611] Add cjwt link. Signed-off-by: Weston Schmidt --- views/website/libraries/20-C.json | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/views/website/libraries/20-C.json b/views/website/libraries/20-C.json index 3f5ea023..6dd0bbc0 100644 --- a/views/website/libraries/20-C.json +++ b/views/website/libraries/20-C.json @@ -163,6 +163,40 @@ "gitHubRepoPath": "babelouest/rhonabwy", "repoUrl": "https://github.com/babelouest/rhonabwy", "installCommandHtml": "Download release package or install from source" + }, + { + "minimumVersion": "2.0.0", + "support": { + "sign": false, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "typ": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true, + "eddsa": false, + "es256k": false + }, + "authorUrl": "https://comcast.github.io/", + "authorName": "Comcast", + "gitHubRepoPath": "xmidt-org/cjwt", + "repoUrl": "https://github.com/xmidt-org/cjwt", + "installCommandHtml": "git clone https://github.com/xmidt-org/cjwt.git" } ] } From 6614f26cc42bf9c586d174d9a931c3cc2142bc16 Mon Sep 17 00:00:00 2001 From: Christian Banse Date: Sun, 20 Jun 2021 11:40:56 +0200 Subject: [PATCH 486/611] A new home for dgrijalva/jwt-go --- views/website/libraries/9-Go.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 35bf2153..9938354c 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -14,7 +14,7 @@ "aud": false, "exp": true, "nbf": true, - "iat": false, + "iat": true, "jti": false, "hs256": true, "hs384": true, @@ -29,11 +29,11 @@ "ps384": false, "ps512": false }, - "authorUrl": "https://github.com/dgrijalva", - "authorName": "dgrijalva", - "gitHubRepoPath": "dgrijalva/jwt-go", - "repoUrl": "https://github.com/dgrijalva/jwt-go", - "installCommandHtml": "go get github.com/dgrijalva/jwt-go" + "authorUrl": "https://github.com/golang-jwt", + "authorName": "golang-jwt", + "gitHubRepoPath": "golang-jwt/jwt", + "repoUrl": "https://github.com/golang-jwt/jwt", + "installCommandHtml": "go get github.com/golang-jwt/jwt" }, { "minimumVersion": null, @@ -474,4 +474,4 @@ "installCommandHtml": "go get github.com/kataras/jwt" } ] -} +} \ No newline at end of file From 42f8975d4410e182cb9bfacdd0b122a90e53a471 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Wed, 14 Jul 2021 06:46:34 -0400 Subject: [PATCH 487/611] add typ support to jwcrypto typ support was added in jwcrypto master tree --- views/website/libraries/1-Python.json | 1 + 1 file changed, 1 insertion(+) diff --git a/views/website/libraries/1-Python.json b/views/website/libraries/1-Python.json index bbe9ed48..4da66b7f 100644 --- a/views/website/libraries/1-Python.json +++ b/views/website/libraries/1-Python.json @@ -80,6 +80,7 @@ "nbf": true, "iat": true, "jti": true, + "typ": true, "hs256": true, "hs384": true, "hs512": true, From 010b9419f0bf5b22eb8543d2ab58590c50df3071 Mon Sep 17 00:00:00 2001 From: Tobias Hagemann Date: Wed, 28 Jul 2021 10:22:57 +0200 Subject: [PATCH 488/611] Update 19-Swift.json --- views/website/libraries/19-Swift.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/19-Swift.json b/views/website/libraries/19-Swift.json index 1b10c86c..482b87bf 100644 --- a/views/website/libraries/19-Swift.json +++ b/views/website/libraries/19-Swift.json @@ -142,9 +142,9 @@ "nbf": false, "iat": false, "jti": false, - "hs256": false, - "hs384": false, - "hs512": false, + "hs256": true, + "hs384": true, + "hs512": true, "rs256": true, "rs384": true, "rs512": true, From 019cd0fe9890116a346e00b67941085bd94b7914 Mon Sep 17 00:00:00 2001 From: Christian Banse Date: Tue, 3 Aug 2021 15:17:24 +0200 Subject: [PATCH 489/611] golang-jwt: Added support for EdDSA https://github.com/golang-jwt/jwt/releases/tag/v3.2.2 added support for EdDSA signatures --- views/website/libraries/9-Go.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 9938354c..657fdbef 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -27,7 +27,8 @@ "es512": true, "ps256": false, "ps384": false, - "ps512": false + "ps512": false, + "eddsa": true }, "authorUrl": "https://github.com/golang-jwt", "authorName": "golang-jwt", @@ -474,4 +475,4 @@ "installCommandHtml": "go get github.com/kataras/jwt" } ] -} \ No newline at end of file +} From 2d51ec36e94488f8b1f2526876decc41e85e7d1a Mon Sep 17 00:00:00 2001 From: Christian Banse Date: Tue, 3 Aug 2021 20:06:31 +0200 Subject: [PATCH 490/611] Updated golang-jwt feature set * We just released v4, so this should be set as the default * We require a minimum Go version of 1.15 * We do support `aud` verification. Fixes https://github.com/golang-jwt/jwt/issues/65 --- views/website/libraries/9-Go.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 657fdbef..7cd56639 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -5,13 +5,13 @@ "bgColor": "rgb(71, 182, 196)", "libs": [ { - "minimumVersion": null, + "minimumVersion": "1.15", "support": { "sign": true, "verify": true, "iss": false, "sub": false, - "aud": false, + "aud": true, "exp": true, "nbf": true, "iat": true, @@ -34,7 +34,7 @@ "authorName": "golang-jwt", "gitHubRepoPath": "golang-jwt/jwt", "repoUrl": "https://github.com/golang-jwt/jwt", - "installCommandHtml": "go get github.com/golang-jwt/jwt" + "installCommandHtml": "go get github.com/golang-jwt/jwt/v4" }, { "minimumVersion": null, From 77d3a7ae8b25a081c71bf6327fe59933910a2258 Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Wed, 4 Aug 2021 09:54:53 +0200 Subject: [PATCH 491/611] Update minimum version --- views/website/libraries/9-Go.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 7cd56639..5d1852c6 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -5,7 +5,7 @@ "bgColor": "rgb(71, 182, 196)", "libs": [ { - "minimumVersion": "1.15", + "minimumVersion": "v3.2.2", "support": { "sign": true, "verify": true, From 1dd2645280f433dba2c324ceb68fe88bf1684b6b Mon Sep 17 00:00:00 2001 From: Dominik Thalhammer Date: Wed, 18 Aug 2021 09:19:32 +0200 Subject: [PATCH 492/611] Update Thalhammer/jwt-cpp jwt-cpp has supported both eddsa and the "typ" check for quite some time now and just recently got official support for es256k. --- views/website/libraries/21-C++.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/21-C++.json b/views/website/libraries/21-C++.json index e9992ecf..0a38709c 100644 --- a/views/website/libraries/21-C++.json +++ b/views/website/libraries/21-C++.json @@ -48,6 +48,7 @@ "nbf": true, "iat": true, "jti": true, + "typ": true, "hs256": true, "hs384": true, "hs512": true, @@ -55,11 +56,13 @@ "rs384": true, "rs512": true, "es256": true, + "es256k": true, "es384": true, "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": true }, "authorUrl": "https://github.com/Thalhammer", "authorName": "Dominik Thalhammer", From 56256c4356b067a98a728228b2a6ace394f3ecfb Mon Sep 17 00:00:00 2001 From: Dominik Thalhammer Date: Wed, 18 Aug 2021 09:27:59 +0200 Subject: [PATCH 493/611] Update language-schema.js to include typ field The typ field is expected and in use by multiple libraries, yet it is missing in the schema. --- views/website/libraries/support/language-schema.js | 1 + 1 file changed, 1 insertion(+) diff --git a/views/website/libraries/support/language-schema.js b/views/website/libraries/support/language-schema.js index 7fabbb68..34a364aa 100644 --- a/views/website/libraries/support/language-schema.js +++ b/views/website/libraries/support/language-schema.js @@ -73,6 +73,7 @@ module.exports = { nbf: { type: 'boolean' }, iat: { type: 'boolean' }, jti: { type: 'boolean' }, + typ: { type: 'boolean' }, hs256: { type: 'boolean' }, hs384: { type: 'boolean' }, hs512: { type: 'boolean' }, From c34e96ac3f7582a6147d4217a6235b7dc7523599 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 18 Aug 2021 18:19:09 +0200 Subject: [PATCH 494/611] add deno --- img/website/33.png | Bin 0 -> 17540 bytes views/website/libraries/33-Deno.json | 42 +++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 img/website/33.png create mode 100644 views/website/libraries/33-Deno.json diff --git a/img/website/33.png b/img/website/33.png new file mode 100644 index 0000000000000000000000000000000000000000..dcd89492033111844729410054f7c688ddaf7520 GIT binary patch literal 17540 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 SF2!R20000 Date: Tue, 14 Sep 2021 16:29:47 +0200 Subject: [PATCH 495/611] Update debugger extension version --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 6c536aaf..bf3f2d35 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "JWT Debugger", "description": "The JWT.io debugger as a Web Extension", - "version": "3.2.0", + "version": "3.3.0", "browser_action": { "default_icon": "img/favicon/favicon-96x96.png", From e0419c6399d40b0d0090ca19fc4e91fbd5f63131 Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 14 Sep 2021 16:55:52 +0200 Subject: [PATCH 496/611] Mave navigation to a separate view block --- views/website/navigation.pug | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 views/website/navigation.pug diff --git a/views/website/navigation.pug b/views/website/navigation.pug new file mode 100644 index 00000000..fdc38ac0 --- /dev/null +++ b/views/website/navigation.pug @@ -0,0 +1,25 @@ +nav.navbar.closed + .container + .top-mobile + .menu-trigger + span + + a.brand(href='http://github.com/') + img(src='http://github.com/img/pic_logo.svg' alt='JWT logo').icon + img(src='http://github.com/img/logo.svg' alt='JWT logo').logo + + nav.menu + a(href='http://github.com/').scrollto Debugger + a(href='http://github.com/libraries').scrollto Libraries + a(href='http://github.com/introduction') Introduction + a(href='https://community.auth0.com/c/identity/jwt', target='_blank') Ask + + .social + a.a0(href='https://auth0.com/developers?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') + span.by-text Crafted by + img(src='http://github.com/img/pic_logo_ft.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication') + span.crafted-by__question-mark ? + + a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") + | Supported by + img(src='http://github.com/img/ico_logo.svg', alt='Supported by Auth0 - JWT.io Token Based Authentication') \ No newline at end of file From fac715bad35d3141351d950536e51ea01409bf12 Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 14 Sep 2021 16:56:14 +0200 Subject: [PATCH 497/611] Move libraries from homepage to a separate page --- server.js | 6 ++- stylus/website/index.styl | 1 + views/website/index.pug | 31 +------------- views/website/introduction.pug | 27 ------------ views/website/layout.pug | 2 + views/website/libraries.pug | 78 ++++++++++++++++++++++------------ 6 files changed, 61 insertions(+), 84 deletions(-) diff --git a/server.js b/server.js index cac04cbc..92c4ae77 100644 --- a/server.js +++ b/server.js @@ -20,13 +20,17 @@ if (process.env.NODE_ENV === "production") { // app.use(fetchGithubStars); app.use(express.static("dist/website")); app.get("/", function(req, res) { - res.render("index", { languages: languages }); + res.render("index"); }); app.get("/introduction", function(req, res) { res.render("introduction"); }); +app.get("/libraries", function(req, res) { + res.render("libraries", { languages: languages }); +}); + // Fallback for the homepage JWT handbook CTA A/B experiment we ran app.get("/home", function(req, res) { res.redirect("/"); diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 033fcc64..5d9a288d 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -714,6 +714,7 @@ body float left .filter display inline-block + margin 0 auto 2rem auto +breakpoint("tablet") float right diff --git a/views/website/index.pug b/views/website/index.pug index 6b43a18e..b7b454e5 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -1,33 +1,6 @@ extends layout - + block content - nav.navbar.closed - .container - .top-mobile - .menu-trigger - span - - a.brand(href='http://github.com/') - img(src='http://github.com/img/pic_logo.svg' alt='JWT logo').icon - img(src='http://github.com/img/logo.svg' alt='JWT logo').logo - - nav.menu - a(href='#debugger-io').scrollto Debugger - a(href='#libraries-io').scrollto Libraries - a(href='http://github.com/introduction') Introduction - a(href='https://community.auth0.com/c/identity/jwt', target='_blank') Ask - a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! - - .social - a.a0(href='https://auth0.com/developers?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') - span.by-text Crafted by - img(src='http://github.com/img/pic_logo_ft.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication') - span.crafted-by__question-mark ? - - a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") - | Supported by - img(src='http://github.com/img/ico_logo.svg', alt='Supported by Auth0 - JWT.io Token Based Authentication') - section.banner-jwt .container a.logo(href='http://github.com/') @@ -45,8 +18,6 @@ block content include token-editor.pug - include libraries.pug - include assets.pug include counter.pug diff --git a/views/website/introduction.pug b/views/website/introduction.pug index 0ac91ef2..4de19604 100644 --- a/views/website/introduction.pug +++ b/views/website/introduction.pug @@ -29,33 +29,6 @@ block opengraph meta(property='og:image:height', content='630') block content - nav.navbar.closed - .container - .top-mobile - .menu-trigger - span - - a.brand(href='http://github.com/') - img(src='http://github.com/img/pic_logo.svg' alt='JWT logo').icon - img(src='http://github.com/img/logo.svg' alt='JWT logo').logo - - nav.menu - a(href='http://github.com/#debugger-io').scrollto Debugger - a(href='http://github.com/#libraries-io').scrollto Libraries - a(href='http://github.com/introduction').active Introduction - a(href='https://community.auth0.com/', target='_blank') Ask - a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! - - .social - a.a0(href='https://auth0.com/developers?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') - span.by-text Crafted by - img(src='http://github.com/img/pic_logo_ft.svg', alt='Crafted by Auth0 - Token Based Authentication') - span.crafted-by__question-mark ? - - a.supported(href='https://auth0.com/developers/', target="_blank") - | Supported by - img(src='http://github.com/img/ico_logo.svg' alt='Supported by Auth0 - JWT.io Token Based Authentication') - section.banner-jwt .container a.logo(href='http://github.com/') diff --git a/views/website/layout.pug b/views/website/layout.pug index cdb529b2..b2755238 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -53,6 +53,8 @@ html(lang='en') iframe(src='https://www.googletagmanager.com/ns.html?id=GTM-W7FRLJ', height='0', width='0', style='display:none;visibility:hidden') // End Google Tag Manager (noscript) + include ./navigation.pug + block content footer diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 3aa27a19..7ced59c6 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -1,30 +1,56 @@ -section#libraries-io.libraries-jwt - .container - .title-header - h1 Libraries for Token Signing/Verification +extends layout + +block meta + title JSON Web Token Introduction - jwt.io + meta(charset='utf-8') + meta(http-equiv='X-UA-Compatible', content='IE=edge') + meta(name='viewport', content='width=device-width, minimum-scale=1.0, maximum-scale=1.0') + meta(name='author', content='auth0.com') + meta(name='description', content='JSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. Learn more about them, how they work, when and why you should use JWTs.') + meta(name='canonical', content='https://auth0.com/learn/json-web-tokens/') + link(rel="canonical", href="https://jwt.io/introduction") - .filter - label(for='libraries-select') Filter by - .jwt-select - select#libraries-select - option(value='*', selected='') All - // Languages must be in alphabetic order - - - const sortedLangs = Array.from(languages); - sortedLangs.sort((a, b) => a.name.localeCompare(b.name)); - each lang in sortedLangs - option(value=`.${lang.uniqueClass}`) #{lang.name} +block twittercard + meta(name='twitter:card', content='summary_large_image') + meta(name='twitter:creator', content='@auth0') + meta(name='twitter:title', content='JWT.IO - JSON Web Tokens Introduction') + meta(name='twitter:description', content='Learn about JSON Web Tokens, what are they, how they work, when and why you should use them.') + meta(name='twitter:image', content='http://jwt.io/img/twitter-card.png') - .warning - b Warning: - a(href='https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/' title='Learn more about JWT vulnerabilities') Learn more about critical vulnerabilities - | in JSON Web Token libraries with asymmetric keys. +block opengraph + meta(property='og:type', content='website') + meta(property='og:title', content='JWT.IO - JSON Web Tokens Introduction') + meta(property='og:description', content='Learn about JSON Web Tokens, what are they, how they work, when and why you should use them.') + meta(property='og:locale', content='en_US') + meta(property='og:url', content='http://jwt.io/') + meta(property='og:image', content='http://jwt.io/img/facebook-card.png') + meta(property='og:image:type', content='image/png') + meta(property='og:image:width', content='1200') + meta(property='og:image:height', content='630') - svg(height='48', viewbox='0 0 48 48', width='48', xmlns='http://www.w3.org/2000/svg') - path(d='M-838-2232H562v3600H-838z', fill='none') - path(d='M16 10v28l22-14z') +block content + section.banner-jwt + .container + a.logo(href='http://github.com/') + img(src='http://github.com/img/pic_logo.svg' alt='JWT logo') + + h1 Libraries for Token Signing/Verification + section#libraries-io.libraries-jwt + .container + .title-header + .filter + label(for='libraries-select') Filter by + .jwt-select + select#libraries-select + option(value='*', selected='') All + // Languages must be in alphabetic order + - + const sortedLangs = Array.from(languages); + sortedLangs.sort((a, b) => a.name.localeCompare(b.name)); + each lang in sortedLangs + option(value=`.${lang.uniqueClass}`) #{lang.name} - .libraries-sv(data-accordion-group) - each lang in languages - each lib in lang.libs - include libraries/template.pug + .libraries-sv(data-accordion-group) + each lang in languages + each lib in lang.libs + include libraries/template.pug From 81147e04dd593f5a7b4e01f9d5641596610f6626 Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 14 Sep 2021 16:58:53 +0200 Subject: [PATCH 498/611] Update SEO metadata --- views/website/introduction.pug | 2 +- views/website/libraries.pug | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/views/website/introduction.pug b/views/website/introduction.pug index 4de19604..cc87f6da 100644 --- a/views/website/introduction.pug +++ b/views/website/introduction.pug @@ -6,7 +6,7 @@ block meta meta(http-equiv='X-UA-Compatible', content='IE=edge') meta(name='viewport', content='width=device-width, minimum-scale=1.0, maximum-scale=1.0') meta(name='author', content='auth0.com') - meta(name='description', content='JSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. Learn more about them, how they work, when and why you should use JWTs.') + meta(name='description', content='Learn about JSON Web Tokens, what are they, how they work, when and why you should use them.') meta(name='canonical', content='https://auth0.com/learn/json-web-tokens/') link(rel="canonical", href="https://jwt.io/introduction") diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 7ced59c6..8fa23484 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -1,26 +1,26 @@ extends layout block meta - title JSON Web Token Introduction - jwt.io + title JSON Web Token Libraries - jwt.io meta(charset='utf-8') meta(http-equiv='X-UA-Compatible', content='IE=edge') meta(name='viewport', content='width=device-width, minimum-scale=1.0, maximum-scale=1.0') meta(name='author', content='auth0.com') - meta(name='description', content='JSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. Learn more about them, how they work, when and why you should use JWTs.') + meta(name='description', content='Find an overview of libraries that help you work with JSON Web Tokens in your favorite language.') meta(name='canonical', content='https://auth0.com/learn/json-web-tokens/') - link(rel="canonical", href="https://jwt.io/introduction") + link(rel="canonical", href="https://jwt.io/libraries") block twittercard meta(name='twitter:card', content='summary_large_image') meta(name='twitter:creator', content='@auth0') - meta(name='twitter:title', content='JWT.IO - JSON Web Tokens Introduction') - meta(name='twitter:description', content='Learn about JSON Web Tokens, what are they, how they work, when and why you should use them.') + meta(name='twitter:title', content='JWT.IO - JSON Web Tokens Libraries') + meta(name='twitter:description', content='Find an overview of libraries that help you work with JSON Web Tokens in your favorite language.') meta(name='twitter:image', content='http://jwt.io/img/twitter-card.png') block opengraph meta(property='og:type', content='website') - meta(property='og:title', content='JWT.IO - JSON Web Tokens Introduction') - meta(property='og:description', content='Learn about JSON Web Tokens, what are they, how they work, when and why you should use them.') + meta(property='og:title', content='JWT.IO - JSON Web Tokens Libraries') + meta(property='og:description', content='Find an overview of libraries that help you work with JSON Web Tokens in your favorite language.') meta(property='og:locale', content='en_US') meta(property='og:url', content='http://jwt.io/') meta(property='og:image', content='http://jwt.io/img/facebook-card.png') From 0dbbb1fa4b2d674d41fbb5f65406af707784f373 Mon Sep 17 00:00:00 2001 From: Sambego Date: Tue, 14 Sep 2021 18:06:31 +0200 Subject: [PATCH 499/611] Fix libary filter js --- src/website/dom-elements.js | 10 ++-- src/website/index.js | 66 +++++++++++------------- src/website/libraries/dom-elements.js | 2 + src/website/libraries/index.js | 8 +++ src/website/{ => libraries}/libraries.js | 1 - views/website/libraries.pug | 4 ++ views/website/navigation.pug | 4 +- webpack.website-dev.js | 24 ++++----- webpack.website-prod.js | 18 +++---- 9 files changed, 70 insertions(+), 67 deletions(-) create mode 100644 src/website/libraries/dom-elements.js create mode 100644 src/website/libraries/index.js rename src/website/{ => libraries}/libraries.js (92%) diff --git a/src/website/dom-elements.js b/src/website/dom-elements.js index b88923b3..5e1fc415 100644 --- a/src/website/dom-elements.js +++ b/src/website/dom-elements.js @@ -5,7 +5,7 @@ export const navbarElement = document.querySelector('nav.navbar'); export const menuTriggerElement = document.querySelector('.menu-trigger'); export const menuLinks = document.querySelectorAll('.navbar .menu a'); export const menuScrollableLinks = - navbarElement.querySelectorAll('a.scrollto'); + navbarElement.querySelectorAll('a.scrollto'); export const sectionElements = document.getElementsByTagName('section'); @@ -14,14 +14,12 @@ export const ebookSection = document.querySelector('.jtw-ebook-banner'); export const extensionButton = document.getElementById('extension-button'); export const extensionButtonText = extensionButton ? - extensionButton.querySelector('.button-text') : - undefined; + extensionButton.querySelector('.button-text') : + undefined; export const debuggerSection = document.getElementById('debugger-io'); export const shareJwtButton = document.querySelector('.website-share button'); export const shareJwtTextElement = shareJwtButton.querySelector('span'); -export const starsElements = document.getElementsByClassName('stars'); -export const librariesElement = document.querySelector('.libraries-sv'); -export const librariesSelect = document.getElementById('libraries-select'); +export const starsElements = document.getElementsByClassName('stars'); \ No newline at end of file diff --git a/src/website/index.js b/src/website/index.js index b0e52190..87762a3b 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -1,20 +1,14 @@ import { setupNavbar } from "./navbar.js"; -import { setupExtensionButton } from "./extension.js"; -import { setupLibraries } from "./libraries.js"; import { setupTokenEditor, setTokenEditorValue } from "../editor"; import { setupJwtCounter } from "./counter.js"; import { setupSmoothScrolling } from "./smooth-scrolling.js"; import { setupHighlighting } from "./highlighting.js"; -import { isChrome, isFirefox, isPartiallyInViewport, once } from "./utils.js"; import { setupShareJwtButton } from "../share-button.js"; import { - publicKeyTextArea, - debuggerSection, - extensionSection, - ebookSection, - shareJwtButton, - shareJwtTextElement, - librariesElement + publicKeyTextArea, + debuggerSection, + shareJwtButton, + shareJwtTextElement, } from "./dom-elements.js"; import queryString from "querystring"; @@ -22,40 +16,38 @@ import queryString from "querystring"; /* For initialization, look at the end of this file */ function parseLocationQuery() { - const locSearch = queryString.parse(document.location.search.substr(1)); - const locHash = queryString.parse(document.location.hash.substr(1)); - - const keys = [ - "id_token", - "access_token", - "value", - "token", - "debugger-io?token" - ]; - for (const key of keys) { - const token = locSearch[key] || locHash[key]; - - if (token) { - if (locSearch.publicKey || locHash.publicKey) { - publicKeyTextArea.value = locSearch.publicKey || locHash.publicKey; - } - - setTokenEditorValue(token); - - debuggerSection.scrollIntoView(true); - - break; + const locSearch = queryString.parse(document.location.search.substr(1)); + const locHash = queryString.parse(document.location.hash.substr(1)); + + const keys = [ + "id_token", + "access_token", + "value", + "token", + "debugger-io?token" + ]; + for (const key of keys) { + const token = locSearch[key] || locHash[key]; + + if (token) { + if (locSearch.publicKey || locHash.publicKey) { + publicKeyTextArea.value = locSearch.publicKey || locHash.publicKey; + } + + setTokenEditorValue(token); + + debuggerSection.scrollIntoView(true); + + break; + } } - } } // Initialization setupNavbar(); -// setupExtensionButton(); setupSmoothScrolling(); -setupLibraries(); setupTokenEditor(); parseLocationQuery(); setupHighlighting(); setupJwtCounter(); -setupShareJwtButton(shareJwtButton, shareJwtTextElement); +setupShareJwtButton(shareJwtButton, shareJwtTextElement); \ No newline at end of file diff --git a/src/website/libraries/dom-elements.js b/src/website/libraries/dom-elements.js new file mode 100644 index 00000000..a2281801 --- /dev/null +++ b/src/website/libraries/dom-elements.js @@ -0,0 +1,2 @@ +export const librariesElement = document.querySelector('.libraries-sv'); +export const librariesSelect = document.getElementById('libraries-select'); \ No newline at end of file diff --git a/src/website/libraries/index.js b/src/website/libraries/index.js new file mode 100644 index 00000000..2dc41b1b --- /dev/null +++ b/src/website/libraries/index.js @@ -0,0 +1,8 @@ +import { setupLibraries } from "./libraries.js"; +import { setupHighlighting } from "../highlighting.js"; +import { setupJwtCounter } from "../counter.js"; + +// Initialization +setupLibraries(); +setupHighlighting(); +setupJwtCounter(); \ No newline at end of file diff --git a/src/website/libraries.js b/src/website/libraries/libraries.js similarity index 92% rename from src/website/libraries.js rename to src/website/libraries/libraries.js index b57799f5..205e63f6 100644 --- a/src/website/libraries.js +++ b/src/website/libraries/libraries.js @@ -1,4 +1,3 @@ -import { httpGet } from "../utils.js"; import { librariesElement, librariesSelect } from "./dom-elements.js"; import Isotope from "isotope-layout"; diff --git a/views/website/libraries.pug b/views/website/libraries.pug index 8fa23484..142c8955 100644 --- a/views/website/libraries.pug +++ b/views/website/libraries.pug @@ -54,3 +54,7 @@ block content each lang in languages each lib in lang.libs include libraries/template.pug + + include counter.pug + + script(src='http://github.com/js/libraries.js') \ No newline at end of file diff --git a/views/website/navigation.pug b/views/website/navigation.pug index fdc38ac0..3e64c842 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -9,8 +9,8 @@ nav.navbar.closed img(src='http://github.com/img/logo.svg' alt='JWT logo').logo nav.menu - a(href='http://github.com/').scrollto Debugger - a(href='http://github.com/libraries').scrollto Libraries + a(href='http://github.com/') Debugger + a(href='http://github.com/libraries') Libraries a(href='http://github.com/introduction') Introduction a(href='https://community.auth0.com/c/identity/jwt', target='_blank') Ask diff --git a/webpack.website-dev.js b/webpack.website-dev.js index 9ad98951..39b34901 100644 --- a/webpack.website-dev.js +++ b/webpack.website-dev.js @@ -4,15 +4,15 @@ const merge = require('webpack-merge'); const common = require('./webpack.common.js'); module.exports = merge(common, { - mode: 'development', - entry: { - index: './src/website/index.js', - introduction: './src/website/introduction/index.js' - }, - output: { - filename: '[name].js', - path: __dirname + '/dist/website/js' - }, - plugins: [ - ] -}); + mode: 'development', + entry: { + index: './src/website/index.js', + introduction: './src/website/introduction/index.js', + libraries: './src/website/libraries/index.js' + }, + output: { + filename: '[name].js', + path: __dirname + '/dist/website/js' + }, + plugins: [] +}); \ No newline at end of file diff --git a/webpack.website-prod.js b/webpack.website-prod.js index 56e29043..dd7ad352 100644 --- a/webpack.website-prod.js +++ b/webpack.website-prod.js @@ -5,12 +5,12 @@ const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); const devConfig = require('./webpack.website-dev.js'); module.exports = merge(devConfig, { - mode: 'production', - devtool: false, - plugins: [ - new UglifyJsPlugin(), - new webpack.DefinePlugin({ - PRODUCTION: true - }) - ] -}); + mode: 'production', + devtool: false, + plugins: [ + new UglifyJsPlugin(), + new webpack.DefinePlugin({ + PRODUCTION: true + }) + ] +}); \ No newline at end of file From caae024c7789053bffa7c55ea54dfa9780360f95 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Mon, 27 Sep 2021 11:47:55 +0200 Subject: [PATCH 500/611] refactor: reconsile key formats, update keys, support JWK --- .github/workflows/test.yml | 24 + .travis.yml | 11 - Gruntfile.js | 13 + README.md | 2 - libraries.js | 2 +- package-lock.json | 3890 ++++++++++++++++++++--- package.json | 10 +- src/editor/default-tokens.js | 153 +- src/editor/jwt.js | 128 +- src/editor/public-key-download.js | 75 +- src/editor/utils.js | 95 +- src/utils.js | 43 - test/functional/editor.js | 313 +- test/functional/jwks.json | 2 +- test/functional/libraries.js | 3 +- test/functional/tokens.js | 27 +- test/functional/utils.js | 4 +- test/unit/editor/jwt.js | 177 +- test/unit/editor/public-key-download.js | 126 +- test/unit/utils.js | 2 - views/token-editor-algorithms.pug | 4 +- views/token-editor-common.pug | 4 +- views/website/layout.pug | 9 +- webpack.common.js | 12 +- webpack.website-unit-tests.js | 10 + 25 files changed, 3914 insertions(+), 1225 deletions(-) create mode 100644 .github/workflows/test.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..0879e03c --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,24 @@ +name: CI + +on: + push: + paths-ignore: + - "views/website/libraries/*.json" + pull_request: + paths-ignore: + - "views/website/libraries/*.json" + +jobs: + test: + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: '14' + - run: npm install + - run: npm test diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 08c99c3a..00000000 --- a/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: node_js -node_js: - - "stable" -before_script: - - echo "Host github.com" >> ~/.ssh/config - - echo " StrictHostKeyChecking no" >> ~/.ssh/config - - echo " CheckHostIP no" >> ~/.ssh/config - - npm install -#cache: -# directories: -# - node_modules diff --git a/Gruntfile.js b/Gruntfile.js index 3b7f261b..f0a7316b 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -5,6 +5,7 @@ module.exports = (grunt) => { grunt.loadNpmTasks("grunt-contrib-copy"); grunt.loadNpmTasks("grunt-contrib-stylus"); grunt.loadNpmTasks("grunt-contrib-pug"); + grunt.loadNpmTasks("grunt-contrib-pug"); grunt.loadNpmTasks("grunt-webpack"); grunt.loadNpmTasks("grunt-contrib-watch"); grunt.loadNpmTasks("grunt-contrib-clean"); @@ -119,6 +120,17 @@ module.exports = (grunt) => { }, pug: { + website: { + options: { + data: { + languages: getLanguages(), + }, + }, + files: { + "dist/website/index.html": "views/website/index.pug", + "dist/website/introduction/index.html": "views/website/introduction.pug", + }, + }, extension: { files: { "dist/extension/index.html": "views/extension/index.pug", @@ -258,6 +270,7 @@ module.exports = (grunt) => { grunt.registerTask("functional-tests", [ "build-website-dev", + "pug:website", "connect:website", "mochaTest:functional", ]); diff --git a/README.md b/README.md index 1b4236ce..4cbfafbf 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,6 @@ -[![Build Status](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io.png?branch=master)](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io) - ### Sponsor ||| diff --git a/libraries.js b/libraries.js index 204a634a..cb71305c 100644 --- a/libraries.js +++ b/libraries.js @@ -3,7 +3,7 @@ const { Octokit } = require("@octokit/rest"); const dotenv = require("dotenv").config(); const getLanguages = require("./views/website/libraries/support/get-languages.js"); const octokit = new Octokit({ - auth: process.env.GITHUB, + auth: process.env.GITHUB || process.env.GITHUB_TOKEN, }); function fetchGithubStars() { diff --git a/package-lock.json b/package-lock.json index b21b2393..9bdfddbb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,9 @@ "@babel/preset-env": "^7.4.5", "babel-loader": "^8.0.6", "babel-plugin-transform-async-to-generator": "^6.24.1", + "base64url": "^3.0.1", "bootstrap": "^3.4.1", + "bowser": "^2.11.0", "chai": "^4.2.0", "chai-arrays": "^2.0.0", "chai-as-promised": "^7.1.1", @@ -49,11 +51,13 @@ "highlight.js": "^10.4.1", "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", + "jose": "^3.19.0", "jquery": "^3.4.1", "lodash": "^4.17.13", "loglevel": "^1.6.2", "mocha": "^5.2.0", - "node-jose": "^1.1.4", + "nock": "^13.1.3", + "node-forge": "^0.10.0", "promise.any": "^0.1.1", "puppeteer": "^1.17.0", "request-promise-native": "^1.0.7", @@ -112,12 +116,20 @@ "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, "node_modules/@babel/core/node_modules/debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -170,6 +182,9 @@ "invariant": "^2.2.4", "levenary": "^1.1.1", "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { @@ -184,6 +199,9 @@ "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-replace-supers": "^7.10.4", "@babel/helper-split-export-declaration": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { @@ -195,6 +213,9 @@ "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-regex": "^7.10.4", "regexpu-core": "^4.7.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-map": { @@ -401,7 +422,13 @@ "version": "7.11.2", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.2.tgz", "integrity": "sha512-Vuj/+7vLo6l1Vi7uuO+1ngCDNeVmNbTngcJFKCR/oEtz8tKz0CJxZEGmPt9KcIloZhOZ3Zit6xbpXT2MDlS9Vw==", - "dev": true + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { "version": "7.10.5", @@ -412,6 +439,9 @@ "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-remap-async-to-generator": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { @@ -422,6 +452,9 @@ "dependencies": { "@babel/helper-create-class-features-plugin": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-dynamic-import": { @@ -432,6 +465,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { @@ -442,6 +478,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { @@ -452,6 +491,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { @@ -462,6 +504,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { @@ -472,6 +517,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { @@ -482,6 +530,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { @@ -493,6 +544,9 @@ "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-transform-parameters": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { @@ -503,6 +557,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { @@ -514,6 +571,9 @@ "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { @@ -524,6 +584,9 @@ "dependencies": { "@babel/helper-create-class-features-plugin": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { @@ -534,6 +597,12 @@ "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-async-generators": { @@ -543,6 +612,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-class-properties": { @@ -552,6 +624,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-dynamic-import": { @@ -561,6 +636,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-export-namespace-from": { @@ -570,6 +648,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-json-strings": { @@ -579,6 +660,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { @@ -588,6 +672,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { @@ -597,6 +684,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-numeric-separator": { @@ -606,6 +696,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-object-rest-spread": { @@ -615,6 +708,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { @@ -624,6 +720,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-chaining": { @@ -633,6 +732,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-top-level-await": { @@ -642,6 +744,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { @@ -651,6 +756,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { @@ -662,6 +770,9 @@ "@babel/helper-module-imports": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-remap-async-to-generator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { @@ -671,6 +782,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { @@ -680,6 +794,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { @@ -696,6 +813,9 @@ "@babel/helper-replace-supers": "^7.10.4", "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { @@ -705,6 +825,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { @@ -714,6 +837,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { @@ -724,6 +850,9 @@ "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { @@ -733,6 +862,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { @@ -743,6 +875,9 @@ "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { @@ -752,6 +887,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { @@ -762,6 +900,9 @@ "dependencies": { "@babel/helper-function-name": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { @@ -771,6 +912,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { @@ -780,6 +924,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { @@ -791,6 +938,9 @@ "@babel/helper-module-transforms": "^7.10.5", "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { @@ -803,6 +953,9 @@ "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-simple-access": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { @@ -815,6 +968,9 @@ "@babel/helper-module-transforms": "^7.10.5", "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { @@ -825,6 +981,9 @@ "dependencies": { "@babel/helper-module-transforms": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { @@ -834,6 +993,9 @@ "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { @@ -843,6 +1005,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { @@ -853,6 +1018,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-replace-supers": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { @@ -863,6 +1031,9 @@ "dependencies": { "@babel/helper-get-function-arity": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { @@ -872,6 +1043,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { @@ -881,6 +1055,9 @@ "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { @@ -890,6 +1067,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { @@ -899,6 +1079,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { @@ -909,6 +1092,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { @@ -919,6 +1105,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-regex": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { @@ -929,6 +1118,9 @@ "dependencies": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { @@ -938,6 +1130,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { @@ -947,6 +1142,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { @@ -957,12 +1155,16 @@ "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/polyfill": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.10.4.tgz", "integrity": "sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg==", + "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", "dev": true, "dependencies": { "core-js": "^2.6.5", @@ -1043,6 +1245,9 @@ "invariant": "^2.2.2", "levenary": "^1.1.1", "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { @@ -1056,6 +1261,9 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/register": { @@ -1071,6 +1279,9 @@ "mkdirp": "^0.5.1", "pirates": "^4.0.0", "source-map-support": "^0.5.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/register/node_modules/find-cache-dir": { @@ -1082,6 +1293,9 @@ "commondir": "^1.0.1", "make-dir": "^1.0.0", "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/register/node_modules/find-up": { @@ -1091,13 +1305,19 @@ "dev": true, "dependencies": { "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/register/node_modules/home-or-tmp": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/@babel/register/node_modules/locate-path": { "version": "2.0.0", @@ -1107,6 +1327,9 @@ "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/register/node_modules/make-dir": { @@ -1116,6 +1339,9 @@ "dev": true, "dependencies": { "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/register/node_modules/p-limit": { @@ -1125,6 +1351,9 @@ "dev": true, "dependencies": { "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/register/node_modules/p-locate": { @@ -1134,19 +1363,28 @@ "dev": true, "dependencies": { "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/register/node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/@babel/register/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/@babel/register/node_modules/pkg-dir": { "version": "2.0.0", @@ -1155,6 +1393,9 @@ "dev": true, "dependencies": { "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/runtime": { @@ -1198,6 +1439,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -1234,7 +1476,10 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.1.90" + } }, "node_modules/@cliqz-oss/node-firefox-connect": { "version": "1.2.1", @@ -1654,12 +1899,21 @@ "dependencies": { "mime-types": "~2.1.24", "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/acorn": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/acorn-globals": { "version": "3.1.0", @@ -1672,13 +1926,22 @@ "node_modules/acorn-globals/node_modules/acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/acorn-jsx": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0" + } }, "node_modules/adbkit": { "version": "2.11.0", @@ -1693,13 +1956,22 @@ "debug": "~2.6.3", "node-forge": "^0.7.1", "split": "~0.3.3" + }, + "bin": { + "adbkit": "bin/adbkit" + }, + "engines": { + "node": ">= 0.10.4" } }, "node_modules/adbkit-logcat": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz", "integrity": "sha1-Adf5sM75CTowvLOwB+//MBUIli8=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.10.4" + } }, "node_modules/adbkit-monkey": { "version": "1.0.1", @@ -1708,6 +1980,9 @@ "dev": true, "dependencies": { "async": "~0.2.9" + }, + "engines": { + "node": ">= 0.10.4" } }, "node_modules/adbkit-monkey/node_modules/async": { @@ -1726,7 +2001,10 @@ "version": "0.7.6", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/addons-linter": { "version": "1.4.1", @@ -1753,7 +2031,6 @@ "esprima": "3.1.3", "first-chunk-stream": "2.0.0", "fluent-syntax": "0.7.0", - "fsevents": "2.0.1", "glob": "7.1.3", "is-mergeable-object": "1.1.0", "jed": "1.1.1", @@ -1775,6 +2052,9 @@ "yargs": "12.0.2", "yauzl": "2.9.2" }, + "bin": { + "addons-linter": "bin/addons-linter" + }, "optionalDependencies": { "fsevents": "2.0.1" } @@ -1783,6 +2063,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz", "integrity": "sha512-dnrMRkyyr74CRelJwvgnnSUDh2ge2NCTyHVwpOdvRMHtJUyxLtMAfhBN3s64pY41zdw0kgiLPh6S20eb1NcX6Q==", + "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", "dev": true, "dependencies": { "core-js": "^2.5.7", @@ -1805,13 +2086,19 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/addons-linter/node_modules/camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/addons-linter/node_modules/chalk": { "version": "2.4.0", @@ -1822,6 +2109,9 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/addons-linter/node_modules/cliui": { @@ -1842,13 +2132,23 @@ "dev": true, "dependencies": { "xregexp": "4.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/addons-linter/node_modules/esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, "node_modules/addons-linter/node_modules/fast-deep-equal": { "version": "2.0.1", @@ -1868,6 +2168,9 @@ "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" } }, "node_modules/addons-linter/node_modules/regenerator-runtime": { @@ -1880,13 +2183,19 @@ "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver" + } }, "node_modules/addons-linter/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/addons-linter/node_modules/source-map-support": { "version": "0.5.6", @@ -1905,6 +2214,9 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/addons-linter/node_modules/xregexp": { @@ -1956,7 +2268,10 @@ "version": "0.4.16", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.3.0" + } }, "node_modules/agent-base": { "version": "4.3.0", @@ -1965,7 +2280,10 @@ "dev": true, "dependencies": { "es6-promisify": "^5.0.0" - } + }, + "engines": { + "node": ">= 4.0.0" + } }, "node_modules/ajv": { "version": "6.12.3", @@ -1977,19 +2295,29 @@ "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/ajv-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" + } }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } }, "node_modules/ajv-merge-patch": { "version": "4.1.0", @@ -1999,6 +2327,9 @@ "dependencies": { "fast-json-patch": "^2.0.6", "json-merge-patch": "^0.2.3" + }, + "peerDependencies": { + "ajv": ">=6.0.0" } }, "node_modules/align-text": { @@ -2009,6 +2340,9 @@ "kind-of": "^3.0.2", "longest": "^1.0.1", "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/align-text/node_modules/kind-of": { @@ -2017,13 +2351,19 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.2" + } }, "node_modules/ansi-align": { "version": "2.0.0", @@ -2038,13 +2378,19 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/ansi-styles": { "version": "3.2.1", @@ -2053,6 +2399,9 @@ "dev": true, "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/ansicolors": { @@ -2098,6 +2447,9 @@ "tar-stream": "^1.5.0", "walkdir": "^0.0.11", "zip-stream": "^1.1.0" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/archiver-utils": { @@ -2112,6 +2464,9 @@ "lodash": "^4.8.0", "normalize-path": "^2.0.0", "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/archiver/node_modules/async": { @@ -2146,31 +2501,46 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/array-differ": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/array-filter": { "version": "0.0.1", @@ -2205,7 +2575,10 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/array-union": { "version": "1.0.2", @@ -2214,25 +2587,37 @@ "dev": true, "dependencies": { "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/asap": { "version": "2.0.6", @@ -2276,7 +2661,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8" + } }, "node_modules/assert/node_modules/inherits": { "version": "2.0.1", @@ -2297,19 +2685,28 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/ast-types": { "version": "0.13.3", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/async": { "version": "1.5.2", @@ -2339,13 +2736,22 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/aws4": { "version": "1.10.0", @@ -2368,7 +2774,10 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/babel-code-frame/node_modules/chalk": { "version": "1.1.3", @@ -2381,6 +2790,9 @@ "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/babel-code-frame/node_modules/js-tokens": { @@ -2393,7 +2805,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/babel-core": { "version": "6.26.3", @@ -2426,7 +2841,10 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "dev": true, + "bin": { + "json5": "lib/cli.js" + } }, "node_modules/babel-generator": { "version": "6.26.1", @@ -2448,7 +2866,10 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } }, "node_modules/babel-helper-function-name": { "version": "6.24.1", @@ -2507,6 +2928,13 @@ "mkdirp": "^0.5.3", "pify": "^4.0.1", "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 6.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" } }, "node_modules/babel-messages": { @@ -2633,7 +3061,10 @@ "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/babel-types": { "version": "6.26.0", @@ -2649,12 +3080,18 @@ "node_modules/babel-types/node_modules/to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bin": { + "babylon": "bin/babylon.js" + } }, "node_modules/balanced-match": { "version": "1.0.0", @@ -2675,6 +3112,9 @@ "isobject": "^3.0.1", "mixin-deep": "^1.2.0", "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/base/node_modules/define-property": { @@ -2684,6 +3124,9 @@ "dev": true, "dependencies": { "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/base/node_modules/is-accessor-descriptor": { @@ -2693,6 +3136,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/base/node_modules/is-data-descriptor": { @@ -2702,6 +3148,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/base/node_modules/is-descriptor": { @@ -2713,6 +3162,9 @@ "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/base64-js": { @@ -2725,7 +3177,10 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.0.0" + } }, "node_modules/basic-auth": { "version": "2.0.1", @@ -2734,6 +3189,9 @@ "dev": true, "dependencies": { "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/batch": { @@ -2760,13 +3218,19 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/bindings": { "version": "1.5.0", @@ -2827,6 +3291,9 @@ "qs": "6.7.0", "raw-body": "2.4.0", "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/body/node_modules/bytes": { @@ -2843,6 +3310,9 @@ "dependencies": { "bytes": "1", "string_decoder": "0.10" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/boolbase": { @@ -2855,6 +3325,15 @@ "version": "3.4.1", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "dev": true }, "node_modules/boxen": { @@ -2870,13 +3349,19 @@ "string-width": "^2.0.0", "term-size": "^1.2.0", "widest-line": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/boxen/node_modules/camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -2904,6 +3389,9 @@ "snapdragon-node": "^2.0.1", "split-string": "^3.0.2", "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/braces/node_modules/extend-shallow": { @@ -2913,6 +3401,9 @@ "dev": true, "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/brorand": { @@ -3012,13 +3503,30 @@ "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/browserify-sign/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/browserify-sign/node_modules/string_decoder": { "version": "1.3.0", @@ -3048,6 +3556,16 @@ "electron-to-chromium": "^1.3.488", "escalade": "^3.0.1", "node-releases": "^1.1.58" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" } }, "node_modules/buffer": { @@ -3080,7 +3598,10 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", @@ -3117,14 +3638,15 @@ "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", "dev": true, - "dependencies": { - "dtrace-provider": "~0.8", - "moment": "^2.10.6", - "mv": "~2", - "safe-json-stringify": "~1" + "engines": [ + "node >=0.10.0" + ], + "bin": { + "bunyan": "bin/bunyan" }, "optionalDependencies": { "dtrace-provider": "~0.8", + "moment": "^2.10.6", "mv": "~2", "safe-json-stringify": "~1" } @@ -3132,7 +3654,10 @@ "node_modules/bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "engines": { + "node": ">= 0.8" + } }, "node_modules/cacache": { "version": "10.0.4", @@ -3162,6 +3687,9 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/cache-base": { @@ -3179,6 +3707,9 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/caller-path": { @@ -3188,18 +3719,27 @@ "dev": true, "dependencies": { "callsites": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/callsites": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/caniuse-lite": { "version": "1.0.30001111", @@ -3211,10 +3751,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true - }, - "node_modules/caseless": { - "version": "0.12.0", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/caseless": { + "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true @@ -3226,6 +3769,9 @@ "dependencies": { "align-text": "^0.1.3", "lazy-cache": "^1.0.3" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/chai": { @@ -3240,13 +3786,19 @@ "get-func-name": "^2.0.0", "pathval": "^1.1.0", "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" } }, "node_modules/chai-arrays": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.2.0.tgz", "integrity": "sha512-4awrdGI2EH8owJ9I58PXwG4N56/FiM8bsn4CVSNEgr4GKAM6Kq5JPVApUbhUBjDakbZNuRvV7quRSC38PWq/tg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10" + } }, "node_modules/chai-as-promised": { "version": "7.1.1", @@ -3255,6 +3807,9 @@ "dev": true, "dependencies": { "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" } }, "node_modules/chai-json-schema": { @@ -3265,6 +3820,12 @@ "dependencies": { "jsonpointer.js": "0.4.0", "tv4": "^1.3.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "chai": ">= 1.6.1 < 5" } }, "node_modules/chalk": { @@ -3276,6 +3837,9 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/character-parser": { @@ -3296,7 +3860,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/cheerio": { "version": "1.0.0-rc.2", @@ -3310,18 +3877,21 @@ "htmlparser2": "^3.9.1", "lodash": "^4.15.0", "parse5": "^3.0.1" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", "dev": true, "dependencies": { "anymatch": "^2.0.0", "async-each": "^1.0.1", "braces": "^2.3.2", - "fsevents": "^1.2.7", "glob-parent": "^3.1.0", "inherits": "^2.0.3", "is-binary-path": "^1.0.0", @@ -3339,11 +3909,19 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", "dev": true, + "hasInstallScript": true, "optional": true, + "os": [ + "darwin" + ], "dependencies": { "bindings": "^1.5.0", "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" } }, "node_modules/chokidar/node_modules/is-glob": { @@ -3353,19 +3931,29 @@ "dev": true, "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/chokidar/node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/chokidar/node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } }, "node_modules/chownr": { "version": "1.1.4", @@ -3380,6 +3968,9 @@ "dev": true, "dependencies": { "tslib": "^1.9.0" + }, + "engines": { + "node": ">=6.0" } }, "node_modules/cipher-base": { @@ -3396,6 +3987,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", "dev": true }, "node_modules/class-utils": { @@ -3408,6 +4000,9 @@ "define-property": "^0.2.5", "isobject": "^3.0.0", "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/class-utils/node_modules/define-property": { @@ -3417,6 +4012,9 @@ "dev": true, "dependencies": { "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/clean-css": { @@ -3425,18 +4023,27 @@ "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", "dependencies": { "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" } }, "node_modules/clean-css/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/cli-boxes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/cli-cursor": { "version": "2.1.0", @@ -3445,6 +4052,9 @@ "dev": true, "dependencies": { "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/cli-width": { @@ -3473,7 +4083,10 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8" + } }, "node_modules/clone-deep": { "version": "0.3.0", @@ -3485,6 +4098,9 @@ "is-plain-object": "^2.0.1", "kind-of": "^3.2.2", "shallow-clone": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/clone-deep/node_modules/kind-of": { @@ -3494,19 +4110,29 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } }, "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/codemirror": { "version": "5.56.0", @@ -3522,6 +4148,9 @@ "dependencies": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/color-convert": { @@ -3543,7 +4172,10 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.1.90" + } }, "node_modules/columnify": { "version": "1.5.4", @@ -3562,6 +4194,9 @@ "dev": true, "dependencies": { "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/commander": { @@ -3574,7 +4209,10 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0.0" + } }, "node_modules/commondir": { "version": "1.0.1", @@ -3598,6 +4236,9 @@ "crc32-stream": "^2.0.0", "normalize-path": "^2.0.0", "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/concat-map": { @@ -3611,6 +4252,9 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, + "engines": [ + "node >= 0.8" + ], "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -3630,6 +4274,9 @@ "unique-string": "^1.0.0", "write-file-atomic": "^2.0.0", "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/configstore/node_modules/make-dir": { @@ -3639,13 +4286,19 @@ "dev": true, "dependencies": { "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/configstore/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/connect": { "version": "3.7.0", @@ -3657,13 +4310,19 @@ "finalhandler": "1.1.2", "parseurl": "~1.3.3", "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/connect-livereload": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/console-browserify": { "version": "1.2.0", @@ -3694,12 +4353,18 @@ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "dependencies": { "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } }, "node_modules/continuable-cache": { "version": "0.3.1", @@ -3719,7 +4384,10 @@ "node_modules/cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "engines": { + "node": ">= 0.6" + } }, "node_modules/cookie-signature": { "version": "1.0.6", @@ -3747,18 +4415,26 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true }, "node_modules/core-js-compat": { "version": "3.6.5", @@ -3768,13 +4444,20 @@ "dependencies": { "browserslist": "^4.8.5", "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat/node_modules/semver": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, "node_modules/core-util-is": { "version": "1.0.2", @@ -3799,6 +4482,9 @@ "dependencies": { "crc": "^3.4.4", "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/create-ecdh": { @@ -3824,6 +4510,9 @@ "dev": true, "dependencies": { "capture-stack-trace": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/create-hash": { @@ -3864,6 +4553,9 @@ "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" } }, "node_modules/crx": { @@ -3876,6 +4568,12 @@ "commander": "^2.5.0", "es6-promise": "^3.0.0", "node-rsa": "^0.2.10" + }, + "bin": { + "crx": "bin/crx.js" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/crx-parser": { @@ -3901,13 +4599,19 @@ "public-encrypt": "^4.0.0", "randombytes": "^2.0.0", "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" } }, "node_modules/crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/css": { "version": "2.2.4", @@ -3943,13 +4647,19 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/css/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/cyclist": { "version": "1.0.1", @@ -3974,6 +4684,9 @@ "dev": true, "dependencies": { "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/data-uri-to-buffer": { @@ -3986,7 +4699,10 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/debounce": { "version": "1.1.0", @@ -4005,13 +4721,19 @@ "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10" + } }, "node_modules/deep-eql": { "version": "3.0.1", @@ -4020,6 +4742,9 @@ "dev": true, "dependencies": { "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/deep-equal": { @@ -4034,13 +4759,19 @@ "object-is": "^1.0.1", "object-keys": "^1.1.1", "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0.0" + } }, "node_modules/deep-for-each": { "version": "2.0.3", @@ -4073,7 +4804,10 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/defaults": { "version": "1.0.3", @@ -4091,6 +4825,9 @@ "dev": true, "dependencies": { "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/define-property": { @@ -4101,6 +4838,9 @@ "dependencies": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/define-property/node_modules/is-accessor-descriptor": { @@ -4110,6 +4850,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/define-property/node_modules/is-data-descriptor": { @@ -4119,6 +4862,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/define-property/node_modules/is-descriptor": { @@ -4130,6 +4876,9 @@ "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/degenerator": { @@ -4147,18 +4896,31 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/deprecation": { "version": "2.3.1", @@ -4190,7 +4952,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/detect-indent": { "version": "4.0.0", @@ -4199,13 +4964,19 @@ "dev": true, "dependencies": { "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.3.1" + } }, "node_modules/diffie-hellman": { "version": "5.0.3", @@ -4238,13 +5009,22 @@ "sha.js": "~2.4.4", "source-map-support": "~0.5.4", "yargs": "~12.0.1" + }, + "bin": { + "dispensary": "bin/dispensary" + }, + "engines": { + "node": ">= 8.0.0" } }, "node_modules/dispensary/node_modules/ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/dispensary/node_modules/async": { "version": "2.6.3", @@ -4280,6 +5060,9 @@ "pump": "^3.0.0", "quick-format-unescaped": "^3.0.0", "sonic-boom": "^0.6.1" + }, + "bin": { + "pino": "bin.js" } }, "node_modules/dispensary/node_modules/pump": { @@ -4299,6 +5082,9 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/dispensary/node_modules/yargs": { @@ -4328,8 +5114,11 @@ "dev": true, "dependencies": { "vscode-languageserver-types": "^3.5.0" - } - }, + }, + "engines": { + "node": "*" + } + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -4337,6 +5126,9 @@ "dev": true, "dependencies": { "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/doctypes": { @@ -4364,7 +5156,11 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } }, "node_modules/domelementtype": { "version": "1.3.1", @@ -4398,6 +5194,9 @@ "dev": true, "dependencies": { "is-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/dotenv": { @@ -4413,9 +5212,13 @@ "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", "dev": true, + "hasInstallScript": true, "optional": true, "dependencies": { "nan": "^2.14.0" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/duplexer3": { @@ -4491,18 +5294,27 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", - "dev": true + "dev": true, + "engines": { + "node": ">4.0" + } }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">= 4" + } }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } }, "node_modules/encoding": { "version": "0.1.13", @@ -4520,6 +5332,9 @@ "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/end-of-stream": { @@ -4540,6 +5355,9 @@ "graceful-fs": "^4.1.2", "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/enhanced-resolve/node_modules/memory-fs": { @@ -4550,6 +5368,9 @@ "dependencies": { "errno": "^0.1.3", "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, "node_modules/entities": { @@ -4564,6 +5385,9 @@ "dev": true, "dependencies": { "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" } }, "node_modules/error": { @@ -4601,6 +5425,12 @@ "object.assign": "^4.1.0", "string.prototype.trimend": "^1.0.1", "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es-to-primitive": { @@ -4612,6 +5442,12 @@ "is-callable": "^1.1.4", "is-date-object": "^1.0.1", "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es5-ext": { @@ -4726,7 +5562,10 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/escape-html": { "version": "1.0.3", @@ -4737,7 +5576,10 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/escodegen": { "version": "1.14.3", @@ -4748,8 +5590,14 @@ "esprima": "^4.0.1", "estraverse": "^4.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" }, "optionalDependencies": { "source-map": "~0.6.1" @@ -4760,7 +5608,10 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/escope": { "version": "3.6.0", @@ -4772,6 +5623,9 @@ "es6-weak-map": "^2.0.1", "esrecurse": "^4.1.0", "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=0.4.0" } }, "node_modules/eslint": { @@ -4818,6 +5672,12 @@ "strip-json-comments": "^2.0.1", "table": "^4.0.3", "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml": { @@ -4833,7 +5693,13 @@ "version": "5.7.4", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/acorn-jsx": { "version": "3.0.1", @@ -4848,7 +5714,13 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ajv": { "version": "4.11.8", @@ -4864,19 +5736,28 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true + "dev": true, + "peerDependencies": { + "ajv": ">=4.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/chalk": { "version": "1.1.3", @@ -4889,6 +5770,9 @@ "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/cli-cursor": { @@ -4898,6 +5782,9 @@ "dev": true, "dependencies": { "restore-cursor": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/eslint": { @@ -4941,6 +5828,12 @@ "table": "^3.7.8", "text-table": "~0.2.0", "user-home": "^2.0.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": ">=4" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/espree": { @@ -4951,6 +5844,9 @@ "dependencies": { "acorn": "^5.5.0", "acorn-jsx": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/figures": { @@ -4961,13 +5857,19 @@ "dependencies": { "escape-string-regexp": "^1.0.5", "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/inquirer": { "version": "0.12.0", @@ -4997,13 +5899,19 @@ "dev": true, "dependencies": { "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/onetime": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/pluralize": { "version": "1.2.1", @@ -5015,7 +5923,10 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/restore-cursor": { "version": "1.0.1", @@ -5025,6 +5936,9 @@ "dependencies": { "exit-hook": "^1.0.0", "onetime": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/run-async": { @@ -5045,13 +5959,23 @@ "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "iojs": "*", + "node": ">=0.11.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/slice-ansi": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/string-width": { "version": "1.0.2", @@ -5062,13 +5986,19 @@ "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table": { "version": "3.8.3", @@ -5088,13 +6018,19 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/string-width": { "version": "2.1.1", @@ -5104,6 +6040,9 @@ "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/strip-ansi": { @@ -5113,6 +6052,9 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/eslint-scope": { @@ -5123,24 +6065,34 @@ "dependencies": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/eslint/node_modules/ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/eslint/node_modules/debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -5159,13 +6111,19 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/espree": { "version": "4.1.0", @@ -5176,19 +6134,35 @@ "acorn": "^6.0.2", "acorn-jsx": "^5.0.0", "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/espree/node_modules/acorn": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, "node_modules/esquery": { "version": "1.3.1", @@ -5197,13 +6171,19 @@ "dev": true, "dependencies": { "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/esquery/node_modules/estraverse": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0" + } }, "node_modules/esrecurse": { "version": "4.2.1", @@ -5212,23 +6192,35 @@ "dev": true, "dependencies": { "estraverse": "^4.1.0" + }, + "engines": { + "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0" + } }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/ev-emitter": { "version": "1.1.1", @@ -5250,6 +6242,7 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz", "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=", + "deprecated": "Use promise-toolbox/fromEvent instead", "dev": true }, "node_modules/eventemitter2": { @@ -5262,7 +6255,10 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.x" + } }, "node_modules/evp_bytestokey": { "version": "1.0.3", @@ -5287,19 +6283,28 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/exit-hook": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/expand-brackets": { "version": "2.1.4", @@ -5314,6 +6319,9 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/expand-brackets/node_modules/define-property": { @@ -5323,6 +6331,9 @@ "dev": true, "dependencies": { "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/expand-brackets/node_modules/extend-shallow": { @@ -5332,6 +6343,9 @@ "dev": true, "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/expand-tilde": { @@ -5341,6 +6355,9 @@ "dev": true, "dependencies": { "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/express": { @@ -5378,6 +6395,9 @@ "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/express-sslify": { @@ -5414,6 +6434,9 @@ "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extend-shallow/node_modules/is-extendable": { @@ -5423,6 +6446,9 @@ "dev": true, "dependencies": { "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/external-editor": { @@ -5434,6 +6460,9 @@ "chardet": "^0.4.0", "iconv-lite": "^0.4.17", "tmp": "^0.0.33" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/extglob": { @@ -5450,8 +6479,11 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" - } - }, + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/extglob/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", @@ -5459,6 +6491,9 @@ "dev": true, "dependencies": { "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extglob/node_modules/extend-shallow": { @@ -5468,6 +6503,9 @@ "dev": true, "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extglob/node_modules/is-accessor-descriptor": { @@ -5477,6 +6515,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extglob/node_modules/is-data-descriptor": { @@ -5486,6 +6527,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extglob/node_modules/is-descriptor": { @@ -5497,6 +6541,9 @@ "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extract-zip": { @@ -5509,13 +6556,19 @@ "debug": "^2.6.9", "mkdirp": "^0.5.4", "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" } }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true + "dev": true, + "engines": [ + "node >=0.6.0" + ] }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -5536,6 +6589,9 @@ "dev": true, "dependencies": { "fast-deep-equal": "^2.0.1" + }, + "engines": { + "node": ">= 0.4.0" } }, "node_modules/fast-json-patch/node_modules/fast-deep-equal": { @@ -5560,7 +6616,10 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-1.5.0.tgz", "integrity": "sha512-Afo61CgUjkzdvOKDHn08qnZ0kwck38AOGcMlvSGzvJbIab6soAP5rdoQayecGCDsD69AiF9vJBXyq31eoEO2tQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/fast-safe-stringify": { "version": "2.0.7", @@ -5575,6 +6634,9 @@ "dev": true, "dependencies": { "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.4.0" } }, "node_modules/fd-slicer": { @@ -5599,6 +6661,9 @@ "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" } }, "node_modules/file-entry-cache": { @@ -5609,6 +6674,9 @@ "dependencies": { "flat-cache": "^1.2.1", "object-assign": "^4.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/file-sync-cmp": { @@ -5633,6 +6701,9 @@ "is-number": "^3.0.0", "repeat-string": "^1.6.1", "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/fill-range/node_modules/extend-shallow": { @@ -5642,6 +6713,9 @@ "dev": true, "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/finalhandler": { @@ -5656,6 +6730,9 @@ "parseurl": "~1.3.3", "statuses": "~1.5.0", "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/find-cache-dir": { @@ -5667,6 +6744,9 @@ "commondir": "^1.0.1", "make-dir": "^2.0.0", "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/find-up": { @@ -5676,6 +6756,9 @@ "dev": true, "dependencies": { "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/findup-sync": { @@ -5685,6 +6768,9 @@ "dev": true, "dependencies": { "glob": "~5.0.0" + }, + "engines": { + "node": ">= 0.6.0" } }, "node_modules/findup-sync/node_modules/glob": { @@ -5698,6 +6784,9 @@ "minimatch": "2 || 3", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" } }, "node_modules/fined": { @@ -5711,6 +6800,9 @@ "object.defaults": "^1.1.0", "object.pick": "^1.2.0", "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/firefox-profile": { @@ -5730,6 +6822,9 @@ "minimist": "^1.1.1", "uuid": "^3.0.0", "xml2js": "~0.4.4" + }, + "bin": { + "firefox-profile": "lib/cli.js" } }, "node_modules/firefox-profile/node_modules/archiver": { @@ -5746,6 +6841,9 @@ "readable-stream": "^2.0.0", "tar-stream": "^1.5.0", "zip-stream": "^1.2.0" + }, + "engines": { + "node": ">= 4" } }, "node_modules/firefox-profile/node_modules/async": { @@ -5764,6 +6862,9 @@ "dev": true, "dependencies": { "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/fizzy-ui-utils": { @@ -5779,7 +6880,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.10" + } }, "node_modules/flat-cache": { "version": "1.3.4", @@ -5791,6 +6895,9 @@ "graceful-fs": "^4.1.2", "rimraf": "~2.6.2", "write": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/flat-cache/node_modules/rimraf": { @@ -5800,6 +6907,9 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/flatstr": { @@ -5821,7 +6931,10 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.7.0.tgz", "integrity": "sha512-T0iqfhC40jrs3aDjYOKgzIQjjhsH2Fa6LnXB6naPv0ymW3DeYMUFa89y9aLKMpi1P9nl2vEimK7blx4tVnUWBg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/flush-write-stream": { "version": "1.1.1", @@ -5837,7 +6950,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/for-own": { "version": "1.0.0", @@ -5846,13 +6962,19 @@ "dev": true, "dependencies": { "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/form-data": { "version": "2.3.3", @@ -5863,12 +6985,18 @@ "asynckit": "^0.4.0", "combined-stream": "^1.0.6", "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" } }, "node_modules/forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/fragment-cache": { "version": "0.2.1", @@ -5877,12 +7005,18 @@ "dev": true, "dependencies": { "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/from2": { "version": "2.3.0", @@ -5933,8 +7067,16 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.1.tgz", "integrity": "sha512-p+CXqK/iLvDESUWdn3NA3JVO9HxdfI+iXx8xR3DqWgKZvQNiEVpAyUQo0lmwz8rqksb4xaGerG291xuwwhX2kA==", + "deprecated": "\"Please update to latest v2.3 or v2.2\"", "dev": true, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=6.0.0" + } }, "node_modules/ftp": { "version": "0.3.10", @@ -5944,6 +7086,9 @@ "dependencies": { "readable-stream": "1.1.x", "xregexp": "2.0.0" + }, + "engines": { + "node": ">=0.8.0" } }, "node_modules/ftp/node_modules/isarray": { @@ -5989,6 +7134,9 @@ "when": "3.7.7", "which": "1.2.4", "winreg": "0.0.12" + }, + "bin": { + "fx-runner": "bin/fx-runner" } }, "node_modules/fx-runner/node_modules/commander": { @@ -5998,6 +7146,9 @@ "dev": true, "dependencies": { "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" } }, "node_modules/fx-runner/node_modules/is-absolute": { @@ -6007,13 +7158,19 @@ "dev": true, "dependencies": { "is-relative": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/fx-runner/node_modules/is-relative": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/fx-runner/node_modules/isexe": { "version": "1.1.2", @@ -6035,6 +7192,9 @@ "dependencies": { "is-absolute": "^0.1.7", "isexe": "^1.1.1" + }, + "bin": { + "which": "bin/which" } }, "node_modules/gaze": { @@ -6044,6 +7204,9 @@ "dev": true, "dependencies": { "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/generate-function": { @@ -6068,7 +7231,10 @@ "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/get-caller-file": { "version": "1.0.3", @@ -6080,7 +7246,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/get-size": { "version": "2.0.3", @@ -6092,7 +7261,10 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/get-uri": { "version": "2.0.4", @@ -6112,13 +7284,19 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/getobject": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/getpass": { "version": "0.1.7", @@ -6153,7 +7331,10 @@ "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/git-rev-sync/node_modules/shelljs": { "version": "0.7.7", @@ -6164,6 +7345,13 @@ "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "iojs": "*", + "node": ">=0.11.0" } }, "node_modules/glob": { @@ -6178,6 +7366,12 @@ "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { @@ -6207,6 +7401,9 @@ "dev": true, "dependencies": { "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" } }, "node_modules/global-modules": { @@ -6218,6 +7415,9 @@ "global-prefix": "^1.0.1", "is-windows": "^1.0.1", "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/global-prefix": { @@ -6231,13 +7431,19 @@ "ini": "^1.3.4", "is-windows": "^1.0.1", "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/globule": { "version": "1.3.2", @@ -6248,6 +7454,9 @@ "glob": "~7.1.1", "lodash": "~4.17.10", "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/got": { @@ -6267,6 +7476,9 @@ "timed-out": "^4.0.0", "unzip-response": "^2.0.1", "url-parse-lax": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/graceful-fs": { @@ -6294,7 +7506,10 @@ "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.x" + } }, "node_modules/growly": { "version": "1.3.0", @@ -6323,6 +7538,12 @@ "mkdirp": "~1.0.4", "nopt": "~3.0.6", "rimraf": "~3.0.2" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=8" } }, "node_modules/grunt-cli": { @@ -6336,6 +7557,12 @@ "liftoff": "~2.5.0", "nopt": "~4.0.1", "v8flags": "~3.1.1" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=4" } }, "node_modules/grunt-cli/node_modules/nopt": { @@ -6346,6 +7573,9 @@ "dependencies": { "abbrev": "1", "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" } }, "node_modules/grunt-contrib-clean": { @@ -6356,6 +7586,12 @@ "dependencies": { "async": "^1.5.2", "rimraf": "^2.5.1" + }, + "engines": { + "node": ">= 0.10.0" + }, + "peerDependencies": { + "grunt": ">=0.4.5" } }, "node_modules/grunt-contrib-clean/node_modules/rimraf": { @@ -6365,6 +7601,9 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/grunt-contrib-connect": { @@ -6382,6 +7621,12 @@ "portscanner": "^1.0.0", "serve-index": "^1.7.1", "serve-static": "^1.10.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "grunt": ">=0.4.0" } }, "node_modules/grunt-contrib-copy": { @@ -6392,13 +7637,19 @@ "dependencies": { "chalk": "^1.1.1", "file-sync-cmp": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-copy/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/grunt-contrib-copy/node_modules/chalk": { "version": "1.1.3", @@ -6411,13 +7662,19 @@ "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-copy/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/grunt-contrib-pug": { "version": "1.0.0", @@ -6427,13 +7684,19 @@ "dependencies": { "chalk": "^1.0.0", "pug": "^2.0.0-alpha3" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-pug/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/grunt-contrib-pug/node_modules/chalk": { "version": "1.1.3", @@ -6446,13 +7709,19 @@ "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-pug/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/grunt-contrib-stylus": { "version": "1.2.0", @@ -6465,13 +7734,19 @@ "lodash": "^4.0.0", "nib": "^1.1.0", "stylus": "^0.54.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-stylus/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/grunt-contrib-stylus/node_modules/chalk": { "version": "1.1.3", @@ -6484,13 +7759,19 @@ "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-stylus/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/grunt-contrib-watch": { "version": "1.1.0", @@ -6502,6 +7783,9 @@ "gaze": "^1.1.0", "lodash": "^4.17.10", "tiny-lr": "^1.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-watch/node_modules/async": { @@ -6524,19 +7808,34 @@ "mkdirp": "^0.5.0", "os-homedir": "^1.0.1", "xtend": "^4.0.1" - } - }, - "node_modules/grunt-exec": { + }, + "bin": { + "grunt-crx": "bin/grunt-crx" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/grunt-exec": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz", "integrity": "sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + }, + "peerDependencies": { + "grunt": ">=0.4" + } }, "node_modules/grunt-known-options": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/grunt-legacy-log": { "version": "2.0.0", @@ -6548,6 +7847,9 @@ "grunt-legacy-log-utils": "~2.0.0", "hooker": "~0.2.3", "lodash": "~4.17.5" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/grunt-legacy-log-utils": { @@ -6558,6 +7860,9 @@ "dependencies": { "chalk": "~2.4.1", "lodash": "~4.17.10" + }, + "engines": { + "node": ">=6" } }, "node_modules/grunt-legacy-util": { @@ -6573,6 +7878,9 @@ "lodash": "~4.17.10", "underscore.string": "~3.3.4", "which": "~1.3.0" + }, + "engines": { + "node": ">= 6" } }, "node_modules/grunt-mocha-test": { @@ -6583,6 +7891,12 @@ "dependencies": { "hooker": "^0.2.3", "mkdirp": "^0.5.0" + }, + "engines": { + "node": ">= 0.10.4" + }, + "peerDependencies": { + "mocha": ">=1.20.0" } }, "node_modules/grunt-webpack": { @@ -6593,28 +7907,47 @@ "dependencies": { "deep-for-each": "^2.0.2", "lodash": "^4.7.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" } }, "node_modules/grunt/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/har-validator": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dev": true, "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/has": { @@ -6624,6 +7957,9 @@ "dev": true, "dependencies": { "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" } }, "node_modules/has-ansi": { @@ -6633,24 +7969,39 @@ "dev": true, "dependencies": { "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/has-color": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/has-value": { "version": "1.0.0", @@ -6661,6 +8012,9 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/has-values": { @@ -6671,6 +8025,9 @@ "dependencies": { "is-number": "^3.0.0", "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/has-values/node_modules/kind-of": { @@ -6680,6 +8037,9 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/hasbin": { @@ -6689,6 +8049,9 @@ "dev": true, "dependencies": { "async": "~1.5" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/hash-base": { @@ -6700,6 +8063,9 @@ "inherits": "^2.0.4", "readable-stream": "^3.6.0", "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/hash-base/node_modules/inherits": { @@ -6717,13 +8083,30 @@ "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/hash-base/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/hash-base/node_modules/string_decoder": { "version": "1.3.0", @@ -6748,13 +8131,19 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true + "dev": true, + "bin": { + "he": "bin/he" + } }, "node_modules/highlight.js": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.1.tgz", "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/hmac-drbg": { "version": "1.0.1", @@ -6775,6 +8164,9 @@ "dependencies": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/homedir-polyfill": { @@ -6784,13 +8176,19 @@ "dev": true, "dependencies": { "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/hooker": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/hosted-git-info": { "version": "2.8.8", @@ -6821,13 +8219,30 @@ "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/htmlparser2/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/htmlparser2/node_modules/string_decoder": { "version": "1.3.0", @@ -6848,6 +8263,9 @@ "setprototypeof": "1.1.1", "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/http-parser-js": { @@ -6864,6 +8282,9 @@ "dependencies": { "agent-base": "4", "debug": "3.1.0" + }, + "engines": { + "node": ">= 4.5.0" } }, "node_modules/http-proxy-agent/node_modules/debug": { @@ -6884,13 +8305,21 @@ "assert-plus": "^1.0.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" } }, "node_modules/http2": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.7.tgz", "integrity": "sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ==", - "dev": true + "deprecated": "Use the built-in module in node 9.0.0 or newer, instead", + "dev": true, + "engines": { + "node": ">=0.12.0 <9.0.0" + } }, "node_modules/https-browserify": { "version": "1.0.0", @@ -6906,12 +8335,16 @@ "dependencies": { "agent-base": "^4.3.0", "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" } }, "node_modules/https-proxy-agent/node_modules/debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -6929,6 +8362,9 @@ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/ieee754": { @@ -6959,13 +8395,19 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, "node_modules/infer-owner": { "version": "1.0.4", @@ -7001,6 +8443,9 @@ "dev": true, "dependencies": { "babel-core": "~6" + }, + "peerDependencies": { + "webpack": "^1 || ^2 || ^3" } }, "node_modules/inquirer": { @@ -7022,13 +8467,19 @@ "string-width": "^2.1.0", "strip-ansi": "^4.0.0", "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/inquirer/node_modules/ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/inquirer/node_modules/strip-ansi": { "version": "4.0.0", @@ -7037,6 +8488,9 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/interpret": { @@ -7058,7 +8512,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/ip": { "version": "1.1.5", @@ -7069,7 +8526,10 @@ "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } }, "node_modules/is-absolute": { "version": "1.0.0", @@ -7079,6 +8539,9 @@ "dependencies": { "is-relative": "^1.0.0", "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-accessor-descriptor": { @@ -7088,6 +8551,9 @@ "dev": true, "dependencies": { "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-accessor-descriptor/node_modules/kind-of": { @@ -7097,13 +8563,19 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + } }, "node_modules/is-arrayish": { "version": "0.2.1", @@ -7118,6 +8590,9 @@ "dev": true, "dependencies": { "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-buffer": { @@ -7129,7 +8604,13 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-data-descriptor": { "version": "0.1.4", @@ -7138,6 +8619,9 @@ "dev": true, "dependencies": { "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-data-descriptor/node_modules/kind-of": { @@ -7147,13 +8631,22 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-descriptor": { "version": "0.1.6", @@ -7164,13 +8657,19 @@ "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-descriptor/node_modules/kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-expression": { "version": "3.0.0", @@ -7184,31 +8683,52 @@ "node_modules/is-expression/node_modules/acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-finite": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/is-glob": { "version": "3.1.0", @@ -7217,6 +8737,9 @@ "dev": true, "dependencies": { "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-installed-globally": { @@ -7227,6 +8750,9 @@ "dependencies": { "global-dirs": "^0.1.0", "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/is-mergeable-object": { @@ -7258,7 +8784,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-number": { "version": "3.0.0", @@ -7267,6 +8796,9 @@ "dev": true, "dependencies": { "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-number/node_modules/kind-of": { @@ -7276,13 +8808,19 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-path-inside": { "version": "1.0.1", @@ -7291,6 +8829,9 @@ "dev": true, "dependencies": { "path-is-inside": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-plain-object": { @@ -7300,6 +8841,9 @@ "dev": true, "dependencies": { "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-promise": { @@ -7317,7 +8861,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-regex": { "version": "1.1.1", @@ -7325,6 +8872,12 @@ "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dependencies": { "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-relative": { @@ -7334,6 +8887,9 @@ "dev": true, "dependencies": { "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-resolvable": { @@ -7346,13 +8902,19 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-symbol": { "version": "1.0.3", @@ -7361,6 +8923,12 @@ "dev": true, "dependencies": { "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-typedarray": { @@ -7376,6 +8944,9 @@ "dev": true, "dependencies": { "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-utf8": { @@ -7388,13 +8959,19 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/isarray": { "version": "1.0.0", @@ -7412,7 +8989,10 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/isotope-layout": { "version": "3.0.6", @@ -7443,8 +9023,18 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/jetpack-id/-/jetpack-id-1.0.0.tgz", "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", + "deprecated": "Jetpack extensions are no longer supported by Firefox. Use web-ext instead to build a WebExtension.", "dev": true }, + "node_modules/jose": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-3.19.0.tgz", + "integrity": "sha512-G5imz/7oSe8Ohg4EMEhGhMhN+yzACMw7NC7ZrEYSoJekQXHPf+TPQNc/XJkYRm6TFWIbf3HA4OHZhdRv8KsskA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/jquery": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", @@ -7455,6 +9045,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/js-select/-/js-select-0.6.0.tgz", "integrity": "sha1-woTiKCTVknrsli3N8kcXSu+w0ZA=", + "deprecated": "Package no longer supported. Contact support@npmjs.com for more info.", "dev": true, "dependencies": { "JSONSelect": "0.2.1", @@ -7480,6 +9071,9 @@ "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/jsbn": { @@ -7492,7 +9086,13 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } }, "node_modules/json-merge-patch": { "version": "0.2.3", @@ -7549,6 +9149,12 @@ "dev": true, "dependencies": { "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, "node_modules/jsonfile": { @@ -7556,7 +9162,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, - "dependencies": { + "optionalDependencies": { "graceful-fs": "^4.1.6" } }, @@ -7564,13 +9170,19 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/jsonpointer": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/jsonpointer.js": { "version": "0.4.0", @@ -7582,7 +9194,10 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.2.1.tgz", "integrity": "sha1-QVQYpSbTP+MddLTe+jyDbUhewgM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.7" + } }, "node_modules/jsonwebtoken": { "version": "8.2.1", @@ -7600,6 +9215,10 @@ "lodash.once": "^4.0.0", "ms": "^2.1.1", "xtend": "^4.0.1" + }, + "engines": { + "node": ">=0.12", + "npm": ">=1.4.28" } }, "node_modules/jsonwebtoken/node_modules/ms": { @@ -7613,6 +9232,9 @@ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, + "engines": [ + "node >=0.6.0" + ], "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -7694,7 +9316,10 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/latest-version": { "version": "3.1.0", @@ -7703,12 +9328,18 @@ "dev": true, "dependencies": { "package-json": "^4.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/lazystream": { "version": "1.0.0", @@ -7717,6 +9348,9 @@ "dev": true, "dependencies": { "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" } }, "node_modules/lcid": { @@ -7726,13 +9360,19 @@ "dev": true, "dependencies": { "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/levenary": { "version": "1.1.1", @@ -7741,6 +9381,9 @@ "dev": true, "dependencies": { "leven": "^3.1.0" + }, + "engines": { + "node": ">= 6" } }, "node_modules/levn": { @@ -7751,6 +9394,9 @@ "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/lie": { @@ -7776,6 +9422,9 @@ "object.map": "^1.0.0", "rechoir": "^0.6.2", "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/liftoff/node_modules/findup-sync": { @@ -7788,6 +9437,9 @@ "is-glob": "^3.1.0", "micromatch": "^3.0.4", "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/linkify-it": { @@ -7815,6 +9467,9 @@ "pify": "^2.0.0", "pinkie-promise": "^2.0.0", "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/load-json-file/node_modules/parse-json": { @@ -7824,13 +9479,19 @@ "dev": true, "dependencies": { "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/load-json-file/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/load-json-file/node_modules/strip-bom": { "version": "2.0.0", @@ -7839,13 +9500,19 @@ "dev": true, "dependencies": { "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } }, "node_modules/loader-utils": { "version": "1.4.0", @@ -7856,6 +9523,9 @@ "big.js": "^5.2.2", "emojis-list": "^3.0.0", "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/loader-utils/node_modules/json5": { @@ -7865,6 +9535,9 @@ "dev": true, "dependencies": { "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, "node_modules/locate-path": { @@ -7875,6 +9548,9 @@ "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/lodash": { @@ -7981,7 +9657,14 @@ "version": "1.6.8", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-loglevel?utm_medium=referral&utm_source=npm_fund" + } }, "node_modules/lolex": { "version": "2.7.5", @@ -7989,16 +9672,13 @@ "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", "dev": true }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - }, "node_modules/longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/loose-envify": { "version": "1.4.0", @@ -8007,13 +9687,19 @@ "dev": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" } }, "node_modules/lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/lru-cache": { "version": "4.1.5", @@ -8029,7 +9715,10 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz", "integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/make-dir": { "version": "2.1.0", @@ -8039,6 +9728,9 @@ "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/make-iterator": { @@ -8048,6 +9740,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/map-age-cleaner": { @@ -8057,13 +9752,19 @@ "dev": true, "dependencies": { "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/map-visit": { "version": "1.0.0", @@ -8072,6 +9773,9 @@ "dev": true, "dependencies": { "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/markdown": { @@ -8143,7 +9847,10 @@ "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/mem": { "version": "4.3.0", @@ -8154,6 +9861,9 @@ "map-age-cleaner": "^0.1.1", "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/memory-fs": { @@ -8174,7 +9884,10 @@ "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/micromatch": { "version": "3.1.10", @@ -8195,6 +9908,9 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/miller-rabin": { @@ -8205,6 +9921,9 @@ "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" } }, "node_modules/miller-rabin/node_modules/bn.js": { @@ -8216,12 +9935,21 @@ "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } }, "node_modules/mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "engines": { + "node": ">= 0.6" + } }, "node_modules/mime-types": { "version": "2.1.27", @@ -8229,13 +9957,19 @@ "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "dependencies": { "mime-db": "1.44.0" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/min-document": { "version": "2.19.0", @@ -8265,6 +9999,9 @@ "dev": true, "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, "node_modules/minimist": { @@ -8289,6 +10026,9 @@ "pumpify": "^1.3.3", "stream-each": "^1.1.0", "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/mixin-deep": { @@ -8299,6 +10039,9 @@ "dependencies": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/mixin-deep/node_modules/is-extendable": { @@ -8308,6 +10051,9 @@ "dev": true, "dependencies": { "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/mixin-object": { @@ -8318,13 +10064,19 @@ "dependencies": { "for-in": "^0.1.3", "is-extendable": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/mixin-object/node_modules/for-in": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/mkdirp": { "version": "0.5.5", @@ -8333,6 +10085,9 @@ "dev": true, "dependencies": { "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, "node_modules/mocha": { @@ -8352,6 +10107,13 @@ "minimatch": "3.0.4", "mkdirp": "0.5.1", "supports-color": "5.4.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/mocha/node_modules/commander": { @@ -8381,6 +10143,9 @@ "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" } }, "node_modules/mocha/node_modules/minimist": { @@ -8393,9 +10158,13 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, "dependencies": { "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, "node_modules/mocha/node_modules/supports-color": { @@ -8405,13 +10174,19 @@ "dev": true, "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/moment": { "version": "2.27.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/morgan": { "version": "1.10.0", @@ -8424,13 +10199,19 @@ "depd": "~2.0.0", "on-finished": "~2.3.0", "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/morgan/node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, "node_modules/move-concurrently": { "version": "1.0.1", @@ -8453,6 +10234,9 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/ms": { @@ -8470,6 +10254,9 @@ "array-union": "^1.0.1", "arrify": "^1.0.0", "minimatch": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/mute-stream": { @@ -8488,6 +10275,9 @@ "mkdirp": "~0.5.1", "ncp": "~2.0.0", "rimraf": "~2.4.0" + }, + "engines": { + "node": ">=0.8.0" } }, "node_modules/mv/node_modules/glob": { @@ -8502,6 +10292,9 @@ "minimatch": "2 || 3", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" } }, "node_modules/mv/node_modules/rimraf": { @@ -8512,6 +10305,9 @@ "optional": true, "dependencies": { "glob": "^6.0.1" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/mz": { @@ -8549,6 +10345,9 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/natural-compare": { @@ -8573,13 +10372,19 @@ "ini": "^1.3.0", "secure-keys": "^1.0.0", "yargs": "^3.19.0" + }, + "engines": { + "node": ">= 0.4.0" } }, "node_modules/nconf/node_modules/camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/nconf/node_modules/cliui": { "version": "3.2.0", @@ -8596,7 +10401,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/nconf/node_modules/is-fullwidth-code-point": { "version": "1.0.0", @@ -8605,6 +10413,9 @@ "dev": true, "dependencies": { "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/nconf/node_modules/lcid": { @@ -8614,6 +10425,9 @@ "dev": true, "dependencies": { "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/nconf/node_modules/os-locale": { @@ -8623,6 +10437,9 @@ "dev": true, "dependencies": { "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/nconf/node_modules/string-width": { @@ -8634,13 +10451,22 @@ "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/nconf/node_modules/window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "dev": true + "dev": true, + "bin": { + "window-size": "cli.js" + }, + "engines": { + "node": ">= 0.10.0" + } }, "node_modules/nconf/node_modules/y18n": { "version": "3.2.1", @@ -8668,7 +10494,10 @@ "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", "dev": true, - "optional": true + "optional": true, + "bin": { + "ncp": "bin/ncp" + } }, "node_modules/needle": { "version": "2.5.0", @@ -8679,12 +10508,19 @@ "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" } }, "node_modules/needle/node_modules/debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -8705,7 +10541,10 @@ "node_modules/negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "engines": { + "node": ">= 0.6" + } }, "node_modules/neo-async": { "version": "2.6.2", @@ -8717,7 +10556,10 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4.0" + } }, "node_modules/next-tick": { "version": "1.0.0", @@ -8732,6 +10574,9 @@ "dev": true, "dependencies": { "stylus": "0.54.5" + }, + "engines": { + "node": "*" } }, "node_modules/nib/node_modules/glob": { @@ -8746,6 +10591,9 @@ "minimatch": "^3.0.2", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" } }, "node_modules/nib/node_modules/source-map": { @@ -8755,6 +10603,9 @@ "dev": true, "dependencies": { "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" } }, "node_modules/nib/node_modules/stylus": { @@ -8769,6 +10620,12 @@ "mkdirp": "0.5.x", "sax": "0.5.x", "source-map": "0.1.x" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" } }, "node_modules/nice-try": { @@ -8824,6 +10681,44 @@ "isarray": "0.0.1" } }, + "node_modules/nock": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.1.3.tgz", + "integrity": "sha512-YKj0rKQWMGiiIO+Y65Ut8OEgYM3PplLU2+GAhnPmqZdBd6z5IskgdBqWmjzA6lH3RF0S2a3wiAlrMOF5Iv2Jeg==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" + }, + "engines": { + "node": ">= 10.13" + } + }, + "node_modules/nock/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nock/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", @@ -8833,35 +10728,14 @@ } }, "node_modules/node-forge": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", - "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", - "dev": true - }, - "node_modules/node-jose": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.1.4.tgz", - "integrity": "sha512-L31IFwL3pWWcMHxxidCY51ezqrDXMkvlT/5pLTfNw5sXmmOLJuN6ug7txzF/iuZN55cRpyOmoJrotwBQIoo5Lw==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", "dev": true, - "dependencies": { - "base64url": "^3.0.1", - "browserify-zlib": "^0.2.0", - "buffer": "^5.5.0", - "es6-promise": "^4.2.8", - "lodash": "^4.17.15", - "long": "^4.0.0", - "node-forge": "^0.8.5", - "process": "^0.11.10", - "react-zlib-js": "^1.0.4", - "uuid": "^3.3.3" + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/node-jose/node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, "node_modules/node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -8914,7 +10788,21 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/node-libs-browser/node_modules/string_decoder": { "version": "1.3.0", @@ -8938,7 +10826,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/node-notifier": { "version": "5.2.1", @@ -8978,6 +10869,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "deprecated": "Package no longer supported. Contact support@npmjs.com for more info.", "dev": true, "dependencies": { "chalk": "~0.4.0", @@ -8988,7 +10880,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/nomnom/node_modules/chalk": { "version": "0.4.0", @@ -8999,13 +10894,22 @@ "ansi-styles": "~1.0.0", "has-color": "~0.1.0", "strip-ansi": "~0.1.0" + }, + "engines": { + "node": ">=0.8.0" } }, "node_modules/nomnom/node_modules/strip-ansi": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true + "dev": true, + "bin": { + "strip-ansi": "cli.js" + }, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/nopt": { "version": "3.0.6", @@ -9014,6 +10918,9 @@ "dev": true, "dependencies": { "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" } }, "node_modules/normalize-package-data": { @@ -9035,6 +10942,9 @@ "dev": true, "dependencies": { "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/npm-run-path": { @@ -9044,6 +10954,9 @@ "dev": true, "dependencies": { "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/nth-check": { @@ -9059,18 +10972,27 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/object-copy": { "version": "0.1.0", @@ -9081,6 +11003,9 @@ "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object-copy/node_modules/define-property": { @@ -9090,6 +11015,9 @@ "dev": true, "dependencies": { "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object-copy/node_modules/kind-of": { @@ -9099,13 +11027,19 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/object-is": { "version": "1.1.2", @@ -9115,13 +11049,22 @@ "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + } }, "node_modules/object-visit": { "version": "1.0.1", @@ -9130,6 +11073,9 @@ "dev": true, "dependencies": { "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object.assign": { @@ -9142,6 +11088,9 @@ "function-bind": "^1.1.1", "has-symbols": "^1.0.0", "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/object.defaults": { @@ -9154,6 +11103,9 @@ "array-slice": "^1.0.0", "for-own": "^1.0.0", "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object.map": { @@ -9164,6 +11116,9 @@ "dependencies": { "for-own": "^1.0.0", "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object.pick": { @@ -9173,6 +11128,9 @@ "dev": true, "dependencies": { "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/on-finished": { @@ -9181,13 +11139,19 @@ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "dependencies": { "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/on-headers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, "node_modules/once": { "version": "1.4.0", @@ -9204,13 +11168,19 @@ "dev": true, "dependencies": { "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/onetime/node_modules/mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/opn": { "version": "4.0.2", @@ -9220,6 +11190,9 @@ "dependencies": { "object-assign": "^4.0.1", "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/optionator": { @@ -9234,6 +11207,9 @@ "prelude-ls": "~1.1.2", "type-check": "~0.3.2", "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/os-browserify": { @@ -9246,7 +11222,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/os-locale": { "version": "3.0.1", @@ -9257,6 +11236,9 @@ "execa": "^0.10.0", "lcid": "^2.0.0", "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/os-name": { @@ -9267,19 +11249,28 @@ "dependencies": { "macos-release": "^1.0.0", "win-release": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/os-shim": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4.0" + } }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/osenv": { "version": "0.1.5", @@ -9306,19 +11297,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/p-is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/p-limit": { "version": "2.3.0", @@ -9327,6 +11327,12 @@ "dev": true, "dependencies": { "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { @@ -9336,13 +11342,19 @@ "dev": true, "dependencies": { "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/pac-proxy-agent": { "version": "2.0.2", @@ -9364,6 +11376,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -9398,6 +11411,9 @@ "registry-auth-token": "^3.0.1", "registry-url": "^3.0.3", "semver": "^5.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/pako": { @@ -9440,6 +11456,9 @@ "is-absolute": "^1.0.0", "map-cache": "^0.2.0", "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" } }, "node_modules/parse-json": { @@ -9450,13 +11469,19 @@ "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, "node_modules/parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/parse5": { "version": "3.0.3", @@ -9470,13 +11495,19 @@ "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } }, "node_modules/pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/path": { "version": "0.12.7", @@ -9504,13 +11535,19 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/path-is-inside": { "version": "1.0.2", @@ -9522,7 +11559,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/path-parse": { "version": "1.0.6", @@ -9536,13 +11576,19 @@ "dev": true, "dependencies": { "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/path-root-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/path-to-regexp": { "version": "0.1.7", @@ -9558,19 +11604,28 @@ "graceful-fs": "^4.1.2", "pify": "^2.0.0", "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/path-type/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/pathval": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/pbkdf2": { "version": "3.1.1", @@ -9583,6 +11638,9 @@ "ripemd160": "^2.0.1", "safe-buffer": "^5.0.1", "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/pend": { @@ -9602,19 +11660,31 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, "node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/pinkie-promise": { "version": "2.0.1", @@ -9623,6 +11693,9 @@ "dev": true, "dependencies": { "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/pino": { @@ -9639,6 +11712,9 @@ "pump": "^3.0.0", "quick-format-unescaped": "^3.0.0", "sonic-boom": "^0.6.3" + }, + "bin": { + "pino": "bin.js" } }, "node_modules/pino-std-serializers": { @@ -9664,6 +11740,9 @@ "dev": true, "dependencies": { "node-modules-regexp": "^1.0.0" + }, + "engines": { + "node": ">= 6" } }, "node_modules/pkg-dir": { @@ -9673,13 +11752,19 @@ "dev": true, "dependencies": { "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/pluralize": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/po2json": { "version": "0.4.5", @@ -9689,13 +11774,24 @@ "dependencies": { "gettext-parser": "1.1.0", "nomnom": "1.8.1" + }, + "bin": { + "po2json": "bin/po2json" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/popper.js": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "dev": true + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } }, "node_modules/portscanner": { "version": "1.2.0", @@ -9704,13 +11800,20 @@ "dev": true, "dependencies": { "async": "1.5.2" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" } }, "node_modules/posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/postcss": { "version": "7.0.6", @@ -9721,31 +11824,46 @@ "chalk": "^2.4.1", "source-map": "^0.6.1", "supports-color": "^5.5.0" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/postcss/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, "node_modules/probe-image-size": { "version": "4.0.0", @@ -9765,7 +11883,10 @@ "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6.0" + } }, "node_modules/process-nextick-args": { "version": "2.0.1", @@ -9777,7 +11898,10 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/promise": { "version": "7.3.1", @@ -9797,7 +11921,20 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/promise.any/-/promise.any-0.1.1.tgz", "integrity": "sha1-Fg+JisPHW1y7cw/yOgyi8XQHvzo=", - "dev": true + "deprecated": "Please use v1.0 or higher, which is now compliant with the proposed JS spec", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true, + "engines": { + "node": ">= 8" + } }, "node_modules/proxy-addr": { "version": "2.0.6", @@ -9806,6 +11943,9 @@ "dependencies": { "forwarded": "~0.1.2", "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/proxy-agent": { @@ -9828,6 +11968,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -10022,13 +12163,17 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/puppeteer": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz", "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==", "dev": true, + "hasInstallScript": true, "dependencies": { "debug": "^4.1.0", "extract-zip": "^1.6.6", @@ -10038,12 +12183,16 @@ "proxy-from-env": "^1.0.0", "rimraf": "^2.6.1", "ws": "^6.1.0" + }, + "engines": { + "node": ">=6.4.0" } }, "node_modules/puppeteer/node_modules/debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -10053,7 +12202,13 @@ "version": "2.4.6", "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", - "dev": true + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } }, "node_modules/puppeteer/node_modules/ms": { "version": "2.1.2", @@ -10068,23 +12223,36 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "engines": { + "node": ">=0.6" + } }, "node_modules/querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } }, "node_modules/querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.x" + } }, "node_modules/quick-format-unescaped": { "version": "3.0.3", @@ -10114,7 +12282,10 @@ "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } }, "node_modules/raw-body": { "version": "2.4.0", @@ -10125,6 +12296,9 @@ "http-errors": "1.7.2", "iconv-lite": "0.4.24", "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/rc": { @@ -10137,14 +12311,11 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" } }, - "node_modules/react-zlib-js": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/react-zlib-js/-/react-zlib-js-1.0.5.tgz", - "integrity": "sha512-TLcPdmqhIl+ylwOwlfm1WUuI7NVvhAv3L74d1AabhjyaAbmLOROTA/Q4EQ/UMCFCOjIkVim9fT3UZOQSFk/mlA==", - "dev": true - }, "node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -10154,6 +12325,9 @@ "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/read-pkg-up": { @@ -10164,6 +12338,9 @@ "dependencies": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/read-pkg-up/node_modules/find-up": { @@ -10174,6 +12351,9 @@ "dependencies": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/read-pkg-up/node_modules/path-exists": { @@ -10183,6 +12363,9 @@ "dev": true, "dependencies": { "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/readable-stream": { @@ -10218,6 +12401,9 @@ "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/readline2": { @@ -10238,6 +12424,9 @@ "dev": true, "dependencies": { "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/readline2/node_modules/mute-stream": { @@ -10253,6 +12442,9 @@ "dev": true, "dependencies": { "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/recursive-readdir": { @@ -10262,6 +12454,9 @@ "dev": true, "dependencies": { "minimatch": "3.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/regenerate": { @@ -10277,6 +12472,9 @@ "dev": true, "dependencies": { "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/regenerator-runtime": { @@ -10302,6 +12500,9 @@ "dependencies": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/regexp.prototype.flags": { @@ -10312,13 +12513,22 @@ "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regexpp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0.0" + } }, "node_modules/regexpu-core": { "version": "4.7.0", @@ -10332,6 +12542,9 @@ "regjsparser": "^0.6.4", "unicode-match-property-ecmascript": "^1.0.4", "unicode-match-property-value-ecmascript": "^1.2.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/registry-auth-token": { @@ -10351,6 +12564,9 @@ "dev": true, "dependencies": { "rc": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/regjsgen": { @@ -10366,13 +12582,19 @@ "dev": true, "dependencies": { "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" } }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } }, "node_modules/relaxed-json": { "version": "1.0.1", @@ -10382,13 +12604,22 @@ "dependencies": { "chalk": "^1.0.0", "commander": "^2.6.0" + }, + "bin": { + "rjson": "bin/rjson.js" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/relaxed-json/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/relaxed-json/node_modules/chalk": { "version": "1.1.3", @@ -10401,13 +12632,19 @@ "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/relaxed-json/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/remove-trailing-separator": { "version": "1.1.0", @@ -10419,12 +12656,18 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "engines": { + "node": ">=0.10" + } }, "node_modules/repeating": { "version": "2.0.1", @@ -10433,12 +12676,16 @@ "dev": true, "dependencies": { "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -10461,6 +12708,9 @@ "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" } }, "node_modules/request-promise-core": { @@ -10470,30 +12720,49 @@ "dev": true, "dependencies": { "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" } }, "node_modules/request-promise-native": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", "dev": true, "dependencies": { "request-promise-core": "1.1.4", "stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" } }, "node_modules/request/node_modules/qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6" + } }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/require-main-filename": { "version": "1.0.1", @@ -10509,6 +12778,9 @@ "dependencies": { "caller-path": "^0.1.0", "resolve-from": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/resolve": { @@ -10517,6 +12789,9 @@ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dependencies": { "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-dir": { @@ -10527,18 +12802,25 @@ "dependencies": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", "dev": true }, "node_modules/restore-cursor": { @@ -10549,13 +12831,19 @@ "dependencies": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" } }, "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12" + } }, "node_modules/right-align": { "version": "0.1.3", @@ -10563,6 +12851,9 @@ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dependencies": { "align-text": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/rimraf": { @@ -10572,6 +12863,12 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ripemd160": { @@ -10588,7 +12885,10 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, "node_modules/run-queue": { "version": "1.0.3", @@ -10621,6 +12921,9 @@ "dev": true, "dependencies": { "symbol-observable": "1.0.1" + }, + "engines": { + "npm": ">=2.0.0" } }, "node_modules/safe-buffer": { @@ -10659,6 +12962,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", + "deprecated": "This package has been deprecated in favour of @sinonjs/samsam", "dev": true }, "node_modules/sax": { @@ -10676,6 +12980,13 @@ "@types/json-schema": "^7.0.4", "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/secure-keys": { @@ -10688,7 +12999,10 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver" + } }, "node_modules/semver-diff": { "version": "2.1.0", @@ -10697,6 +13011,9 @@ "dev": true, "dependencies": { "semver": "^5.0.3" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/send": { @@ -10717,6 +13034,9 @@ "on-finished": "~2.3.0", "range-parser": "~1.2.1", "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/send/node_modules/ms": { @@ -10743,6 +13063,9 @@ "http-errors": "~1.6.2", "mime-types": "~2.1.17", "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/serve-index/node_modules/http-errors": { @@ -10755,6 +13078,9 @@ "inherits": "2.0.3", "setprototypeof": "1.1.0", "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/serve-index/node_modules/setprototypeof": { @@ -10772,6 +13098,9 @@ "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/set-blocking": { @@ -10784,7 +13113,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/set-value": { "version": "2.0.1", @@ -10796,6 +13128,9 @@ "is-extendable": "^0.1.1", "is-plain-object": "^2.0.3", "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/set-value/node_modules/extend-shallow": { @@ -10805,6 +13140,9 @@ "dev": true, "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/setimmediate": { @@ -10826,6 +13164,9 @@ "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" } }, "node_modules/shallow-clone": { @@ -10838,6 +13179,9 @@ "kind-of": "^2.0.1", "lazy-cache": "^0.2.3", "mixin-object": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/shallow-clone/node_modules/kind-of": { @@ -10847,13 +13191,19 @@ "dev": true, "dependencies": { "is-buffer": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/shallow-clone/node_modules/lazy-cache": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/shebang-command": { "version": "1.2.0", @@ -10862,13 +13212,19 @@ "dev": true, "dependencies": { "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/shell-quote": { "version": "1.6.1", @@ -10891,6 +13247,12 @@ "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" } }, "node_modules/shellwords": { @@ -10956,10 +13318,14 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "deprecated": "this library is no longer supported", "dev": true, "dependencies": { "ajv": "^5.1.0", "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/sign-addon/node_modules/json-schema-traverse": { @@ -10983,7 +13349,10 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/sign-addon/node_modules/punycode": { "version": "1.4.1", @@ -10995,7 +13364,10 @@ "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6" + } }, "node_modules/sign-addon/node_modules/regenerator-runtime": { "version": "0.9.6", @@ -11007,6 +13379,7 @@ "version": "2.87.0", "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -11029,6 +13402,9 @@ "tough-cookie": "~2.3.3", "tunnel-agent": "^0.6.0", "uuid": "^3.1.0" + }, + "engines": { + "node": ">= 4" } }, "node_modules/sign-addon/node_modules/source-map-support": { @@ -11047,6 +13423,9 @@ "dev": true, "dependencies": { "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" } }, "node_modules/signal-exit": { @@ -11060,6 +13439,7 @@ "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.5.0.tgz", "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", "dev": true, + "hasInstallScript": true, "dependencies": { "@sinonjs/formatio": "^2.0.0", "diff": "^3.1.0", @@ -11074,13 +13454,20 @@ "version": "2.14.0", "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", - "dev": true + "dev": true, + "peerDependencies": { + "chai": ">=1.9.2 <5", + "sinon": "^1.4.0 || ^2.1.0 || ^3.0.0 || ^4.0.0" + } }, "node_modules/slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/slice-ansi": { "version": "1.0.0", @@ -11089,13 +13476,20 @@ "dev": true, "dependencies": { "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/smart-buffer": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.10.15", + "npm": ">= 1.3.5" + } }, "node_modules/snapdragon": { "version": "0.8.2", @@ -11111,6 +13505,9 @@ "source-map": "^0.5.6", "source-map-resolve": "^0.5.0", "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-node": { @@ -11122,6 +13519,9 @@ "define-property": "^1.0.0", "isobject": "^3.0.0", "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-node/node_modules/define-property": { @@ -11131,6 +13531,9 @@ "dev": true, "dependencies": { "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { @@ -11140,6 +13543,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-node/node_modules/is-data-descriptor": { @@ -11149,6 +13555,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-node/node_modules/is-descriptor": { @@ -11160,6 +13569,9 @@ "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-util": { @@ -11169,6 +13581,9 @@ "dev": true, "dependencies": { "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-util/node_modules/kind-of": { @@ -11178,6 +13593,9 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon/node_modules/define-property": { @@ -11187,6 +13605,9 @@ "dev": true, "dependencies": { "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon/node_modules/extend-shallow": { @@ -11196,6 +13617,9 @@ "dev": true, "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snyk": { @@ -11240,6 +13664,12 @@ "then-fs": "^2.0.0", "undefsafe": "^2.0.0", "uuid": "^3.2.1" + }, + "bin": { + "snyk": "dist/cli/index.js" + }, + "engines": { + "node": ">=4" } }, "node_modules/snyk-config": { @@ -11257,6 +13687,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11283,6 +13714,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11328,6 +13760,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11357,6 +13790,12 @@ "source-map-support": "^0.5.7", "tslib": "^1.9.3", "uuid": "^3.3.2" + }, + "bin": { + "parse-nodejs-lockfile": "bin/index.js" + }, + "engines": { + "node": ">=4" } }, "node_modules/snyk-nodejs-lockfile-parser/node_modules/lodash": { @@ -11381,6 +13820,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11407,6 +13847,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11439,6 +13880,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11496,6 +13938,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11511,6 +13954,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11535,6 +13979,9 @@ "dev": true, "dependencies": { "archy": "^1.0.0" + }, + "bin": { + "npm-tree": "lib/index.js" } }, "node_modules/snyk-try-require": { @@ -11553,6 +14000,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11568,12 +14016,16 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/snyk/node_modules/debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11614,6 +14066,9 @@ "dev": true, "dependencies": { "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/snyk/node_modules/rx-lite": { @@ -11629,16 +14084,24 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/socks": { "version": "1.1.10", "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", + "deprecated": "If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0", "dev": true, "dependencies": { "ip": "^1.1.4", "smart-buffer": "^1.0.13" + }, + "engines": { + "node": ">= 0.10.0", + "npm": ">= 1.3.5" } }, "node_modules/socks-proxy-agent": { @@ -11669,7 +14132,10 @@ "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/source-map-resolve": { "version": "0.5.3", @@ -11698,7 +14164,10 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/source-map-url": { "version": "0.4.0", @@ -11711,6 +14180,7 @@ "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", "dev": true, + "hasInstallScript": true, "dependencies": { "concat-stream": "^1.4.7", "os-shim": "^0.1.2" @@ -11755,6 +14225,9 @@ "dev": true, "dependencies": { "through": "2" + }, + "engines": { + "node": "*" } }, "node_modules/split-string": { @@ -11764,6 +14237,9 @@ "dev": true, "dependencies": { "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/sprintf-js": { @@ -11787,6 +14263,14 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/ssri": { @@ -11806,6 +14290,9 @@ "dependencies": { "define-property": "^0.2.5", "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/static-extend/node_modules/define-property": { @@ -11815,18 +14302,27 @@ "dev": true, "dependencies": { "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/stream-browserify": { "version": "2.0.2", @@ -11934,13 +14430,19 @@ "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/string-width/node_modules/ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/string-width/node_modules/strip-ansi": { "version": "4.0.0", @@ -11949,6 +14451,9 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/string.prototype.matchall": { @@ -11972,6 +14477,9 @@ "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { @@ -11982,6 +14490,9 @@ "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/strip-ansi": { @@ -11991,13 +14502,19 @@ "dev": true, "dependencies": { "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/strip-bom-buf": { "version": "1.0.0", @@ -12006,6 +14523,9 @@ "dev": true, "dependencies": { "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=4" } }, "node_modules/strip-bom-stream": { @@ -12016,19 +14536,28 @@ "dependencies": { "first-chunk-stream": "^2.0.0", "strip-bom-buf": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/stylus": { "version": "0.54.8", @@ -12044,6 +14573,12 @@ "sax": "~1.2.4", "semver": "^6.3.0", "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" } }, "node_modules/stylus/node_modules/css-parse": { @@ -12068,7 +14603,13 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/stylus/node_modules/sax": { "version": "1.2.4", @@ -12080,13 +14621,19 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, "node_modules/stylus/node_modules/source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 8" + } }, "node_modules/supports-color": { "version": "5.5.0", @@ -12095,13 +14642,19 @@ "dev": true, "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/table": { "version": "4.0.3", @@ -12115,13 +14668,19 @@ "lodash": "^4.17.4", "slice-ansi": "1.0.0", "string-width": "^2.1.1" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/tar-stream": { "version": "1.6.2", @@ -12136,13 +14695,19 @@ "readable-stream": "^2.3.0", "to-buffer": "^1.1.1", "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/tempfile": { "version": "2.0.0", @@ -12152,6 +14717,9 @@ "dependencies": { "temp-dir": "^1.0.0", "uuid": "^3.0.1" + }, + "engines": { + "node": ">=4" } }, "node_modules/term-size": { @@ -12161,6 +14729,9 @@ "dev": true, "dependencies": { "execa": "^0.7.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/term-size/node_modules/cross-spawn": { @@ -12187,6 +14758,9 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/terser": { @@ -12198,6 +14772,12 @@ "commander": "^2.20.0", "source-map": "~0.6.1", "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/terser-webpack-plugin": { @@ -12215,6 +14795,12 @@ "terser": "^4.1.2", "webpack-sources": "^1.4.0", "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, "node_modules/terser-webpack-plugin/node_modules/cacache": { @@ -12265,6 +14851,9 @@ "pumpify": "^1.3.3", "stream-each": "^1.1.0", "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/terser-webpack-plugin/node_modules/pump": { @@ -12284,6 +14873,9 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { @@ -12295,6 +14887,9 @@ "ajv": "^6.1.0", "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" } }, "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { @@ -12310,7 +14905,10 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/terser-webpack-plugin/node_modules/ssri": { "version": "6.0.1", @@ -12331,7 +14929,10 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/text-table": { "version": "0.2.0", @@ -12364,6 +14965,9 @@ "dev": true, "dependencies": { "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" } }, "node_modules/through": { @@ -12392,7 +14996,10 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/timers-browserify": { "version": "2.0.11", @@ -12401,6 +15008,9 @@ "dev": true, "dependencies": { "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/tiny-lr": { @@ -12421,6 +15031,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -12448,6 +15059,9 @@ "dev": true, "dependencies": { "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/to-arraybuffer": { @@ -12466,7 +15080,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/to-object-path": { "version": "0.3.0", @@ -12475,6 +15092,9 @@ "dev": true, "dependencies": { "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/to-object-path/node_modules/kind-of": { @@ -12484,6 +15104,9 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/to-regex": { @@ -12496,6 +15119,9 @@ "extend-shallow": "^3.0.2", "regex-not": "^1.0.2", "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/to-regex-range": { @@ -12506,12 +15132,18 @@ "dependencies": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "engines": { + "node": ">=0.6" + } }, "node_modules/token-stream": { "version": "0.0.1", @@ -12528,7 +15160,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", "integrity": "sha1-QtiN0RZhi88A1hBt1URvNCeQL/E=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/tough-cookie": { "version": "2.5.0", @@ -12538,6 +15173,9 @@ "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" } }, "node_modules/tr46": { @@ -12553,13 +15191,19 @@ "version": "0.4.6", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.4.6.tgz", "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/tslib": { "version": "1.13.0", @@ -12580,13 +15224,19 @@ "dev": true, "dependencies": { "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" } }, "node_modules/tv4": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/tv4-formats": { "version": "3.0.3", @@ -12617,13 +15267,19 @@ "dev": true, "dependencies": { "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/type-is": { "version": "1.6.18", @@ -12632,6 +15288,9 @@ "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/typedarray": { @@ -12651,9 +15310,14 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dependencies": { "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", "yargs": "~3.10.0" }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + }, "optionalDependencies": { "uglify-to-browserify": "~1.0.0" } @@ -12678,6 +15342,12 @@ "uglify-es": "^3.3.4", "webpack-sources": "^1.1.0", "worker-farm": "^1.5.2" + }, + "engines": { + "node": ">= 4.8 < 5.0.0 || >= 5.10" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/commander": { @@ -12695,6 +15365,9 @@ "commondir": "^1.0.1", "make-dir": "^1.0.0", "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/find-up": { @@ -12704,6 +15377,9 @@ "dev": true, "dependencies": { "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/locate-path": { @@ -12714,6 +15390,9 @@ "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/make-dir": { @@ -12723,6 +15402,9 @@ "dev": true, "dependencies": { "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/p-limit": { @@ -12732,6 +15414,9 @@ "dev": true, "dependencies": { "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/p-locate": { @@ -12741,19 +15426,28 @@ "dev": true, "dependencies": { "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/uglifyjs-webpack-plugin/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/uglifyjs-webpack-plugin/node_modules/pkg-dir": { "version": "2.0.0", @@ -12762,6 +15456,9 @@ "dev": true, "dependencies": { "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/schema-utils": { @@ -12772,29 +15469,45 @@ "dependencies": { "ajv": "^6.1.0", "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/uglifyjs-webpack-plugin/node_modules/uglify-es": { "version": "3.3.9", "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0", "dev": true, "dependencies": { "commander": "~2.13.0", "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" } }, "node_modules/unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/undefsafe": { "version": "2.0.3", @@ -12819,13 +15532,19 @@ "dependencies": { "sprintf-js": "^1.0.3", "util-deprecate": "^1.0.2" + }, + "engines": { + "node": "*" } }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/unicode-match-property-ecmascript": { "version": "1.0.4", @@ -12835,19 +15554,28 @@ "dependencies": { "unicode-canonical-property-names-ecmascript": "^1.0.4", "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/unicode-property-aliases-ecmascript": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/union-value": { "version": "1.0.1", @@ -12859,6 +15587,9 @@ "get-value": "^2.0.6", "is-extendable": "^0.1.1", "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/unique-filename": { @@ -12886,6 +15617,9 @@ "dev": true, "dependencies": { "crypto-random-string": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/universal-user-agent": { @@ -12897,12 +15631,18 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 4.0.0" + } }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } }, "node_modules/unset-value": { "version": "1.0.0", @@ -12912,6 +15652,9 @@ "dependencies": { "has-value": "^0.3.1", "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/unset-value/node_modules/has-value": { @@ -12923,6 +15666,9 @@ "get-value": "^2.0.3", "has-values": "^0.1.4", "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { @@ -12932,25 +15678,37 @@ "dev": true, "dependencies": { "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/unset-value/node_modules/has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/upath": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/update-notifier": { "version": "2.3.0", @@ -12967,6 +15725,9 @@ "latest-version": "^3.0.0", "semver-diff": "^2.0.0", "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uri-js": { @@ -12982,6 +15743,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", "dev": true }, "node_modules/url": { @@ -13001,6 +15763,9 @@ "dev": true, "dependencies": { "prepend-http": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/url/node_modules/punycode": { @@ -13013,7 +15778,10 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/user-home": { "version": "2.0.0", @@ -13022,6 +15790,9 @@ "dev": true, "dependencies": { "os-homedir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/util": { @@ -13042,13 +15813,20 @@ "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } }, "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } }, "node_modules/v8flags": { "version": "3.1.3", @@ -13057,6 +15835,9 @@ "dev": true, "dependencies": { "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/validate-npm-package-license": { @@ -13073,18 +15854,27 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.10" + } }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } }, "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, + "engines": [ + "node >=0.6.0" + ], "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -13100,7 +15890,10 @@ "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/vscode-languageserver-types": { "version": "3.15.1", @@ -13112,7 +15905,10 @@ "version": "0.0.11", "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6.0" + } }, "node_modules/watchpack": { "version": "1.5.0", @@ -13133,6 +15929,9 @@ "optional": true, "dependencies": { "chokidar": "^2.1.8" + }, + "engines": { + "node": "<8.10.0" } }, "node_modules/wcwidth": { @@ -13183,13 +15982,23 @@ "watchpack": "1.5.0", "yargs": "6.6.0", "zip-dir": "1.0.2" + }, + "bin": { + "web-ext": "bin/web-ext" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=3.0.0" } }, "node_modules/web-ext/node_modules/camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/web-ext/node_modules/cliui": { "version": "3.2.0", @@ -13209,13 +16018,19 @@ "dev": true, "dependencies": { "xregexp": "4.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/web-ext/node_modules/invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/web-ext/node_modules/is-fullwidth-code-point": { "version": "1.0.0", @@ -13224,6 +16039,9 @@ "dev": true, "dependencies": { "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/web-ext/node_modules/lcid": { @@ -13233,6 +16051,9 @@ "dev": true, "dependencies": { "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/web-ext/node_modules/minimist": { @@ -13245,9 +16066,13 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, "dependencies": { "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, "node_modules/web-ext/node_modules/opn": { @@ -13257,6 +16082,9 @@ "dev": true, "dependencies": { "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/web-ext/node_modules/os-locale": { @@ -13266,6 +16094,9 @@ "dev": true, "dependencies": { "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/web-ext/node_modules/regenerator-runtime": { @@ -13278,7 +16109,10 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/web-ext/node_modules/source-map-support": { "version": "0.5.3", @@ -13298,6 +16132,9 @@ "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/web-ext/node_modules/which-module": { @@ -13352,19 +16189,28 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/web-ext/node_modules/yargs/node_modules/camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/web-ext/node_modules/yargs/node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/webidl-conversions": { "version": "4.0.2", @@ -13401,6 +16247,24 @@ "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.7.4", "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, "node_modules/webpack-merge": { @@ -13426,13 +16290,22 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/webpack/node_modules/acorn": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/webpack/node_modules/anymatch": { "version": "3.1.1", @@ -13443,6 +16316,9 @@ "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, "node_modules/webpack/node_modules/binary-extensions": { @@ -13450,7 +16326,10 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=8" + } }, "node_modules/webpack/node_modules/braces": { "version": "3.0.2", @@ -13460,6 +16339,9 @@ "optional": true, "dependencies": { "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/webpack/node_modules/chokidar": { @@ -13471,12 +16353,17 @@ "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.4.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.1.2" } }, "node_modules/webpack/node_modules/fill-range": { @@ -13487,14 +16374,25 @@ "optional": true, "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/webpack/node_modules/fsevents": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "deprecated": "\"Please update to latest v2.3 or v2.2\"", "dev": true, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, "node_modules/webpack/node_modules/glob-parent": { "version": "5.1.1", @@ -13504,6 +16402,9 @@ "optional": true, "dependencies": { "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/webpack/node_modules/is-binary-path": { @@ -13514,6 +16415,9 @@ "optional": true, "dependencies": { "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/webpack/node_modules/is-glob": { @@ -13524,6 +16428,9 @@ "optional": true, "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/webpack/node_modules/is-number": { @@ -13531,14 +16438,20 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=0.12.0" + } }, "node_modules/webpack/node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/webpack/node_modules/readdirp": { "version": "3.4.0", @@ -13548,6 +16461,9 @@ "optional": true, "dependencies": { "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, "node_modules/webpack/node_modules/schema-utils": { @@ -13559,6 +16475,9 @@ "ajv": "^6.1.0", "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" } }, "node_modules/webpack/node_modules/to-regex-range": { @@ -13569,6 +16488,9 @@ "optional": true, "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, "node_modules/webpack/node_modules/watchpack": { @@ -13577,10 +16499,8 @@ "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", "dev": true, "dependencies": { - "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" + "neo-async": "^2.5.0" }, "optionalDependencies": { "chokidar": "^3.4.1", @@ -13596,13 +16516,19 @@ "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" } }, "node_modules/websocket-extensions": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/whatwg-url": { "version": "7.0.0", @@ -13628,6 +16554,9 @@ "dev": true, "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, "node_modules/which-module": { @@ -13643,6 +16572,9 @@ "dev": true, "dependencies": { "string-width": "^2.1.1" + }, + "engines": { + "node": ">=4" } }, "node_modules/win-release": { @@ -13652,12 +16584,18 @@ "dev": true, "dependencies": { "semver": "^5.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/winreg": { "version": "0.0.12", @@ -13678,12 +16616,18 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "engines": { + "node": ">=0.4.0" + } }, "node_modules/worker-farm": { "version": "1.7.0", @@ -13702,6 +16646,9 @@ "dependencies": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { @@ -13711,6 +16658,9 @@ "dev": true, "dependencies": { "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/wrap-ansi/node_modules/string-width": { @@ -13722,6 +16672,9 @@ "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/wrappy": { @@ -13736,6 +16689,9 @@ "dev": true, "dependencies": { "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/write-file-atomic": { @@ -13762,7 +16718,10 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/xhr-mock": { "version": "2.5.1", @@ -13782,6 +16741,9 @@ "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/xml2js/node_modules/sax": { @@ -13794,25 +16756,38 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0" + } }, "node_modules/xmldom": { "version": "0.1.27", "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", - "dev": true + "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", + "dev": true, + "engines": { + "node": ">=0.1" + } }, "node_modules/xregexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4" + } }, "node_modules/y18n": { "version": "4.0.0", @@ -13851,7 +16826,10 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/yauzl": { "version": "2.10.0", @@ -13892,6 +16870,9 @@ "compress-commons": "^1.2.0", "lodash": "^4.8.0", "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" } } }, @@ -15506,7 +18487,8 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true + "dev": true, + "requires": {} }, "adbkit": { "version": "2.11.0", @@ -15814,13 +18796,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv-merge-patch": { "version": "4.1.0", @@ -16718,6 +19702,12 @@ "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", "dev": true }, + "bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "dev": true + }, "boxen": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", @@ -18793,7 +21783,8 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true + "dev": true, + "requires": {} }, "ansi-escapes": { "version": "1.4.0", @@ -20481,7 +23472,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz", "integrity": "sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg==", - "dev": true + "dev": true, + "requires": {} }, "grunt-known-options": { "version": "1.1.1", @@ -21412,6 +24404,12 @@ "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", "dev": true }, + "jose": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-3.19.0.tgz", + "integrity": "sha512-G5imz/7oSe8Ohg4EMEhGhMhN+yzACMw7NC7ZrEYSoJekQXHPf+TPQNc/XJkYRm6TFWIbf3HA4OHZhdRv8KsskA==", + "dev": true + }, "jquery": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", @@ -21958,12 +24956,6 @@ "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", "dev": true }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -22805,43 +25797,46 @@ } } }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - }, - "node-forge": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", - "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", - "dev": true - }, - "node-jose": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.1.4.tgz", - "integrity": "sha512-L31IFwL3pWWcMHxxidCY51ezqrDXMkvlT/5pLTfNw5sXmmOLJuN6ug7txzF/iuZN55cRpyOmoJrotwBQIoo5Lw==", + "nock": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.1.3.tgz", + "integrity": "sha512-YKj0rKQWMGiiIO+Y65Ut8OEgYM3PplLU2+GAhnPmqZdBd6z5IskgdBqWmjzA6lH3RF0S2a3wiAlrMOF5Iv2Jeg==", "dev": true, "requires": { - "base64url": "^3.0.1", - "browserify-zlib": "^0.2.0", - "buffer": "^5.5.0", - "es6-promise": "^4.2.8", - "lodash": "^4.17.15", - "long": "^4.0.0", - "node-forge": "^0.8.5", - "process": "^0.11.10", - "react-zlib-js": "^1.0.4", - "uuid": "^3.3.3" + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" }, "dependencies": { - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -23797,6 +26792,12 @@ "integrity": "sha1-Fg+JisPHW1y7cw/yOgyi8XQHvzo=", "dev": true }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true + }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", @@ -24143,12 +27144,6 @@ "strip-json-comments": "~2.0.1" } }, - "react-zlib-js": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/react-zlib-js/-/react-zlib-js-1.0.5.tgz", - "integrity": "sha512-TLcPdmqhIl+ylwOwlfm1WUuI7NVvhAv3L74d1AabhjyaAbmLOROTA/Q4EQ/UMCFCOjIkVim9fT3UZOQSFk/mlA==", - "dev": true - }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -25100,7 +28095,8 @@ "version": "2.14.0", "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", - "dev": true + "dev": true, + "requires": {} }, "slash": { "version": "1.0.0", diff --git a/package.json b/package.json index b4105f15..a5d531a1 100644 --- a/package.json +++ b/package.json @@ -16,17 +16,15 @@ "pug": "^2.0.4", "querystring": "^0.2.0" }, - "devEngines": { - "node": "^8.12.0", - "npm": "^6.4.1" - }, "devDependencies": { "@babel/core": "^7.4.5", "@babel/polyfill": "^7.4.4", "@babel/preset-env": "^7.4.5", "babel-loader": "^8.0.6", "babel-plugin-transform-async-to-generator": "^6.24.1", + "base64url": "^3.0.1", "bootstrap": "^3.4.1", + "bowser": "^2.11.0", "chai": "^4.2.0", "chai-arrays": "^2.0.0", "chai-as-promised": "^7.1.1", @@ -51,11 +49,13 @@ "highlight.js": "^10.4.1", "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", + "jose": "^3.19.0", "jquery": "^3.4.1", "lodash": "^4.17.13", "loglevel": "^1.6.2", "mocha": "^5.2.0", - "node-jose": "^1.1.4", + "nock": "^13.1.3", + "node-forge": "^0.10.0", "promise.any": "^0.1.1", "puppeteer": "^1.17.0", "request-promise-native": "^1.0.7", diff --git a/src/editor/default-tokens.js b/src/editor/default-tokens.js index 3844f818..88a6d862 100644 --- a/src/editor/default-tokens.js +++ b/src/editor/default-tokens.js @@ -2,43 +2,55 @@ // them safely to GitHub. const rsaPrivateKey = -`-----BEGIN RSA PRIVATE KEY----- -MIIEogIBAAKCAQEAnzyis1ZjfNB0bBgKFMSvvkTtwlvBsaJq7S5wA+kzeVOVpVWw -kWdVha4s38XM/pa/yr47av7+z3VTmvDRyAHcaT92whREFpLv9cj5lTeJSibyr/Mr -m/YtjCZVWgaOYIhwrXwKLqPr/11inWsAkfIytvHWTxZYEcXLgAXFuUuaS3uF9gEi -NQwzGTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0e+lf4s4OxQawWD79J9/5d3Ry0vbV -3Am1FtGJiJvOwRsIfVChDpYStTcHTCMqtvWbV6L11BWkpzGXSW4Hv43qa+GSYOD2 -QU68Mb59oSk2OB+BtOLpJofmbGEGgvmwyCI9MwIDAQABAoIBACiARq2wkltjtcjs -kFvZ7w1JAORHbEufEO1Eu27zOIlqbgyAcAl7q+/1bip4Z/x1IVES84/yTaM8p0go -amMhvgry/mS8vNi1BN2SAZEnb/7xSxbflb70bX9RHLJqKnp5GZe2jexw+wyXlwaM -+bclUCrh9e1ltH7IvUrRrQnFJfh+is1fRon9Co9Li0GwoN0x0byrrngU8Ak3Y6D9 -D8GjQA4Elm94ST3izJv8iCOLSDBmzsPsXfcCUZfmTfZ5DbUDMbMxRnSo3nQeoKGC -0Lj9FkWcfmLcpGlSXTO+Ww1L7EGq+PT3NtRae1FZPwjddQ1/4V905kyQFLamAA5Y -lSpE2wkCgYEAy1OPLQcZt4NQnQzPz2SBJqQN2P5u3vXl+zNVKP8w4eBv0vWuJJF+ -hkGNnSxXQrTkvDOIUddSKOzHHgSg4nY6K02ecyT0PPm/UZvtRpWrnBjcEVtHEJNp -bU9pLD5iZ0J9sbzPU/LxPmuAP2Bs8JmTn6aFRspFrP7W0s1Nmk2jsm0CgYEAyH0X -+jpoqxj4efZfkUrg5GbSEhf+dZglf0tTOA5bVg8IYwtmNk/pniLG/zI7c+GlTc9B -BwfMr59EzBq/eFMI7+LgXaVUsM/sS4Ry+yeK6SJx/otIMWtDfqxsLD8CPMCRvecC -2Pip4uSgrl0MOebl9XKp57GoaUWRWRHqwV4Y6h8CgYAZhI4mh4qZtnhKjY4TKDjx -QYufXSdLAi9v3FxmvchDwOgn4L+PRVdMwDNms2bsL0m5uPn104EzM6w1vzz1zwKz -5pTpPI0OjgWN13Tq8+PKvm/4Ga2MjgOgPWQkslulO/oMcXbPwWC3hcRdr9tcQtn9 -Imf9n2spL/6EDFId+Hp/7QKBgAqlWdiXsWckdE1Fn91/NGHsc8syKvjjk1onDcw0 -NvVi5vcba9oGdElJX3e9mxqUKMrw7msJJv1MX8LWyMQC5L6YNYHDfbPF1q5L4i8j -8mRex97UVokJQRRA452V2vCO6S5ETgpnad36de3MUxHgCOX3qL382Qx9/THVmbma -3YfRAoGAUxL/Eu5yvMK8SAt/dJK6FedngcM3JEFNplmtLYVLWhkIlNRGDwkg3I5K -y18Ae9n7dHVueyslrb6weq7dTkYDi3iOYRW8HRkIQh06wEdbxt0shTzAJvvCQfrB -jg/3747WSsf/zBTcHihTRBdAv6OmdhV4/dD5YBfLAkLrd+mX7iE= ------END RSA PRIVATE KEY-----`; +`-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC7VJTUt9Us8cKj +MzEfYyjiWA4R4/M2bS1GB4t7NXp98C3SC6dVMvDuictGeurT8jNbvJZHtCSuYEvu +NMoSfm76oqFvAp8Gy0iz5sxjZmSnXyCdPEovGhLa0VzMaQ8s+CLOyS56YyCFGeJZ +qgtzJ6GR3eqoYSW9b9UMvkBpZODSctWSNGj3P7jRFDO5VoTwCQAWbFnOjDfH5Ulg +p2PKSQnSJP3AJLQNFNe7br1XbrhV//eO+t51mIpGSDCUv3E0DDFcWDTH9cXDTTlR +ZVEiR2BwpZOOkE/Z0/BVnhZYL71oZV34bKfWjQIt6V/isSMahdsAASACp4ZTGtwi +VuNd9tybAgMBAAECggEBAKTmjaS6tkK8BlPXClTQ2vpz/N6uxDeS35mXpqasqskV +laAidgg/sWqpjXDbXr93otIMLlWsM+X0CqMDgSXKejLS2jx4GDjI1ZTXg++0AMJ8 +sJ74pWzVDOfmCEQ/7wXs3+cbnXhKriO8Z036q92Qc1+N87SI38nkGa0ABH9CN83H +mQqt4fB7UdHzuIRe/me2PGhIq5ZBzj6h3BpoPGzEP+x3l9YmK8t/1cN0pqI+dQwY +dgfGjackLu/2qH80MCF7IyQaseZUOJyKrCLtSD/Iixv/hzDEUPfOCjFDgTpzf3cw +ta8+oE4wHCo1iI1/4TlPkwmXx4qSXtmw4aQPz7IDQvECgYEA8KNThCO2gsC2I9PQ +DM/8Cw0O983WCDY+oi+7JPiNAJwv5DYBqEZB1QYdj06YD16XlC/HAZMsMku1na2T +N0driwenQQWzoev3g2S7gRDoS/FCJSI3jJ+kjgtaA7Qmzlgk1TxODN+G1H91HW7t +0l7VnL27IWyYo2qRRK3jzxqUiPUCgYEAx0oQs2reBQGMVZnApD1jeq7n4MvNLcPv +t8b/eU9iUv6Y4Mj0Suo/AU8lYZXm8ubbqAlwz2VSVunD2tOplHyMUrtCtObAfVDU +AhCndKaA9gApgfb3xw1IKbuQ1u4IF1FJl3VtumfQn//LiH1B3rXhcdyo3/vIttEk +48RakUKClU8CgYEAzV7W3COOlDDcQd935DdtKBFRAPRPAlspQUnzMi5eSHMD/ISL +DY5IiQHbIH83D4bvXq0X7qQoSBSNP7Dvv3HYuqMhf0DaegrlBuJllFVVq9qPVRnK +xt1Il2HgxOBvbhOT+9in1BzA+YJ99UzC85O0Qz06A+CmtHEy4aZ2kj5hHjECgYEA +mNS4+A8Fkss8Js1RieK2LniBxMgmYml3pfVLKGnzmng7H2+cwPLhPIzIuwytXywh +2bzbsYEfYx3EoEVgMEpPhoarQnYPukrJO4gwE2o5Te6T5mJSZGlQJQj9q4ZB2Dfz +et6INsK0oG8XVGXSpQvQh3RUYekCZQkBBFcpqWpbIEsCgYAnM3DQf3FJoSnXaMhr +VBIovic5l0xFkEHskAjFTevO86Fsz1C2aSeRKSqGFoOQ0tmJzBEs1R6KqnHInicD +TQrKhArgLXX4v3CddjfTRJkFWDbE/CkvKZNOrcf1nhaGCPspRJj2KUkj1Fhl9Cnc +dn/RsYEONbwQSjIfMPkvxF+8HQ== +-----END PRIVATE KEY-----`; +const rsaJwk = { + e: 'AQAB', + n: 'u1SU1LfVLPHCozMxH2Mo4lgOEePzNm0tRgeLezV6ffAt0gunVTLw7onLRnrq0_IzW7yWR7QkrmBL7jTKEn5u-qKhbwKfBstIs-bMY2Zkp18gnTxKLxoS2tFczGkPLPgizskuemMghRniWaoLcyehkd3qqGElvW_VDL5AaWTg0nLVkjRo9z-40RQzuVaE8AkAFmxZzow3x-VJYKdjykkJ0iT9wCS0DRTXu269V264Vf_3jvredZiKRkgwlL9xNAwxXFg0x_XFw005UWVRIkdgcKWTjpBP2dPwVZ4WWC-9aGVd-Gyn1o0CLelf4rEjGoXbAAEgAqeGUxrcIlbjXfbcmw', + d: 'pOaNpLq2QrwGU9cKVNDa-nP83q7EN5LfmZempqyqyRWVoCJ2CD-xaqmNcNtev3ei0gwuVawz5fQKowOBJcp6MtLaPHgYOMjVlNeD77QAwnywnvilbNUM5-YIRD_vBezf5xudeEquI7xnTfqr3ZBzX43ztIjfyeQZrQAEf0I3zceZCq3h8HtR0fO4hF7-Z7Y8aEirlkHOPqHcGmg8bMQ_7HeX1iYry3_Vw3Smoj51DBh2B8aNpyQu7_aofzQwIXsjJBqx5lQ4nIqsIu1IP8iLG_-HMMRQ984KMUOBOnN_dzC1rz6gTjAcKjWIjX_hOU-TCZfHipJe2bDhpA_PsgNC8Q', + p: '8KNThCO2gsC2I9PQDM_8Cw0O983WCDY-oi-7JPiNAJwv5DYBqEZB1QYdj06YD16XlC_HAZMsMku1na2TN0driwenQQWzoev3g2S7gRDoS_FCJSI3jJ-kjgtaA7Qmzlgk1TxODN-G1H91HW7t0l7VnL27IWyYo2qRRK3jzxqUiPU', + q: 'x0oQs2reBQGMVZnApD1jeq7n4MvNLcPvt8b_eU9iUv6Y4Mj0Suo_AU8lYZXm8ubbqAlwz2VSVunD2tOplHyMUrtCtObAfVDUAhCndKaA9gApgfb3xw1IKbuQ1u4IF1FJl3VtumfQn__LiH1B3rXhcdyo3_vIttEk48RakUKClU8', + dp: 'zV7W3COOlDDcQd935DdtKBFRAPRPAlspQUnzMi5eSHMD_ISLDY5IiQHbIH83D4bvXq0X7qQoSBSNP7Dvv3HYuqMhf0DaegrlBuJllFVVq9qPVRnKxt1Il2HgxOBvbhOT-9in1BzA-YJ99UzC85O0Qz06A-CmtHEy4aZ2kj5hHjE', + dq: 'mNS4-A8Fkss8Js1RieK2LniBxMgmYml3pfVLKGnzmng7H2-cwPLhPIzIuwytXywh2bzbsYEfYx3EoEVgMEpPhoarQnYPukrJO4gwE2o5Te6T5mJSZGlQJQj9q4ZB2Dfzet6INsK0oG8XVGXSpQvQh3RUYekCZQkBBFcpqWpbIEs', + qi: 'JzNw0H9xSaEp12jIa1QSKL4nOZdMRZBB7JAIxU3rzvOhbM9QtmknkSkqhhaDkNLZicwRLNUeiqpxyJ4nA00KyoQK4C11-L9wnXY300SZBVg2xPwpLymTTq3H9Z4Whgj7KUSY9ilJI9RYZfQp3HZ_0bGBDjW8EEoyHzD5L8RfvB0', + kty: 'RSA' +} const rsaPublicKey = `-----BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnzyis1ZjfNB0bBgKFMSv -vkTtwlvBsaJq7S5wA+kzeVOVpVWwkWdVha4s38XM/pa/yr47av7+z3VTmvDRyAHc -aT92whREFpLv9cj5lTeJSibyr/Mrm/YtjCZVWgaOYIhwrXwKLqPr/11inWsAkfIy -tvHWTxZYEcXLgAXFuUuaS3uF9gEiNQwzGTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0 -e+lf4s4OxQawWD79J9/5d3Ry0vbV3Am1FtGJiJvOwRsIfVChDpYStTcHTCMqtvWb -V6L11BWkpzGXSW4Hv43qa+GSYOD2QU68Mb59oSk2OB+BtOLpJofmbGEGgvmwyCI9 -MwIDAQAB +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1SU1LfVLPHCozMxH2Mo +4lgOEePzNm0tRgeLezV6ffAt0gunVTLw7onLRnrq0/IzW7yWR7QkrmBL7jTKEn5u ++qKhbwKfBstIs+bMY2Zkp18gnTxKLxoS2tFczGkPLPgizskuemMghRniWaoLcyeh +kd3qqGElvW/VDL5AaWTg0nLVkjRo9z+40RQzuVaE8AkAFmxZzow3x+VJYKdjykkJ +0iT9wCS0DRTXu269V264Vf/3jvredZiKRkgwlL9xNAwxXFg0x/XFw005UWVRIkdg +cKWTjpBP2dPwVZ4WWC+9aGVd+Gyn1o0CLelf4rEjGoXbAAEgAqeGUxrcIlbjXfbc +mwIDAQAB -----END PUBLIC KEY-----`; const ecPrivateKey256 = @@ -47,6 +59,13 @@ MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2 OF/2NxApJCzGCEDdfSp6VQO30hyhRANCAAQRWz+jn65BtOMvdyHKcvjBeBSDZH2r 1RTwjmYSi9R/zpBnuQ4EiMnCqfMPWiZqB4QdbAd0E7oH50VpuZ1P087G -----END PRIVATE KEY-----`; +const ecJwk256 = { + crv: 'P-256', + x: 'EVs_o5-uQbTjL3chynL4wXgUg2R9q9UU8I5mEovUf84', + y: 'kGe5DgSIycKp8w9aJmoHhB1sB3QTugfnRWm5nU_TzsY', + d: 'evZzL1gdAFr88hb2OF_2NxApJCzGCEDdfSp6VQO30hw', + kty: 'EC' +}; const ecPublicKey256 = `-----BEGIN PUBLIC KEY----- @@ -55,12 +74,19 @@ q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== -----END PUBLIC KEY-----`; const ecPrivateKey384 = -`-----BEGIN EC PRIVATE KEY----- -MIGkAgEBBDCAHpFQ62QnGCEvYh/pE9QmR1C9aLcDItRbslbmhen/h1tt8AyMhske -enT+rAyyPhGgBwYFK4EEACKhZANiAAQLW5ZJePZzMIPAxMtZXkEWbDF0zo9f2n4+ -T1h/2sh/fviblc/VTyrv10GEtIi5qiOy85Pf1RRw8lE5IPUWpgu553SteKigiKLU -PeNpbqmYZUkWGh3MLfVzLmx85ii2vMU= ------END EC PRIVATE KEY-----`; +`-----BEGIN PRIVATE KEY----- +MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDCAHpFQ62QnGCEvYh/p +E9QmR1C9aLcDItRbslbmhen/h1tt8AyMhskeenT+rAyyPhGhZANiAAQLW5ZJePZz +MIPAxMtZXkEWbDF0zo9f2n4+T1h/2sh/fviblc/VTyrv10GEtIi5qiOy85Pf1RRw +8lE5IPUWpgu553SteKigiKLUPeNpbqmYZUkWGh3MLfVzLmx85ii2vMU= +-----END PRIVATE KEY-----`; +const ecJwk384 = { + crv: 'P-384', + x: 'C1uWSXj2czCDwMTLWV5BFmwxdM6PX9p-Pk9Yf9rIf374m5XP1U8q79dBhLSIuaoj', + y: 'svOT39UUcPJROSD1FqYLued0rXiooIii1D3jaW6pmGVJFhodzC31cy5sfOYotrzF', + d: 'gB6RUOtkJxghL2If6RPUJkdQvWi3AyLUW7JW5oXp_4dbbfAMjIbJHnp0_qwMsj4R', + kty: 'EC' +} const ecPublicKey384 = `-----BEGIN PUBLIC KEY----- @@ -70,13 +96,21 @@ Pk9Yf9rIf374m5XP1U8q79dBhLSIuaojsvOT39UUcPJROSD1FqYLued0rXiooIii -----END PUBLIC KEY-----`; const ecPrivateKey521 = -`-----BEGIN EC PRIVATE KEY----- -MIHcAgEBBEIBiyAa7aRHFDCh2qga9sTUGINE5jHAFnmM8xWeT/uni5I4tNqhV5Xx -0pDrmCV9mbroFtfEa0XVfKuMAxxfZ6LM/yKgBwYFK4EEACOhgYkDgYYABAGBzgdn -P798FsLuWYTDDQA7c0r3BVk8NnRUSexpQUsRilPNv3SchO0lRw9Ru86x1khnVDx+ -duq4BiDFcvlSAcyjLACJvjvoyTLJiA+TQFdmrearjMiZNE25pT2yWP1NUndJxPcv -VtfBW48kPOmvkY4WlqP5bAwCXwbsKrCgk6xbsp12ew== ------END EC PRIVATE KEY-----`; +`-----BEGIN PRIVATE KEY----- +MIHuAgEAMBAGByqGSM49AgEGBSuBBAAjBIHWMIHTAgEBBEIBiyAa7aRHFDCh2qga +9sTUGINE5jHAFnmM8xWeT/uni5I4tNqhV5Xx0pDrmCV9mbroFtfEa0XVfKuMAxxf +Z6LM/yKhgYkDgYYABAGBzgdnP798FsLuWYTDDQA7c0r3BVk8NnRUSexpQUsRilPN +v3SchO0lRw9Ru86x1khnVDx+duq4BiDFcvlSAcyjLACJvjvoyTLJiA+TQFdmrear +jMiZNE25pT2yWP1NUndJxPcvVtfBW48kPOmvkY4WlqP5bAwCXwbsKrCgk6xbsp12 +ew== +-----END PRIVATE KEY-----`; +const ecJwk521 = { + crv: 'P-521', + x: 'AYHOB2c_v3wWwu5ZhMMNADtzSvcFWTw2dFRJ7GlBSxGKU82_dJyE7SVHD1G7zrHWSGdUPH526rgGIMVy-VIBzKMs', + y: 'AIm-O-jJMsmID5NAV2at5quMyJk0TbmlPbJY_U1Sd0nE9y9W18FbjyQ86a-RjhaWo_lsDAJfBuwqsKCTrFuynXZ7', + d: 'AYsgGu2kRxQwodqoGvbE1BiDROYxwBZ5jPMVnk_7p4uSOLTaoVeV8dKQ65glfZm66BbXxGtF1XyrjAMcX2eizP8i', + kty: 'EC' +} const ecPublicKey521 = `-----BEGIN PUBLIC KEY----- @@ -100,48 +134,57 @@ export default { secret: 'your-512-bit-secret' }, rs256: { - token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.POstGetfAytaZS82wHcjoTyoqhMyxXiWdR7Nn7A29DNSl0EiXLdwJ6xC6AfgZWF1bOsS_TuYI3OG85AmiExREkrS6tDfTQ2B3WXlrr-wp5AokiRbz3_oB4OxG-W9KcEEbDRcZc0nH3L7LzYptiy1PtAylQGxHTWZXtGz4ht0bAecBgmpdgXMguEIcoqPJ1n3pIWk_dUZegpqx0Lka21H6XxUTxiy8OcaarA8zdnPUnV6AmNP3ecFawIFYdvJB_cm-GvpCSbr8G8y_Mllj8f4x9nBH8pQux89_6gUY618iYv7tuPWBFfEbLxtF2pZS6YC1aSfLQxeNe8djT9YjpvRZA', + token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.NHVaYe26MbtOYhSKkoKYdFVomg4i8ZJd8_-RU8VNbftc4TSMb4bXP3l3YlNWACwyXPGffz5aXHc6lty1Y2t4SWRqGteragsVdZufDn5BlnJl9pdR_kdVFUsra2rWKEofkZeIC4yWytE58sMIihvo9H1ScmmVwBcQP6XETqYd0aSHp1gOa9RdUPDvoXQ5oqygTqVtxaDr6wUFKrKItgBMzWIdNZ6y7O9E0DhEPTbE9rfBo6KTFsHAZnMg4k68CDp2woYIaXbmYTWcvbzIuHO7_37GT79XdIwkm95QJ7hYC9RiwrV7mesbY4PAahERJawntho0my942XheVLmGwLMBkQ', privateKey: rsaPrivateKey, + jwk: rsaJwk, publicKey: rsaPublicKey }, rs384: { - token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.D4kXa3UspFjRA9ys5tsD4YDyxxam3l_XnOb3hMEdPDTfSLRHPv4HPwxvin-pIkEmfJshXPSK7O4zqSXWAXFO52X-upJjFc_gpGDswctNWpOJeXe1xBgJ--VuGDzUQCqkr9UBpN-Q7TE5u9cgIVisekSFSH5Ax6aXQC9vCO5LooNFx_WnbTLNZz7FUia9vyJ544kLB7UcacL-_idgRNIWPdd_d1vvnNGkknIMarRjCsjAEf6p5JGhYZ8_C18g-9DsfokfUfSpKgBR23R8v8ZAAmPPPiJ6MZXkefqE7p3jRbA--58z5TlHmH9nTB1DYE2872RYvyzG3LoQ-2s93VaVuw', + token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.o1hC1xYbJolSyh0-bOY230w22zEQSk5TiBfc-OCvtpI2JtYlW-23-8B48NpATozzMHn0j3rE0xVUldxShzy0xeJ7vYAccVXu2Gs9rnTVqouc-UZu_wJHkZiKBL67j8_61L6SXswzPAQu4kVDwAefGf5hyYBUM-80vYZwWPEpLI8K4yCBsF6I9N1yQaZAJmkMp_Iw371Menae4Mp4JusvBJS-s6LrmG2QbiZaFaxVJiW8KlUkWyUCns8-qFl5OMeYlgGFsyvvSHvXCzQrsEXqyCdS4tQJd73ayYA4SPtCb9clz76N1zE5WsV4Z0BYrxeb77oA7jJhh994RAPzCG0hmQ', privateKey: rsaPrivateKey, + jwk: rsaJwk, publicKey: rsaPublicKey }, rs512: { - token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.JlX3gXGyClTBFciHhknWrjo7SKqyJ5iBO0n-3S2_I7cIgfaZAeRDJ3SQEbaPxVC7X8aqGCOM-pQOjZPKUJN8DMFrlHTOdqMs0TwQ2PRBmVAxXTSOZOoEhD4ZNCHohYoyfoDhJDP4Qye_FCqu6POJzg0Jcun4d3KW04QTiGxv2PkYqmB7nHxYuJdnqE3704hIS56pc_8q6AW0WIT0W-nIvwzaSbtBU9RgaC7ZpBD2LiNE265UBIFraMDF8IAFw9itZSUCTKg1Q-q27NwwBZNGYStMdIBDor2Bsq5ge51EkWajzZ7ALisVp-bskzUsqUf77ejqX_CBAqkNdH1Zebn93A', + token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.jYW04zLDHfR1v7xdrW3lCGZrMIsVe0vWCfVkN2DRns2c3MN-mcp_-RE6TN9umSBYoNV-mnb31wFf8iun3fB6aDS6m_OXAiURVEKrPFNGlR38JSHUtsFzqTOj-wFrJZN4RwvZnNGSMvK3wzzUriZqmiNLsG8lktlEn6KA4kYVaM61_NpmPHWAjGExWv7cjHYupcjMSmR8uMTwN5UuAwgW6FRstCJEfoxwb0WKiyoaSlDuIiHZJ0cyGhhEmmAPiCwtPAwGeaL1yZMcp0p82cpTQ5Qb-7CtRov3N4DcOHgWYk6LomPR5j5cCkePAz87duqyzSMpCB0mCOuE3CU2VMtGeQ', privateKey: rsaPrivateKey, + jwk: rsaJwk, publicKey: rsaPublicKey }, es256: { token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA', privateKey: ecPrivateKey256, + jwk: ecJwk256, publicKey: ecPublicKey256 }, es384: { token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6ImlUcVhYSTB6YkFuSkNLRGFvYmZoa00xZi02ck1TcFRmeVpNUnBfMnRLSTgifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.cJOP_w-hBqnyTsBm3T6lOE5WpcHaAkLuQGAs1QO-lg2eWs8yyGW8p9WagGjxgvx7h9X72H7pXmXqej3GdlVbFmhuzj45A9SXDOAHZ7bJXwM1VidcPi7ZcrsMSCtP1hiN', privateKey: ecPrivateKey384, + jwk: ecJwk384, publicKey: ecPublicKey384 }, es512: { token: 'eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCIsImtpZCI6InhaRGZacHJ5NFA5dlpQWnlHMmZOQlJqLTdMejVvbVZkbTd0SG9DZ1NOZlkifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.AP_CIMClixc5-BFflmjyh_bRrkloEvwzn8IaWJFfMz13X76PGWF0XFuhjJUjp7EYnSAgtjJ-7iJG4IP7w3zGTBk_AUdmvRCiWp5YAe8S_Hcs8e3gkeYoOxiXFZlSSAx0GfwW1cZ0r67mwGtso1I3VXGkSjH5J0Rk6809bn25GoGRjOPu', privateKey: ecPrivateKey521, + jwk: ecJwk521, publicKey: ecPublicKey521 }, ps256: { - token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.hZnl5amPk_I3tb4O-Otci_5XZdVWhPlFyVRvcqSwnDo_srcysDvhhKOD01DigPK1lJvTSTolyUgKGtpLqMfRDXQlekRsF4XhAjYZTmcynf-C-6wO5EI4wYewLNKFGGJzHAknMgotJFjDi_NCVSjHsW3a10nTao1lB82FRS305T226Q0VqNVJVWhE4G0JQvi2TssRtCxYTqzXVt22iDKkXeZJARZ1paXHGV5Kd1CljcZtkNZYIGcwnj65gvuCwohbkIxAnhZMJXCLaVvHqv9l-AAUV7esZvkQR1IpwBAiDQJh4qxPjFGylyXrHMqh5NlT_pWL2ZoULWTg_TJjMO9TuQ', + token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.iOeNU4dAFFeBwNj6qdhdvm-IvDQrTa6R22lQVJVuWJxorJfeQww5Nwsra0PjaOYhAMj9jNMO5YLmud8U7iQ5gJK2zYyepeSuXhfSi8yjFZfRiSkelqSkU19I-Ja8aQBDbqXf2SAWA8mHF8VS3F08rgEaLCyv98fLLH4vSvsJGf6ueZSLKDVXz24rZRXGWtYYk_OYYTVgR1cg0BLCsuCvqZvHleImJKiWmtS0-CymMO4MMjCy_FIl6I56NqLE9C87tUVpo1mT-kbg5cHDD8I7MjCW5Iii5dethB4Vid3mZ6emKjVYgXrtkOQ-JyGMh6fnQxEFN1ft33GX2eRHluK9eg', privateKey: rsaPrivateKey, + jwk: rsaJwk, publicKey: rsaPublicKey }, ps384: { - token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.MqF1AKsJkijKnfqEI3VA1OnzAL2S4eIpAuievMgD3tEFyFMU67gCbg-fxsc5dLrxNwdZEXs9h0kkicJZ70mp6p5vdv-j2ycDKBWg05Un4OhEl7lYcdIsCsB8QUPmstF-lQWnNqnq3wra1GynJrOXDL27qIaJnnQKlXuayFntBF0j-82jpuVdMaSXvk3OGaOM-7rCRsBcSPmocaAO-uWJEGPw_OWVaC5RRdWDroPi4YL4lTkDEC-KEvVkqCnFm_40C-T_siXquh5FVbpJjb3W2_YvcqfDRj44TsRrpVhk6ohsHMNeUad_cxnFnpolIKnaXq_COv35e9EgeQIPAbgIeg', + token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.Lfe_aCQme_gQpUk9-6l9qesu0QYZtfdzfy08w8uqqPH_gnw-IVyQwyGLBHPFBJHMbifdSMxPjJjkCD0laIclhnBhowILu6k66_5Y2z78GHg8YjKocAvB-wSUiBhuV6hXVxE5emSjhfVz2OwiCk2bfk2hziRpkdMvfcITkCx9dmxHU6qcEIsTTHuH020UcGayB1-IoimnjTdCsV1y4CMr_ECDjBrqMdnontkqKRIM1dtmgYFsJM6xm7ewi_ksG_qZHhaoBkxQ9wq9OVQRGiSZYowCp73d2BF3jYMhdmv2JiaUz5jRvv6lVU7Quq6ylVAlSPxeov9voYHO1mgZFCY1kQ', privateKey: rsaPrivateKey, + jwk: rsaJwk, publicKey: rsaPublicKey - }/*, + }, ps512: { - token: 'eyJhbGciOiJQUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.lLFQm3WUmHanSiQZBDcwEX9CH34ROOlPtgH3icJxaiesfvRHFDWHnG7GZQ6_-c6MU1h2LmP-mCpWM2evj7arIQCS63vp6K869CUZROhwCGZK1dfbOlYFAPg-AO4bBIKpS4NHkBIoo4O2LIbaIQT2gpBsYr4vMOX5UPCULWz8V8GlNKDv_2TYoHlttVm-2fpqQCt-ZEeCvaWEbWmk_dagewuxlhR7fXjdaSHo_6oQe6vic2sBu8RGv_NyQ97sB6X2jv1sXo0WIWihmPzDOpP0J4dmAIyCiGWQa8jXQfPN8JYbBD9j2w3xkKs7HCSl7VX3JfzxmSpTaOcVIGRnEt3kZA', + token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.W0vasx0Lxmn3hkfi3RjJSLDSZnZbqDRZy6fau8wvIm_sdtTCiSJAjMSO1eR8YbnUF_MD10JYwR5unI8JO_qB8uSrW5vg4OPCDuPSQQu0Pnf9Q2Cy3WqSK166lgidlwAqyijgPFp5ggOnJM20IY4F8W6HOqcGeXcRzsaM2DIBEnku32TM7Xb-aCJYdKtawEfvD1zEwE1of02BoGva3sf_RhijMZpOA3yIG3FCDll-3M1rILP9Bi4FPz_uOAbJkKvUirAdaMX-KNaw6T_0nnBwHaFc8M9GGVZV6bT4uaOQ1U0Ezi4SAcBWW8kkPKZNorpRC5EtO_X6uvIVazj5EHERuw', privateKey: rsaPrivateKey, + jwk: rsaJwk, publicKey: rsaPublicKey - }*/ + } }; diff --git a/src/editor/jwt.js b/src/editor/jwt.js index 22a0cc98..83f4bb15 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -1,74 +1,61 @@ -import jose from 'node-jose'; import b64u from 'base64url'; import any from 'promise.any'; -import { pki } from 'node-forge'; import strings from '../strings'; -strings import log from 'loglevel'; -import { findLastIndex } from 'lodash'; +import * as keyImport from 'jose/key/import' +import CompactSign from 'jose/jws/compact/sign' +import compactVerify from 'jose/jws/compact/verify' +import { pki } from 'node-forge'; -// node-jose does not support keys shorter than block size. This is a -// limitation from their implementation and could be resolved in the future. -// See: https://github.com/cisco/node-jose/blob/master/lib/jwk/octkey.js#L141 -function paddedKey(key, alg, base64Secret) { - const blockSizeBytes = alg.indexOf('256') !== -1 ? 512 / 8 : 1024 / 8; +function symmetricSecret(key, alg, base64Secret) { + let secret = base64Secret ? Buffer.from(key, 'base64') : Buffer.from(key); - let buf = base64Secret ? Buffer.from(key, 'base64') : Buffer.from(key); + const len = Math.max(parseInt(alg.substr(-3), 10) >> 3, secret.byteLength); - if (buf.length < blockSizeBytes) { - const oldBuf = buf; - buf = Buffer.alloc(blockSizeBytes); - buf.set(oldBuf); - } + const padded = new Uint8Array(len); + padded.set(secret); - return b64u.encode(buf); + return Promise.resolve(padded); } -/* - * This function handles plain RSA keys not wrapped in a - * X.509 SubjectPublicKeyInfo structure. It returns a PEM encoded public key - * wrapper in that structure. - * See: https://stackoverflow.com/questions/18039401/how-can-i-transform-between-the-two-styles-of-public-key-format-one-begin-rsa - * @param {String} publicKey The public key as a PEM string. - * @returns {String} The PEM encoded public key in - * X509 SubjectPublicKeyInfo format. - */ -function plainRsaKeyToX509Key(key) { - try { - const startTag = '-----BEGIN RSA PUBLIC KEY-----'; - const endTag = '-----END RSA PUBLIC KEY-----'; - const startTagPos = key.indexOf(startTag); - const endTagPos = key.indexOf(endTag); - - return startTagPos !== -1 && endTagPos !== -1 ? - pki.publicKeyToPem(pki.publicKeyFromPem(key)) : - key; - } catch (e) { - // If anything fails, it may not be a plain RSA key, so return the same key. - return key; - } -} +const types = { + 'PRIVATE': 1, + 'PUBLIC': 2, +}; + +const rawPublic = ({ alg, oth, d, p, q, dp, dq, qi, use, key_ops, ext, ...jwk }) => jwk; +const rawPrivate = ({ alg, use, key_ops, ext, ...jwk }) => jwk; -function getJoseKey(header, key, base64Secret) { +function getJoseKey(header, key, base64Secret, type) { if (header.alg.indexOf('HS') === 0) { - return jose.JWK.asKey({ - kty: 'oct', - use: 'sig', - alg: header.alg, - k: paddedKey(key, header.alg, base64Secret) - }); - } else { - if (header.alg.indexOf('RS') === 0) { - key = plainRsaKeyToX509Key(key); - } + return symmetricSecret(key, header.alg, base64Secret) + } - return any(['pem', 'json'].map(form => { - try { - return jose.JWK.asKey(key, form); - } catch (e) { - return Promise.reject(e); + switch (type) { + case types.PRIVATE: + if (key.startsWith('-----BEGIN RSA PRIVATE KEY-----')) { + key = pki.privateKeyInfoToPem(pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(pki.privateKeyFromPem(key)))) + } + return any([ + keyImport.importPKCS8(key, header.alg), + Promise.resolve().then(() => JSON.parse(key)).then(rawPrivate).then((jwk) => { + if (!('d' in jwk)) throw new Error('not a private JWK') + return keyImport.importJWK(jwk, header.alg) + }) + ]) + case types.PUBLIC: + if (key.startsWith('-----BEGIN RSA PUBLIC KEY-----')) { + key = pki.publicKeyToPem(pki.publicKeyFromPem(key)) } - })); + return any([ + keyImport.importSPKI(key, header.alg), + keyImport.importX509(key, header.alg), + Promise.resolve().then(() => JSON.parse(key)).then(rawPublic).then((jwk) => { + return keyImport.importJWK(jwk, header.alg) + }) + ]) + default: + throw new Error('unreachable') } } @@ -80,19 +67,15 @@ export function sign(header, return Promise.reject(new Error('Missing "alg" claim in header')); } - return getJoseKey(header, secretOrPrivateKeyString, base64Secret).then( + return getJoseKey(header, secretOrPrivateKeyString, base64Secret, types.PRIVATE).then( key => { if (!(typeof payload === 'string' || payload instanceof String)) { payload = JSON.stringify(payload); } - return jose.JWS.createSign({ - fields: header, - format: 'compact' - }, { - key: key, - reference: false - }).update(payload, 'utf8').final(); + return new CompactSign(new TextEncoder().encode(payload)) + .setProtectedHeader(header) + .sign(key); } ); } @@ -108,17 +91,18 @@ export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { return Promise.resolve({ validSignature: false }); } - return getJoseKey(decoded.header, secretOrPublicKeyString, base64Secret).then( + return getJoseKey(decoded.header, secretOrPublicKeyString, base64Secret, types.PUBLIC).then( key => { - return jose.JWS.createVerify(key) - .verify(jwt) + return compactVerify(jwt, key) .then(() => ({ validSignature: true, validBase64: jwt.split('.').reduce((valid, s) => valid = valid && isValidBase64String(s), true) - }), () => ({ validSignature: false })); + }), (e) => { + log.warn('Could not verify token: ', e); + return { validSignature: false } + }); }, e => { - log.warn('Could not verify token, ' + - 'probably due to bad data in it or the keys: ', e); + log.warn('Could not load the key(s): ', e); return { validSignature: false }; } ); @@ -206,4 +190,4 @@ export function isToken(jwt, checkTypClaim = false) { split.forEach(s => valid = valid && isValidBase64String(s, true)); return valid; -} \ No newline at end of file +} diff --git a/src/editor/public-key-download.js b/src/editor/public-key-download.js index 07b9209b..ac9fd52e 100644 --- a/src/editor/public-key-download.js +++ b/src/editor/public-key-download.js @@ -1,24 +1,16 @@ -import jose from 'node-jose'; +import { createRemoteJWKSet } from 'jose/jwks/remote' +import { EmbeddedJWK } from 'jose/jwk/embedded' +import * as keyExport from 'jose/key/export' import { httpGet } from '../utils.js'; function getKeyFromX5c(x5c) { - if(!x5c) { - throw new Error('x5c claim not present?'); + if(!Array.isArray(x5c) || typeof x5c[0] !== 'string') { + throw new Error('x5c claim not present or invalid'); } - if(!(x5c instanceof Array)) { - x5c = [ x5c ]; - } - - let certChain = ''; - x5c.forEach(cert => { - certChain += '-----BEGIN CERTIFICATE-----\n'; - certChain += cert + '\n'; - certChain += '-----END CERTIFICATE-----\n'; - }); - - return certChain; + const newlined = (x5c[0].match(/.{1,64}/g) || []).join('\n') + return `-----BEGIN CERTIFICATE-----\n${newlined}\n-----END CERTIFICATE-----` } function getKeyFromX5Claims(claims) { @@ -33,36 +25,8 @@ function getKeyFromX5Claims(claims) { }); } -function getKeyFromJwkKeySetUrl(kid, url) { - return httpGet(url).then(data => { - data = JSON.parse(data); - - if(!data || !data.keys || !(data.keys instanceof Array)) { - throw new Error(`Could not get JWK key set from URL: ${url}`); - } - - for(let i = 0; i < data.keys.length; ++i) { - const jwk = data.keys[i]; - if(jwk.kid === kid) { - return getKeyFromX5Claims(jwk); - } - } - - throw new Error(`Could not find key with kid ${kid} in URL: ${url}`); - }); -} - -function supportedJwk({ kty, crv }) { - switch (kty) { - case 'RSA': - return true; - case 'EC': - return ['P-256', 'P-384', 'P-521'].includes(crv) - // node-jose does not support e.g. OKP keys or non-registered curves such as P-256K - // we also don't populate the HMAC secret - default: - return false; - } +function getKeyFromJwkKeySetUrl(header, url) { + return createRemoteJWKSet(new URL(url))(header, {}).then((key) => keyExport.exportSPKI(key)) } export function downloadPublicKeyIfPossible(decodedToken) { @@ -76,11 +40,11 @@ export function downloadPublicKeyIfPossible(decodedToken) { } if(header.x5c || header.x5u) { - resolve(getKeyFromX5Claims(header)); + getKeyFromX5Claims(header).then(resolve, reject); } else if(header.jku) { - resolve(getKeyFromJwkKeySetUrl(header.kid, header.jku)); + getKeyFromJwkKeySetUrl(header, header.jku).then(resolve, reject); } else if(header.jwk) { - resolve(getKeyFromX5Claims(header.jwk)); + EmbeddedJWK(header, {}).then((key) => keyExport.exportSPKI(key)).then(resolve, reject); } else if(payload.iss) { const url = payload.iss + (payload.iss.substr(-1) === '/' ? '.well-known/openid-configuration' : '/.well-known/openid-configuration') @@ -91,20 +55,7 @@ export function downloadPublicKeyIfPossible(decodedToken) { throw new Error(`Could not get jwks_uri from URL: ${url}`); } - return httpGet(data.jwks_uri) - }).then(data => { - const { keys } = JSON.parse(data); - - return jose.JWK.asKeyStore({ keys: keys.filter(supportedJwk) }); - }).then(jwks => { - - const keys = jwks.all({ alg: header.alg, kid: header.kid, use: 'sig' }) - - if (keys.length !== 1) { - throw new Error('Could not find a single definitive key in jwks_uri'); - } - - resolve(keys[0].toPEM()) + return getKeyFromJwkKeySetUrl(header, data.jwks_uri).then(resolve); }).catch(reject); } else { reject('No details about key'); diff --git a/src/editor/utils.js b/src/editor/utils.js index e944ac14..60121485 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -1,7 +1,5 @@ +import * as Bowser from 'bowser'; import { isWideScreen } from '../utils.js'; -import * as jwt from './jwt.js'; -import registeredClaims from './jwt-iana-registered-claims.js'; -import forge from 'node-forge'; import { algorithmSelect, algorithmEs512, @@ -9,7 +7,7 @@ import { decodedElement } from '../dom-elements.js'; -const sha256 = forge.md.sha256.create(); +const browser = Bowser.parse(window.navigator.userAgent); export function getTrimmedValue(instance) { const value = instance.getValue(); @@ -37,13 +35,13 @@ export function getSelectedAlgorithm() { return selected.value; } -export function isSafari() { - return /^((?!chrome|android).)*safari/i.test(navigator.userAgent); +export function isWebkit() { + return browser.engine.name === 'WebKit'; } export function disableUnsupportedAlgorithms() { // TODO: test supported algorithms in runtime - if(isSafari()) { + if(isWebkit()) { algorithmEs512.disabled = true; } } @@ -51,86 +49,3 @@ export function disableUnsupportedAlgorithms() { export function isString(value) { return typeof value === 'string' || value instanceof String; } - -function getRegisteredClaims(payload) { - const result = []; - - registeredClaims.forEach(claim => { - if(claim in payload) { - result.push(claim); - } - }); - - return result; -} - -function getScopes(payload) { - if(!isString(payload.scope)) { - return []; - } - - const scopes = payload.scope.split(/\s+/).filter(scope => { - return scope.length > 0 && /\S+/.test(scope); - }); - - return scopes; -} - -function getNumberOfScopes(payload) { - return getScopes(payload).length; -} - -function getOIDCScopes(payload) { - const oidcScopes = ['openid', 'profile', 'email', - 'address', 'phone', 'offline_access']; - const scopes = getScopes(payload); - - return scopes.filter(scope => oidcScopes.indexOf(scope) !== -1); -} - -export function getSafeTokenInfo(token) { - try { - sha256.start(); - sha256.update(token); - - const result = { - hash: sha256.digest().toHex() - }; - - try { - const decoded = jwt.decode(token); - - Object.assign(result, { - decodedWithErrors: decoded.errors, - encodedSize: token.length, - header: { - alg: decoded.header.alg, - }, - payload: { - registeredClaimsPresent: getRegisteredClaims(decoded.payload), - oidcScopesPresent: getOIDCScopes(decoded.payload), - numberOfScopes: getNumberOfScopes(decoded.payload), - numberOfClaims: Object.keys(decoded.payload).length, - issuer: decoded.payload.iss ? decoded.payload.iss : null - } - }); - - if(decoded.payload.amr) { - result.payload.amr = decoded.payload.amr; - } - - return result; - } catch(e) { - return Object.assign(result, { - error: 'error decoding token', - }); - } - } catch(e) { - sha256.start(); - - return { - error: 'error reading token', - hash: sha256.digest().toHex() // Hash for empty string - }; - } -} diff --git a/src/utils.js b/src/utils.js index e6f91ac2..85e8dd90 100644 --- a/src/utils.js +++ b/src/utils.js @@ -30,49 +30,6 @@ export function httpGet(url, cache = true) { }); } -/*export function isValidKey(key) { - // Four tries: no header, header for cert, header for pub key, - // header for priv key - - const headers = [{ - prologue: '', - epilogue: '' - },{ - prologue: '-----BEGIN CERTIFICATE-----\n', - epilogue: '-----END CERTIFICATE-----\n' - }, { - prologue: '-----BEGIN PUBLIC KEY-----\n', - epilogue: '-----END PUBLIC KEY-----\n' - }, { - prologue: '-----BEGIN PRIVATE KEY-----\n', - epilogue: '-----END PRIVATE KEY-----\n' - }, { - prologue: '-----BEGIN RSA PRIVATE KEY-----\n', - epilogue: '-----END RSA PRIVATE KEY-----\n' - }]; - - for(let i = 0; i < headers.length; ++i) { - const header = headers[i]; - try { - let newKey = header.prologue; - newKey += key + '\n'; - newKey += header.epilogue; - - return { - valid: !!KEYUTIL.getKey(newKey), - key: newKey - }; - } catch(e2) { - // Ignore - } - } - - return { - valid: false, - key: key - }; -}*/ - export function deferToNextLoop(func) { setTimeout(func, 1); } diff --git a/test/functional/editor.js b/test/functional/editor.js index 897dea2d..46f5bf7c 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -3,7 +3,9 @@ const chaiAsPromised = require('chai-as-promised'); const chaiArrays = require('chai-arrays'); const express = require('express'); -const jose = require('node-jose'); +const { importPKCS8, importSPKI } = require('jose/key/import') +const { CompactSign } = require('jose/jws/compact/sign') +const { exportJWK } = require('jose/key/export') const _ = require('lodash'); @@ -335,15 +337,11 @@ describe('Editor', function() { const secretInput = await this.page.$('input[name="secret"]'); await secretInput.click(); await selectAll.call(this); - await secretInput.type(tokens[alg].secret, { - delay: typingDelay - }); + await secretInput.type(tokens[alg].secret); await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens[alg].token, { - delay: typingDelay - }); + await this.page.keyboard.type(tokens[alg].token); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); @@ -425,153 +423,83 @@ describe('Editor', function() { describe('Public-key', function() { describe('Decodes RS/ES/PS tokens', function() { - const algs = Object.keys(defaultTokens) - .filter(alg => !alg.includes('hs')); + const algs = Object.keys(defaultTokens).filter(alg => !alg.includes('hs')); for(const alg of algs) { - it(alg.toUpperCase(), async function() { - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(tokens[alg].token, { - delay: typingDelay - }); - - const secretInput = await this.page.$('textarea[name="public-key"]'); - await secretInput.click(); - await selectAll.call(this); - await secretInput.type(tokens[alg].publicKey, { - delay: typingDelay - }); + for (const format of ['pem', 'jwk']) { + it(`${alg.toUpperCase()} using a ${format.toUpperCase()} key`, async function() { + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(tokens[alg].token); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); + const secretInput = await this.page.$('textarea[name="public-key"]'); + await secretInput.click(); + await selectAll.call(this); - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); + let publicKey = tokens[alg].publicKey; + if (format === 'jwk') { + publicKey = JSON.stringify(await importSPKI(publicKey).then(exportJWK)) + } - expect(valid).to.be.true; + await secretInput.type(publicKey); - const payload = await this.page.evaluate(() => { - return window.test.payloadEditor.getValue(); - }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); - expect(payload).to.include(alg + 'test'); - }); - } - }); + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - describe('Encodes RS/ES/PS tokens', function() { - describe('RS/PS', async function() { - before(async function() { - await this.page.select('#algorithm-select', 'RS256'); + expect(valid).to.be.true; - await this.page.click('textarea[name="public-key"]'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['rs256'].publicKey, { - delay: typingDelay - }); + const payload = await this.page.evaluate(() => { + return window.test.payloadEditor.getValue(); + }); - await this.page.click('textarea[name="private-key"]'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['rs256'].privateKey, { - delay: typingDelay + expect(payload).to.include(alg + 'test'); }); - }); - - const algs = - Object.keys(defaultTokens) - .filter(alg => alg.includes('rs') || alg.includes('ps')); - - for(const alg of algs) { - it(alg.toUpperCase(), async function() { - //this.timeout(30000); + } + } + }); - await this.page.evaluate(token => { - window.test.tokenEditor.setValue(token); - }, defaultTokens[alg].token); + describe('Encodes RS/ES/PS tokens', function() { + const algs = Object.keys(defaultTokens).filter(alg => !alg.includes('hs')); + for(const alg of algs) { + for (const format of ['pem', 'jwk']) { + it(`${alg.toUpperCase()} using a ${format.toUpperCase()} key`, async function() { await this.page.select('#algorithm-select', alg.toUpperCase()); - const oldToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - }); + let publicKey = defaultTokens[alg].publicKey; + if (format === 'jwk') { + publicKey = JSON.stringify(await importSPKI(publicKey).then(exportJWK)) + } - await this.page.click('.js-header'); + let privateKey = defaultTokens[alg].privateKey; + if (format === 'jwk') { + privateKey = JSON.stringify(await importPKCS8(privateKey).then(exportJWK)) + } + + await this.page.click('textarea[name="public-key"]'); await selectAll.call(this); - await this.page.keyboard.type(JSON.stringify({ - alg: alg.toUpperCase(), - typ: 'JWT' - }, null, 2), { + await this.page.keyboard.type(publicKey, { delay: typingDelay }); - await this.page.click('.js-payload'); + await this.page.click('textarea[name="private-key"]'); await selectAll.call(this); - await this.page.keyboard.type(JSON.stringify({ - sub: 'test' - }, null, 2), { + await this.page.keyboard.type(privateKey, { delay: typingDelay }); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); - - const newToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - }); - - expect(newToken).to.not.be.empty; - expect(newToken).to.not.equal(oldToken); - - const valid = await this.page.$eval('.validation-status', - status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); - - expect(valid).to.be.true; - }); - } - }); - - describe('ES', async function() { - before(async function() { - await this.page.select('#algorithm-select', 'ES256'); - - await this.page.click('textarea[name="public-key"]'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['es256'].publicKey, { - delay: typingDelay - }); - - await this.page.click('textarea[name="private-key"]'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['es256'].privateKey, { - delay: typingDelay - }); - }); - - const algs = Object.keys(defaultTokens) - .filter(alg => alg.includes('es')); - - for(const alg of algs) { - it(alg.toUpperCase(), async function() { - //this.timeout(30000); - await this.page.evaluate(token => { window.test.tokenEditor.setValue(token); }, defaultTokens[alg].token); await this.page.select('#algorithm-select', alg.toUpperCase()); - const oldToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - }); - await this.page.click('.js-header'); await selectAll.call(this); await this.page.keyboard.type(JSON.stringify({ @@ -598,18 +526,17 @@ describe('Editor', function() { }); expect(newToken).to.not.be.empty; - expect(newToken).to.not.equal(oldToken); const valid = await this.page.$eval('.validation-status', status => { return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; + status.textContent.indexOf('verified') !== -1; }); expect(valid).to.be.true; }); } - }); + } }); describe('Should download public-keys when possible', function() { @@ -645,26 +572,19 @@ describe('Editor', function() { }); it('iss URL + .well-known', async function() { - const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); - const token = await jose.JWS.createSign({ - fields: { - alg: 'RS256', - typ: 'JWT', - kid: '1' - }, - format: 'compact' - }, { - key: key - }).update(JSON.stringify({ + const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); + const token = await new CompactSign(Buffer.from(JSON.stringify({ sub: 'test', iss: 'http://localhost:3000/' - }), 'utf8').final(); + }))).setProtectedHeader({ + alg: 'RS256', + typ: 'JWT', + kid: '1' + }).sign(key); await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(token, { - delay: typingDelay - }); + await this.page.keyboard.type(token); await this.page.waitFor(2000); await this.page.waitFor(tokenEditorThrottleWait); @@ -672,39 +592,25 @@ describe('Editor', function() { const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); - expect(publicKey).to.include(`-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnzyis1ZjfNB0bBgKFMSv\nvkTtwlvBsaJq7S5wA+kzeVOVpVWwkWdVha4s38XM/pa/yr47av7+z3VTmvDRyAHc\naT92whREFpLv9cj5lTeJSibyr/Mrm/YtjCZVWgaOYIhwrXwKLqPr/11inWsAkfIy\ntvHWTxZYEcXLgAXFuUuaS3uF9gEiNQwzGTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0\ne+lf4s4OxQawWD79J9/5d3Ry0vbV3Am1FtGJiJvOwRsIfVChDpYStTcHTCMqtvWb\nV6L11BWkpzGXSW4Hv43qa+GSYOD2QU68Mb59oSk2OB+BtOLpJofmbGEGgvmwyCI9\nMwIDAQAB\n-----END PUBLIC KEY-----`); - - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); - - expect(valid).to.be.true; + expect(publicKey).to.include(defaultTokens.rs256.publicKey); }); it('jku', async function() { //this.timeout(20000); - const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); - const token = await jose.JWS.createSign({ - fields: { - alg: 'RS256', - typ: 'JWT', - kid: '1', - jku: 'http://localhost:3000/.well-known/jwks.json' - }, - format: 'compact' - }, { - key: key - }).update(JSON.stringify({ + const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); + const token = await new CompactSign(Buffer.from(JSON.stringify({ sub: 'test' - }), 'utf8').final(); + }))).setProtectedHeader({ + alg: 'RS256', + typ: 'JWT', + kid: '1', + jku: 'http://localhost:3000/.well-known/jwks.json' + }).sign(key); await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(token, { - delay: typingDelay - }); + await this.page.keyboard.type(token); await this.page.waitFor(2000); await this.page.waitFor(tokenEditorThrottleWait); @@ -712,52 +618,31 @@ describe('Editor', function() { const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); - expect(publicKey).to.include(jwks.keys[0].x5c[0]); - - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); - - expect(valid).to.be.true; + expect(publicKey).to.include(defaultTokens.rs256.publicKey); }); it('x5c', async function() { //this.timeout(35000); - const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); - const token = await jose.JWS.createSign({ - fields: { - alg: 'RS256', - typ: 'JWT', - x5c: jwks.keys[0].x5c[0] - }, - format: 'compact' - }, { - key: key - }).update(JSON.stringify({ - sub: 'test', - }), 'utf8').final(); + const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); + const token = await new CompactSign(Buffer.from(JSON.stringify({ + sub: 'test' + }))).setProtectedHeader({ + alg: 'RS256', + typ: 'JWT', + x5c: jwks.keys[0].x5c + }).sign(key); await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(token, { - delay: typingDelay - }); + await this.page.keyboard.type(token); await this.page.waitFor(2000); const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); - expect(publicKey).to.include(jwks.keys[0].x5c[0]); - - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); - - expect(valid).to.be.true; + expect(publicKey).to.include('-----BEGIN CERTIFICATE-----\nMIIDBjCCAe4CCQDOaPo3zzlhlzANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJV\nUzETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0\ncyBQdHkgTHRkMB4XDTE5MDYwNTEwMDg0OVoXDTIwMDYwNDEwMDg0OVowRTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0\nIFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\nAJ88orNWY3zQdGwYChTEr75E7cJbwbGiau0ucAPpM3lTlaVVsJFnVYWuLN/FzP6W\nv8q+O2r+/s91U5rw0cgB3Gk/dsIURBaS7/XI+ZU3iUom8q/zK5v2LYwmVVoGjmCI\ncK18Ci6j6/9dYp1rAJHyMrbx1k8WWBHFy4AFxblLmkt7hfYBIjUMMxk1Nb9BapKk\nwa+AfJ1txwjeO11LtLfGNHvpX+LODsUGsFg+/Sff+Xd0ctL21dwJtRbRiYibzsEb\nCH1QoQ6WErU3B0wjKrb1m1ei9dQVpKcxl0luB7+N6mvhkmDg9kFOvDG+faEpNjgf\ngbTi6SaH5mxhBoL5sMgiPTMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAU4Nx25sl\niX8gD10Oik+RpBpHmsuZBU6q3nqYQKMlVdKFVeuptdqNjnVZY0WSSYvAUdtZ1kCu\nkMxjhvPb+LVaCkfOfXEuSqyjN55C1vDLpCV0xMb3irltYaWRIeHkqlRxRmoS+569\nZ/qg+JqZnCuEc6CeLLkzhVq+zagJkJs3evpSmofrY4qzJ1s1rygqSUhyS5NoyGAX\nCHba+m+7qMuSC3yOEPfiuAh9h6D/RltGi1iQ9Yqi4DoKlW9mfKGXbDn8thkGNdc7\n6yffilC8B/7Q8d5Btox/fE9yNI4YVhUEo+MkvUMnT1KS9fbw0o6fTjSa0D2oaHSO\nyBSs097rzC1PIw==\n-----END CERTIFICATE-----'); }); }); @@ -828,16 +713,12 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens['rs256'].token, { - delay: typingDelay - }); + await this.page.keyboard.type(tokens['rs256'].token); const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); await selectAll.call(this); - await secretInput.type(tokens['rs256'].publicKey, { - delay: typingDelay - }); + await secretInput.type(tokens['rs256'].publicKey); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); @@ -873,16 +754,12 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens['rs256'].token, { - delay: typingDelay - }); + await this.page.keyboard.type(tokens['rs256'].token); const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); await selectAll.call(this); - await secretInput.type(tokens['rs256'].publicKey, { - delay: typingDelay - }); + await secretInput.type(tokens['rs256'].publicKey); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); @@ -960,9 +837,7 @@ describe('Editor', function() { const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); await selectAll.call(this); - await secretInput.type(tokens['rs256'].publicKey, { - delay: typingDelay - }); + await secretInput.type(tokens['rs256'].publicKey); const privateKeyInput = await this.page.$('textarea[name="private-key"]'); await privateKeyInput.click(); @@ -971,9 +846,7 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens['rs256'].token, { - delay: typingDelay - }); + await this.page.keyboard.type(tokens['rs256'].token); await this.page.waitFor(1000); @@ -992,9 +865,7 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens.hs256.token, { - delay: typingDelay - }); + await this.page.keyboard.type(tokens.hs256.token); await this.page.select('#algorithm-select', 'HS384'); @@ -1010,9 +881,7 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens.none.token, { - delay: typingDelay - }); + await this.page.keyboard.type(tokens.none.token); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); diff --git a/test/functional/jwks.json b/test/functional/jwks.json index 8f57c7e7..89192924 100644 --- a/test/functional/jwks.json +++ b/test/functional/jwks.json @@ -10,7 +10,7 @@ "kid": "1", "x5t": "1", "e": "AQAB", - "n": "nzyis1ZjfNB0bBgKFMSvvkTtwlvBsaJq7S5wA-kzeVOVpVWwkWdVha4s38XM_pa_yr47av7-z3VTmvDRyAHcaT92whREFpLv9cj5lTeJSibyr_Mrm_YtjCZVWgaOYIhwrXwKLqPr_11inWsAkfIytvHWTxZYEcXLgAXFuUuaS3uF9gEiNQwzGTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0e-lf4s4OxQawWD79J9_5d3Ry0vbV3Am1FtGJiJvOwRsIfVChDpYStTcHTCMqtvWbV6L11BWkpzGXSW4Hv43qa-GSYOD2QU68Mb59oSk2OB-BtOLpJofmbGEGgvmwyCI9Mw" + "n": "u1SU1LfVLPHCozMxH2Mo4lgOEePzNm0tRgeLezV6ffAt0gunVTLw7onLRnrq0_IzW7yWR7QkrmBL7jTKEn5u-qKhbwKfBstIs-bMY2Zkp18gnTxKLxoS2tFczGkPLPgizskuemMghRniWaoLcyehkd3qqGElvW_VDL5AaWTg0nLVkjRo9z-40RQzuVaE8AkAFmxZzow3x-VJYKdjykkJ0iT9wCS0DRTXu269V264Vf_3jvredZiKRkgwlL9xNAwxXFg0x_XFw005UWVRIkdgcKWTjpBP2dPwVZ4WWC-9aGVd-Gyn1o0CLelf4rEjGoXbAAEgAqeGUxrcIlbjXfbcmw" } ] } diff --git a/test/functional/libraries.js b/test/functional/libraries.js index 7ca00ab4..2176c945 100644 --- a/test/functional/libraries.js +++ b/test/functional/libraries.js @@ -92,7 +92,8 @@ describe('Libraries', function() { })).to.be.true; }); - it('Has a data-repo attribute for star counts if repo ' + + // skipped since we're pulling these on the server now + it.skip('Has a data-repo attribute for star counts if repo ' + 'is in GitHub', async function() { const repos = await this.page.$$eval('.panel-wrap', bodies => { const result = []; diff --git a/test/functional/tokens.js b/test/functional/tokens.js index 56ea8df9..6dee3b98 100644 --- a/test/functional/tokens.js +++ b/test/functional/tokens.js @@ -1,9 +1,12 @@ const rsaPublicKey = `-----BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd -UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs -HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D -o2kQ+X5xK9cipRgEKwIDAQAB +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1SU1LfVLPHCozMxH2Mo +4lgOEePzNm0tRgeLezV6ffAt0gunVTLw7onLRnrq0/IzW7yWR7QkrmBL7jTKEn5u ++qKhbwKfBstIs+bMY2Zkp18gnTxKLxoS2tFczGkPLPgizskuemMghRniWaoLcyeh +kd3qqGElvW/VDL5AaWTg0nLVkjRo9z+40RQzuVaE8AkAFmxZzow3x+VJYKdjykkJ +0iT9wCS0DRTXu269V264Vf/3jvredZiKRkgwlL9xNAwxXFg0x/XFw005UWVRIkdg +cKWTjpBP2dPwVZ4WWC+9aGVd+Gyn1o0CLelf4rEjGoXbAAEgAqeGUxrcIlbjXfbc +mwIDAQAB -----END PUBLIC KEY-----`; const ecPublicKey256 = @@ -44,15 +47,15 @@ module.exports = { secret: 'secret' }, rs256: { - token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzMjU2dGVzdCJ9.qEQ_Gi7jYveN-sg-nRol_y0ULB0rtGIOGdOly0SkMFpc3HUxnj8addm-0UNdrJYLJv3CsFpXj_HnldvgDxpk0XAw8ArbeK-jCoxNFqUGBSITsLXQY5Chs8dh80C4vhKwxFqzo1FVxT2RlZIp_wN9dteKelGG-IVFNAhIlcHsSdw', + token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzMjU2dGVzdCJ9.ngCSp0NA7x21PySWoXTqNFA9Ts-Tz0F8bkF7jIajkM6l-X9HiBY2LF-LUqLW88k0QtBOgg9IYDRsB1-5zFyCp0byQXpyvHOfXKJ9NmaxdjtrDFB2Gr5EtAIyWzWfzbQkiVK0kmYSjhkKqZ5u8vkdnE0GSi4p5OGth9gteHsO2OAau9PCQ50-zOJDPytpwU8KLHKprP255ztR4_S5FjRvni2-jx0O6RPBSnZ2Xw9fr6BD-i21QMugzcJiVq3VFVSp_URVWT-YWhJqry3gjE3sktTnP-R2Q8BSsUfeXbsOmf_q2Qoi_ntFXQBo7BbHOy7jug0ZbnAiqCCfA4-Dug_xhA', publicKey: rsaPublicKey }, rs384: { - token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzMzg0dGVzdCJ9.YdJv8eHUfsheBaH8Y2OprzO8ewP4-wfuyCtYjx-vm-KybqPhfKDxaq9QsjYqNWPn7rZVnc843FL0G-0rSl2YDQG5QM0uW44jl20C5-LouloaSQ0Mg88Wj8-0kt8R22bXBeBc1tNuIezlna80pCvxZrZnVkphLGKlWXOu7tSwUVc', + token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzMzg0dGVzdCJ9.hxLs4M9mrvT59dto3xpVjLPG9HuGZwDmGNwOJjq5a5L5VhUg5Dx_Jb96adzeFdtd6ky_Jx2P5vcXQDsEUw8sMYuyoJGORzQxKgRKW-kXviLHPHiGfu1hX7gk5uNCsClz_LBOp5GXeQWz0iOov84mxE0DJvXJQHJSfwu7C4bmb1d4ufN8be-3dfztfKaUmf3Iot0LiC_86gEg-9yghTF6UR0AOJ6Dv56FGV9ftAkvyBQ78M3Rez2eUFte8_uN-vPSpRyjGV3unorfc9RjCis-lXy-Ex5lCJMpKkvLAruZsxfpvnhorikJMX86Gugg6XMRjsSWUKxdtEFWVd8OdpsKiA', publicKey: rsaPublicKey }, rs512: { - token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzNTEydGVzdCJ9.x6PkeyOYFCdmxV-JfsHmeVXad41h3AoyldaQVDaWJbD9SLXnz_hkbQ6KcUJGIzkLnL5KWuRc1IAYfa1lxk3ijWS0p42YKLbqdX3tXBvuaAr7bV8KM-rb_6RqhLqGXjkVJ8jjpCy0uu4VS3Yg0xojbm8sY6Jf-YbggRpFpvF_CxU', + token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzNTEydGVzdCJ9.L8muqWPmDwxw8xZ9lTi8Ndv6W-QDiZvDejs8xMge75uTXPx2VEpMdmKbwGMOEoNbScPpkcXNQRkot3_kXLtXQmo88ZzOZJMrMMw3Fbg4vnnrK5nCWPws7GKe9AJAd8iJEK6tWF6XG7TCWR4UG8RFWYmmxb0sdeOYVRwBdu-PrvT8j3az73_b79eOsSm99OO98XPkv5Ho7ev57Pfc3FAmRZ6R4O6og-YmI4uzzHWaPNvJgf4UG3A6STArzNlwmSn5cVAK5hyMh5v0n865HucotuOND7lE1EO0RgTXuWL6eTuClBCaECFtORnOzd9fvKloeE-GYiEOp7nsX-YpaDTHPw', publicKey: rsaPublicKey }, es256: { @@ -68,11 +71,15 @@ module.exports = { publicKey: ecPublicKey521 }, ps256: { - token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzMjU2dGVzdCJ9.jVQfrR2D8k3I5FsIBDW2zn1OINhemVA7T1izMSlYb-7MNlw4DrlcifJ0ilQwXHNw1rZI00OkGjeoJBNpArhEROCY8odXLosjvetRvfp0QPyH0mL5IehWcSsSAhJU0jL8FNQ44HBAUnTQ41llG6p1q7w7qIVcHnFmyqaXcFCP5B8', + token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzMjU2dGVzdCJ9.m_bT9rLV4kf3XTqqAzPiwot9jiOrH4nA7kwtBWDUIaLUabTSdjjeMud34DVXkCgwqoin_N2lQWFZV9jsjHNsoSjX-rw-PaxJmJq8-blix8KUaxgJBgxeZZnswGi6kOfHPNHYiEdZUrNTgRDdkhvV0aLfgGMUm62kG_v1-VzZLiENeIhXD1yqL6z3C3GwsYR0JcnyReTY3y5lN1-PoTz3h7Rnp6xhw7VnpG9Okt319WP7TDmddCiv2NReNVXA7e1Ng7c0R-qOhHljISn_AQZCsTrJJPOa4q3RQF2U3AabJkJbOWXYdzfbn1ZL3_Odp4t7LMLvBRMwa9_tb401XYuI1g', publicKey: rsaPublicKey }, ps384: { - token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzMzg0dGVzdCJ9.yS13poMub8KhYAT3p_Sd7FBIH6DtKLf-aPaxlNnyWwWmYXJm75uxG1XJ6pwTNZ2Sw-nw_YyFALVpO3QyUPtK16ZkyyQ2CrJ6w0nfRL5Bi7uah8OKXZh5ykqK9hq_No83AAPK53O-NPkG5CSreaexHOpCPqdjruV7JWyHysGFA80', + token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzMzg0dGVzdCJ9.LuBBEFHht0VjgaC9l8kp59dsYGxmxcs5L3nSHfv1doHzT1kj4vOxW9TbZqdJdx6hoEjgdB6RPt9jzRzbJ1X95suOJMLFVueaFQ6ZQ_3TO7W06pBRl_3Mo3atieXSDccFmbVGbyesk2fn5n-kqvoF0ngANHnOqEeHONaLLI-_x94M_EyhrhqLXFgJ08akon3p0oDe84KLGfr07gmb_7OKZx873FH4xVu_e_uRhgMFreRsIRN5WFT4kq2bJ_B_fpOAWnEy0ReIf-eKXKh0K2GIOf_vJY5KHKy2k8zGNOkvosLH0udRuevNkQpxH-w1WDOa8fNBOn4x7eos8zqv0wiVTw', publicKey: rsaPublicKey - } + }, + ps512: { + token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzNTEydGVzdCJ9.QWj-Egqu3fPb7Ua-PCQ0dMJ4PxNDdAzbh-pYLtIp6y5wNaWsO0uED_j22b4cAsbeoHJbewsl78yxGVkOjqAL2AK4O7ZuJmVrkh5eMCVEaMnNPWqshaZAfFvWpEaFVe4fjwvm6yRF-C8rPu_jMCO8y0mJ88X_cqKHBZdDq5WhkIcoo7u60t4jucwgPVdMLA9elx9HyUCMxeBsfEi3F4iNjZ4UJxehCtsxpz19PB7IlJQq0xA5dIZA7uGb6jyjBcpS95mvfa1dkrw02KTEpBcw1FOnKqoliWIDoD3qI2-AnPe4YzkOkupIKN7HDKa-M6aT1Rnxvop-r_trhVTS2qCSZw', + publicKey: rsaPublicKey + }, }; diff --git a/test/functional/utils.js b/test/functional/utils.js index d975720b..0da4f836 100644 --- a/test/functional/utils.js +++ b/test/functional/utils.js @@ -18,7 +18,9 @@ async function launchBrowser() { // Initial navigation may take long due to outside requests. this.timeout(30000); - this.browser = await puppeteer.launch(); + this.browser = await puppeteer.launch({ + args: ['--disable-dev-shm-usage'] + }); this.page = await this.browser.newPage(); await this.page.setViewport({ width: 1920, diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index 5af6542e..45673040 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -5,21 +5,11 @@ import b64u from 'base64url'; import log from 'loglevel'; import chai from 'chai'; import chaiAsPromised from 'chai-as-promised'; -import { randomFillSync } from 'crypto'; +import { randomFillSync, generateKeyPair } from 'crypto'; chai.use(chaiAsPromised); chai.should(); -const publicKeyPlainRSA = -`-----BEGIN RSA PUBLIC KEY----- -MIIBCgKCAQEAnzyis1ZjfNB0bBgKFMSvvkTtwlvBsaJq7S5wA+kzeVOVpVWwkWdV -ha4s38XM/pa/yr47av7+z3VTmvDRyAHcaT92whREFpLv9cj5lTeJSibyr/Mrm/Yt -jCZVWgaOYIhwrXwKLqPr/11inWsAkfIytvHWTxZYEcXLgAXFuUuaS3uF9gEiNQwz -GTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0e+lf4s4OxQawWD79J9/5d3Ry0vbV3Am1 -FtGJiJvOwRsIfVChDpYStTcHTCMqtvWbV6L11BWkpzGXSW4Hv43qa+GSYOD2QU68 -Mb59oSk2OB+BtOLpJofmbGEGgvmwyCI9MwIDAQAB ------END RSA PUBLIC KEY-----`; - describe('JWT', function() { it('detects tokens', function() { jwt.isToken('skdjf9238ujdhkf.asdfasdf2.sdsdffsfsd').should.be.false; @@ -45,20 +35,6 @@ describe('JWT', function() { return jwt.verify(token, tokens.hs256.secret).should.eventually.include({validSignature: false}); }); - describe('verifies valid tokens', function() { - Object.keys(tokens).forEach(alg => { - it(alg.toUpperCase(), function() { - if(alg.indexOf('hs') !== -1) { - return jwt.verify(tokens[alg].token, tokens[alg].secret) - .should.eventually.include({validSignature: true}); - } else { - return jwt.verify(tokens[alg].token, tokens[alg].publicKey) - .should.eventually.be.include({validSignature: true}); - } - }); - }); - }); - it('fails to verify invalid tokens ' + '(logging temporarily disabled to hide exceptions)', function() { log.disableAll(); @@ -99,98 +75,68 @@ describe('JWT', function() { .should.eventually.be.true; }); - it('signs/verifies tokens (HS256)', function() { - const header = { - alg: 'HS256' - }; - const payload = { - sub: 'test' - }; - - return jwt.sign(header, payload, 'secret').then(token => { - token.should.be.a('string'); - - const split = token.split('.'); - split.should.have.lengthOf(3); - - const decoded = jwt.decode(token); - decoded.header.should.deep.equal(header); - decoded.payload.should.deep.equal(payload); - - return jwt.verify(token, 'secret').should.eventually.include({validSignature: true}); - }); - }); - - it('signs/verifies tokens (RS256)', function() { - const header = { - alg: 'RS256' - }; - const payload = { - sub: 'test' - }; - - return jwt.sign(header, payload, tokens.rs256.privateKey).then(token => { - token.should.be.a('string'); - - const split = token.split('.'); - split.should.have.lengthOf(3); - - const decoded = jwt.decode(token); - decoded.header.should.deep.equal(header); - decoded.payload.should.deep.equal(payload); + for (const [alg, vector] of Object.entries(tokens)) { + let { privateKey, publicKey, jwk } = vector; + if (vector.secret) { + privateKey = publicKey = vector.secret; + } - return jwt.verify(token, tokens.rs256.publicKey) - .should.eventually.include({validSignature: true}); + it(`signs/verifies ${alg.toUpperCase()}`, function () { + const header = { alg: alg.toUpperCase(), iat: Date.now() }; + const payload = { sub: 'test' }; + + // test the default token + return jwt.verify(vector.token, publicKey).should.eventually.include({validSignature: true}) + .then(() => { + // test signing + return jwt.sign(header, payload, privateKey).then(token => { + token.should.be.a('string'); + + const split = token.split('.'); + split.should.have.lengthOf(3); + + const decoded = jwt.decode(token); + decoded.header.should.deep.equal(header); + decoded.payload.should.deep.equal(payload); + + // test verifying just signed token + return jwt.verify(token, publicKey) + .should.eventually.include({validSignature: true}); + }); + }); }); - }); - it('signs/verifies tokens (ES256)', function() { - const header = { - alg: 'ES256' - }; - const payload = { - sub: 'test' - }; + if (jwk) { + it(`signs/verifies ${alg.toUpperCase()} with a JWK`, function () { + const header = { alg: alg.toUpperCase(), iat: Date.now() }; + const payload = { sub: 'test' }; - return jwt.sign(header, payload, tokens.es256.privateKey).then(token => { - token.should.be.a('string'); + const jsonJWK = JSON.stringify(jwk, null, 4) - const split = token.split('.'); - split.should.have.lengthOf(3); + // test the default token + return jwt.verify(vector.token, jsonJWK).should.eventually.include({validSignature: true}) + .then(() => { + // test signing + return jwt.sign(header, payload, jsonJWK).then(token => { + token.should.be.a('string'); - const decoded = jwt.decode(token); - decoded.header.should.deep.equal(header); - decoded.payload.should.deep.equal(payload); + const split = token.split('.'); + split.should.have.lengthOf(3); - return jwt.verify(token, tokens.es256.publicKey) - .should.eventually.include({validSignature: true}); - }); - }); + const decoded = jwt.decode(token); + decoded.header.should.deep.equal(header); + decoded.payload.should.deep.equal(payload); - it('signs/verifies tokens (PS256)', function() { - const header = { - alg: 'PS256' - }; - const payload = { - sub: 'test' - }; - - return jwt.sign(header, payload, tokens.ps256.privateKey).then(token => { - token.should.be.a('string'); - - const split = token.split('.'); - split.should.have.lengthOf(3); - - const decoded = jwt.decode(token); - decoded.header.should.deep.equal(header); - decoded.payload.should.deep.equal(payload); - - return jwt.verify(token, tokens.ps256.publicKey) - .should.eventually.include({validSignature: true}); - }); - }); + // test verifying just signed token + return jwt.verify(token, jsonJWK) + .should.eventually.include({validSignature: true}); + }); + }); + }); + } + } - it('verifies tokens (RS256) using a plain RSA public key', function() { + it('signs and verifies tokens using a PKCS1 RSA keys', function() { const header = { alg: 'RS256' }; @@ -198,8 +144,19 @@ describe('JWT', function() { sub: 'test' }; - return jwt.sign(header, payload, tokens.rs256.privateKey).then(token => { - return jwt.verify(token, publicKeyPlainRSA).should.eventually.include({validSignature: true}); + return new Promise((resolve, reject) => { + generateKeyPair('rsa', { + modulusLength: 2048, + privateKeyEncoding: { format: 'pem', type: 'pkcs1' }, + publicKeyEncoding: { format: 'pem', type: 'pkcs1' }, + }, (err, publicKey, privateKey) => { + if (err) return reject(err); + return resolve({ publicKey, privateKey }); + }) + }).then(({ privateKey, publicKey }) => { + return jwt.sign(header, payload, privateKey).then((token) => { + return jwt.verify(token, publicKey).should.eventually.include({validSignature: true}); + }); }); }); diff --git a/test/unit/editor/public-key-download.js b/test/unit/editor/public-key-download.js index 8ee23556..537e16ec 100644 --- a/test/unit/editor/public-key-download.js +++ b/test/unit/editor/public-key-download.js @@ -3,6 +3,7 @@ import chaiAsPromised from 'chai-as-promised'; import _ from 'lodash'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; +import nock from 'nock'; import publicKeyDownloadInjector from 'inject-loader!../../../src/editor/public-key-download.js'; @@ -12,7 +13,20 @@ chai.use(sinonChai); chai.should(); describe('Public key downloader', function() { - const baseUrl = '/'; + before(() => { + nock.disableNetConnect(); + }) + + after(() => { + nock.enableNetConnect(); + }) + + afterEach(() => { + nock.isDone().should.be.true; + nock.cleanAll(); + }); + + const baseUrl = 'http://local.dev/'; const decodedBaseToken = { header: { @@ -34,11 +48,7 @@ describe('Public key downloader', function() { }] }; - const keyAsPEM = `-----BEGIN PUBLIC KEY-----\r\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1GPz+Er5h7PCk4v3pSln\r\naLYNYrp4sVc6Tx7FVz9d8m4zIS2qzcTM/6dRbMgZ4hBdD35NpYzU4z+d8lN27+J/\r\njOzHnCiMdkY+w52dCofAkICh6ftkFlG9bFQyH8Jz5UtpVkZyy1dxCRz/sbRAzUdj\r\nUYsGvrKXg+3UYCL5SBCnt0ycrvr3iKX9k8IlMrFRB8lBJ6eQVzkzGsuivPaThXjV\r\nZ/OpY7W+XsDjut7cFgPKIc843tW4CNaDJ6j3afm+RFOok//xLQH5uA7HXS/yqfEc\r\nhvzXfYfMxJY2d+Eqw4xTurm3TT07RnwJuN9slDJUrTH9EKkJkjZ7dn7fZtGjGTpa\r\nDQIDAQAB\r\n-----END PUBLIC KEY-----\r\n`; - - function httpGetMock(data) { - return (url) => data ? Promise.resolve(data) : Promise.reject(); - } + const keyAsPEM = `-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1GPz+Er5h7PCk4v3pSln\naLYNYrp4sVc6Tx7FVz9d8m4zIS2qzcTM/6dRbMgZ4hBdD35NpYzU4z+d8lN27+J/\njOzHnCiMdkY+w52dCofAkICh6ftkFlG9bFQyH8Jz5UtpVkZyy1dxCRz/sbRAzUdj\nUYsGvrKXg+3UYCL5SBCnt0ycrvr3iKX9k8IlMrFRB8lBJ6eQVzkzGsuivPaThXjV\nZ/OpY7W+XsDjut7cFgPKIc843tW4CNaDJ6j3afm+RFOok//xLQH5uA7HXS/yqfEc\nhvzXfYfMxJY2d+Eqw4xTurm3TT07RnwJuN9slDJUrTH9EKkJkjZ7dn7fZtGjGTpa\nDQIDAQAB\n-----END PUBLIC KEY-----\n`; it('Finds keys in iss + .well-known URL', function(done) { const decodedToken = _.defaultsDeep({}, decodedBaseToken, { @@ -51,8 +61,11 @@ describe('Public key downloader', function() { }); const httpGetStub = sinon.stub() - .onCall(0).resolves(JSON.stringify({ jwks_uri: '/.well-known/jwks.json' })) - .onCall(1).resolves(JSON.stringify(jwks)); + .onCall(0).resolves(JSON.stringify({ jwks_uri: baseUrl + '.well-known/jwks.json' })) + + nock(baseUrl) + .get('/.well-known/jwks.json') + .reply(200, jwks) const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ '../utils.js': { @@ -65,8 +78,6 @@ describe('Public key downloader', function() { .then(() => { httpGetStub.should.have.been .calledWith(baseUrl + '.well-known/openid-configuration'); - httpGetStub.should.have.been - .calledWith(baseUrl + '.well-known/jwks.json'); }).should.notify(done); }); @@ -86,7 +97,7 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(jwks.keys[0].x5c[0]) + .should.eventually.include(keyAsPEM) .then(() => { httpGetStub.should.have.callCount(0); }).should.notify(done); @@ -100,7 +111,11 @@ describe('Public key downloader', function() { } }); - const httpGetStub = sinon.stub().resolves(JSON.stringify(jwks)); + nock(baseUrl) + .get('/') + .reply(200, jwks) + + const httpGetStub = sinon.stub().rejects('Should not be called'); const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ '../utils.js': { httpGet: httpGetStub @@ -108,10 +123,11 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(jwks.keys[0].x5c[0]) + .should.eventually.include(keyAsPEM) .then(() => { - httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); + httpGetStub.should.have.callCount(0); + }) + .should.notify(done); }); it('Finds keys in x5u header claim', function(done) { @@ -121,7 +137,7 @@ describe('Public key downloader', function() { } }); - const httpGetStub = sinon.stub().resolves(jwks.keys[0].x5c[0]); + const httpGetStub = sinon.stub().resolves(jwks.keys[0].x5c); const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ '../utils.js': { httpGet: httpGetStub @@ -129,33 +145,12 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(jwks.keys[0].x5c[0]) + .should.eventually.include(jwks.keys[0].x5c) .then(() => { httpGetStub.should.have.been.calledWith(baseUrl); }).should.notify(done); }); - it('Finds keys in x5c string header claim', function(done) { - const decodedToken = _.defaultsDeep({}, decodedBaseToken, { - header: { - x5c: jwks.keys[0].x5c[0] - } - }); - - const httpGetStub = sinon.stub().rejects('Should not be called'); - const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ - '../utils.js': { - httpGet: httpGetStub - } - }).downloadPublicKeyIfPossible; - - downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(jwks.keys[0].x5c[0]) - .then(() => { - httpGetStub.should.have.callCount(0); - }).should.notify(done); - }); - it('Finds keys in x5c array header claim', function(done) { const decodedToken = _.defaultsDeep({}, decodedBaseToken, { header: { @@ -171,7 +166,7 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(jwks.keys[0].x5c[0]) + .should.eventually.include(jwks.keys[0].x5c) .then(() => { httpGetStub.should.have.callCount(0); }).should.notify(done); @@ -181,7 +176,7 @@ describe('Public key downloader', function() { const decodedToken = _.defaultsDeep({}, decodedBaseToken, { header: { kid: '1', - jku: baseUrl + x5u: baseUrl } }); @@ -208,62 +203,33 @@ describe('Public key downloader', function() { } }); - let httpGetStub; + const httpGetStub = sinon.stub().rejects('Should not be called'); const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ '../utils.js': { - httpGet: url => httpGetStub(url) + httpGet: httpGetStub } }).downloadPublicKeyIfPossible; it('when the keys object is not an array', function(done) { - httpGetStub = sinon.stub().resolves({ - keys: {} - }); - downloadPublicKeyIfPossible(decodedToken) - .should.be.rejected - .then(() => { - httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); - }); - it('when the keys object does not exist', function(done) { - httpGetStub = sinon.stub().resolves({ - }); + nock(baseUrl) + .get('/') + .reply(200, { keys: {} }) downloadPublicKeyIfPossible(decodedToken) .should.be.rejected - .then(() => { - httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); + .should.notify(done); }); - it('when there is no kid', function(done) { - httpGetStub = sinon.stub().resolves({ - keys: [{ - x5c: jwks.keys[0].x5c - }] - }); - - downloadPublicKeyIfPossible(decodedToken) - .should.be.rejected - .then(() => { - httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); - }); - - it('when there are no x5u or x5c claims', function(done) { - httpGetStub = sinon.stub().resolves({ - keys: [{ - kid: '1' - }] - }); + it('when the keys object does not exist', function(done) { + nock(baseUrl) + .get('/') + .reply(200, {}) downloadPublicKeyIfPossible(decodedToken) .should.be.rejected - .then(() => { - httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); + .should.notify(done); }); }); }); diff --git a/test/unit/utils.js b/test/unit/utils.js index 3b850c64..3d5c7e36 100644 --- a/test/unit/utils.js +++ b/test/unit/utils.js @@ -4,8 +4,6 @@ import xhrMock from 'xhr-mock'; import { httpGet } from '../../src/utils.js'; -import { randomFillSync } from 'crypto'; - chai.use(chaiAsPromised); chai.should(); diff --git a/views/token-editor-algorithms.pug b/views/token-editor-algorithms.pug index 20ebb164..886c5172 100644 --- a/views/token-editor-algorithms.pug +++ b/views/token-editor-algorithms.pug @@ -10,6 +10,4 @@ select#algorithm-select option(name='algorithm',value='ES512') ES512 option(name='algorithm',value='PS256') PS256 option(name='algorithm',value='PS384') PS384 - //- Buggy in node-jose for now, supported by browsers - option(name='algorithm',value='PS512') PS512 - + option(name='algorithm',value='PS512') PS512 diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug index 991402f1..d1959cf9 100644 --- a/views/token-editor-common.pug +++ b/views/token-editor-common.pug @@ -35,6 +35,6 @@ RSASHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), - , - + , + ) diff --git a/views/website/layout.pug b/views/website/layout.pug index cdb529b2..72e926b6 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -73,7 +73,8 @@ html(lang='en') script. !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); - div - div(id="consent_blackbar") - div(id="teconsent" style="position: absolute; bottom: -100px;") - script(async="async" src="http://consent.trustarc.com/notice?domain=auth0banner.com&c=teconsent&js=nj¬iceType=bb&text=true" crossOrigin) + if process.env.NODE_ENV === "production" + div + div(id="consent_blackbar") + div(id="teconsent" style="position: absolute; bottom: -100px;") + script(async="async" src="http://consent.trustarc.com/notice?domain=auth0banner.com&c=teconsent&js=nj¬iceType=bb&text=true" crossOrigin) diff --git a/webpack.common.js b/webpack.common.js index 34aef2cb..f837d22b 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -33,4 +33,14 @@ module.exports = { jQuery: "jquery", }), ], -}; \ No newline at end of file + resolve: { + alias: { + 'jose/key/import': 'jose/dist/browser/key/import', + 'jose/key/export': 'jose/dist/browser/key/export', + 'jose/jws/compact/sign': 'jose/dist/browser/jws/compact/sign', + 'jose/jws/compact/verify': 'jose/dist/browser/jws/compact/verify', + 'jose/jwks/remote': 'jose/dist/browser/jwks/remote', + 'jose/jwk/embedded': 'jose/dist/browser/jwk/embedded', + } + } +}; diff --git a/webpack.website-unit-tests.js b/webpack.website-unit-tests.js index 91ac6e30..55d54796 100644 --- a/webpack.website-unit-tests.js +++ b/webpack.website-unit-tests.js @@ -41,5 +41,15 @@ module.exports = merge(common, { } } }] + }, + resolve: { + alias: { + 'jose/key/import': 'jose/dist/node/cjs/key/import', + 'jose/key/export': 'jose/dist/node/cjs/key/export', + 'jose/jws/compact/sign': 'jose/dist/node/cjs/jws/compact/sign', + 'jose/jws/compact/verify': 'jose/dist/node/cjs/jws/compact/verify', + 'jose/jwks/remote': 'jose/dist/node/cjs/jwks/remote', + 'jose/jwk/embedded': 'jose/dist/node/cjs/jwk/embedded', + } } }); From 6a4dd7e831e64fab1ff0f75daaf1bb501354d08f Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Mon, 27 Sep 2021 14:10:10 +0200 Subject: [PATCH 501/611] test: remove test specific vectors --- test/functional/editor.js | 48 ++++++++-------------- test/functional/tokens.js | 85 --------------------------------------- 2 files changed, 17 insertions(+), 116 deletions(-) delete mode 100644 test/functional/tokens.js diff --git a/test/functional/editor.js b/test/functional/editor.js index 46f5bf7c..84b9817d 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -3,14 +3,12 @@ const chaiAsPromised = require('chai-as-promised'); const chaiArrays = require('chai-arrays'); const express = require('express'); -const { importPKCS8, importSPKI } = require('jose/key/import') +const { importPKCS8 } = require('jose/key/import') const { CompactSign } = require('jose/jws/compact/sign') -const { exportJWK } = require('jose/key/export') const _ = require('lodash'); const utils = require('./utils.js'); -const tokens = require('./tokens.js'); const defaultTokens = require('esm')(module)('../../src/editor/default-tokens.js').default; const jwks = require('./jwks.json'); @@ -330,18 +328,18 @@ describe('Editor', function() { }); describe('HS256/384/512', function() { - const algs = Object.keys(tokens).filter(alg => alg.includes('hs')); + const algs = Object.keys(defaultTokens).filter(alg => alg.includes('hs')); for(const alg of algs) { it(`Decodes ${alg.toUpperCase()} tokens`, async function() { const secretInput = await this.page.$('input[name="secret"]'); await secretInput.click(); await selectAll.call(this); - await secretInput.type(tokens[alg].secret); + await secretInput.type(defaultTokens[alg].secret); await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens[alg].token); + await this.page.keyboard.type(defaultTokens[alg].token); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); @@ -353,12 +351,6 @@ describe('Editor', function() { }); expect(valid).to.be.true; - - const payload = await this.page.evaluate(() => { - return window.test.payloadEditor.getValue(); - }); - - expect(payload).to.include(alg + 'test'); }); const bits = parseInt(alg.substr(2)); @@ -430,15 +422,15 @@ describe('Editor', function() { it(`${alg.toUpperCase()} using a ${format.toUpperCase()} key`, async function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens[alg].token); + await this.page.keyboard.type(defaultTokens[alg].token); const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); await selectAll.call(this); - let publicKey = tokens[alg].publicKey; + let publicKey = defaultTokens[alg].publicKey; if (format === 'jwk') { - publicKey = JSON.stringify(await importSPKI(publicKey).then(exportJWK)) + publicKey = JSON.stringify(defaultTokens[alg].jwk) } await secretInput.type(publicKey); @@ -453,12 +445,6 @@ describe('Editor', function() { }); expect(valid).to.be.true; - - const payload = await this.page.evaluate(() => { - return window.test.payloadEditor.getValue(); - }); - - expect(payload).to.include(alg + 'test'); }); } } @@ -474,12 +460,12 @@ describe('Editor', function() { let publicKey = defaultTokens[alg].publicKey; if (format === 'jwk') { - publicKey = JSON.stringify(await importSPKI(publicKey).then(exportJWK)) + publicKey = JSON.stringify(defaultTokens[alg].jwk) } let privateKey = defaultTokens[alg].privateKey; if (format === 'jwk') { - privateKey = JSON.stringify(await importPKCS8(privateKey).then(exportJWK)) + privateKey = JSON.stringify(defaultTokens[alg].jwk) } await this.page.click('textarea[name="public-key"]'); @@ -713,12 +699,12 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens['rs256'].token); + await this.page.keyboard.type(defaultTokens['rs256'].token); const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); await selectAll.call(this); - await secretInput.type(tokens['rs256'].publicKey); + await secretInput.type(defaultTokens['rs256'].publicKey); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); @@ -754,12 +740,12 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens['rs256'].token); + await this.page.keyboard.type(defaultTokens['rs256'].token); const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); await selectAll.call(this); - await secretInput.type(tokens['rs256'].publicKey); + await secretInput.type(defaultTokens['rs256'].publicKey); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); @@ -837,7 +823,7 @@ describe('Editor', function() { const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); await selectAll.call(this); - await secretInput.type(tokens['rs256'].publicKey); + await secretInput.type(defaultTokens['rs256'].publicKey); const privateKeyInput = await this.page.$('textarea[name="private-key"]'); await privateKeyInput.click(); @@ -846,7 +832,7 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens['rs256'].token); + await this.page.keyboard.type(defaultTokens['rs256'].token); await this.page.waitFor(1000); @@ -865,7 +851,7 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens.hs256.token); + await this.page.keyboard.type(defaultTokens.hs256.token); await this.page.select('#algorithm-select', 'HS384'); @@ -881,7 +867,7 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens.none.token); + await this.page.keyboard.type('eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.'); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); diff --git a/test/functional/tokens.js b/test/functional/tokens.js deleted file mode 100644 index 6dee3b98..00000000 --- a/test/functional/tokens.js +++ /dev/null @@ -1,85 +0,0 @@ -const rsaPublicKey = -`-----BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1SU1LfVLPHCozMxH2Mo -4lgOEePzNm0tRgeLezV6ffAt0gunVTLw7onLRnrq0/IzW7yWR7QkrmBL7jTKEn5u -+qKhbwKfBstIs+bMY2Zkp18gnTxKLxoS2tFczGkPLPgizskuemMghRniWaoLcyeh -kd3qqGElvW/VDL5AaWTg0nLVkjRo9z+40RQzuVaE8AkAFmxZzow3x+VJYKdjykkJ -0iT9wCS0DRTXu269V264Vf/3jvredZiKRkgwlL9xNAwxXFg0x/XFw005UWVRIkdg -cKWTjpBP2dPwVZ4WWC+9aGVd+Gyn1o0CLelf4rEjGoXbAAEgAqeGUxrcIlbjXfbc -mwIDAQAB ------END PUBLIC KEY-----`; - -const ecPublicKey256 = -`-----BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVs/o5+uQbTjL3chynL4wXgUg2R9 -q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== ------END PUBLIC KEY-----`; - -const ecPublicKey384 = -`-----BEGIN PUBLIC KEY----- -MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEC1uWSXj2czCDwMTLWV5BFmwxdM6PX9p+ -Pk9Yf9rIf374m5XP1U8q79dBhLSIuaojsvOT39UUcPJROSD1FqYLued0rXiooIii -1D3jaW6pmGVJFhodzC31cy5sfOYotrzF ------END PUBLIC KEY-----`; - -const ecPublicKey521 = -`-----BEGIN PUBLIC KEY----- -MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBgc4HZz+/fBbC7lmEww0AO3NK9wVZ -PDZ0VEnsaUFLEYpTzb90nITtJUcPUbvOsdZIZ1Q8fnbquAYgxXL5UgHMoywAib47 -6MkyyYgPk0BXZq3mq4zImTRNuaU9slj9TVJ3ScT3L1bXwVuPJDzpr5GOFpaj+WwM -Al8G7CqwoJOsW7Kddns= ------END PUBLIC KEY-----`; - -module.exports = { - none: { - token: 'eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.' - }, - hs512: { - token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImhzNTEydGVzdCJ9.RVBLQLIZqA6n8prLoVLsxsYb0nGg1-q4j-qUOwN7zjCC9RwS3HlOG2bNUB6cTKS7WBRHScVXnmwCoeHP0gVtDA', - secret: 'secret' - }, - hs384: { - token: 'eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImhzMzg0dGVzdCJ9.xD9kvywowrJYO9Lo-zwXvmydjc6DkGtJHUWAmTjL144xSqExhnhUgoTG_04Lu4Ma', - secret: 'secret' - }, - hs256: { - token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImhzMjU2dGVzdCJ9.mNZ_thfG9tYoIoV7TD_CQG6sQRAfGJqmBdEbU_uf4-0', - secret: 'secret' - }, - rs256: { - token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzMjU2dGVzdCJ9.ngCSp0NA7x21PySWoXTqNFA9Ts-Tz0F8bkF7jIajkM6l-X9HiBY2LF-LUqLW88k0QtBOgg9IYDRsB1-5zFyCp0byQXpyvHOfXKJ9NmaxdjtrDFB2Gr5EtAIyWzWfzbQkiVK0kmYSjhkKqZ5u8vkdnE0GSi4p5OGth9gteHsO2OAau9PCQ50-zOJDPytpwU8KLHKprP255ztR4_S5FjRvni2-jx0O6RPBSnZ2Xw9fr6BD-i21QMugzcJiVq3VFVSp_URVWT-YWhJqry3gjE3sktTnP-R2Q8BSsUfeXbsOmf_q2Qoi_ntFXQBo7BbHOy7jug0ZbnAiqCCfA4-Dug_xhA', - publicKey: rsaPublicKey - }, - rs384: { - token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzMzg0dGVzdCJ9.hxLs4M9mrvT59dto3xpVjLPG9HuGZwDmGNwOJjq5a5L5VhUg5Dx_Jb96adzeFdtd6ky_Jx2P5vcXQDsEUw8sMYuyoJGORzQxKgRKW-kXviLHPHiGfu1hX7gk5uNCsClz_LBOp5GXeQWz0iOov84mxE0DJvXJQHJSfwu7C4bmb1d4ufN8be-3dfztfKaUmf3Iot0LiC_86gEg-9yghTF6UR0AOJ6Dv56FGV9ftAkvyBQ78M3Rez2eUFte8_uN-vPSpRyjGV3unorfc9RjCis-lXy-Ex5lCJMpKkvLAruZsxfpvnhorikJMX86Gugg6XMRjsSWUKxdtEFWVd8OdpsKiA', - publicKey: rsaPublicKey - }, - rs512: { - token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzNTEydGVzdCJ9.L8muqWPmDwxw8xZ9lTi8Ndv6W-QDiZvDejs8xMge75uTXPx2VEpMdmKbwGMOEoNbScPpkcXNQRkot3_kXLtXQmo88ZzOZJMrMMw3Fbg4vnnrK5nCWPws7GKe9AJAd8iJEK6tWF6XG7TCWR4UG8RFWYmmxb0sdeOYVRwBdu-PrvT8j3az73_b79eOsSm99OO98XPkv5Ho7ev57Pfc3FAmRZ6R4O6og-YmI4uzzHWaPNvJgf4UG3A6STArzNlwmSn5cVAK5hyMh5v0n865HucotuOND7lE1EO0RgTXuWL6eTuClBCaECFtORnOzd9fvKloeE-GYiEOp7nsX-YpaDTHPw', - publicKey: rsaPublicKey - }, - es256: { - token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImVzMjU2dGVzdCJ9.Ir41cyW-pc_pM2L0_cl0spnr8Y3GRUYKm7LfLhScI8SaPLfaQn9B7uES8OkYxu1YfudkYfgoFV_Bh1Qvu8lf7g', - publicKey: ecPublicKey256 - }, - es384: { - token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6ImlUcVhYSTB6YkFuSkNLRGFvYmZoa00xZi02ck1TcFRmeVpNUnBfMnRLSTgifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImVzMzg0dGVzdCJ9.YXzDoj68bFiJ-1gIOrqgSJUvyzh0y61uf6mqp4rWuhekhB1Ck1utbZ20Fg0fqokguEWG-9mj_iyEbiVDD9upf9SLU7M3_9PidGQ4YxbiMhXe3Q2iJyIcMHOqteqqobrt', - publicKey: ecPublicKey384 - }, - es512: { - token: 'eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCIsImtpZCI6InhaRGZacHJ5NFA5dlpQWnlHMmZOQlJqLTdMejVvbVZkbTd0SG9DZ1NOZlkifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImVzNTEydGVzdCJ9.AF3NvldM10bAnAYvoy337HgVLAyJealQRYLCYD1FxayivcNinURScqM49bhUWKUg6svLxi03ENhpcsErqJt2x6QnAOkkepMOPU52r1mVYNz_kB0gxY8Xvl8_0d9CYn84NmNL11NrvZlzm03vL2oFZnWZx1L_4st7bm4jsDglnzkapkdh', - publicKey: ecPublicKey521 - }, - ps256: { - token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzMjU2dGVzdCJ9.m_bT9rLV4kf3XTqqAzPiwot9jiOrH4nA7kwtBWDUIaLUabTSdjjeMud34DVXkCgwqoin_N2lQWFZV9jsjHNsoSjX-rw-PaxJmJq8-blix8KUaxgJBgxeZZnswGi6kOfHPNHYiEdZUrNTgRDdkhvV0aLfgGMUm62kG_v1-VzZLiENeIhXD1yqL6z3C3GwsYR0JcnyReTY3y5lN1-PoTz3h7Rnp6xhw7VnpG9Okt319WP7TDmddCiv2NReNVXA7e1Ng7c0R-qOhHljISn_AQZCsTrJJPOa4q3RQF2U3AabJkJbOWXYdzfbn1ZL3_Odp4t7LMLvBRMwa9_tb401XYuI1g', - publicKey: rsaPublicKey - }, - ps384: { - token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzMzg0dGVzdCJ9.LuBBEFHht0VjgaC9l8kp59dsYGxmxcs5L3nSHfv1doHzT1kj4vOxW9TbZqdJdx6hoEjgdB6RPt9jzRzbJ1X95suOJMLFVueaFQ6ZQ_3TO7W06pBRl_3Mo3atieXSDccFmbVGbyesk2fn5n-kqvoF0ngANHnOqEeHONaLLI-_x94M_EyhrhqLXFgJ08akon3p0oDe84KLGfr07gmb_7OKZx873FH4xVu_e_uRhgMFreRsIRN5WFT4kq2bJ_B_fpOAWnEy0ReIf-eKXKh0K2GIOf_vJY5KHKy2k8zGNOkvosLH0udRuevNkQpxH-w1WDOa8fNBOn4x7eos8zqv0wiVTw', - publicKey: rsaPublicKey - }, - ps512: { - token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzNTEydGVzdCJ9.QWj-Egqu3fPb7Ua-PCQ0dMJ4PxNDdAzbh-pYLtIp6y5wNaWsO0uED_j22b4cAsbeoHJbewsl78yxGVkOjqAL2AK4O7ZuJmVrkh5eMCVEaMnNPWqshaZAfFvWpEaFVe4fjwvm6yRF-C8rPu_jMCO8y0mJ88X_cqKHBZdDq5WhkIcoo7u60t4jucwgPVdMLA9elx9HyUCMxeBsfEi3F4iNjZ4UJxehCtsxpz19PB7IlJQq0xA5dIZA7uGb6jyjBcpS95mvfa1dkrw02KTEpBcw1FOnKqoliWIDoD3qI2-AnPe4YzkOkupIKN7HDKa-M6aT1Rnxvop-r_trhVTS2qCSZw', - publicKey: rsaPublicKey - }, -}; From 7bfe720508d2f7c80bd5baa7d8e27fb0321b89d6 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Mon, 27 Sep 2021 14:19:26 +0200 Subject: [PATCH 502/611] refactor: populate publicKey with a JWK when one is downloaded --- src/editor/public-key-download.js | 5 ++--- test/functional/editor.js | 4 ++-- test/unit/editor/public-key-download.js | 8 ++++---- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/editor/public-key-download.js b/src/editor/public-key-download.js index ac9fd52e..a43bd581 100644 --- a/src/editor/public-key-download.js +++ b/src/editor/public-key-download.js @@ -1,5 +1,4 @@ import { createRemoteJWKSet } from 'jose/jwks/remote' -import { EmbeddedJWK } from 'jose/jwk/embedded' import * as keyExport from 'jose/key/export' import { httpGet } from '../utils.js'; @@ -26,7 +25,7 @@ function getKeyFromX5Claims(claims) { } function getKeyFromJwkKeySetUrl(header, url) { - return createRemoteJWKSet(new URL(url))(header, {}).then((key) => keyExport.exportSPKI(key)) + return createRemoteJWKSet(new URL(url))(header, {}).then(keyExport.exportJWK).then((jwk) => JSON.stringify(jwk, null, 2)) } export function downloadPublicKeyIfPossible(decodedToken) { @@ -44,7 +43,7 @@ export function downloadPublicKeyIfPossible(decodedToken) { } else if(header.jku) { getKeyFromJwkKeySetUrl(header, header.jku).then(resolve, reject); } else if(header.jwk) { - EmbeddedJWK(header, {}).then((key) => keyExport.exportSPKI(key)).then(resolve, reject); + resolve(JSON.stringify(header.jwk, null, 2)) } else if(payload.iss) { const url = payload.iss + (payload.iss.substr(-1) === '/' ? '.well-known/openid-configuration' : '/.well-known/openid-configuration') diff --git a/test/functional/editor.js b/test/functional/editor.js index 84b9817d..39c6f8ae 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -578,7 +578,7 @@ describe('Editor', function() { const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); - expect(publicKey).to.include(defaultTokens.rs256.publicKey); + expect(jwks.keys[0]).to.contain(JSON.parse(publicKey)) }); it('jku', async function() { @@ -604,7 +604,7 @@ describe('Editor', function() { const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); - expect(publicKey).to.include(defaultTokens.rs256.publicKey); + expect(jwks.keys[0]).to.contain(JSON.parse(publicKey)) }); it('x5c', async function() { diff --git a/test/unit/editor/public-key-download.js b/test/unit/editor/public-key-download.js index 537e16ec..43148382 100644 --- a/test/unit/editor/public-key-download.js +++ b/test/unit/editor/public-key-download.js @@ -48,7 +48,7 @@ describe('Public key downloader', function() { }] }; - const keyAsPEM = `-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1GPz+Er5h7PCk4v3pSln\naLYNYrp4sVc6Tx7FVz9d8m4zIS2qzcTM/6dRbMgZ4hBdD35NpYzU4z+d8lN27+J/\njOzHnCiMdkY+w52dCofAkICh6ftkFlG9bFQyH8Jz5UtpVkZyy1dxCRz/sbRAzUdj\nUYsGvrKXg+3UYCL5SBCnt0ycrvr3iKX9k8IlMrFRB8lBJ6eQVzkzGsuivPaThXjV\nZ/OpY7W+XsDjut7cFgPKIc843tW4CNaDJ6j3afm+RFOok//xLQH5uA7HXS/yqfEc\nhvzXfYfMxJY2d+Eqw4xTurm3TT07RnwJuN9slDJUrTH9EKkJkjZ7dn7fZtGjGTpa\nDQIDAQAB\n-----END PUBLIC KEY-----\n`; + const keyAsJWK = JSON.stringify({ kty: jwks.keys[0].kty, n: jwks.keys[0].n, e: jwks.keys[0].e }, null, 2) it('Finds keys in iss + .well-known URL', function(done) { const decodedToken = _.defaultsDeep({}, decodedBaseToken, { @@ -74,7 +74,7 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(keyAsPEM) + .should.eventually.include(keyAsJWK) .then(() => { httpGetStub.should.have.been .calledWith(baseUrl + '.well-known/openid-configuration'); @@ -97,7 +97,7 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(keyAsPEM) + .should.eventually.include(JSON.stringify(jwks.keys[0], null, 2)) .then(() => { httpGetStub.should.have.callCount(0); }).should.notify(done); @@ -123,7 +123,7 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(keyAsPEM) + .should.eventually.include(keyAsJWK) .then(() => { httpGetStub.should.have.callCount(0); }) From 27f6c4aba9afba3f303409b80d96cb874c57af92 Mon Sep 17 00:00:00 2001 From: Daniel DeGroff Date: Tue, 28 Sep 2021 10:05:30 -0600 Subject: [PATCH 503/611] Update FusionAuth version --- views/website/libraries/3-Java.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index 1237b7b1..a670cdc6 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -157,7 +157,7 @@ "authorName": "FusionAuth", "gitHubRepoPath": "fusionauth/fusionauth-jwt", "repoUrl": "https://github.com/fusionauth/fusionauth-jwt", - "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 4.0.0" + "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 5.0.0" }, { "minimumVersion": null, From 34984f12d9c135346fde3be29583ca40dfaa5a43 Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 29 Sep 2021 09:33:01 +0200 Subject: [PATCH 504/611] Add buttons to the new libraries page --- stylus/website/index.styl | 28 +++++++++++++++++++++++++++- views/website/assets.pug | 12 ++++++------ views/website/index.pug | 5 +++-- 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 5d9a288d..05599de6 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -479,7 +479,7 @@ body @media (min-width: 768px) height: 235px; - margin-top: 70px + margin: 8rem 0 padding: 65px 235px 65px 65px; box-shadow: 0 10px 20px 0 rgba(0,0,0,0.25) text-align: left; @@ -905,9 +905,14 @@ body .column margin-bottom 20px text-align center + &.libraries + margin: 0 0 20px 0; +breakpoint("tablet") margin-bottom 0 + &.libraries + margin: -2rem 0; + h2 font-size 30px color white @@ -915,6 +920,19 @@ body margin 0 font-weight normal + .libraries + background rgba(255, 255, 255, .05) + +breakpoint("tablet") + height 373px + + .libraries-container + padding: 2rem + + p + color white + font-size 20px + line-height 1.2 + .logotype img height 40px @@ -1023,6 +1041,14 @@ body color white border none + &.btn-ghost + background transparent + border 1px solid #D63AFF + color #D63AFF + + & + .btn + margin-left 2rem + .token margin-top 35px h5 diff --git a/views/website/assets.pug b/views/website/assets.pug index a70fd96b..a46f5134 100644 --- a/views/website/assets.pug +++ b/views/website/assets.pug @@ -1,6 +1,11 @@ section.sources .container .columns + .column.libraries + .libraries-container + h2 Looking for a JWT library? + p Head on over to our libraries page to find a JWT library in your favorite language. + a(href="http://github.com/libraries").btn.btn-lg See al libraries .column.badges h2 Badges .hold @@ -32,9 +37,4 @@ section.sources .text-hold a(href='http://jwt.io/img/logo-asset.svg', target='_blank' title='Download JWT logo') i.icon-budicon-722 - p http://jwt.io/img/logo-asset.svg - .column.tshirt - h2 Store - img(src='http://github.com/img/pic_tshirt.png' alt='JWT logo mark t-shirt') - a.buy(href='http://swag.auth0.com/', target='_blank') Buy T-Shirt - \ No newline at end of file + p http://jwt.io/img/logo-asset.svg \ No newline at end of file diff --git a/views/website/index.pug b/views/website/index.pug index b7b454e5..4cf52e74 100644 --- a/views/website/index.pug +++ b/views/website/index.pug @@ -13,11 +13,12 @@ block content p JWT.IO allows you to decode, verify and generate JWT. a.btn.btn-lg(href="http://github.com/introduction") Learn more about jwt - - include ebook.pug + a.btn.btn-lg.btn-ghost(href="http://github.com/libraries") See jwt libraries include token-editor.pug + include ebook.pug + include assets.pug include counter.pug From dcc527c85f7420d7ecd735eb766dbf3fdd878ada Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Wed, 29 Sep 2021 10:00:07 +0200 Subject: [PATCH 505/611] Remove duplicate require --- Gruntfile.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index f0a7316b..536d941f 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -5,7 +5,6 @@ module.exports = (grunt) => { grunt.loadNpmTasks("grunt-contrib-copy"); grunt.loadNpmTasks("grunt-contrib-stylus"); grunt.loadNpmTasks("grunt-contrib-pug"); - grunt.loadNpmTasks("grunt-contrib-pug"); grunt.loadNpmTasks("grunt-webpack"); grunt.loadNpmTasks("grunt-contrib-watch"); grunt.loadNpmTasks("grunt-contrib-clean"); @@ -278,4 +277,4 @@ module.exports = (grunt) => { grunt.registerTask("test", ["unit-tests", "functional-tests"]); grunt.registerTask("default", ["build-dev", "connect:website", "watch"]); -}; \ No newline at end of file +}; From dc8a49fdb195b08fa525f21a4dac8cf9486db1e1 Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 29 Sep 2021 10:25:09 +0200 Subject: [PATCH 506/611] Update Auth0 brand identity --- img/website/ico_logo.svg | 27 +-------------------------- img/website/pic_logo_ft.svg | 16 +--------------- package-lock.json | 15 +++------------ stylus/website/index.styl | 13 +++++++++++-- views/website/counter.pug | 2 +- views/website/layout.pug | 2 +- views/website/navigation.pug | 2 +- 7 files changed, 19 insertions(+), 58 deletions(-) diff --git a/img/website/ico_logo.svg b/img/website/ico_logo.svg index e70f909f..bdd8e582 100644 --- a/img/website/ico_logo.svg +++ b/img/website/ico_logo.svg @@ -1,26 +1 @@ - - - - auth0-svg - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/img/website/pic_logo_ft.svg b/img/website/pic_logo_ft.svg index dd06255a..9eec2d65 100644 --- a/img/website/pic_logo_ft.svg +++ b/img/website/pic_logo_ft.svg @@ -1,15 +1 @@ - - - - logo-blue - Created with Sketch. - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b21b2393..5c9e4459 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1753,7 +1753,6 @@ "esprima": "3.1.3", "first-chunk-stream": "2.0.0", "fluent-syntax": "0.7.0", - "fsevents": "2.0.1", "glob": "7.1.3", "is-mergeable-object": "1.1.0", "jed": "1.1.1", @@ -3118,10 +3117,7 @@ "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", "dev": true, "dependencies": { - "dtrace-provider": "~0.8", - "moment": "^2.10.6", - "mv": "~2", - "safe-json-stringify": "~1" + "moment": "^2.10.6" }, "optionalDependencies": { "dtrace-provider": "~0.8", @@ -3321,7 +3317,6 @@ "anymatch": "^2.0.0", "async-each": "^1.0.1", "braces": "^2.3.2", - "fsevents": "^1.2.7", "glob-parent": "^3.1.0", "inherits": "^2.0.3", "is-binary-path": "^1.0.0", @@ -4748,8 +4743,7 @@ "esprima": "^4.0.1", "estraverse": "^4.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" + "optionator": "^0.8.1" }, "optionalDependencies": { "source-map": "~0.6.1" @@ -12651,7 +12645,6 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dependencies": { "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", "yargs": "~3.10.0" }, "optionalDependencies": { @@ -13577,10 +13570,8 @@ "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", "dev": true, "dependencies": { - "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" + "neo-async": "^2.5.0" }, "optionalDependencies": { "chokidar": "^3.4.1", diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 05599de6..45eba285 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -268,6 +268,9 @@ body .supported display none + .logo-mobile + height 18px + &.fixed .brand .icon @@ -1007,6 +1010,9 @@ body padding 60px 0 font-size 26px + .logo + height 55px + img margin-bottom 35px @@ -1028,11 +1034,11 @@ body display inline-block margin-top 30px &.btn-success - background-color #eb5424 + background-color #635dff color white border-color transparent &:hover - background-color darken(#eb5424, 30%) + background-color #564ed1 color white .btn, a.btn @@ -1235,6 +1241,9 @@ footer img margin-left 5px + .logo + height 18px + .pull-request +breakpoint("tablet") text-align center diff --git a/views/website/counter.pug b/views/website/counter.pug index 915a1bac..8fdf5310 100644 --- a/views/website/counter.pug +++ b/views/website/counter.pug @@ -1,6 +1,6 @@ .tokens-created .container - img(src='http://github.com/img/pic_logo_ft.svg' alt='Auth0 logo') + img(src='http://github.com/img/pic_logo_ft.svg' alt='Auth0 logo').logo p JWT.io is brought to you by a(href='https://auth0.com/signup', target="_blank") Auth0 p Securely implement authentication with JWTs using Auth0 on any stack and any device in less than 10 minutes. diff --git a/views/website/layout.pug b/views/website/layout.pug index b2755238..7f29b422 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -63,7 +63,7 @@ html(lang='en') .column a(href='https://auth0.com/developers/', target="_blank") | Supported by - img(src='http://github.com/img/ico_logo.svg' alt='Supported by Auth0 - JWT.io Token Based Authentication') + img(src='http://github.com/img/ico_logo.svg' alt='Supported by Auth0 - JWT.io Token Based Authentication').logo .column.pull-request span Missing something? a(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/tree/master/views', target="_blank") Send a Pull Request diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 3e64c842..792e906e 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -22,4 +22,4 @@ nav.navbar.closed a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") | Supported by - img(src='http://github.com/img/ico_logo.svg', alt='Supported by Auth0 - JWT.io Token Based Authentication') \ No newline at end of file + img(src='http://github.com/img/ico_logo.svg', alt='Supported by Auth0 - JWT.io Token Based Authentication').logo-mobile \ No newline at end of file From 299857de83c04e2e0a141011905fa9000122b998 Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 29 Sep 2021 10:32:07 +0200 Subject: [PATCH 507/611] Remove scroll to debugger test, its now the main homepage section --- test/functional/editor.js | 1619 ++++++++++++++++++------------------- 1 file changed, 806 insertions(+), 813 deletions(-) diff --git a/test/functional/editor.js b/test/functional/editor.js index 39c6f8ae..3ec17b94 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -10,7 +10,7 @@ const _ = require('lodash'); const utils = require('./utils.js'); const defaultTokens = - require('esm')(module)('../../src/editor/default-tokens.js').default; + require('esm')(module)('../../src/editor/default-tokens.js').default; const jwks = require('./jwks.json'); const { isVisible, selectAll } = utils; @@ -24,1047 +24,1040 @@ const tokenProcessingWait = 300; const tokenEditorThrottleWait = 1200; describe('Editor', function() { - this.timeout(75000); + this.timeout(75000); - before(utils.launchBrowser); + before(utils.launchBrowser); - after(utils.closeBrowser); + after(utils.closeBrowser); - it('Displays editor when clicking on navbar', async function() { - await this.page.click('a[href="#debugger-io"]'); - // Wait for scroll - await this.page.waitFor(3000); - expect(await this.page.$eval('#debugger-io', isVisible)).to.be.true; - }); - - it('HS256 should be selected by default', async function() { - const selected = await this.page.$eval('#algorithm-select', select => { - return select.options[select.selectedIndex].value; - }); - - expect(selected).to.equal('HS256'); - }); - - it('Default selected token should say something ' + - 'about secret length', async function() { - const secret = this.page.$eval('input[name="secret"]', - secretInput => secretInput.value); - return expect(secret).to.eventually.include('256'); - }); - - it('Should select default tokens when no changes have ' + - 'been made', async function() { - try { - await this.page.select('#algorithm-select', 'HS256'); - - const algs = await this.page.$eval('#algorithm-select', select => { - return Array.prototype.map.call(select.options, opt => opt.value); - }); - - for(const alg of algs) { - await this.page.select('#algorithm-select', alg); - const token = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); + it('HS256 should be selected by default', async function() { + const selected = await this.page.$eval('#algorithm-select', select => { + return select.options[select.selectedIndex].value; }); - expect(defaultTokens[alg.toLowerCase()].token).to.equal(token); - } - } finally { - await this.page.select('#algorithm-select', 'HS256'); - } - }); - - it('Should display a tooltip for a claim', async function() { - await this.page.select('#algorithm-select', 'HS384'); - - await this.page.mouse.move(0, 0); - - function tippyVisible(element) { - return element._tippy.state.visible; - } - - expect(await this.page.$eval('[data-tippy]', tippyVisible)). - to.be.false; - - const iatPos = await this.page.evaluate(() => { - return window.test.payloadEditor.charCoords({ - line: 4, - pos: 3 - }, 'window'); + expect(selected).to.equal('HS256'); }); - await this.page.mouse.move(iatPos.left, iatPos.top); - - // Wait for animation - await this.page.waitFor(2000); + it('Default selected token should say something ' + + 'about secret length', async function() { + const secret = this.page.$eval('input[name="secret"]', + secretInput => secretInput.value); + return expect(secret).to.eventually.include('256'); + }); - expect(await this.page.$eval('[data-tippy]', tippyVisible)) - .to.be.true; - }); + it('Should select default tokens when no changes have ' + + 'been made', async function() { + try { + await this.page.select('#algorithm-select', 'HS256'); + + const algs = await this.page.$eval('#algorithm-select', select => { + return Array.prototype.map.call(select.options, opt => opt.value); + }); + + for (const alg of algs) { + await this.page.select('#algorithm-select', alg); + const token = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); + + expect(defaultTokens[alg.toLowerCase()].token).to.equal(token); + } + } finally { + await this.page.select('#algorithm-select', 'HS256'); + } + }); - it('Displays a valid token by default', async function() { - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); + it('Should display a tooltip for a claim', async function() { + await this.page.select('#algorithm-select', 'HS384'); - expect(valid).to.be.true; - }); + await this.page.mouse.move(0, 0); - it('Shows invalid token when a valid token is edited ' + - 'in the left pane', async function() { - await this.page.evaluate(() => { - let token = window.test.tokenEditor.getValue(); - token += 'asdf23'; - window.test.tokenEditor.setValue(token); - }); - - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); + function tippyVisible(element) { + return element._tippy.state.visible; + } - const invalid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('invalid-token') && - status.textContent.indexOf('invalid') !== -1; - }); + expect(await this.page.$eval('[data-tippy]', tippyVisible)). + to.be.false; - expect(invalid).to.be.true; - }); + const iatPos = await this.page.evaluate(() => { + return window.test.payloadEditor.charCoords({ + line: 4, + pos: 3 + }, 'window'); + }); - it('Updates the token when the header is edited', async function() { - const oldToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue() - }); + await this.page.mouse.move(iatPos.left, iatPos.top); - await this.page.click('.js-header'); - await selectAll.call(this); + // Wait for animation + await this.page.waitFor(2000); - const header = { - alg: 'HS256', - typ: 'JWT', - test: 'test' - }; - await this.page.keyboard.type(JSON.stringify(header, null, 2), { - delay: typingDelay + expect(await this.page.$eval('[data-tippy]', tippyVisible)) + .to.be.true; }); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); + it('Displays a valid token by default', async function() { + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - const newToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); + expect(valid).to.be.true; }); - expect(newToken).to.not.equal(oldToken); - - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); + it('Shows invalid token when a valid token is edited ' + + 'in the left pane', async function() { + await this.page.evaluate(() => { + let token = window.test.tokenEditor.getValue(); + token += 'asdf23'; + window.test.tokenEditor.setValue(token); + }); - expect(valid).to.be.true; - }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); - it('Updates the token when the payload is edited', async function() { - const oldToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue() - }); + const invalid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('invalid-token') && + status.textContent.indexOf('invalid') !== -1; + }); - await this.page.click('.js-payload'); - await selectAll.call(this); - - const payload = { - "sub": "1234567890", - "name": "John Doe", - "admin": true, - "iat": 1516239022, - "test": "test" - }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: typingDelay - }); + expect(invalid).to.be.true; + }); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); + it('Updates the token when the header is edited', async function() { + const oldToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); - const newToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue() - }); + await this.page.click('.js-header'); + await selectAll.call(this); - expect(newToken).to.not.equal(oldToken); + const header = { + alg: 'HS256', + typ: 'JWT', + test: 'test' + }; + await this.page.keyboard.type(JSON.stringify(header, null, 2), { + delay: typingDelay + }); - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); - expect(valid).to.be.true; - }); + const newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); - it('Selects algorithm when header is edited', async function() { - const selectedBefore = - await this.page.$eval('#algorithm-select', select => { - return select.options[select.selectedIndex].value; - }); + expect(newToken).to.not.equal(oldToken); - await this.page.click('.js-header'); - await selectAll.call(this); + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - const header = { - alg: 'HS384', - typ: 'JWT', - }; - await this.page.keyboard.type(JSON.stringify(header, null, 2), { - delay: typingDelay + expect(valid).to.be.true; }); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); - - const selectedAfter = - await this.page.$eval('#algorithm-select', select => { - return select.options[select.selectedIndex].value; - }); - - expect(selectedBefore).to.not.equal(selectedAfter); - expect(selectedAfter).to.equal('HS384'); + it('Updates the token when the payload is edited', async function() { + const oldToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); + await this.page.click('.js-payload'); + await selectAll.call(this); - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); + const payload = { + "sub": "1234567890", + "name": "John Doe", + "admin": true, + "iat": 1516239022, + "test": "test" + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay + }); - expect(valid).to.be.true; - }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); - it('Should never revert to a default token after a non-default token ' + - 'is generated', async function() { - await this.page.select('#algorithm-select', 'HS256'); + const newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); - await this.page.click('.js-payload'); - await selectAll.call(this); + expect(newToken).to.not.equal(oldToken); - const payload = { - sub: 'test' - }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: typingDelay - }); + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - const algs = await this.page.$eval('#algorithm-select', select => { - return Array.prototype.map.call(select.options, opt => opt.value); + expect(valid).to.be.true; }); - for(const alg of algs) { - await this.page.select('#algorithm-select', alg); - } - - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - - const payloadInEditor = await this.page.evaluate(() => { - return JSON.parse(window.test.payloadEditor.getValue()); - }); + it('Selects algorithm when header is edited', async function() { + const selectedBefore = + await this.page.$eval('#algorithm-select', select => { + return select.options[select.selectedIndex].value; + }); - expect(payload).to.deep.equal(payloadInEditor); - }); + await this.page.click('.js-header'); + await selectAll.call(this); - describe('HMAC', function() { - before(async function() { - await this.page.select('#algorithm-select', 'HS256'); - }); + const header = { + alg: 'HS384', + typ: 'JWT', + }; + await this.page.keyboard.type(JSON.stringify(header, null, 2), { + delay: typingDelay + }); - it('Updates the token when the secret changes', async function() { - const oldToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue() - }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); - const secretInput = await this.page.$('input[name="secret"]'); + const selectedAfter = + await this.page.$eval('#algorithm-select', select => { + return select.options[select.selectedIndex].value; + }); - await secretInput.type('asdfasdf'); + expect(selectedBefore).to.not.equal(selectedAfter); + expect(selectedAfter).to.equal('HS384'); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); - const newToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue() - }); + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - expect(oldToken).to.not.equal(newToken); + expect(valid).to.be.true; }); - it('Updates the token when the Base64 checkbox changes', async function() { - const oldToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue() - }); + it('Should never revert to a default token after a non-default token ' + + 'is generated', async function() { + await this.page.select('#algorithm-select', 'HS256'); - await this.page.click('#is-base64-encoded'); + await this.page.click('.js-payload'); + await selectAll.call(this); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); + const payload = { + sub: 'test' + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay + }); - let newToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue() - }); + const algs = await this.page.$eval('#algorithm-select', select => { + return Array.prototype.map.call(select.options, opt => opt.value); + }); - expect(oldToken).to.not.equal(newToken); + for (const alg of algs) { + await this.page.select('#algorithm-select', alg); + } - await this.page.click('#is-base64-encoded'); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); + const payloadInEditor = await this.page.evaluate(() => { + return JSON.parse(window.test.payloadEditor.getValue()); + }); - newToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue() - }); + expect(payload).to.deep.equal(payloadInEditor); + }); - expect(oldToken).to.equal(newToken); - }); + describe('HMAC', function() { + before(async function() { + await this.page.select('#algorithm-select', 'HS256'); + }); - describe('HS256/384/512', function() { - const algs = Object.keys(defaultTokens).filter(alg => alg.includes('hs')); + it('Updates the token when the secret changes', async function() { + const oldToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); - for(const alg of algs) { - it(`Decodes ${alg.toUpperCase()} tokens`, async function() { - const secretInput = await this.page.$('input[name="secret"]'); - await secretInput.click(); - await selectAll.call(this); - await secretInput.type(defaultTokens[alg].secret); + const secretInput = await this.page.$('input[name="secret"]'); - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens[alg].token); + await secretInput.type('asdfasdf'); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); + const newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); - expect(valid).to.be.true; + expect(oldToken).to.not.equal(newToken); }); - const bits = parseInt(alg.substr(2)); - it(`Considers less-than-${bits}-bit secrets weak`, - async function() { - let secret = _.pad('', (bits / 8) - 1, 'test'); + it('Updates the token when the Base64 checkbox changes', async function() { + const oldToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() + }); - const secretInput = await this.page.$('input[name="secret"]'); - await secretInput.click(); - await selectAll.call(this); - await secretInput.type(secret, { - delay: typingDelay - }); + await this.page.click('#is-base64-encoded'); - // Wait for animations - await this.page.waitFor(500); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); - let tooltipVisible = - await this.page.$eval('input[name="secret"]', input => { - return input._tippy.state.visible; + let newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() }); - expect(tooltipVisible).to.be.true; + expect(oldToken).to.not.equal(newToken); - secret += 'test'; - await secretInput.click(); - await selectAll.call(this); - await secretInput.type(secret, { - delay: typingDelay - }); + await this.page.click('#is-base64-encoded'); - // Wait for animations - await this.page.waitFor(500); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); - tooltipVisible = - await this.page.$eval('input[name="secret"]', input => { - return input._tippy.state.visible; + newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue() }); - expect(tooltipVisible).to.be.false; + expect(oldToken).to.equal(newToken); }); - } - }); - - it('Signs tokens with an empty secret', async function() { - const secretInput = await this.page.$('input[name="secret"]'); - await secretInput.click(); - await selectAll.call(this); - await this.page.keyboard.press('Delete'); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); - - expect(valid).to.be.true; - }); - }); - - describe('Public-key', function() { - describe('Decodes RS/ES/PS tokens', function() { - const algs = Object.keys(defaultTokens).filter(alg => !alg.includes('hs')); - - for(const alg of algs) { - for (const format of ['pem', 'jwk']) { - it(`${alg.toUpperCase()} using a ${format.toUpperCase()} key`, async function() { - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens[alg].token); + describe('HS256/384/512', function() { + const algs = Object.keys(defaultTokens).filter(alg => alg.includes('hs')); + + for (const alg of algs) { + it(`Decodes ${alg.toUpperCase()} tokens`, async function() { + const secretInput = await this.page.$('input[name="secret"]'); + await secretInput.click(); + await selectAll.call(this); + await secretInput.type(defaultTokens[alg].secret); + + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(defaultTokens[alg].token); + + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); + + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + }); + + const bits = parseInt(alg.substr(2)); + it(`Considers less-than-${bits}-bit secrets weak`, + async function() { + let secret = _.pad('', (bits / 8) - 1, 'test'); + + const secretInput = await this.page.$('input[name="secret"]'); + await secretInput.click(); + await selectAll.call(this); + await secretInput.type(secret, { + delay: typingDelay + }); + + // Wait for animations + await this.page.waitFor(500); + + let tooltipVisible = + await this.page.$eval('input[name="secret"]', input => { + return input._tippy.state.visible; + }); + + expect(tooltipVisible).to.be.true; + + secret += 'test'; + await secretInput.click(); + await selectAll.call(this); + await secretInput.type(secret, { + delay: typingDelay + }); + + // Wait for animations + await this.page.waitFor(500); + + tooltipVisible = + await this.page.$eval('input[name="secret"]', input => { + return input._tippy.state.visible; + }); + + expect(tooltipVisible).to.be.false; + }); + } + }); - const secretInput = await this.page.$('textarea[name="public-key"]'); + it('Signs tokens with an empty secret', async function() { + const secretInput = await this.page.$('input[name="secret"]'); await secretInput.click(); await selectAll.call(this); - - let publicKey = defaultTokens[alg].publicKey; - if (format === 'jwk') { - publicKey = JSON.stringify(defaultTokens[alg].jwk) - } - - await secretInput.type(publicKey); + await this.page.keyboard.press('Delete'); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && + return status.classList.contains('valid-token') && status.textContent.indexOf('verified') !== -1; }); expect(valid).to.be.true; - }); - } - } + }); }); - describe('Encodes RS/ES/PS tokens', function() { - const algs = Object.keys(defaultTokens).filter(alg => !alg.includes('hs')); + describe('Public-key', function() { + describe('Decodes RS/ES/PS tokens', function() { + const algs = Object.keys(defaultTokens).filter(alg => !alg.includes('hs')); - for(const alg of algs) { - for (const format of ['pem', 'jwk']) { - it(`${alg.toUpperCase()} using a ${format.toUpperCase()} key`, async function() { - await this.page.select('#algorithm-select', alg.toUpperCase()); + for (const alg of algs) { + for (const format of['pem', 'jwk']) { + it(`${alg.toUpperCase()} using a ${format.toUpperCase()} key`, async function() { + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(defaultTokens[alg].token); - let publicKey = defaultTokens[alg].publicKey; - if (format === 'jwk') { - publicKey = JSON.stringify(defaultTokens[alg].jwk) - } + const secretInput = await this.page.$('textarea[name="public-key"]'); + await secretInput.click(); + await selectAll.call(this); - let privateKey = defaultTokens[alg].privateKey; - if (format === 'jwk') { - privateKey = JSON.stringify(defaultTokens[alg].jwk) - } + let publicKey = defaultTokens[alg].publicKey; + if (format === 'jwk') { + publicKey = JSON.stringify(defaultTokens[alg].jwk) + } - await this.page.click('textarea[name="public-key"]'); - await selectAll.call(this); - await this.page.keyboard.type(publicKey, { - delay: typingDelay - }); + await secretInput.type(publicKey); - await this.page.click('textarea[name="private-key"]'); - await selectAll.call(this); - await this.page.keyboard.type(privateKey, { - delay: typingDelay - }); - - await this.page.evaluate(token => { - window.test.tokenEditor.setValue(token); - }, defaultTokens[alg].token); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); - await this.page.select('#algorithm-select', alg.toUpperCase()); + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - await this.page.click('.js-header'); - await selectAll.call(this); - await this.page.keyboard.type(JSON.stringify({ - alg: alg.toUpperCase(), - typ: 'JWT' - }, null, 2), { - delay: typingDelay - }); - - await this.page.click('.js-payload'); - await selectAll.call(this); - await this.page.keyboard.type(JSON.stringify({ - sub: 'test' - }, null, 2), { - delay: typingDelay - }); - - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); - - const newToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - }); - - expect(newToken).to.not.be.empty; - - const valid = await this.page.$eval('.validation-status', - status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); - - expect(valid).to.be.true; - }); - } - } - }); - - describe('Should download public-keys when possible', function() { - before(async function() { - this.app = express(); - - this.app.get('/.well-known/openid-configuration', (req, res) => { - res.set('Access-Control-Allow-Origin', '*'); - res.json({ - jwks_uri: 'http://localhost:3000/.well-known/jwks.json' - }); + expect(valid).to.be.true; + }); + } + } }); - this.app.get('/.well-known/jwks.json', (req, res) => { - res.set('Access-Control-Allow-Origin', '*'); - res.json(jwks); + describe('Encodes RS/ES/PS tokens', function() { + const algs = Object.keys(defaultTokens).filter(alg => !alg.includes('hs')); + + for (const alg of algs) { + for (const format of['pem', 'jwk']) { + it(`${alg.toUpperCase()} using a ${format.toUpperCase()} key`, async function() { + await this.page.select('#algorithm-select', alg.toUpperCase()); + + let publicKey = defaultTokens[alg].publicKey; + if (format === 'jwk') { + publicKey = JSON.stringify(defaultTokens[alg].jwk) + } + + let privateKey = defaultTokens[alg].privateKey; + if (format === 'jwk') { + privateKey = JSON.stringify(defaultTokens[alg].jwk) + } + + await this.page.click('textarea[name="public-key"]'); + await selectAll.call(this); + await this.page.keyboard.type(publicKey, { + delay: typingDelay + }); + + await this.page.click('textarea[name="private-key"]'); + await selectAll.call(this); + await this.page.keyboard.type(privateKey, { + delay: typingDelay + }); + + await this.page.evaluate(token => { + window.test.tokenEditor.setValue(token); + }, defaultTokens[alg].token); + + await this.page.select('#algorithm-select', alg.toUpperCase()); + + await this.page.click('.js-header'); + await selectAll.call(this); + await this.page.keyboard.type(JSON.stringify({ + alg: alg.toUpperCase(), + typ: 'JWT' + }, null, 2), { + delay: typingDelay + }); + + await this.page.click('.js-payload'); + await selectAll.call(this); + await this.page.keyboard.type(JSON.stringify({ + sub: 'test' + }, null, 2), { + delay: typingDelay + }); + + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); + + const newToken = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); + + expect(newToken).to.not.be.empty; + + const valid = await this.page.$eval('.validation-status', + status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); + + expect(valid).to.be.true; + }); + } + } }); - this.server = this.app.listen(3000); + describe('Should download public-keys when possible', function() { + before(async function() { + this.app = express(); - await this.page.select('#algorithm-select', 'RS256'); - }); + this.app.get('/.well-known/openid-configuration', (req, res) => { + res.set('Access-Control-Allow-Origin', '*'); + res.json({ + jwks_uri: 'http://localhost:3000/.well-known/jwks.json' + }); + }); - beforeEach(async function() { - const publicKeyInput = await this.page.$('textarea[name="public-key"]'); - await publicKeyInput.click(); - await selectAll.call(this); - await this.page.keyboard.press('Delete'); - }); - - after(function() { - this.server.close(); - }); - - it('iss URL + .well-known', async function() { - const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); - const token = await new CompactSign(Buffer.from(JSON.stringify({ - sub: 'test', - iss: 'http://localhost:3000/' - }))).setProtectedHeader({ - alg: 'RS256', - typ: 'JWT', - kid: '1' - }).sign(key); + this.app.get('/.well-known/jwks.json', (req, res) => { + res.set('Access-Control-Allow-Origin', '*'); + res.json(jwks); + }); - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(token); + this.server = this.app.listen(3000); - await this.page.waitFor(2000); - await this.page.waitFor(tokenEditorThrottleWait); + await this.page.select('#algorithm-select', 'RS256'); + }); - const publicKey = await this.page.$eval('textarea[name="public-key"]', - publicKeyElement => publicKeyElement.value); + beforeEach(async function() { + const publicKeyInput = await this.page.$('textarea[name="public-key"]'); + await publicKeyInput.click(); + await selectAll.call(this); + await this.page.keyboard.press('Delete'); + }); - expect(jwks.keys[0]).to.contain(JSON.parse(publicKey)) - }); + after(function() { + this.server.close(); + }); - it('jku', async function() { - //this.timeout(20000); + it('iss URL + .well-known', async function() { + const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); + const token = await new CompactSign(Buffer.from(JSON.stringify({ + sub: 'test', + iss: 'http://localhost:3000/' + }))).setProtectedHeader({ + alg: 'RS256', + typ: 'JWT', + kid: '1' + }).sign(key); - const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); - const token = await new CompactSign(Buffer.from(JSON.stringify({ - sub: 'test' - }))).setProtectedHeader({ - alg: 'RS256', - typ: 'JWT', - kid: '1', - jku: 'http://localhost:3000/.well-known/jwks.json' - }).sign(key); + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(token); - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(token); + await this.page.waitFor(2000); + await this.page.waitFor(tokenEditorThrottleWait); - await this.page.waitFor(2000); - await this.page.waitFor(tokenEditorThrottleWait); + const publicKey = await this.page.$eval('textarea[name="public-key"]', + publicKeyElement => publicKeyElement.value); - const publicKey = await this.page.$eval('textarea[name="public-key"]', - publicKeyElement => publicKeyElement.value); + expect(jwks.keys[0]).to.contain(JSON.parse(publicKey)) + }); - expect(jwks.keys[0]).to.contain(JSON.parse(publicKey)) - }); + it('jku', async function() { + //this.timeout(20000); - it('x5c', async function() { - //this.timeout(35000); + const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); + const token = await new CompactSign(Buffer.from(JSON.stringify({ + sub: 'test' + }))).setProtectedHeader({ + alg: 'RS256', + typ: 'JWT', + kid: '1', + jku: 'http://localhost:3000/.well-known/jwks.json' + }).sign(key); - const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); - const token = await new CompactSign(Buffer.from(JSON.stringify({ - sub: 'test' - }))).setProtectedHeader({ - alg: 'RS256', - typ: 'JWT', - x5c: jwks.keys[0].x5c - }).sign(key); + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(token); - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(token); + await this.page.waitFor(2000); + await this.page.waitFor(tokenEditorThrottleWait); - await this.page.waitFor(2000); + const publicKey = await this.page.$eval('textarea[name="public-key"]', + publicKeyElement => publicKeyElement.value); - const publicKey = await this.page.$eval('textarea[name="public-key"]', - publicKeyElement => publicKeyElement.value); - - expect(publicKey).to.include('-----BEGIN CERTIFICATE-----\nMIIDBjCCAe4CCQDOaPo3zzlhlzANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJV\nUzETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0\ncyBQdHkgTHRkMB4XDTE5MDYwNTEwMDg0OVoXDTIwMDYwNDEwMDg0OVowRTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0\nIFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\nAJ88orNWY3zQdGwYChTEr75E7cJbwbGiau0ucAPpM3lTlaVVsJFnVYWuLN/FzP6W\nv8q+O2r+/s91U5rw0cgB3Gk/dsIURBaS7/XI+ZU3iUom8q/zK5v2LYwmVVoGjmCI\ncK18Ci6j6/9dYp1rAJHyMrbx1k8WWBHFy4AFxblLmkt7hfYBIjUMMxk1Nb9BapKk\nwa+AfJ1txwjeO11LtLfGNHvpX+LODsUGsFg+/Sff+Xd0ctL21dwJtRbRiYibzsEb\nCH1QoQ6WErU3B0wjKrb1m1ei9dQVpKcxl0luB7+N6mvhkmDg9kFOvDG+faEpNjgf\ngbTi6SaH5mxhBoL5sMgiPTMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAU4Nx25sl\niX8gD10Oik+RpBpHmsuZBU6q3nqYQKMlVdKFVeuptdqNjnVZY0WSSYvAUdtZ1kCu\nkMxjhvPb+LVaCkfOfXEuSqyjN55C1vDLpCV0xMb3irltYaWRIeHkqlRxRmoS+569\nZ/qg+JqZnCuEc6CeLLkzhVq+zagJkJs3evpSmofrY4qzJ1s1rygqSUhyS5NoyGAX\nCHba+m+7qMuSC3yOEPfiuAh9h6D/RltGi1iQ9Yqi4DoKlW9mfKGXbDn8thkGNdc7\n6yffilC8B/7Q8d5Btox/fE9yNI4YVhUEo+MkvUMnT1KS9fbw0o6fTjSa0D2oaHSO\nyBSs097rzC1PIw==\n-----END CERTIFICATE-----'); - }); - }); + expect(jwks.keys[0]).to.contain(JSON.parse(publicKey)) + }); - it('Clears the token when the header is edited and there ' + - 'is no private key', async function() { - await this.page.select('#algorithm-select', 'RS256'); + it('x5c', async function() { + //this.timeout(35000); - const secretInput = await this.page.$('textarea[name="private-key"]'); - await secretInput.click(); - await selectAll.call(this); - await this.page.keyboard.press('Delete'); + const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); + const token = await new CompactSign(Buffer.from(JSON.stringify({ + sub: 'test' + }))).setProtectedHeader({ + alg: 'RS256', + typ: 'JWT', + x5c: jwks.keys[0].x5c + }).sign(key); - await this.page.click('.js-header'); - await selectAll.call(this); + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(token); - const header = { - alg: 'RS256', - typ: 'JWT', - test: 'test' - }; - await this.page.keyboard.type(JSON.stringify(header, null, 2), { - delay: typingDelay - }); + await this.page.waitFor(2000); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); + const publicKey = await this.page.$eval('textarea[name="public-key"]', + publicKeyElement => publicKeyElement.value); - const token = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - }); + expect(publicKey).to.include('-----BEGIN CERTIFICATE-----\nMIIDBjCCAe4CCQDOaPo3zzlhlzANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJV\nUzETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0\ncyBQdHkgTHRkMB4XDTE5MDYwNTEwMDg0OVoXDTIwMDYwNDEwMDg0OVowRTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0\nIFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\nAJ88orNWY3zQdGwYChTEr75E7cJbwbGiau0ucAPpM3lTlaVVsJFnVYWuLN/FzP6W\nv8q+O2r+/s91U5rw0cgB3Gk/dsIURBaS7/XI+ZU3iUom8q/zK5v2LYwmVVoGjmCI\ncK18Ci6j6/9dYp1rAJHyMrbx1k8WWBHFy4AFxblLmkt7hfYBIjUMMxk1Nb9BapKk\nwa+AfJ1txwjeO11LtLfGNHvpX+LODsUGsFg+/Sff+Xd0ctL21dwJtRbRiYibzsEb\nCH1QoQ6WErU3B0wjKrb1m1ei9dQVpKcxl0luB7+N6mvhkmDg9kFOvDG+faEpNjgf\ngbTi6SaH5mxhBoL5sMgiPTMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAU4Nx25sl\niX8gD10Oik+RpBpHmsuZBU6q3nqYQKMlVdKFVeuptdqNjnVZY0WSSYvAUdtZ1kCu\nkMxjhvPb+LVaCkfOfXEuSqyjN55C1vDLpCV0xMb3irltYaWRIeHkqlRxRmoS+569\nZ/qg+JqZnCuEc6CeLLkzhVq+zagJkJs3evpSmofrY4qzJ1s1rygqSUhyS5NoyGAX\nCHba+m+7qMuSC3yOEPfiuAh9h6D/RltGi1iQ9Yqi4DoKlW9mfKGXbDn8thkGNdc7\n6yffilC8B/7Q8d5Btox/fE9yNI4YVhUEo+MkvUMnT1KS9fbw0o6fTjSa0D2oaHSO\nyBSs097rzC1PIw==\n-----END CERTIFICATE-----'); + }); + }); - expect(token).to.be.empty; - }); + it('Clears the token when the header is edited and there ' + + 'is no private key', async function() { + await this.page.select('#algorithm-select', 'RS256'); - it('Clears the token when the payload is edited and there ' + - 'is no private key', async function() { - await this.page.select('#algorithm-select', 'RS256'); + const secretInput = await this.page.$('textarea[name="private-key"]'); + await secretInput.click(); + await selectAll.call(this); + await this.page.keyboard.press('Delete'); - const secretInput = await this.page.$('textarea[name="private-key"]'); - await secretInput.click(); - await selectAll.call(this); - await this.page.keyboard.press('Delete'); + await this.page.click('.js-header'); + await selectAll.call(this); - await this.page.click('.js-payload'); - await selectAll.call(this); + const header = { + alg: 'RS256', + typ: 'JWT', + test: 'test' + }; + await this.page.keyboard.type(JSON.stringify(header, null, 2), { + delay: typingDelay + }); - const payload = { - sub: 'test' - }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: typingDelay - }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); + const token = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); - const token = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - }); + expect(token).to.be.empty; + }); - expect(token).to.be.empty; - }); + it('Clears the token when the payload is edited and there ' + + 'is no private key', async function() { + await this.page.select('#algorithm-select', 'RS256'); - it('Marks token as invalid when there is no public key', async function() { - //this.timeout(20000); - await this.page.waitFor(tokenEditorThrottleWait); - await this.page.select('#algorithm-select', 'RS256'); + const secretInput = await this.page.$('textarea[name="private-key"]'); + await secretInput.click(); + await selectAll.call(this); + await this.page.keyboard.press('Delete'); - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['rs256'].token); + await this.page.click('.js-payload'); + await selectAll.call(this); - const secretInput = await this.page.$('textarea[name="public-key"]'); - await secretInput.click(); - await selectAll.call(this); - await secretInput.type(defaultTokens['rs256'].publicKey); + const payload = { + sub: 'test' + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay + }); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); + const token = await this.page.evaluate(() => { + return window.test.tokenEditor.getValue(); + }); - expect(valid).to.be.true; + expect(token).to.be.empty; + }); - await secretInput.click(); - await selectAll.call(this); - await this.page.keyboard.press('Delete'); + it('Marks token as invalid when there is no public key', async function() { + //this.timeout(20000); + await this.page.waitFor(tokenEditorThrottleWait); + await this.page.select('#algorithm-select', 'RS256'); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(defaultTokens['rs256'].token); - const invalid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('invalid-token') && - status.textContent.indexOf('invalid') !== -1; - }); + const secretInput = await this.page.$('textarea[name="public-key"]'); + await secretInput.click(); + await selectAll.call(this); + await secretInput.type(defaultTokens['rs256'].publicKey); - expect(invalid).to.be.true; - }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); - it('Marks token as invalid when the public key is wrong', async function() { - //this.timeout(20000); + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - await this.page.select('#algorithm-select', 'RS256'); + expect(valid).to.be.true; - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['rs256'].token); + await secretInput.click(); + await selectAll.call(this); + await this.page.keyboard.press('Delete'); - const secretInput = await this.page.$('textarea[name="public-key"]'); - await secretInput.click(); - await selectAll.call(this); - await secretInput.type(defaultTokens['rs256'].publicKey); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); + const invalid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('invalid-token') && + status.textContent.indexOf('invalid') !== -1; + }); - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); + expect(invalid).to.be.true; + }); - expect(valid).to.be.true; + it('Marks token as invalid when the public key is wrong', async function() { + //this.timeout(20000); - await secretInput.click(); - await this.page.keyboard.type('sdfasdf389972389', { - delay: typingDelay - }); + await this.page.select('#algorithm-select', 'RS256'); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(defaultTokens['rs256'].token); - const invalid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('invalid-token') && - status.textContent.indexOf('invalid') !== -1; - }); + const secretInput = await this.page.$('textarea[name="public-key"]'); + await secretInput.click(); + await selectAll.call(this); + await secretInput.type(defaultTokens['rs256'].publicKey); - expect(invalid).to.be.true; - }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); - it('Marks token as valid when the public key is OK and private ' + - 'key is wrong', async function() { - //this.timeout(30000); + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - await this.page.select('#algorithm-select', 'RS256'); + expect(valid).to.be.true; - const secretInput = await this.page.$('textarea[name="public-key"]'); - await secretInput.click(); - await selectAll.call(this); - await secretInput.type(defaultTokens['rs256'].publicKey, { - delay: typingDelay - }); + await secretInput.click(); + await this.page.keyboard.type('sdfasdf389972389', { + delay: typingDelay + }); - const privateKeyInput = await this.page.$('textarea[name="private-key"]'); - await privateKeyInput.click(); - await selectAll.call(this); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); - const head = defaultTokens['rs256'].privateKey.slice(0, 20); - const tail = defaultTokens['rs256'].privateKey.slice(20); + const invalid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('invalid-token') && + status.textContent.indexOf('invalid') !== -1; + }); - await privateKeyInput.type(`${head}sadfasdf${tail}`, { - delay: typingDelay - }); + expect(invalid).to.be.true; + }); - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['rs256'].token, { - delay: typingDelay - }); + it('Marks token as valid when the public key is OK and private ' + + 'key is wrong', async function() { + //this.timeout(30000); - await this.page.waitFor(1000); + await this.page.select('#algorithm-select', 'RS256'); - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); + const secretInput = await this.page.$('textarea[name="public-key"]'); + await secretInput.click(); + await selectAll.call(this); + await secretInput.type(defaultTokens['rs256'].publicKey, { + delay: typingDelay + }); - expect(valid).to.be.true; - }); + const privateKeyInput = await this.page.$('textarea[name="private-key"]'); + await privateKeyInput.click(); + await selectAll.call(this); - it('Marks token as valid when the public key is OK and private ' + - 'key is missing', async function() { - //this.timeout(30000); + const head = defaultTokens['rs256'].privateKey.slice(0, 20); + const tail = defaultTokens['rs256'].privateKey.slice(20); - await this.page.select('#algorithm-select', 'RS256'); + await privateKeyInput.type(`${head}sadfasdf${tail}`, { + delay: typingDelay + }); - const secretInput = await this.page.$('textarea[name="public-key"]'); - await secretInput.click(); - await selectAll.call(this); - await secretInput.type(defaultTokens['rs256'].publicKey); + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(defaultTokens['rs256'].token, { + delay: typingDelay + }); - const privateKeyInput = await this.page.$('textarea[name="private-key"]'); - await privateKeyInput.click(); - await selectAll.call(this); - await this.page.keyboard.press('Delete'); + await this.page.waitFor(1000); - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['rs256'].token); + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - await this.page.waitFor(1000); + expect(valid).to.be.true; + }); - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); + it('Marks token as valid when the public key is OK and private ' + + 'key is missing', async function() { + //this.timeout(30000); - expect(valid).to.be.true; - }); - }); + await this.page.select('#algorithm-select', 'RS256'); - it('Updates the header when the token algorithm ' + - 'is changed', async function() { - await this.page.select('#algorithm-select', 'HS256'); + const secretInput = await this.page.$('textarea[name="public-key"]'); + await secretInput.click(); + await selectAll.call(this); + await secretInput.type(defaultTokens['rs256'].publicKey); - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens.hs256.token); + const privateKeyInput = await this.page.$('textarea[name="private-key"]'); + await privateKeyInput.click(); + await selectAll.call(this); + await this.page.keyboard.press('Delete'); - await this.page.select('#algorithm-select', 'HS384'); + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(defaultTokens['rs256'].token); - const header = await this.page.evaluate(() => { - return JSON.parse(window.test.headerEditor.getValue()); - }); + await this.page.waitFor(1000); - expect(header.alg).to.equal('HS384'); - }); + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - it('Marks token as invalid when "alg" is "none"', async function() { - //this.timeout(20000); + expect(valid).to.be.true; + }); + }); - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type('eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.'); + it('Updates the header when the token algorithm ' + + 'is changed', async function() { + await this.page.select('#algorithm-select', 'HS256'); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(defaultTokens.hs256.token); - const invalid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('invalid-token') && - status.textContent.indexOf('invalid') !== -1; - }); + await this.page.select('#algorithm-select', 'HS384'); - expect(invalid).to.be.true; - }); + const header = await this.page.evaluate(() => { + return JSON.parse(window.test.headerEditor.getValue()); + }); - it('Does NOT save the last edited token', async function() { - await this.page.select('#algorithm-select', 'HS256'); + expect(header.alg).to.equal('HS384'); + }); - const secretInput = await this.page.$('input[name="secret"]'); - await secretInput.click(); - await selectAll.call(this); - await secretInput.type('secret-test', { - delay: typingDelay - }); + it('Marks token as invalid when "alg" is "none"', async function() { + //this.timeout(20000); - await this.page.click('.js-payload'); - await selectAll.call(this); + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type('eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.'); - const payload = { - sub: 'test' - }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: typingDelay - }); + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); - await this.page.reload(); + const invalid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('invalid-token') && + status.textContent.indexOf('invalid') !== -1; + }); - const storedPayload = await this.page.evaluate(() => { - return JSON.parse(window.test.payloadEditor.getValue()); + expect(invalid).to.be.true; }); - expect(storedPayload).to.not.deep.equal(payload); - }); + it('Does NOT save the last edited token', async function() { + await this.page.select('#algorithm-select', 'HS256'); - describe('JWT share button', function() { - it('Copies an HMAC token to the clipboard (no secret)', async function() { - await this.page.select('#algorithm-select', 'HS256'); - - const secretInput = await this.page.$('input[name="secret"]'); - await secretInput.click(); - await selectAll.call(this); - await secretInput.type('secret-test', { - delay: typingDelay - }); + const secretInput = await this.page.$('input[name="secret"]'); + await secretInput.click(); + await selectAll.call(this); + await secretInput.type('secret-test', { + delay: typingDelay + }); - await this.page.click('.js-payload'); - await selectAll.call(this); + await this.page.click('.js-payload'); + await selectAll.call(this); - const payload = { - sub: 'test' - }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: typingDelay - }); + const payload = { + sub: 'test' + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay + }); - await this.page.waitFor(tokenEditorThrottleWait); + await this.page.reload(); - const shareJwtButton = await this.page.$('.website-share button'); - await shareJwtButton.click(); + const storedPayload = await this.page.evaluate(() => { + return JSON.parse(window.test.payloadEditor.getValue()); + }); - const srcToken = await this.page.evaluate(() => - window.test.tokenEditor.getValue()); + expect(storedPayload).to.not.deep.equal(payload); + }); - // We cannot read the clipboard in headless Chrome, so we have a special - // harness in the code that stores this value. See: - // https://github.com/GoogleChrome/puppeteer/issues/2147 - const copiedUrl = await this.page.evaluate(() => - window.test.shareJwtCopiedUrl); + describe('JWT share button', function() { + it('Copies an HMAC token to the clipboard (no secret)', async function() { + await this.page.select('#algorithm-select', 'HS256'); - const newPage = await this.browser.newPage(); - await newPage.goto( - copiedUrl.replace('https://jwt.io/', 'http://localhost:8000/')); + const secretInput = await this.page.$('input[name="secret"]'); + await secretInput.click(); + await selectAll.call(this); + await secretInput.type('secret-test', { + delay: typingDelay + }); - const destToken = await newPage.evaluate(() => - window.test.tokenEditor.getValue()); - const destSecret = await newPage.$eval('input[name="secret"]', input => - input.value); + await this.page.click('.js-payload'); + await selectAll.call(this); - expect(srcToken).to.equal(destToken); - expect(destSecret).to.not.equal('secret-test'); - }); + const payload = { + sub: 'test' + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay + }); - it('Copies an RSA token to the clipboard (with public-key)', - async function() { - //this.timeout(30000); + await this.page.waitFor(tokenEditorThrottleWait); - await this.page.select('#algorithm-select', 'RS256'); + const shareJwtButton = await this.page.$('.website-share button'); + await shareJwtButton.click(); - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['rs256'].token, { - delay: typingDelay - }); + const srcToken = await this.page.evaluate(() => + window.test.tokenEditor.getValue()); - const pubKeyInput = await this.page.$('textarea[name="public-key"]'); - await pubKeyInput.click(); - await selectAll.call(this); - await pubKeyInput.type(defaultTokens['rs256'].publicKey, { - delay: typingDelay - }); + // We cannot read the clipboard in headless Chrome, so we have a special + // harness in the code that stores this value. See: + // https://github.com/GoogleChrome/puppeteer/issues/2147 + const copiedUrl = await this.page.evaluate(() => + window.test.shareJwtCopiedUrl); - const privateKeyInput = - await this.page.$('textarea[name="private-key"]'); - await privateKeyInput.click(); - await selectAll.call(this); - await privateKeyInput.type(defaultTokens['rs256'].privateKey, { - delay: typingDelay - }); + const newPage = await this.browser.newPage(); + await newPage.goto( + copiedUrl.replace('https://jwt.io/', 'http://localhost:8000/')); - await this.page.click('.js-payload'); - await selectAll.call(this); + const destToken = await newPage.evaluate(() => + window.test.tokenEditor.getValue()); + const destSecret = await newPage.$eval('input[name="secret"]', input => + input.value); - const payload = { - sub: 'test' - }; - await this.page.keyboard.type(JSON.stringify(payload, null, 2), { - delay: typingDelay + expect(srcToken).to.equal(destToken); + expect(destSecret).to.not.equal('secret-test'); }); - await this.page.waitFor(tokenEditorThrottleWait); + it('Copies an RSA token to the clipboard (with public-key)', + async function() { + //this.timeout(30000); + + await this.page.select('#algorithm-select', 'RS256'); + + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(defaultTokens['rs256'].token, { + delay: typingDelay + }); + + const pubKeyInput = await this.page.$('textarea[name="public-key"]'); + await pubKeyInput.click(); + await selectAll.call(this); + await pubKeyInput.type(defaultTokens['rs256'].publicKey, { + delay: typingDelay + }); + + const privateKeyInput = + await this.page.$('textarea[name="private-key"]'); + await privateKeyInput.click(); + await selectAll.call(this); + await privateKeyInput.type(defaultTokens['rs256'].privateKey, { + delay: typingDelay + }); + + await this.page.click('.js-payload'); + await selectAll.call(this); + + const payload = { + sub: 'test' + }; + await this.page.keyboard.type(JSON.stringify(payload, null, 2), { + delay: typingDelay + }); + + await this.page.waitFor(tokenEditorThrottleWait); + + const shareJwtButton = await this.page.$('.website-share button'); + await shareJwtButton.click(); + + const srcToken = await this.page.evaluate(() => + window.test.tokenEditor.getValue()); + + // We cannot read the clipboard in headless Chrome, so we have a + // special harness in the code that stores this value. See: + // https://github.com/GoogleChrome/puppeteer/issues/2147 + const copiedUrl = await this.page.evaluate(() => + window.test.shareJwtCopiedUrl); + + const newPage = await this.browser.newPage(); + await newPage.goto( + copiedUrl.replace('https://jwt.io/', 'http://localhost:8000/')); + + const destToken = await newPage.evaluate(() => + window.test.tokenEditor.getValue()); + const destPubKey = await newPage.$eval('textarea[name="public-key"]', + input => input.value); + + expect(srcToken).to.equal(destToken); + expect(destPubKey).to.equal(defaultTokens['rs256'].publicKey); + } + ); + }); - const shareJwtButton = await this.page.$('.website-share button'); - await shareJwtButton.click(); + describe('Parses tokens from window.location.href', () => { + const token = defaultTokens.hs384.token; - const srcToken = await this.page.evaluate(() => - window.test.tokenEditor.getValue()); + ['token', 'value', 'id_token', 'access_token'].forEach((key) => { - // We cannot read the clipboard in headless Chrome, so we have a - // special harness in the code that stores this value. See: - // https://github.com/GoogleChrome/puppeteer/issues/2147 - const copiedUrl = await this.page.evaluate(() => - window.test.shareJwtCopiedUrl); + [ + `/?${key}=${token}`, + `/#${key}=${token}`, + `/?foo=bar&${key}=${token}`, + `/#foo=bar&${key}=${token}` + ].forEach((searchStr, i) => { + //this.timeout(20000); - const newPage = await this.browser.newPage(); - await newPage.goto( - copiedUrl.replace('https://jwt.io/', 'http://localhost:8000/')); + it(`Should parse ${key} from window.location.href [${i}]`, + async function() { + const page = await this.browser.newPage(); - const destToken = await newPage.evaluate(() => - window.test.tokenEditor.getValue()); - const destPubKey = await newPage.$eval('textarea[name="public-key"]', - input => input.value); + await page.goto(`http://localhost:8000${searchStr}`); - expect(srcToken).to.equal(destToken); - expect(destPubKey).to.equal(defaultTokens['rs256'].publicKey); - } - ); - }); + expect(await page.evaluate(() => { + return window.test.tokenEditor.getValue(); + })).to.equal(token); - describe('Parses tokens from window.location.href', () => { - const token = defaultTokens.hs384.token; + await page.close(); + }); + }); - ['token', 'value', 'id_token', 'access_token'].forEach((key) => { + }); - [ - `/?${key}=${token}`, - `/#${key}=${token}`, - `/?foo=bar&${key}=${token}`, - `/#foo=bar&${key}=${token}` - ].forEach((searchStr, i) => { - //this.timeout(20000); + it('Parses shared token', async function() { + //this.timeout(20000); - it(`Should parse ${key} from window.location.href [${i}]`, - async function () { const page = await this.browser.newPage(); - await page.goto(`http://localhost:8000${searchStr}`); + await page.goto(`http://localhost:8000/#debugger-io?token=${token}`); expect(await page.evaluate(() => { - return window.test.tokenEditor.getValue(); + return window.test.tokenEditor.getValue(); })).to.equal(token); await page.close(); - }); - }); - - }); - - it('Parses shared token', async function() { - //this.timeout(20000); - - const page = await this.browser.newPage(); - - await page.goto(`http://localhost:8000/#debugger-io?token=${token}`); - - expect(await page.evaluate(() => { - return window.test.tokenEditor.getValue(); - })).to.equal(token); + }); - await page.close(); }); - - }); -}); +}); \ No newline at end of file From d61774cf3360f2a59b87f3c19214405760d275a9 Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 29 Sep 2021 11:08:07 +0200 Subject: [PATCH 508/611] Fix scrollto editor --- test/functional/editor.js | 7 +++++++ views/website/navigation.pug | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/test/functional/editor.js b/test/functional/editor.js index 3ec17b94..3ea11623 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -30,6 +30,13 @@ describe('Editor', function() { after(utils.closeBrowser); + it('Displays editor when clicking on navbar', async function() { + await this.page.click('a[href="http://github.com/#debugger-io"]'); + // Wait for scroll + await this.page.waitFor(3000); + expect(await this.page.$eval('#debugger-io', isVisible)).to.be.true; + }); + it('HS256 should be selected by default', async function() { const selected = await this.page.$eval('#algorithm-select', select => { return select.options[select.selectedIndex].value; diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 792e906e..46f2cc01 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -9,7 +9,7 @@ nav.navbar.closed img(src='http://github.com/img/logo.svg' alt='JWT logo').logo nav.menu - a(href='http://github.com/') Debugger + a(href='http://github.com/#debugger-io').scrollto Debugger a(href='http://github.com/libraries') Libraries a(href='http://github.com/introduction') Introduction a(href='https://community.auth0.com/c/identity/jwt', target='_blank') Ask From 997e44121e56595af5217a32fed745e9facf09d4 Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 29 Sep 2021 14:42:56 +0200 Subject: [PATCH 509/611] Fix libraries integration tests --- Gruntfile.js | 3 +- test/functional/libraries.js | 294 +++++++++++++++++------------------ 2 files changed, 147 insertions(+), 150 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 536d941f..c6d22bae 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -128,6 +128,7 @@ module.exports = (grunt) => { files: { "dist/website/index.html": "views/website/index.pug", "dist/website/introduction/index.html": "views/website/introduction.pug", + "dist/website/libraries/index.html": "views/website/libraries.pug", }, }, extension: { @@ -277,4 +278,4 @@ module.exports = (grunt) => { grunt.registerTask("test", ["unit-tests", "functional-tests"]); grunt.registerTask("default", ["build-dev", "connect:website", "watch"]); -}; +}; \ No newline at end of file diff --git a/test/functional/libraries.js b/test/functional/libraries.js index 2176c945..927ca748 100644 --- a/test/functional/libraries.js +++ b/test/functional/libraries.js @@ -12,165 +12,161 @@ chai.use(chaiAsPromised); chai.use(chaiArrays); const expect = chai.expect; -describe('Libraries', function() { - before(utils.launchBrowser); - - after(utils.closeBrowser); - - it('Displays libraries when clicking on navbar', async function() { - await this.page.click('a[href="#libraries-io"]'); - // Wait for scroll - await this.page.waitFor(3000); - expect(await this.page.$eval('#libraries-io', isVisible)).to.be.true; - }); - - it('Displays a sorted library filter', async function() { - const libraries = await this.page.$eval('#libraries-select', select => { - const result = []; - - Array.prototype.forEach.call(select.children, element => { - result.push(element.value); - }); - - return result; +describe.only('Libraries', function() { + before(utils.launchBrowser) + before(async function() { + await this.page.goto(`http://localhost:8000/libraries`); }); - expect(libraries).to.be.sorted; - }); + after(utils.closeBrowser); - it('Should all have a valid logo', async function() { - const imgs = await this.page.$$eval('.panel-heading img', imgs => { - return Array.prototype.map.call(imgs, img => img.src); - }); + it('Displays a sorted library filter', async function() { + const libraries = await this.page.$eval('#libraries-select', select => { + const result = []; - const uniqueImgs = new Set(imgs); - - const promises = []; - for(src of uniqueImgs) { - promises.push(request(src)); - } - - return expect(Promise.all(promises)).to.be.fulfilled; - }); - - it('Hides and displays libraries using filters', async function() { - await this.page.select('#libraries-select', '.php'); - // Wait for animation - await this.page.waitFor(2000); - - expect(await this.page.$eval('.php', isVisible)).to.be.true; - expect(await this.page.$eval('.net', isVisible)).to.be.false; - expect(await this.page.$eval('.python', isVisible)).to.be.false; - - await this.page.waitForSelector('.net', { - hidden: true - }); - await this.page.waitForSelector('.python', { - hidden: true - }); + Array.prototype.forEach.call(select.children, element => { + result.push(element.value); + }); - await this.page.select('#libraries-select', '*'); - // Wait for animation - await this.page.waitFor(2000); + return result; + }); - await this.page.waitForSelector('.net', { - visible: true + expect(libraries).to.be.sorted; }); - await this.page.waitForSelector('.php', { - visible: true - }); - await this.page.waitForSelector('.python', { - visible: true - }); - }); - - it('Shows a repo link for each library', async function() { - expect(await this.page.$$eval('.repository a', elements => { - return Array.prototype.every.call(elements, e => { - return !!e.href; - }); - })).to.be.true; - }); - - // skipped since we're pulling these on the server now - it.skip('Has a data-repo attribute for star counts if repo ' + - 'is in GitHub', async function() { - const repos = await this.page.$$eval('.panel-wrap', bodies => { - const result = []; - for(let i = 0; i < bodies.length; ++i) { - const spanStars = bodies[i].querySelector('span.stars'); - const repoUrl = bodies[i].querySelector('.repository a').href; - - if(repoUrl.indexOf('github') !== -1) { - result.push({ - url: repoUrl, - dataRepo: spanStars ? spanStars.getAttribute('data-repo') : null - }); + + it('Should all have a valid logo', async function() { + const imgs = await this.page.$$eval('.panel-heading img', imgs => { + return Array.prototype.map.call(imgs, img => img.src); + }); + + const uniqueImgs = new Set(imgs); + + const promises = []; + for (src of uniqueImgs) { + promises.push(request(src)); } - } - return result; + return expect(Promise.all(promises)).to.be.fulfilled; }); - for(const repo of repos) { - expect(repo.dataRepo, repo.url).to.exist.and.not.be.empty; - } - }); - - it('Displays libraries stacked on top of each other ' + - 'for small screens', async function() { - try { - await this.page.setViewport({ - width: 375, - height: 1080 - }); - - const libraries = await this.page.$$('article.accordion'); - - let last = await libraries[0].boundingBox(); - const result = await Promise.all(libraries.slice(1).map(async element => { - const box = await element.boundingBox(); - const result = box.x === last.x && box.y > last.y; - last = box; - return result; - })); - - expect(result.every(value => value)).to.be.true; - } finally { - await this.page.setViewport({ - width: 1920, - height: 1080 - }); - } - }); - - it('Sets the right classes when the vulnerability is and ' + - 'is not displayed ', async function() { - expect(await this.page.$$eval('.panel-wrap', elements => { - function getLibraryName(panelWrapElement) { - return panelWrapElement.parentNode - .querySelector('h3') - .firstChild - .textContent; - } - - const result = []; - - Array.prototype.forEach.call(elements, el => { - const versionPresent = !!el.querySelector('.version'); - const panelBodyElement = el.querySelector('.panel-body'); - const mversionPresent = panelBodyElement.classList.contains('mversion'); - - if((versionPresent && mversionPresent) || - (!versionPresent && !mversionPresent)) { - // All good - return; - } + it('Hides and displays libraries using filters', async function() { + await this.page.select('#libraries-select', '.php'); + // Wait for animation + await this.page.waitFor(2000); + + expect(await this.page.$eval('.php', isVisible)).to.be.true; + expect(await this.page.$eval('.net', isVisible)).to.be.false; + expect(await this.page.$eval('.python', isVisible)).to.be.false; + + await this.page.waitForSelector('.net', { + hidden: true + }); + await this.page.waitForSelector('.python', { + hidden: true + }); + + await this.page.select('#libraries-select', '*'); + // Wait for animation + await this.page.waitFor(2000); + + await this.page.waitForSelector('.net', { + visible: true + }); + await this.page.waitForSelector('.php', { + visible: true + }); + await this.page.waitForSelector('.python', { + visible: true + }); + }); - result.push(getLibraryName(el)); - }); + it('Shows a repo link for each library', async function() { + expect(await this.page.$$eval('.repository a', elements => { + return Array.prototype.every.call(elements, e => { + return !!e.href; + }); + })).to.be.true; + }); - return result; - })).to.be.empty; - }); -}); + // skipped since we're pulling these on the server now + it.skip('Has a data-repo attribute for star counts if repo ' + + 'is in GitHub', async function() { + const repos = await this.page.$$eval('.panel-wrap', bodies => { + const result = []; + for (let i = 0; i < bodies.length; ++i) { + const spanStars = bodies[i].querySelector('span.stars'); + const repoUrl = bodies[i].querySelector('.repository a').href; + + if (repoUrl.indexOf('github') !== -1) { + result.push({ + url: repoUrl, + dataRepo: spanStars ? spanStars.getAttribute('data-repo') : null + }); + } + } + + return result; + }); + + for (const repo of repos) { + expect(repo.dataRepo, repo.url).to.exist.and.not.be.empty; + } + }); + + it('Displays libraries stacked on top of each other ' + + 'for small screens', async function() { + try { + await this.page.setViewport({ + width: 375, + height: 1080 + }); + + const libraries = await this.page.$$('article.accordion'); + + let last = await libraries[0].boundingBox(); + const result = await Promise.all(libraries.slice(1).map(async element => { + const box = await element.boundingBox(); + const result = box.x === last.x && box.y > last.y; + last = box; + return result; + })); + + expect(result.every(value => value)).to.be.true; + } finally { + await this.page.setViewport({ + width: 1920, + height: 1080 + }); + } + }); + + it('Sets the right classes when the vulnerability is and ' + + 'is not displayed ', async function() { + expect(await this.page.$$eval('.panel-wrap', elements => { + function getLibraryName(panelWrapElement) { + return panelWrapElement.parentNode + .querySelector('h3') + .firstChild + .textContent; + } + + const result = []; + + Array.prototype.forEach.call(elements, el => { + const versionPresent = !!el.querySelector('.version'); + const panelBodyElement = el.querySelector('.panel-body'); + const mversionPresent = panelBodyElement.classList.contains('mversion'); + + if ((versionPresent && mversionPresent) || + (!versionPresent && !mversionPresent)) { + // All good + return; + } + + result.push(getLibraryName(el)); + }); + + return result; + })).to.be.empty; + }); +}); \ No newline at end of file From 9a88a2abe6630cc8c62931a95b7d924d7714bf16 Mon Sep 17 00:00:00 2001 From: Sambego Date: Wed, 29 Sep 2021 14:43:24 +0200 Subject: [PATCH 510/611] Remove stray "only" --- test/functional/libraries.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/functional/libraries.js b/test/functional/libraries.js index 927ca748..41117903 100644 --- a/test/functional/libraries.js +++ b/test/functional/libraries.js @@ -12,7 +12,7 @@ chai.use(chaiAsPromised); chai.use(chaiArrays); const expect = chai.expect; -describe.only('Libraries', function() { +describe('Libraries', function() { before(utils.launchBrowser) before(async function() { await this.page.goto(`http://localhost:8000/libraries`); From 48759f938fdad7533e8412851abac8cbaaaa554b Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Wed, 29 Sep 2021 19:09:56 +0200 Subject: [PATCH 511/611] Fix typo --- views/website/assets.pug | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/assets.pug b/views/website/assets.pug index a46f5134..4593a84a 100644 --- a/views/website/assets.pug +++ b/views/website/assets.pug @@ -5,7 +5,7 @@ section.sources .libraries-container h2 Looking for a JWT library? p Head on over to our libraries page to find a JWT library in your favorite language. - a(href="http://github.com/libraries").btn.btn-lg See al libraries + a(href="http://github.com/libraries").btn.btn-lg See all libraries .column.badges h2 Badges .hold @@ -37,4 +37,4 @@ section.sources .text-hold a(href='http://jwt.io/img/logo-asset.svg', target='_blank' title='Download JWT logo') i.icon-budicon-722 - p http://jwt.io/img/logo-asset.svg \ No newline at end of file + p http://jwt.io/img/logo-asset.svg From d881cc415e4a44c093e4325b00ab90a169562660 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Thu, 30 Sep 2021 12:40:52 +0200 Subject: [PATCH 512/611] feat: preselect a language on libraries page --- src/website/index.js | 12 ++++++---- src/website/libraries/libraries.js | 38 +++++++++++++++++++++++++++++- test/functional/libraries.js | 16 ++++++++++++- test/unit/libraries.js | 20 +++++++--------- 4 files changed, 68 insertions(+), 18 deletions(-) diff --git a/src/website/index.js b/src/website/index.js index 87762a3b..2b75d2f6 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -16,8 +16,10 @@ import queryString from "querystring"; /* For initialization, look at the end of this file */ function parseLocationQuery() { - const locSearch = queryString.parse(document.location.search.substr(1)); - const locHash = queryString.parse(document.location.hash.substr(1)); + const source = { + ...queryString.parse(document.location.search.substr(1)), + ...queryString.parse(document.location.hash.substr(1)) + } const keys = [ "id_token", @@ -27,11 +29,11 @@ function parseLocationQuery() { "debugger-io?token" ]; for (const key of keys) { - const token = locSearch[key] || locHash[key]; + const token = source[key]; if (token) { - if (locSearch.publicKey || locHash.publicKey) { - publicKeyTextArea.value = locSearch.publicKey || locHash.publicKey; + if (source.publicKey) { + publicKeyTextArea.value = source.publicKey; } setTokenEditorValue(token); diff --git a/src/website/libraries/libraries.js b/src/website/libraries/libraries.js index 205e63f6..a275cbc8 100644 --- a/src/website/libraries/libraries.js +++ b/src/website/libraries/libraries.js @@ -1,8 +1,10 @@ import { librariesElement, librariesSelect } from "./dom-elements.js"; +import queryString from "querystring"; import Isotope from "isotope-layout"; const librariesGrid = new Isotope(librariesElement, { + initLayout: false, layoutMode: "fitRows", itemSelector: "article", percentPosition: true, @@ -11,10 +13,44 @@ const librariesGrid = new Isotope(librariesElement, { }, }); +function setQueryStringParameter(name, value) { + if (value) { + const params = new URLSearchParams(window.location.search); + params.set(name, value); + window.history.replaceState({}, '', decodeURIComponent(`${window.location.pathname}?${params}`)); + } else { + window.history.replaceState({}, '', decodeURIComponent(window.location.pathname)); + } +} + export function setupLibraries() { librariesSelect.addEventListener("change", (event) => { librariesGrid.arrange({ filter: event.target.value, }); + if (event.target.value === '*') { + setQueryStringParameter('language', '') + } else { + setQueryStringParameter('language', document.querySelector(`#libraries-select > option[value="${event.target.value}"]`).innerHTML) + } }); -} \ No newline at end of file + + const { language: preselect } = { + ...queryString.parse(document.location.search.substr(1)), + ...queryString.parse(document.location.hash.substr(1)) + } + + let select; + + if (preselect) { + try { + select = document.querySelector(`#libraries-select > option[value=".${preselect}"]`) + || [...document.querySelectorAll('#libraries-select > option')].find((el) => preselect === el.innerHTML) + } catch (err) {} + } + + select || (select = document.querySelector('#libraries-select > option[value="*"]')) + + librariesGrid.arrange({ filter: select.value }); + select.selected = 'selected'; +} diff --git a/test/functional/libraries.js b/test/functional/libraries.js index 41117903..1f9931cc 100644 --- a/test/functional/libraries.js +++ b/test/functional/libraries.js @@ -169,4 +169,18 @@ describe('Libraries', function() { return result; })).to.be.empty; }); -}); \ No newline at end of file + + it('Can pre-select a language with a name', async function () { + await this.page.goto(`http://localhost:8000/libraries?language=Node.js`); + expect(await this.page.$eval('.net', isVisible)).to.be.false; + expect(await this.page.$eval('.php', isVisible)).to.be.false; + expect(await this.page.$eval('.node', isVisible)).to.be.true; + }); + + it('Can pre-select a language with a class', async function () { + await this.page.goto(`http://localhost:8000/libraries?language=node`); + expect(await this.page.$eval('.net', isVisible)).to.be.false; + expect(await this.page.$eval('.php', isVisible)).to.be.false; + expect(await this.page.$eval('.node', isVisible)).to.be.true; + }); +}); diff --git a/test/unit/libraries.js b/test/unit/libraries.js index ba8e809c..3efe9041 100644 --- a/test/unit/libraries.js +++ b/test/unit/libraries.js @@ -17,21 +17,19 @@ describe('Libraries', function() { it('Each language has a unique name', function() { const names = new Set(); - - for(const lang of languages) { - names.has(lang.name).should.be.false; - names.add(lang.name); - } + languages + .map(({ name }) => name) + .forEach(Set.prototype.add.bind(names)) + names.size.should.equal(languages.length); }); it('uniqueClass is unique for each language', function() { const classes = new Set(); - - for(const lang of languages) { - classes.has(lang.uniqueClass).should.be.false; - classes.add(lang.uniqueClass); - } - }); + languages + .map(({ uniqueClass }) => uniqueClass) + .forEach(Set.prototype.add.bind(classes)) + classes.size.should.equal(languages.length); + }); it('Have a correct schema', function() { for(const lang of languages) { From 6366c1436d08a128b09947dce845e4bd13d5e75d Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Thu, 30 Sep 2021 14:36:24 +0200 Subject: [PATCH 513/611] Update sitemap --- sitemap.xml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sitemap.xml b/sitemap.xml index c5993ed7..30f9e2db 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,12 +2,17 @@ https://jwt.io/ - 2020-07-02T07:37:12+00:00 + 2021-09-30T12:00:00+00:00 1.00 + + https://jwt.io/libraries/ + 2021-09-30T12:00:00+00:00 + 0.80 + https://jwt.io/introduction/ - 2020-07-02T07:37:12+00:00 + 2021-09-30T12:00:00+00:00 0.80 - \ No newline at end of file + From c23cb059b81bd106cfa95e40259b1dd7f93762b3 Mon Sep 17 00:00:00 2001 From: Otto Kruse Date: Fri, 8 Oct 2021 09:51:13 +0200 Subject: [PATCH 514/611] Add mention of NodeJS library aws-jwt-verify --- views/website/libraries/2-Node.js.json | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json index fbbe4d26..64c3548a 100644 --- a/views/website/libraries/2-Node.js.json +++ b/views/website/libraries/2-Node.js.json @@ -70,6 +70,40 @@ "gitHubRepoPath": "panva/jose", "repoUrl": "https://github.com/panva/jose", "installCommandHtml": "npm install jose" + }, + { + "minimumVersion": null, + "support": { + "sign": false, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "typ": true, + "hs256": false, + "hs384": false, + "hs512": false, + "rs256": true, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false, + "eddsa": false, + "es256k": false + }, + "authorUrl": "https://github.com/orgs/awslabs", + "authorName": "AWS", + "gitHubRepoPath": "awslabs/aws-jwt-verify", + "repoUrl": "https://github.com/awslabs/aws-jwt-verify", + "installCommandHtml": "npm install aws-jwt-verify" } ] } From a87bc1f96c0ad95b52883cc764680a31acabe0f6 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 15 Oct 2021 09:31:08 +0200 Subject: [PATCH 515/611] bump jose --- package-lock.json | 14 +++++++------- package.json | 2 +- src/editor/jwt.js | 18 ++++++++---------- src/editor/public-key-download.js | 5 ++--- test/functional/editor.js | 15 +++++++-------- webpack.common.js | 12 +----------- webpack.website-unit-tests.js | 10 ---------- 7 files changed, 26 insertions(+), 50 deletions(-) diff --git a/package-lock.json b/package-lock.json index a74c023a..2a9e8b80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "highlight.js": "^10.4.1", "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", - "jose": "^3.19.0", + "jose": "^4.0.2", "jquery": "^3.4.1", "lodash": "^4.17.13", "loglevel": "^1.6.2", @@ -8690,9 +8690,9 @@ "dev": true }, "node_modules/jose": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/jose/-/jose-3.19.0.tgz", - "integrity": "sha512-G5imz/7oSe8Ohg4EMEhGhMhN+yzACMw7NC7ZrEYSoJekQXHPf+TPQNc/XJkYRm6TFWIbf3HA4OHZhdRv8KsskA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.0.2.tgz", + "integrity": "sha512-H/JNQr4WFijHfHo8UsXwXKl20MJVD30noaWRF/R4p4kQtoldMRCmg8DY3x48FeMUGWRLwJ4eXg6mazKlQlCmdA==", "dev": true, "funding": { "url": "https://github.com/sponsors/panva" @@ -23939,9 +23939,9 @@ "dev": true }, "jose": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/jose/-/jose-3.19.0.tgz", - "integrity": "sha512-G5imz/7oSe8Ohg4EMEhGhMhN+yzACMw7NC7ZrEYSoJekQXHPf+TPQNc/XJkYRm6TFWIbf3HA4OHZhdRv8KsskA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.0.2.tgz", + "integrity": "sha512-H/JNQr4WFijHfHo8UsXwXKl20MJVD30noaWRF/R4p4kQtoldMRCmg8DY3x48FeMUGWRLwJ4eXg6mazKlQlCmdA==", "dev": true }, "jquery": { diff --git a/package.json b/package.json index a5d531a1..dc8723e3 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "highlight.js": "^10.4.1", "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", - "jose": "^3.19.0", + "jose": "^4.0.2", "jquery": "^3.4.1", "lodash": "^4.17.13", "loglevel": "^1.6.2", diff --git a/src/editor/jwt.js b/src/editor/jwt.js index 83f4bb15..884e7c3a 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -2,9 +2,7 @@ import b64u from 'base64url'; import any from 'promise.any'; import strings from '../strings'; import log from 'loglevel'; -import * as keyImport from 'jose/key/import' -import CompactSign from 'jose/jws/compact/sign' -import compactVerify from 'jose/jws/compact/verify' +import * as jose from 'jose' import { pki } from 'node-forge'; function symmetricSecret(key, alg, base64Secret) { @@ -37,10 +35,10 @@ function getJoseKey(header, key, base64Secret, type) { key = pki.privateKeyInfoToPem(pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(pki.privateKeyFromPem(key)))) } return any([ - keyImport.importPKCS8(key, header.alg), + jose.importPKCS8(key, header.alg), Promise.resolve().then(() => JSON.parse(key)).then(rawPrivate).then((jwk) => { if (!('d' in jwk)) throw new Error('not a private JWK') - return keyImport.importJWK(jwk, header.alg) + return jose.importJWK(jwk, header.alg) }) ]) case types.PUBLIC: @@ -48,10 +46,10 @@ function getJoseKey(header, key, base64Secret, type) { key = pki.publicKeyToPem(pki.publicKeyFromPem(key)) } return any([ - keyImport.importSPKI(key, header.alg), - keyImport.importX509(key, header.alg), + jose.importSPKI(key, header.alg), + jose.importX509(key, header.alg), Promise.resolve().then(() => JSON.parse(key)).then(rawPublic).then((jwk) => { - return keyImport.importJWK(jwk, header.alg) + return jose.importJWK(jwk, header.alg) }) ]) default: @@ -73,7 +71,7 @@ export function sign(header, payload = JSON.stringify(payload); } - return new CompactSign(new TextEncoder().encode(payload)) + return new jose.CompactSign(new TextEncoder().encode(payload)) .setProtectedHeader(header) .sign(key); } @@ -93,7 +91,7 @@ export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { return getJoseKey(decoded.header, secretOrPublicKeyString, base64Secret, types.PUBLIC).then( key => { - return compactVerify(jwt, key) + return jose.compactVerify(jwt, key) .then(() => ({ validSignature: true, validBase64: jwt.split('.').reduce((valid, s) => valid = valid && isValidBase64String(s), true) diff --git a/src/editor/public-key-download.js b/src/editor/public-key-download.js index a43bd581..9cf8b549 100644 --- a/src/editor/public-key-download.js +++ b/src/editor/public-key-download.js @@ -1,5 +1,4 @@ -import { createRemoteJWKSet } from 'jose/jwks/remote' -import * as keyExport from 'jose/key/export' +import * as jose from 'jose' import { httpGet } from '../utils.js'; @@ -25,7 +24,7 @@ function getKeyFromX5Claims(claims) { } function getKeyFromJwkKeySetUrl(header, url) { - return createRemoteJWKSet(new URL(url))(header, {}).then(keyExport.exportJWK).then((jwk) => JSON.stringify(jwk, null, 2)) + return jose.createRemoteJWKSet(new URL(url))(header, {}).then(jose.exportJWK).then((jwk) => JSON.stringify(jwk, null, 2)) } export function downloadPublicKeyIfPossible(decodedToken) { diff --git a/test/functional/editor.js b/test/functional/editor.js index 3ea11623..c8cca45c 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -3,8 +3,7 @@ const chaiAsPromised = require('chai-as-promised'); const chaiArrays = require('chai-arrays'); const express = require('express'); -const { importPKCS8 } = require('jose/key/import') -const { CompactSign } = require('jose/jws/compact/sign') +const jose = require('jose'); const _ = require('lodash'); @@ -558,8 +557,8 @@ describe('Editor', function() { }); it('iss URL + .well-known', async function() { - const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); - const token = await new CompactSign(Buffer.from(JSON.stringify({ + const key = await jose.importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); + const token = await new jose.CompactSign(Buffer.from(JSON.stringify({ sub: 'test', iss: 'http://localhost:3000/' }))).setProtectedHeader({ @@ -584,8 +583,8 @@ describe('Editor', function() { it('jku', async function() { //this.timeout(20000); - const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); - const token = await new CompactSign(Buffer.from(JSON.stringify({ + const key = await jose.importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); + const token = await new jose.CompactSign(Buffer.from(JSON.stringify({ sub: 'test' }))).setProtectedHeader({ alg: 'RS256', @@ -610,8 +609,8 @@ describe('Editor', function() { it('x5c', async function() { //this.timeout(35000); - const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); - const token = await new CompactSign(Buffer.from(JSON.stringify({ + const key = await jose.importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); + const token = await new jose.CompactSign(Buffer.from(JSON.stringify({ sub: 'test' }))).setProtectedHeader({ alg: 'RS256', diff --git a/webpack.common.js b/webpack.common.js index f837d22b..d6351ea0 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -32,15 +32,5 @@ module.exports = { $: "jquery", jQuery: "jquery", }), - ], - resolve: { - alias: { - 'jose/key/import': 'jose/dist/browser/key/import', - 'jose/key/export': 'jose/dist/browser/key/export', - 'jose/jws/compact/sign': 'jose/dist/browser/jws/compact/sign', - 'jose/jws/compact/verify': 'jose/dist/browser/jws/compact/verify', - 'jose/jwks/remote': 'jose/dist/browser/jwks/remote', - 'jose/jwk/embedded': 'jose/dist/browser/jwk/embedded', - } - } + ] }; diff --git a/webpack.website-unit-tests.js b/webpack.website-unit-tests.js index 55d54796..91ac6e30 100644 --- a/webpack.website-unit-tests.js +++ b/webpack.website-unit-tests.js @@ -41,15 +41,5 @@ module.exports = merge(common, { } } }] - }, - resolve: { - alias: { - 'jose/key/import': 'jose/dist/node/cjs/key/import', - 'jose/key/export': 'jose/dist/node/cjs/key/export', - 'jose/jws/compact/sign': 'jose/dist/node/cjs/jws/compact/sign', - 'jose/jws/compact/verify': 'jose/dist/node/cjs/jws/compact/verify', - 'jose/jwks/remote': 'jose/dist/node/cjs/jwks/remote', - 'jose/jwk/embedded': 'jose/dist/node/cjs/jwk/embedded', - } } }); From 2cd745cf4ebc4bd08fd71add2c383cf41c1b0009 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Mon, 18 Oct 2021 10:29:31 +0200 Subject: [PATCH 516/611] chore: bump jose to v4.0.3 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2a9e8b80..9687045c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "highlight.js": "^10.4.1", "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", - "jose": "^4.0.2", + "jose": "^4.0.3", "jquery": "^3.4.1", "lodash": "^4.17.13", "loglevel": "^1.6.2", @@ -8690,9 +8690,9 @@ "dev": true }, "node_modules/jose": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.0.2.tgz", - "integrity": "sha512-H/JNQr4WFijHfHo8UsXwXKl20MJVD30noaWRF/R4p4kQtoldMRCmg8DY3x48FeMUGWRLwJ4eXg6mazKlQlCmdA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.0.3.tgz", + "integrity": "sha512-g/4UdY9yZai+XMwBgqSHLTNE5vwKDqqdoM46C3kx7kLGr95Dwnv5/0pfDozrqrESDZrSpU11VkF0ZqnR3xq4NA==", "dev": true, "funding": { "url": "https://github.com/sponsors/panva" @@ -23939,9 +23939,9 @@ "dev": true }, "jose": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.0.2.tgz", - "integrity": "sha512-H/JNQr4WFijHfHo8UsXwXKl20MJVD30noaWRF/R4p4kQtoldMRCmg8DY3x48FeMUGWRLwJ4eXg6mazKlQlCmdA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.0.3.tgz", + "integrity": "sha512-g/4UdY9yZai+XMwBgqSHLTNE5vwKDqqdoM46C3kx7kLGr95Dwnv5/0pfDozrqrESDZrSpU11VkF0ZqnR3xq4NA==", "dev": true }, "jquery": { diff --git a/package.json b/package.json index dc8723e3..956cd88f 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "highlight.js": "^10.4.1", "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", - "jose": "^4.0.2", + "jose": "^4.0.3", "jquery": "^3.4.1", "lodash": "^4.17.13", "loglevel": "^1.6.2", From b2406d4a918d13b7361ea89517e668e48f3dd16a Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Mon, 18 Oct 2021 11:55:15 +0200 Subject: [PATCH 517/611] fix: validate signatures regardless of JWT payloads --- src/editor/jwt.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/editor/jwt.js b/src/editor/jwt.js index 884e7c3a..c1937b4a 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -138,19 +138,15 @@ export function decode(jwt) { if (!isValidBase64String(split[1])) { result.warnings.push(strings.warnings.payloadBase64Invalid); } - result.payload = JSON.parse(b64u.decode(split[1])); - } catch (e) { - result.errors = true; - } + result.payload = b64u.decode(split[1]); + } catch (e) {} try { if (!isValidJSON(b64u.decode(split[1]))) { result.warnings.push(strings.warnings.payloadInvalidJSON); - result.payload = b64u.decode(split[1]) } - } catch (e) { - result.errors = true; - } + result.payload = JSON.parse(b64u.decode(split[1])) + } catch (e) {} return result; } From 24ec1be2e300a7563ed2d2e178ffb2e7d9e1b5d7 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Mon, 18 Oct 2021 12:15:30 +0200 Subject: [PATCH 518/611] fix: remove kid from default tokens --- src/editor/default-tokens.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/editor/default-tokens.js b/src/editor/default-tokens.js index 88a6d862..c2cc8e7c 100644 --- a/src/editor/default-tokens.js +++ b/src/editor/default-tokens.js @@ -158,13 +158,13 @@ export default { publicKey: ecPublicKey256 }, es384: { - token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6ImlUcVhYSTB6YkFuSkNLRGFvYmZoa00xZi02ck1TcFRmeVpNUnBfMnRLSTgifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.cJOP_w-hBqnyTsBm3T6lOE5WpcHaAkLuQGAs1QO-lg2eWs8yyGW8p9WagGjxgvx7h9X72H7pXmXqej3GdlVbFmhuzj45A9SXDOAHZ7bJXwM1VidcPi7ZcrsMSCtP1hiN', + token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.VUPWQZuClnkFbaEKCsPy7CZVMh5wxbCSpaAWFLpnTe9J0--PzHNeTFNXCrVHysAa3eFbuzD8_bLSsgTKC8SzHxRVSj5eN86vBPo_1fNfE7SHTYhWowjY4E_wuiC13yoj', privateKey: ecPrivateKey384, jwk: ecJwk384, publicKey: ecPublicKey384 }, es512: { - token: 'eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCIsImtpZCI6InhaRGZacHJ5NFA5dlpQWnlHMmZOQlJqLTdMejVvbVZkbTd0SG9DZ1NOZlkifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.AP_CIMClixc5-BFflmjyh_bRrkloEvwzn8IaWJFfMz13X76PGWF0XFuhjJUjp7EYnSAgtjJ-7iJG4IP7w3zGTBk_AUdmvRCiWp5YAe8S_Hcs8e3gkeYoOxiXFZlSSAx0GfwW1cZ0r67mwGtso1I3VXGkSjH5J0Rk6809bn25GoGRjOPu', + token: 'eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.AbVUinMiT3J_03je8WTOIl-VdggzvoFgnOsdouAs-DLOtQzau9valrq-S6pETyi9Q18HH-EuwX49Q7m3KC0GuNBJAc9Tksulgsdq8GqwIqZqDKmG7hNmDzaQG1Dpdezn2qzv-otf3ZZe-qNOXUMRImGekfQFIuH_MjD2e8RZyww6lbZk', privateKey: ecPrivateKey521, jwk: ecJwk521, publicKey: ecPublicKey521 From 089ae8d14737c598e07cc1bcac600663246cc2cd Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Mon, 18 Oct 2021 14:19:59 +0200 Subject: [PATCH 519/611] chore: bump jose to v4.1.0 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9687045c..e94a2397 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "highlight.js": "^10.4.1", "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", - "jose": "^4.0.3", + "jose": "^4.1.0", "jquery": "^3.4.1", "lodash": "^4.17.13", "loglevel": "^1.6.2", @@ -8690,9 +8690,9 @@ "dev": true }, "node_modules/jose": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.0.3.tgz", - "integrity": "sha512-g/4UdY9yZai+XMwBgqSHLTNE5vwKDqqdoM46C3kx7kLGr95Dwnv5/0pfDozrqrESDZrSpU11VkF0ZqnR3xq4NA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.1.0.tgz", + "integrity": "sha512-Hqx2vuNlo5sDe+ZWvOXAExWXk31mXgxMuUkUjEIeGNU4KFPZHO8hOnljhb25eoK4g+fth+7tU+k+AA+p/eZtYw==", "dev": true, "funding": { "url": "https://github.com/sponsors/panva" @@ -23939,9 +23939,9 @@ "dev": true }, "jose": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.0.3.tgz", - "integrity": "sha512-g/4UdY9yZai+XMwBgqSHLTNE5vwKDqqdoM46C3kx7kLGr95Dwnv5/0pfDozrqrESDZrSpU11VkF0ZqnR3xq4NA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.1.0.tgz", + "integrity": "sha512-Hqx2vuNlo5sDe+ZWvOXAExWXk31mXgxMuUkUjEIeGNU4KFPZHO8hOnljhb25eoK4g+fth+7tU+k+AA+p/eZtYw==", "dev": true }, "jquery": { diff --git a/package.json b/package.json index 956cd88f..a848a316 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "highlight.js": "^10.4.1", "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", - "jose": "^4.0.3", + "jose": "^4.1.0", "jquery": "^3.4.1", "lodash": "^4.17.13", "loglevel": "^1.6.2", From 83cc93ccf9da3cc48fcdd120e66982af770c612d Mon Sep 17 00:00:00 2001 From: Sambego Date: Mon, 8 Nov 2021 10:16:09 +0100 Subject: [PATCH 520/611] Replace TrustArc cookie consent with OneTrust --- server.js | 10 +++++-- src/cookie-consent.js | 65 ++++++++++++++++++++++++++++++++++++++++ views/website/layout.pug | 19 ++---------- webpack.website-dev.js | 3 +- 4 files changed, 77 insertions(+), 20 deletions(-) create mode 100644 src/cookie-consent.js diff --git a/server.js b/server.js index 92c4ae77..8f4148fc 100644 --- a/server.js +++ b/server.js @@ -1,6 +1,7 @@ const express = require("express"); const enforce = require("express-sslify"); const languages = require("./libraries.json"); +const dotenv = require("dotenv").config(); const app = express(); @@ -17,7 +18,10 @@ if (process.env.NODE_ENV === "production") { ); } -// app.use(fetchGithubStars); +app.use((req, res, next) => { + res.locals.COOKIE_CONSENT_DOMAIN_ID = process.env.COOKIE_CONSENT_DOMAIN_ID; + next(); +}); app.use(express.static("dist/website")); app.get("/", function(req, res) { res.render("index"); @@ -28,7 +32,9 @@ app.get("/introduction", function(req, res) { }); app.get("/libraries", function(req, res) { - res.render("libraries", { languages: languages }); + res.render("libraries", { + languages: languages + }); }); // Fallback for the homepage JWT handbook CTA A/B experiment we ran diff --git a/src/cookie-consent.js b/src/cookie-consent.js new file mode 100644 index 00000000..32fdb795 --- /dev/null +++ b/src/cookie-consent.js @@ -0,0 +1,65 @@ +const COOKIE_CONSENT_NECESSARY = 1; +const COOKIE_CONSENT_PERFORMANCE = 2; +const COOKIE_CONSENT_FUNCTIONAL = 3; +const COOKIE_CONSENT_ADVERTISING = 4; + +function addScripts(lvl) { + //Reject all + if (!lvl) { + return; + } + + // Necessary + if (lvl.includes(COOKIE_CONSENT_NECESSARY)) { + // GTM + (function(w, d, s, l, i) { + w[l] = w[l] || []; + w[l].push({ + 'gtm.start': new Date().getTime(), + event: 'gtm.js' + }); + var f = d.getElementsByTagName(s)[0], + j = d.createElement(s), + dl = l != 'dataLayer' ? '&l=' + l : ''; + j.async = true; + j.src = + '//www.googletagmanager.com/gtm.js?id=' + i + dl; + f.parentNode.insertBefore(j, f); + })(window, document, 'script', 'dataLayer', 'GTM-W7FRLJ'); + } + + // Functional + if (lvl.includes(COOKIE_CONSENT_FUNCTIONAL)) { + (function(d, s, id) { + var js, fjs = d.getElementsByTagName(s)[0], + p = /^http:/.test(d.location) ? 'http' : 'https'; + if (!d.getElementById(id)) { + js = d.createElement(s); + js.id = id; + js.src = p + '://platform.twitter.com/widgets.js'; + fjs.parentNode.insertBefore(js, fjs); + } + })(document, 'script', 'twitter-wjs'); + } +} + +// Add required scripts without waiting for the user consent +addScripts(window.OnetrustActiveGroups); + +// Poll for the consent being onscreen. +const POLL_MAX = 10; +const POLL_INTERVAL = 200; +let tries = 0; +const poll = window.setInterval(() => { + if (tries >= POLL_MAX) { + addScripts(window.OnetrustActiveGroups) + return window.clearInterval(poll); + } + + if (document.getElementById("onetrust-accept-btn-handler")) { + window.OneTrust.OnConsentChanged(() => addScripts(window.OnetrustActiveGroups)); + return window.clearInterval(poll); + } else { + tries++; + } +}, POLL_INTERVAL); \ No newline at end of file diff --git a/views/website/layout.pug b/views/website/layout.pug index d3bafa9e..9dce2aca 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -38,20 +38,10 @@ html(lang='en') // Chrome extension link, required for inline installs link(rel="chrome-webstore-item", href="https://chrome.google.com/webstore/detail/ppmmlchacdbknfphdeafcbmklcghghmd") - // Google Tag Manager - script. - (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': - new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], - j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= - '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); - })(window,document,'script','dataLayer','GTM-W7FRLJ'); - // End Google Tag Manager - body // Google Tag Manager (noscript) noscript iframe(src='https://www.googletagmanager.com/ns.html?id=GTM-W7FRLJ', height='0', width='0', style='display:none;visibility:hidden') - // End Google Tag Manager (noscript) include ./navigation.pug @@ -72,11 +62,6 @@ html(lang='en') .column.social-counter a.twitter-follow-button(href='https://twitter.com/auth0', data-show-count='true') Follow @auth0 - script. - !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); - if process.env.NODE_ENV === "production" - div - div(id="consent_blackbar") - div(id="teconsent" style="position: absolute; bottom: -100px;") - script(async="async" src="http://consent.trustarc.com/notice?domain=auth0banner.com&c=teconsent&js=nj¬iceType=bb&text=true" crossOrigin) + script(src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js", type="text/javascript", charset="UTF-8", data-domain-script=COOKIE_CONSENT_DOMAIN_ID, id="consent-script") + script(src="http://github.com/js/cookie-consent.js") \ No newline at end of file diff --git a/webpack.website-dev.js b/webpack.website-dev.js index 39b34901..89c49372 100644 --- a/webpack.website-dev.js +++ b/webpack.website-dev.js @@ -8,7 +8,8 @@ module.exports = merge(common, { entry: { index: './src/website/index.js', introduction: './src/website/introduction/index.js', - libraries: './src/website/libraries/index.js' + libraries: './src/website/libraries/index.js', + "cookie-consent": './src/cookie-consent.js' }, output: { filename: '[name].js', From 3330c35d9ca9c082c84de7e3ff20866e2cf29807 Mon Sep 17 00:00:00 2001 From: nefilim Date: Tue, 16 Nov 2021 14:35:14 -0700 Subject: [PATCH 521/611] add nefilim/kjwt --- views/website/libraries/29-Kotlin.json | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/views/website/libraries/29-Kotlin.json b/views/website/libraries/29-Kotlin.json index 5c708451..eaca02c9 100644 --- a/views/website/libraries/29-Kotlin.json +++ b/views/website/libraries/29-Kotlin.json @@ -34,6 +34,38 @@ "gitHubRepoPath": "PhilJay/JWT", "repoUrl": "https://github.com/PhilJay/JWT", "installCommandHtml": "maven: com.github.PhilJay / JWT / 1.1.5" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": false, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es256k": true, + "es384": true, + "es512": true, + "ps256": false, + "ps384": false, + "ps512": false + }, + "authorUrl": "https://github.com/nefilim", + "authorName": "nefilim", + "gitHubRepoPath": "nefilim/kJWT", + "repoUrl": "https://github.com/nefilim/kJWT", + "installCommandHtml": "maven: com.github.nefilim / kJWT / 0.1.5" } ] } From 80b3b4153846f66504b57b220d5cfb9a8771467e Mon Sep 17 00:00:00 2001 From: nefilim Date: Tue, 16 Nov 2021 14:40:29 -0700 Subject: [PATCH 522/611] update min version --- views/website/libraries/29-Kotlin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/29-Kotlin.json b/views/website/libraries/29-Kotlin.json index eaca02c9..429566e6 100644 --- a/views/website/libraries/29-Kotlin.json +++ b/views/website/libraries/29-Kotlin.json @@ -36,7 +36,7 @@ "installCommandHtml": "maven: com.github.PhilJay / JWT / 1.1.5" }, { - "minimumVersion": null, + "minimumVersion": "0.1.5", "support": { "sign": true, "verify": true, From 7e8721bd6da089786c2d108e06e2ecd553e376f2 Mon Sep 17 00:00:00 2001 From: Peter vR Date: Thu, 2 Dec 2021 08:21:57 -0700 Subject: [PATCH 523/611] Update 29-Kotlin.json --- views/website/libraries/29-Kotlin.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/libraries/29-Kotlin.json b/views/website/libraries/29-Kotlin.json index 429566e6..a88b255c 100644 --- a/views/website/libraries/29-Kotlin.json +++ b/views/website/libraries/29-Kotlin.json @@ -36,7 +36,7 @@ "installCommandHtml": "maven: com.github.PhilJay / JWT / 1.1.5" }, { - "minimumVersion": "0.1.5", + "minimumVersion": "0.2.0", "support": { "sign": true, "verify": true, @@ -65,7 +65,7 @@ "authorName": "nefilim", "gitHubRepoPath": "nefilim/kJWT", "repoUrl": "https://github.com/nefilim/kJWT", - "installCommandHtml": "maven: com.github.nefilim / kJWT / 0.1.5" + "installCommandHtml": "maven GAV: com.github.nefilim:kjwt-core:0.2.0" } ] } From 33185336b40353c177be8ceb41201d5cc36d8708 Mon Sep 17 00:00:00 2001 From: Peter vR Date: Thu, 2 Dec 2021 08:32:00 -0700 Subject: [PATCH 524/611] fix maven GAV --- views/website/libraries/29-Kotlin.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/libraries/29-Kotlin.json b/views/website/libraries/29-Kotlin.json index a88b255c..aa3e661b 100644 --- a/views/website/libraries/29-Kotlin.json +++ b/views/website/libraries/29-Kotlin.json @@ -45,7 +45,7 @@ "aud": true, "exp": true, "nbf": true, - "iat": false, + "iat": true, "jti": false, "hs256": true, "hs384": true, @@ -65,7 +65,7 @@ "authorName": "nefilim", "gitHubRepoPath": "nefilim/kJWT", "repoUrl": "https://github.com/nefilim/kJWT", - "installCommandHtml": "maven GAV: com.github.nefilim:kjwt-core:0.2.0" + "installCommandHtml": "maven GAV: io.github.nefilim.kjwt:kjwt-core:0.2.0" } ] } From 153a8c43bbc3023843a4ca29ff2c2488e77dac7a Mon Sep 17 00:00:00 2001 From: nefilim Date: Sat, 4 Dec 2021 13:01:39 -0700 Subject: [PATCH 525/611] redact minimum version, never supported none algorithm --- views/website/libraries/29-Kotlin.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/libraries/29-Kotlin.json b/views/website/libraries/29-Kotlin.json index aa3e661b..6ca835b2 100644 --- a/views/website/libraries/29-Kotlin.json +++ b/views/website/libraries/29-Kotlin.json @@ -36,7 +36,7 @@ "installCommandHtml": "maven: com.github.PhilJay / JWT / 1.1.5" }, { - "minimumVersion": "0.2.0", + "minimumVersion": null, "support": { "sign": true, "verify": true, @@ -65,7 +65,7 @@ "authorName": "nefilim", "gitHubRepoPath": "nefilim/kJWT", "repoUrl": "https://github.com/nefilim/kJWT", - "installCommandHtml": "maven GAV: io.github.nefilim.kjwt:kjwt-core:0.2.0" + "installCommandHtml": "maven GAV: io.github.nefilim.kjwt:kjwt-core:0.3.0" } ] } From d4a6445499fdb5d1c9eb824b883b43d87815d21a Mon Sep 17 00:00:00 2001 From: leelalagudu Date: Thu, 13 Jan 2022 13:08:42 +0000 Subject: [PATCH 526/611] Updated alg support for aws-jwt-verify --- views/website/libraries/2-Node.js.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json index 64c3548a..fddc5aa7 100644 --- a/views/website/libraries/2-Node.js.json +++ b/views/website/libraries/2-Node.js.json @@ -88,8 +88,8 @@ "hs384": false, "hs512": false, "rs256": true, - "rs384": false, - "rs512": false, + "rs384": true, + "rs512": true, "es256": false, "es384": false, "es512": false, From c0947f66fd4d6c55601339e9a27c83076c26742b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Jan 2022 23:02:15 +0000 Subject: [PATCH 527/611] Bump node-forge from 0.10.0 to 1.0.0 Bumps [node-forge](https://github.com/digitalbazaar/forge) from 0.10.0 to 1.0.0. - [Release notes](https://github.com/digitalbazaar/forge/releases) - [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md) - [Commits](https://github.com/digitalbazaar/forge/compare/0.10.0...v1.0.0) --- updated-dependencies: - dependency-name: node-forge dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index e94a2397..3a3e9401 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,7 +57,7 @@ "loglevel": "^1.6.2", "mocha": "^5.2.0", "nock": "^13.1.3", - "node-forge": "^0.10.0", + "node-forge": "^1.0.0", "promise.any": "^0.1.1", "puppeteer": "^1.17.0", "request-promise-native": "^1.0.7", @@ -10381,12 +10381,12 @@ } }, "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.0.0.tgz", + "integrity": "sha512-ShkiiAlzSsgH1IwGlA0jybk9vQTIOLyJ9nBd0JTuP+nzADJFLY0NoDijM2zvD/JaezooGu3G2p2FNxOAK6459g==", "dev": true, "engines": { - "node": ">= 6.0.0" + "node": ">= 6.13.0" } }, "node_modules/node-libs-browser": { @@ -25366,9 +25366,9 @@ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.0.0.tgz", + "integrity": "sha512-ShkiiAlzSsgH1IwGlA0jybk9vQTIOLyJ9nBd0JTuP+nzADJFLY0NoDijM2zvD/JaezooGu3G2p2FNxOAK6459g==", "dev": true }, "node-libs-browser": { diff --git a/package.json b/package.json index a848a316..d9d76a05 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "loglevel": "^1.6.2", "mocha": "^5.2.0", "nock": "^13.1.3", - "node-forge": "^0.10.0", + "node-forge": "^1.0.0", "promise.any": "^0.1.1", "puppeteer": "^1.17.0", "request-promise-native": "^1.0.7", From 01ac0ae3a3fe318605a6df85b4cf43c17aea85e0 Mon Sep 17 00:00:00 2001 From: florcaputti Date: Thu, 13 Jan 2022 16:15:11 -0300 Subject: [PATCH 528/611] Add privacy links --- stylus/website/index.styl | 5 +++++ views/website/layout.pug | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 45eba285..265ac70f 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1244,6 +1244,11 @@ footer .logo height 18px + .privacy-links + margin-bottom 16px + span + padding 0 6px + .pull-request +breakpoint("tablet") text-align center diff --git a/views/website/layout.pug b/views/website/layout.pug index 9dce2aca..ac7a7fed 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -51,6 +51,12 @@ html(lang='en') .container .columns .column + div.privacy-links + a(href='https://auth0.com/privacy/', target="_blank") + | Privacy + span • + a(href='https://auth0.com/web-terms', target="_blank") + | Terms of Service a(href='https://auth0.com/developers/', target="_blank") | Supported by img(src='http://github.com/img/ico_logo.svg' alt='Supported by Auth0 - JWT.io Token Based Authentication').logo From 9dc3ea511cc4b0b65098cc93a31389b6b97b8bc0 Mon Sep 17 00:00:00 2001 From: Jonathan Horn Date: Fri, 11 Feb 2022 10:57:29 +0100 Subject: [PATCH 529/611] Fix default header for PS512 --- src/editor/default-tokens.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/editor/default-tokens.js b/src/editor/default-tokens.js index c2cc8e7c..033364d6 100644 --- a/src/editor/default-tokens.js +++ b/src/editor/default-tokens.js @@ -182,7 +182,7 @@ export default { publicKey: rsaPublicKey }, ps512: { - token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.W0vasx0Lxmn3hkfi3RjJSLDSZnZbqDRZy6fau8wvIm_sdtTCiSJAjMSO1eR8YbnUF_MD10JYwR5unI8JO_qB8uSrW5vg4OPCDuPSQQu0Pnf9Q2Cy3WqSK166lgidlwAqyijgPFp5ggOnJM20IY4F8W6HOqcGeXcRzsaM2DIBEnku32TM7Xb-aCJYdKtawEfvD1zEwE1of02BoGva3sf_RhijMZpOA3yIG3FCDll-3M1rILP9Bi4FPz_uOAbJkKvUirAdaMX-KNaw6T_0nnBwHaFc8M9GGVZV6bT4uaOQ1U0Ezi4SAcBWW8kkPKZNorpRC5EtO_X6uvIVazj5EHERuw', + token: 'eyJhbGciOiJQUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.W0vasx0Lxmn3hkfi3RjJSLDSZnZbqDRZy6fau8wvIm_sdtTCiSJAjMSO1eR8YbnUF_MD10JYwR5unI8JO_qB8uSrW5vg4OPCDuPSQQu0Pnf9Q2Cy3WqSK166lgidlwAqyijgPFp5ggOnJM20IY4F8W6HOqcGeXcRzsaM2DIBEnku32TM7Xb-aCJYdKtawEfvD1zEwE1of02BoGva3sf_RhijMZpOA3yIG3FCDll-3M1rILP9Bi4FPz_uOAbJkKvUirAdaMX-KNaw6T_0nnBwHaFc8M9GGVZV6bT4uaOQ1U0Ezi4SAcBWW8kkPKZNorpRC5EtO_X6uvIVazj5EHERuw', privateKey: rsaPrivateKey, jwk: rsaJwk, publicKey: rsaPublicKey From d941c42ed0f17e9e22e18796f0dc86e0fc8f804a Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Fri, 11 Feb 2022 13:03:34 +0100 Subject: [PATCH 530/611] Fix PS512 signature --- src/editor/default-tokens.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/editor/default-tokens.js b/src/editor/default-tokens.js index 033364d6..3d05e6c2 100644 --- a/src/editor/default-tokens.js +++ b/src/editor/default-tokens.js @@ -182,7 +182,7 @@ export default { publicKey: rsaPublicKey }, ps512: { - token: 'eyJhbGciOiJQUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.W0vasx0Lxmn3hkfi3RjJSLDSZnZbqDRZy6fau8wvIm_sdtTCiSJAjMSO1eR8YbnUF_MD10JYwR5unI8JO_qB8uSrW5vg4OPCDuPSQQu0Pnf9Q2Cy3WqSK166lgidlwAqyijgPFp5ggOnJM20IY4F8W6HOqcGeXcRzsaM2DIBEnku32TM7Xb-aCJYdKtawEfvD1zEwE1of02BoGva3sf_RhijMZpOA3yIG3FCDll-3M1rILP9Bi4FPz_uOAbJkKvUirAdaMX-KNaw6T_0nnBwHaFc8M9GGVZV6bT4uaOQ1U0Ezi4SAcBWW8kkPKZNorpRC5EtO_X6uvIVazj5EHERuw', + token: 'eyJhbGciOiJQUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.J5W09-rNx0pt5_HBiydR-vOluS6oD-RpYNa8PVWwMcBDQSXiw6-EPW8iSsalXPspGj3ouQjAnOP_4-zrlUUlvUIt2T79XyNeiKuooyIFvka3Y5NnGiOUBHWvWcWp4RcQFMBrZkHtJM23sB5D7Wxjx0-HFeNk-Y3UJgeJVhg5NaWXypLkC4y0ADrUBfGAxhvGdRdULZivfvzuVtv6AzW6NRuEE6DM9xpoWX_4here-yvLS2YPiBTZ8xbB3axdM99LhES-n52lVkiX5AWg2JJkEROZzLMpaacA_xlbUz_zbIaOaoqk8gB5oO7kI6sZej3QAdGigQy-hXiRnW_L98d4GQ', privateKey: rsaPrivateKey, jwk: rsaJwk, publicKey: rsaPublicKey From 6e87aa4ea34be23e8bd1bc505123515e57482715 Mon Sep 17 00:00:00 2001 From: Maria Ines Parnisari Date: Wed, 9 Mar 2022 15:48:20 -0800 Subject: [PATCH 531/611] Reference FGA in the introduction --- views/website/md/introduction.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/views/website/md/introduction.md b/views/website/md/introduction.md index fe2143fa..4b2d0fa2 100755 --- a/views/website/md/introduction.md +++ b/views/website/md/introduction.md @@ -105,6 +105,8 @@ Authorization: Bearer This can be, in certain cases, a stateless authorization mechanism. The server's protected routes will check for a valid JWT in the `Authorization` header, and if it's present, the user will be allowed to access protected resources. If the JWT contains the necessary data, the need to query the database for certain operations may be reduced, though this may not always be the case. +Note that if you send JWT tokens through HTTP headers, you should try to prevent them from getting too big. Some servers don't accept more than 8 KB in headers. If you are trying to embed too much information in a JWT token, like by including all the user's permissions, you may need an alternative solution, like [Auth0 Fine-Grained Authorization](https://auth0.com/developers/lab/fine-grained-authorization). + If the token is sent in the `Authorization` header, Cross-Origin Resource Sharing (CORS) won't be an issue as it doesn't use cookies. The following diagram shows how a JWT is obtained and used to access APIs or resources: From 4d8d5ba0140df3c3b73b07bd068129c164909657 Mon Sep 17 00:00:00 2001 From: Maria Ines Parnisari Date: Wed, 9 Mar 2022 16:04:03 -0800 Subject: [PATCH 532/611] remove deprecated go library --- views/website/libraries/9-Go.json | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index 5d1852c6..ac602548 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -315,37 +315,6 @@ "repoUrl": "https://github.com/pascaldekloe/jwt", "installCommandHtml": "go get github.com/pascaldekloe/jwt" }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": false, - "hs512": true, - "rs256": false, - "rs384": false, - "rs512": false, - "es256": false, - "es384": false, - "es512": false, - "ps256": false, - "ps384": false, - "ps512": false - }, - "authorUrl": "https://gitlab.com/rucuriousyet", - "authorName": "Seth Moeckel", - "gitHubRepoPath": null, - "repoUrl": "https://gitlab.com/rucuriousyet/jwt", - "installCommandHtml": "go get gitlab.com/rucuriousyet/jwt" - }, { "minimumVersion": null, "support": { From d0b2e33c76c4aba5561a3501c2753d8951c07f94 Mon Sep 17 00:00:00 2001 From: Maria Ines Parnisari Date: Thu, 10 Mar 2022 09:45:24 -0800 Subject: [PATCH 533/611] fix: FGA link --- views/website/md/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/md/introduction.md b/views/website/md/introduction.md index 4b2d0fa2..81304b3c 100755 --- a/views/website/md/introduction.md +++ b/views/website/md/introduction.md @@ -105,7 +105,7 @@ Authorization: Bearer This can be, in certain cases, a stateless authorization mechanism. The server's protected routes will check for a valid JWT in the `Authorization` header, and if it's present, the user will be allowed to access protected resources. If the JWT contains the necessary data, the need to query the database for certain operations may be reduced, though this may not always be the case. -Note that if you send JWT tokens through HTTP headers, you should try to prevent them from getting too big. Some servers don't accept more than 8 KB in headers. If you are trying to embed too much information in a JWT token, like by including all the user's permissions, you may need an alternative solution, like [Auth0 Fine-Grained Authorization](https://auth0.com/developers/lab/fine-grained-authorization). +Note that if you send JWT tokens through HTTP headers, you should try to prevent them from getting too big. Some servers don't accept more than 8 KB in headers. If you are trying to embed too much information in a JWT token, like by including all the user's permissions, you may need an alternative solution, like [Auth0 Fine-Grained Authorization](https://fga.dev). If the token is sent in the `Authorization` header, Cross-Origin Resource Sharing (CORS) won't be an issue as it doesn't use cookies. From a2588580d243fb79a3ce3f077ee0addd7f676bd4 Mon Sep 17 00:00:00 2001 From: Matteo Baccan Date: Sat, 12 Mar 2022 00:45:48 +0100 Subject: [PATCH 534/611] Harbour JWT Class --- img/website/34.webp | Bin 0 -> 4524 bytes views/website/libraries/34-Harbour.json | 42 ++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 img/website/34.webp create mode 100644 views/website/libraries/34-Harbour.json diff --git a/img/website/34.webp b/img/website/34.webp new file mode 100644 index 0000000000000000000000000000000000000000..93d165faf3ebbcb1338a578db861104e28458747 GIT binary patch literal 4524 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 KWH{8U4z*hGx#2MY literal 0 HcmV?d00001 diff --git a/views/website/libraries/34-Harbour.json b/views/website/libraries/34-Harbour.json new file mode 100644 index 00000000..16226385 --- /dev/null +++ b/views/website/libraries/34-Harbour.json @@ -0,0 +1,42 @@ +{ + "name": "Harbour", + "uniqueClass": "jwt", + "image": "/img/34.webp", + "bgColor": "rgb(227, 28, 35)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "typ": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": false, + "rs384": false, + "rs512": false, + "es256": false, + "es384": false, + "es512": false, + "ps256": false, + "ps384": false, + "ps512": false, + "eddsa": false, + "es256k": false + }, + "authorUrl": "https://github.com/matteobaccan", + "authorName": "Matteo Baccan", + "gitHubRepoPath": "matteobaccan/HarbourJwt", + "repoUrl": "https://github.com/matteobaccan/HarbourJwt", + "installCommandHtml": "see https://github.com/matteobaccan/HarbourJwt" + } + ] +} From a04ca647716b1b7eaf53c3b638023d5c9ca9c9fc Mon Sep 17 00:00:00 2001 From: Matteo Baccan Date: Mon, 14 Mar 2022 11:51:05 +0100 Subject: [PATCH 535/611] Changed harbour icon to a round version --- img/website/34.png | Bin 0 -> 9713 bytes img/website/34.webp | Bin 4524 -> 0 bytes views/website/libraries/34-Harbour.json | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 img/website/34.png delete mode 100644 img/website/34.webp diff --git a/img/website/34.png b/img/website/34.png new file mode 100644 index 0000000000000000000000000000000000000000..f1fe6ae03e51f637d85ccccfc66b7c9173622650 GIT binary patch literal 9713 zcmXYX1z1$i_xIhUyGxJ~r4b4FqQugzxs4glBs=(8~ zADg?Ag$#L0JvTM{*WYATuK0-1!TlU)I2f{GCdP@rZSg~eC|{#FL%E!*2&Sr z3)_wJ&s@WRw)4S4Rg=+6u&FZSGDU2I>dB|tN{x9@p9TP ztVt*@I&r~Vli2V+_`-b1rcWZA6|wo1D~CSq-2bg1S&57_W=WdaJ}z%M8n9>Ym9|H~ zmjtAhTOrcM#PJ$Ekw?Xopp#iT{Y1s_#FRX0`)rF`}`6w5MlI$FtYJ1B+YlQ$K&^kVbNx zZOix{O{tMZN8UCg?0gkiH$jpqh1LIAn&D#p`y%q9iwXVa!jfB!_l-9rt6!?y$#ZyT ze_X9kr^MVhRr+=u7*Xmb|L9gt&g@kULwB>gT5isve)k z$Jfo%%n5qC9nR}Fpr$>^Ikp|=U`_4|oQ$t5wOp=DQF_@u5c53!R&54yZYt^Q{Tv>9 z6%YA9rLWf^ICr~VS5zqDZDm0LruD_l=u7=P9Jab_yy4kTtbV^r$GR=G%eX|hp}fqE zh6`tV^=_^1sC4IriuRfdd$um&e-f0s$De zlNH24@uv-Lv(_wDnTL;km1pYiF@?~D2D z34e-8HNbmKra1T18;c4>11sb~CE;D~Pl*v|TKn?wiD~~~pK*rxrzb})HD$~j1`j8- zR4vhNUa})^o|Cn&cf{~|zh5^A<)IzHA+7V#^61#XZ+K)#RQ!RQZ`KkFul$a3`Fe_s zFJsu?3vO$u^iMC|2~jV(8*SF;xn~Z{Koe~ z`9_i6D_q>6RL=6h56mpq`6nP&JzyNL?TsP%6 zs{P9*r$s+E4xc6KPSP5o?*zBPQ!0)BM32!cwRPy>qA2?zMUMev6(nH}bQ7dAj=}T*E#{C~h_8PClcIFvWlc*44Zq7L-@O*)pwSJVEMH+{ zX$`sX|B-6rvvYjp{#@Vlq3mMC-)>}Juf}TeZlHfh6P3`omKA4O_aWk@CP z*7r*Fj(0)xX8N-R4p&3e-Np-|`51ZHAkB#D^)%RU*q7lYGVLz6j=1wI)50^so8EyWZ&zAjGT@gRG*!ME|K?Vg}7Yg z;GqK1O0|T!H|}5h8`gz|epw5p{dVu9u|3o$1&S%ANAxL$-lx>~6-awuut-OLq?f=Z z*N$tp5MZ#n?~ASurJZ_u+ZiZ;zxo!5k{0CI|kxpl`o^9jzO`{-v=T z@@RLJ)*`3S5>`~}^~gz;Qn#Pfo->Qa3YaSOVGxr7=YAO`F7%)7UNo&S7q$tee+Y)A zY(Cu__&YZ#%D--|sg{br7ENdHABW&6F%l17j}hH1K6#WK+iHBpQ(f=I4;!1CM5^?w zpiHS1PrqwMwh3@Y$A@KlY+e|*dR{zqTygSvPTfW#0TZIFfBBufSL5rTA@m$afe={3 z`oSPEK1c!8+V%E69?eqvZ;N32v!>uWBr-GrO<`EL?rEsT%bWf?OX7Q3;u7E(;AMPi z?Jm%0ZrU|3i`tpx0ISh2RzEYZ#2xA39z5K+I1$wI-66r!E@SCq1WMF;uct2aTbD9l ztlGY$3<-#@`U3dOubc=|Womkk{ITn=V}Qq+=Ej{7s0aRnN%Y%}FGH*b;}TTeh3oXE zoWy^9HJK=j&0IENNxPXV@2p8%Q>E+}A7_AZ$4$z4DZW#iRX|2o5?htoxRi3s&WuWS z;)chie_#&*Y!}=&GqDVX<>)vU9d-z3FCRMdiLm&^r2JL-v>ZpD97Ck^y^rwhaZ^0L z_jco4c#K6G%$IQA;-gyjmNV8tJ z*V^o)GuoLX=Ebc?_RlY<^jRwPcJFPz6fF&JHPJ9(qPKanVLhxih`nFp*PSk&zPwW{ zt7h9brw|iSHXtoVxKTgzJlp0EXrm^x!7j;2f+8TWx_y4{O@DLTO{}Yt-bUXi=g{A; zvF@~bb~#c6;fe8ez4`(f%B~R%f9a{7YrPw!!Snz^Q^N~!0=gfGzWma#$4bhlTJx$nvbmC1!N8qx;g@1C66`3oJd+|1zW$TPNA^9;t4JgNZ5 z%fyu}7bp2BSMNyuITj=EkdX&#f7rdJg6p_&3CO)6M$d7A0k{sn?;ZoCuDap}#Zu%@ zjK!6i%sKwPtT>Ecq{;I3e0o_;0+mvwMX+eH{3A7>C|%g+_N#kL3|VU(phkcPGx&R8 zmhFABUE|FnAf@UcZZfCC<66>WHP_-3O&7jBPw3l8quYruC=!O$*dNUxx54 zx&|(K4$E(aoC~>5RSRDQILEY;fYe_Yf3BaMge^?^(9* z#b#VW!jvz82yI>%nsnF1onppE&&(~0swXP|qV^ly4gwda1ZXW`v=Kx8Mj0~ZN*uyS zkzk0an}bP_8Mb&cySQE`MX4TON*5q5LG-ZwuExoReOb$*qYR3ygi&VpxL*1|lfe?d zQKlwMm`jKpi1RH!fMVFY*vn?!(ECzpdd zDA~2(1xDYqT{K)j%dtY83DJ-^RR(-?wU@LAE^_`>hb`klygD~To-XYK%0R_P+-l2|xp7URX**(aKUdfE~ z8!gNpbRvmqLl?m<9P$@6C0D?yQ7#q~p9+jk6zqM zcKGSE08vz(7w;j^Mloh zEm7h#!0b?+vyA`-G|c@tTA!GYnSQ*|L|+r7Zqq~kT}Oi2eiN$zK>OO~`e$`x-dE3; zGZkt&WSK5^zXk}@(8Lp7OHB-C3q5R(t?d42oOeroo@=H*J43d_eo!9u*Et8BZm?!R zFc{E8MK|D|zruSe8~=?bgU{hFLm|z`Bt8+AN1EVk1T_p|!_p$+bP+i;M2fZ{Q38w08$+#fV4(dIE17R1Kl7le6A}q<{+GG==kq*hXrs% zrJwH^jt1^e-9g38v?w#*%UuUa)=7hu&q?mw>%n{?fI0-sAL%-4eIMtM&|)%2Za74i zd3_!$eSFVmgz7yfcJY%Kk)KWk^Fv3(sW?(CNi|Wvv&l{T|AD!DxS78_f1!vhe-_KN zU-+?MoxLPLeo0JT;mb+t<#H8v_S}j4h~>*?J%=EG7zG(ow594U@WXs=PLF);vsk;m z-$q*Nbq9%$uF8tNlIz~%j1YCYB3a8<8%{|{Iy?lvO6Gy1D|IFZFd^RRak>2QNZ;wl zOqt$NeXG-Oz1=+5=mE!uoEsR-{LPhBL}OKH5glwpr`v|A%M@c79K~_t2|n4q&7oZ< zYW3Vx_q#Bk`9_1DNNzy|x4io0#KmFF%dDUEl~bz?NiCcm5uiGDFzBt;vRB>gJVq=k zy}bR}=hNEK{RR#w_>a>iy7Y?{||HtH^XkDUT(1-_v(;qRAdnFI_D|jSow5DFH}VQ@wm2rp+sLAA}zd;2ISN z-)!_(a^w0E?tcHLQ&UJB83;pX=0q)t#wBSRiz#k#987vz?YSVyuA(pB9MKcxC#pQR zSys{fi=(qmdJL$KheNB_TtIE65>x-4>wPyCejqh~bH|*}z0ejcTUyd+Y8dt25x0}z zoud?aPndam&133Mrz2Lz39HXdG(}n-6y$UatnX|v%R>~1VHW~m*p*9A-07PfC^v^& zY4J{6TmuX$ZK4$!sQ>V*IDhYya6_7Bim-$I4rA%V1Ws9#g6wk8^qxFi-fG3@e+U4$ z%5c*=Sd7M&+mRA`vxvA`1!LE`F4L4m3(O^_3>D>hLCZ_av3J$t#FbX&(@5-MNRVSe zCe3T`e_hM&M;U%=`Dw2PniKEmSH72|eG~al33SA=rZ#$yH|3pH3mq|Xny8ZK%xMsU zu_*w`gfZ9=b0GB4u34Ma`kfe3l9p>xMXtk7i-`Zv$!+DNxp?oEb@-RoSW2E%h|1o@ z&mU%`fWa#sz6iU8tKH+S0G;~}Xw?xmA+=*JNFDwITY05{XiUHNXyjXt^$vpwcnfCj zmb;s?MtUM*1(**uO-K4nn_049gCR_|^iXN2F%%85k3S+y8HGV=1dS5nfM-^h#eT&lce7blFIwlTF`V9^_vh*1zl zr!&$1@T?KG;VAPp0Ie_5GFShQiXuyv_-ANtSZw;o=Y+41u51p^Y_=Wokb`o%BG@Dd zuiMS>dWy`PsT~g{qXI3pOI>t76wMRk!}Jy(Jsx-XMk;>&RuZ4>)L%SmaI1UzGu3io z=sr7$fn8^#F|aRcwKpiW=in?5CpQ1g*sjr>$ z_2ytB2Ph@a#>9uvG4aiQTd7^5Vhku#=*EYs0_x@W!XCMUN6)amZkq%JMVOZf1PFV- zt7$QpvzQstoh?VJS~uzHHxwOBvkPjRd+F+2;v?dX(20@`UqBE%*TM@lh@mgL6!Mh-?MwDi`&m@uSd}y8|7tD zKn&yf?sN+747;TvA!@t&XaV$CHiI2d=T?L3g$)+>zCLU(WL8|3r?d}@od`t$^;-1sM zw$;!3Ro0O%oX<$+MeFfwbr{MP=l7_3CZbj;zJl_v=JHgp8-y@Fe0}Wq2}y z)>yX3jyh||rFAV7MZOHx@ zHeh5^WSN?5nwD&+-Dqg`J-5IVK7kVwQuR&NLIrZ)>vti==Vx>=*T21U($}ZCzHj1U z#34im2ThI^We)a)d_j`9Hox$5F$+hPcv{Yp@%T2>U!wml?_xEebx_Z11U+!HhPpSg zP&t&RHMq{li8qcimy;Vu=OSlaHvU)HbtmZE_TqZs*T}HfO9eu$IAi2!Gm3~@nFt1H zBV|a4V^v3>vziA^F!hsmp-LLc z=QjP5q)%6bofeT{(U>Y5OR>B`DkC!95R^A00;+@-OZLFwD^OQD^Zm#C)ZUt)0GvQmxmH>yD?=_LJ>ri~adqje3xj106V;9odoVploVj?G zV`RlrXQ;Q)f3z3Kg$|=6mrYQ;_N~nYdR7PQ!B|dL)z_!f>j?T><6xa^HQ-kLOD# zE5u?1BH;%or{$unja9WmY+nzZE<8N5`>Kcy$<0{44t0+wIEOo{R)0?zJDaFJ<31_9 zS@-72lxD5T~?*guWb_0_1?$G+)8XdE|r${6T^rvV5N z>fg$_fReQ(K$qA@{_!fSYFQOCNmaEeZ&G6t_fi%c#K zdD`{G%kr}~o@R9XLJ1)7_8H#WW4@~D9Nu8@E^Vm5RDCS!S)oypbbu*SR-rC*jZ`bU z3+ zHt!?>Fe2^&;d16O+Wgbc6rN(u#Dt67Wrw%rUJVr^B-ct# zQa<-!AqwwTja%=sG4g&T^oBC~3w%gC{;b-Ct+ar5CIP#3pva_R@i;cl;7--pc{I zyP8-m0UJKfAfp`AybQyiT`V)sjbyb;vjgLVlE#W{W-WNX75&#&Dza>;GN5IWh4+_L zSPT{|NC#Y>__ZDgKin|xoz;^Sut0LArx1A`6%U_3Jf6`g^s)%|g|&S#mkuvR;wYN$ zyzsd3Z5=%#yS?|W55<$N&@d2>9{PqmYx#_jnKvzVYwc8rhnGkOKJps#1z`dip_4#q z0hg8J7|E30xb4(4z3}G4vF8q7X|NwJ_`W^eyIMcf%cHliuLkf%lY^J8EpGiDZu>$N z7+v#a0?eiP6z{}~28V;2bz)MEPEHK*W;Rx!gnLBfWQu3!FU7RfCpMyz6YD&XkZOw?(v#A-yz}cJLajCqMCR&1#bX{5{jyK=UmP5uMnI1X$ z6unl%07^K&Vb=6lr#=)*R!7?CfpCq0oKF#pt$VDiCfHP$kE<+8`CLs>?jPG3RAdDT zyAovCl4J@JHC1GaK-T~_uXT}xoAYRmsl)44yLLiKDT@rhgjkvxhk~hIU(Np0sR14? zrzEmolt`X*00TxEy;jINdBm25jKKo^p8FZ3a&*Hz80nis+th(ON^<~%6Si1c2#HLY z`Ibs=uW_iJljtNKlw<4y04uaw@E_uKMP@Pu|Fb{_#X@bzjGdB{{rs zN}l~?9Ei^(AWJ1c#g#cAxT;#Q<0^*mNbP|i?>!snQ^ake8SIpV&mbkaeCQ_ ziU_bm!pRVL|FnSS_RDuUab)-^_;2~0_Z}*A4-LuslTR~U{mk$LPwLoEaN;|Pq>-T_ zg%Jix^Z2dJaaCnc4sc5~j?0Jl9UMm3Zd?jSFqA|-^%9GKMh;zmRu&efSz}{BXQGvC z3FgY!6I|G;eC!KVJe{>qJ0XSoKQ-+>;>XT5Jq40W zMHkFN72I0sMGX84AEOxUXBwDw2>V0cn z^;=9Z$&IrLe-SQikli)@E%)-VzV$Bu?4L8H~^UHH`F@I#hAf{7DnDO0uV`keykP2hZf zH%;!3EA5#lYPp%La@Fp1cMIMrOH)e+)Yx939a;WW^?Xdh-g)!gPHdk!Ke%wGj?v4w zzRF6CFndKdo-j6~rk3@Y^#^Bs#H;dB!GY8OO4-QzEvE)llSTU6TW=xzDH+%bS=w)K`I1*SCfD-(#7T_j`P^PrHHZ8WU zAaAfN*8(J^(UMn|;ZmNXHU2EM;6nr}RcwcdM*R}WX}Cz`vg4drJ5w6{ z8-F;KWk{igq&9Cn1$*k)T1|3n-It2)2`imxTiXJzPqJgC!+l^J%B{AbhNC(|)>|54 z%C2y)|8B`%@g5)f6(>E0JOQ|g(&)c*V`#;jlWwI52po`5wDw)=MCt#tD+J`>`5wte z(s_k$ypu{mNhVJY<+RV!{pFSKjbvj6_8PK3MFfLPM-5wN74`(%n~at5FpKH6Rc||? zWdbNQ-8K=_ZgGore~-hTfIq~XIV6`Uo)#m3ma`*LHTlxJ&``4xjFlhq1$*sNNx2S~ z)3G+Hi-o?QNyrt2qn~z|5XdYi*Bo^uZl%1_2DL?<`{HK#v2z=d4(qInaZj)$%#`Y+A>8`i4{dA>|ZUMBoj#3^LNXvn9{!O z6ctgXwfxkyW=l0>;Cv+`ugoBqKqZDj#eN#aP!-?zr|eiS?BTr0vsLQY>pDm3SenX) z@@L|yRenGP{^yZr>$KSL`-ghFw8)}=`s?%q1w3H=X?mPqujhJJR}ShC;hC)#>09=R zs^W2w^*HnA>UY6r7PrAwC=)f{fn_dcr0r$!I@2YT9ZrzgEbnDlJ>4?vLJ55)KUb&h zj|Mwn0Me!9ANStt-#>g?8~kRkO>%o@zi?ih-8{tpA^rtH$$M8qz)Bbggh-zr+_MEe zY~JLv_gu?mFCIS}{jG6i8l4S*yi^V6uJAbgu^@1?t9SI=&wbBeHWI&s-0v(>WAUl= z>7}OM{DfL08O~-1>s{+zwlL%A(ARA3r@+<+qfu6#Mse7V+AO_B!n5kHlAUk;9vcQn z~;-MsOsrgu=)l8Z^8g9;4EaYB;6c0N(_KqT3u4}fgIogcw()F@le}g zQfpwv2nK-D4(W6rKtiA*l93x>u*g;U^u3&a9j={kjGd?db-Y_HNabHdf#LvPk)t4p z>5diBA7GgRBQS}+1uvJR1}FVb0Um`34wq7W4?z$CR0SV4)l~6-X8=`hNQl}V2fhVR z68|Sn>3I*31IaP6vJ<$VKn_GjV3vf=P1=&8^8kqwnb<{H6FFeF_^vsNs~#GF0}P|E z1wn=-bwBpsVgVU|65><3l$Zcu0rbfrVdpFB(vAXEQ9WP8c}oe(yB-7S>ZwNirmI#0 z4IEIOD+J=?tUzHnmCzhVp2so1KtPFG4Oz)OZ8euK98gM7LsNR4w&BPZ11O!TVJd+K zxguZzijt~2juPd+VibpGJT#nwf4=dg?9B6|qxFqPC84N^BnXWbkpNbISda#aJ!wpd z-29WF3%MVPJ>g45se-U%vr2JVJg@{tTNEgHSw{FX5v+`XFQRB;x`b*6PjmXDe>efO zv`d}d$Nyg)O$~z8LP2}z+*bQHl1V$e_L{A1xlrUZ2?Aa|?L|5Ehh3Q!TmmAPCpp&P zmR&dnE-`HvsvY~b^x*9=AP2EmLi^KoZu>_bcuO1jZ0tjk{X{af3PSOpG`O4Klvr)3 zCQ3NA)>m48^!~l!Wa&3izk?5%MPSS3s>&}FG3<_2+?L|PMS{OiBVdCBh$bU_V m4>PUcsk@bf4lO_)g|+gX7}Gt5lE8{BKt@7A{F|sj!2bhv9$~rw literal 0 HcmV?d00001 diff --git a/img/website/34.webp b/img/website/34.webp deleted file mode 100644 index 93d165faf3ebbcb1338a578db861104e28458747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4524 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 KWH{8U4z*hGx#2MY diff --git a/views/website/libraries/34-Harbour.json b/views/website/libraries/34-Harbour.json index 16226385..eeb33968 100644 --- a/views/website/libraries/34-Harbour.json +++ b/views/website/libraries/34-Harbour.json @@ -1,7 +1,7 @@ { "name": "Harbour", "uniqueClass": "jwt", - "image": "/img/34.webp", + "image": "/img/34.png", "bgColor": "rgb(227, 28, 35)", "libs": [ { From 66f8b9f11d6da596c0750bf697fc938929525990 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 18 Mar 2022 10:53:06 +0100 Subject: [PATCH 536/611] enable ES512 in current webkit --- src/editor/utils.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/editor/utils.js b/src/editor/utils.js index 60121485..01238530 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -35,13 +35,15 @@ export function getSelectedAlgorithm() { return selected.value; } -export function isWebkit() { - return browser.engine.name === 'WebKit'; +export function p521Supported() { + return browser.engine.name !== 'WebKit' || + (browser.browser.name === 'Safari' && parseInt(browser.browser.version, 10) >= 15) || + (browser.os.name === 'iOS' && parseInt(browser.os.version, 10) >= 15); } export function disableUnsupportedAlgorithms() { // TODO: test supported algorithms in runtime - if(isWebkit()) { + if(p521Supported() === false) { algorithmEs512.disabled = true; } } From 26e8480502fd8c7491306835687bac2b2f0fbb79 Mon Sep 17 00:00:00 2001 From: Tom Lindelius Date: Sun, 20 Mar 2022 14:38:42 +0100 Subject: [PATCH 537/611] Remove deprecated PHP library --- views/website/libraries/24-PHP.json | 31 ----------------------------- 1 file changed, 31 deletions(-) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index 67f03986..777a53de 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -222,37 +222,6 @@ "repoUrl": "https://github.com/vaibhavpandeyvpz/jweety", "installCommandHtml": "composer require vaibhavpandeyvpz/jweety" }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": false, - "es384": false, - "es512": false, - "ps256": false, - "ps384": false, - "ps512": false - }, - "authorUrl": "https://github.com/lindelius", - "authorName": "Tom Lindelius", - "gitHubRepoPath": "lindelius/php-jwt", - "repoUrl": "https://github.com/lindelius/php-jwt", - "installCommandHtml": "composer require lindelius/php-jwt" - }, { "minimumVersion": null, "support": { From 491ef2c27d73a503c6402203fc2a0f06fe824fc8 Mon Sep 17 00:00:00 2001 From: Alan Nelson Date: Mon, 9 May 2022 14:35:44 -0500 Subject: [PATCH 538/611] Update 24-PHP.json Update supported signatures for firebase/php-jwt --- views/website/libraries/24-PHP.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index 777a53de..24607857 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -23,11 +23,13 @@ "rs384": true, "rs512": true, "es256": true, - "es384": false, + "es384": true, "es512": false, "ps256": false, "ps384": false, - "ps512": false + "ps512": false, + "eddsa": true, + "es256k": false }, "authorUrl": "https://github.com/firebase", "authorName": "Firebase", From 68b627cdd0be2ff80d81113cd2f4de4c1293cef7 Mon Sep 17 00:00:00 2001 From: Florent Morselli Date: Sat, 14 May 2022 10:15:22 +0200 Subject: [PATCH 539/611] Archived project "spomky-labs/jose" removed Hi @Sambego The library "spomky-labs/jose" I created years ago is deprecated and does not receive any update since December 2020. The repository has been archived. We are in 2022; it is now time to remove it from the list of available libraries. Regards. --- views/website/libraries/24-PHP.json | 32 ----------------------------- 1 file changed, 32 deletions(-) diff --git a/views/website/libraries/24-PHP.json b/views/website/libraries/24-PHP.json index 777a53de..9b025033 100644 --- a/views/website/libraries/24-PHP.json +++ b/views/website/libraries/24-PHP.json @@ -98,38 +98,6 @@ "repoUrl": "https://github.com/emarref/jwt", "installCommandHtml": "composer require emarref/jwt" }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": true, - "sub": true, - "aud": true, - "exp": true, - "nbf": true, - "iat": true, - "jti": true, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true, - "ps256": true, - "ps384": true, - "ps512": true, - "es256k": false - }, - "authorUrl": "https://github.com/Spomky-Labs/jose", - "authorName": "Spomky", - "gitHubRepoPath": "Spomky-Labs/jose", - "repoUrl": "https://github.com/Spomky-Labs/jose", - "installCommandHtml": "composer require spomky-labs/jose" - }, { "minimumVersion": null, "support": { From 540a21db716cfb88541db8bd93accd79bb0001d5 Mon Sep 17 00:00:00 2001 From: Jeremy Kuhn Date: Tue, 9 Aug 2022 17:19:39 +0200 Subject: [PATCH 540/611] Update 3-Java.json Hello, I've just released implementations of JOSE RFCs in an Inverno framework module. The library is quite complete and can actually be used independently from the framework so I thought this might interest some people. I'm not sure about the process to get it registered on jwt.io or whether this is even possible which is why I've made this PR. Please let me know if more is needed (e.g. tests or other...). Regards --- views/website/libraries/3-Java.json | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index a670cdc6..3f328bad 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -186,6 +186,39 @@ "gitHubRepoPath": "vert-x3/vertx-auth", "repoUrl": "https://github.com/vert-x3/vertx-auth", "installCommandHtml": "maven: io.vertx / vertx-auth-jwt / 3.5.1" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es256k": true, + "es384": true, + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true, + "EdDSA": true + }, + "authorUrl": "https://github.com/inverno-io", + "authorName": "Inverno Framework", + "gitHubRepoPath": "inverno-io/inverno-mods/tree/master/inverno-security-jose", + "repoUrl": "https://github.com/inverno-io/inverno-mods/tree/master/inverno-security-jose", + "installCommandHtml": "maven: io.inverno.mod / inverno-security-jose / 1.5.1" } ] } From c2e7d5d8d50e78c35318d4874eb22e5fc470db5a Mon Sep 17 00:00:00 2001 From: Jeremy Kuhn Date: Wed, 10 Aug 2022 10:23:23 +0200 Subject: [PATCH 541/611] Update 3-Java.json --- views/website/libraries/3-Java.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index 3f328bad..763fe798 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -218,7 +218,7 @@ "authorName": "Inverno Framework", "gitHubRepoPath": "inverno-io/inverno-mods/tree/master/inverno-security-jose", "repoUrl": "https://github.com/inverno-io/inverno-mods/tree/master/inverno-security-jose", - "installCommandHtml": "maven: io.inverno.mod / inverno-security-jose / 1.5.1" + "installCommandHtml": "maven: io.inverno.mod / inverno-security-jose / 1.5.2" } ] } From 39cbed3bd9c7b7e9aba53a9f78c84131d2583404 Mon Sep 17 00:00:00 2001 From: Hsiaoming Yang Date: Sat, 27 Aug 2022 14:27:49 +0900 Subject: [PATCH 542/611] Add ES256K and EdDSA for Authlib --- views/website/libraries/1-Python.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/1-Python.json b/views/website/libraries/1-Python.json index 4da66b7f..4667ebc4 100644 --- a/views/website/libraries/1-Python.json +++ b/views/website/libraries/1-Python.json @@ -125,7 +125,9 @@ "es512": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "eddsa": true, + "es256k": true }, "authorUrl": "https://github.com/lepture", "authorName": "Hsiaoming Yang", From 72f72615e120abbd8a9844d0485bde4acb03e663 Mon Sep 17 00:00:00 2001 From: Brian Campbell <71398439+bc-pi@users.noreply.github.com> Date: Thu, 1 Sep 2022 09:43:58 -0600 Subject: [PATCH 543/611] updates for jose4j (typ, ES256K, and version) --- views/website/libraries/3-Java.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index 763fe798..343950d0 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -47,6 +47,7 @@ "nbf": true, "iat": true, "jti": true, + "typ": true, "hs256": true, "hs384": true, "hs512": true, @@ -56,6 +57,7 @@ "es256": true, "es384": true, "es512": true, + "es256k": true, "ps256": true, "ps384": true, "ps512": true @@ -64,7 +66,7 @@ "authorName": "Brian Campbell", "gitHubRepoPath": null, "repoUrl": "https://bitbucket.org/b_c/jose4j", - "installCommandHtml": "maven: org.bitbucket.b_c / jose4j / 0.6.3" + "installCommandHtml": "maven: org.bitbucket.b_c / jose4j / 0.8.0" }, { "minimumVersion": null, From 2887da9d52905def2999e78d9f089e9c8cb7380c Mon Sep 17 00:00:00 2001 From: belcortes Date: Mon, 19 Sep 2022 13:06:28 -0700 Subject: [PATCH 544/611] Replacing auth0 logo --- img/website/pic_logo_ft.svg | 5 ++++- stylus/website/index.styl | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/img/website/pic_logo_ft.svg b/img/website/pic_logo_ft.svg index 9eec2d65..f29ae85d 100644 --- a/img/website/pic_logo_ft.svg +++ b/img/website/pic_logo_ft.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 265ac70f..fc43a6d4 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -228,7 +228,7 @@ body top -1px img - height 24px + height 30px .by-text color white From 7093446727407dbdca8e66b87d58a967e1876926 Mon Sep 17 00:00:00 2001 From: belcortes Date: Tue, 20 Sep 2022 08:08:15 -0700 Subject: [PATCH 545/611] Making it slightly bigger --- stylus/website/index.styl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index fc43a6d4..bae83b0a 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -228,7 +228,7 @@ body top -1px img - height 30px + height 35px .by-text color white From 7a427c5804ea45018e90d70a92c33bd7758d2d69 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 28 Sep 2022 12:29:25 +0200 Subject: [PATCH 546/611] Update 33-Deno.json --- views/website/libraries/33-Deno.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/33-Deno.json b/views/website/libraries/33-Deno.json index 039a5b3d..51463288 100644 --- a/views/website/libraries/33-Deno.json +++ b/views/website/libraries/33-Deno.json @@ -29,7 +29,7 @@ "ps256": true, "ps384": true, "ps512": true, - "eddsa": false, + "eddsa": true, "es256k": false }, "authorUrl": "https://github.com/panva", From 9cf842893ef60a465f742b872f030c5c3f9eb352 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Thu, 29 Sep 2022 08:04:08 +0200 Subject: [PATCH 547/611] Update 33-Deno.json --- views/website/libraries/33-Deno.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/33-Deno.json b/views/website/libraries/33-Deno.json index 51463288..039a5b3d 100644 --- a/views/website/libraries/33-Deno.json +++ b/views/website/libraries/33-Deno.json @@ -29,7 +29,7 @@ "ps256": true, "ps384": true, "ps512": true, - "eddsa": true, + "eddsa": false, "es256k": false }, "authorUrl": "https://github.com/panva", From 0686d3755f3ab001e43cd279cfde32b144fa9245 Mon Sep 17 00:00:00 2001 From: Brian Campbell <71398439+bc-pi@users.noreply.github.com> Date: Wed, 5 Oct 2022 14:47:05 -0600 Subject: [PATCH 548/611] updates for jose4j supporting EdDSA in v0.9.0 --- views/website/libraries/3-Java.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index 343950d0..1079bd99 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -60,13 +60,14 @@ "es256k": true, "ps256": true, "ps384": true, - "ps512": true + "ps512": true, + "EdDSA": true }, "authorUrl": "https://twitter.com/__b_c", "authorName": "Brian Campbell", "gitHubRepoPath": null, "repoUrl": "https://bitbucket.org/b_c/jose4j", - "installCommandHtml": "maven: org.bitbucket.b_c / jose4j / 0.8.0" + "installCommandHtml": "maven: org.bitbucket.b_c / jose4j / 0.9.0" }, { "minimumVersion": null, From fc75128a6f80ac8fb531a195e3e1a0ec7d78d2cf Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Thu, 6 Oct 2022 23:03:45 +0200 Subject: [PATCH 549/611] update deno, eddsa is finally in usable state --- views/website/libraries/33-Deno.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/33-Deno.json b/views/website/libraries/33-Deno.json index 039a5b3d..51463288 100644 --- a/views/website/libraries/33-Deno.json +++ b/views/website/libraries/33-Deno.json @@ -29,7 +29,7 @@ "ps256": true, "ps384": true, "ps512": true, - "eddsa": false, + "eddsa": true, "es256k": false }, "authorUrl": "https://github.com/panva", From 4dd0aa79c9f2bea75d552548cfbba87e2e645b6e Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sun, 6 Nov 2022 14:14:58 +0100 Subject: [PATCH 550/611] add bun --- img/website/35.svg | 1 + stylus/website/index.styl | 4 +++ views/website/libraries/35-Bun.json | 42 +++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 img/website/35.svg create mode 100644 views/website/libraries/35-Bun.json diff --git a/img/website/35.svg b/img/website/35.svg new file mode 100644 index 00000000..7ef15001 --- /dev/null +++ b/img/website/35.svg @@ -0,0 +1 @@ +Bun Logo \ No newline at end of file diff --git a/stylus/website/index.styl b/stylus/website/index.styl index bae83b0a..5218d084 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1326,3 +1326,7 @@ footer .jwt-playground .algorithm-code .tab-content .input:hover .editor-warning display: none; + +.bun h3 { + color: rgb(0,0,0)!important; +} diff --git a/views/website/libraries/35-Bun.json b/views/website/libraries/35-Bun.json new file mode 100644 index 00000000..db23c7d0 --- /dev/null +++ b/views/website/libraries/35-Bun.json @@ -0,0 +1,42 @@ +{ + "name": "Bun", + "uniqueClass": "bun", + "image": "/img/35.svg", + "bgColor": "rgb(251, 240, 223)", + "libs": [ + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "typ": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "ps256": true, + "ps384": true, + "ps512": true, + "eddsa": false, + "es256k": false + }, + "authorUrl": "https://github.com/panva", + "authorName": "Filip Skokan", + "gitHubRepoPath": "panva/jose", + "repoUrl": "https://github.com/panva/jose", + "installCommandHtml": "bun add jose" + } + ] +} From ef8993f871da831b879ccb29f4cb92f4f4dbc1ee Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 9 Nov 2022 16:33:22 +0100 Subject: [PATCH 551/611] chore: bump deps --- package-lock.json | 15916 +++++++++++++++++++++++++++----------------- package.json | 4 +- 2 files changed, 9648 insertions(+), 6272 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3a3e9401..3d2092ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,9 +49,9 @@ "grunt-mocha-test": "^0.13.3", "grunt-webpack": "^3.1.3", "highlight.js": "^10.4.1", - "inject-loader": "^3.0.1", + "inject-loader": "^4.0.1", "isotope-layout": "^3.0.6", - "jose": "^4.1.0", + "jose": "^4.11.0", "jquery": "^3.4.1", "lodash": "^4.17.13", "loglevel": "^1.6.2", @@ -74,340 +74,449 @@ "xhr-mock": "^2.4.1" } }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "dependencies": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", "dev": true, - "dependencies": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz", - "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.1", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.0", - "@babel/types": "^7.11.0", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "node_modules/@babel/generator": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", + "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/generator": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", - "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, "dependencies": { - "@babel/types": "^7.11.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.10.4", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" } }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", - "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true, - "dependencies": { - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "dependencies": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", - "lodash": "^4.17.19" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", - "dev": true - }, - "node_modules/@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true, - "dependencies": { - "lodash": "^4.17.19" + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", - "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, "dependencies": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, "dependencies": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "dependencies": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", - "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", "dev": true, "dependencies": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.2.tgz", - "integrity": "sha512-Vuj/+7vLo6l1Vi7uuO+1ngCDNeVmNbTngcJFKCR/oEtz8tKz0CJxZEGmPt9KcIloZhOZ3Zit6xbpXT2MDlS9Vw==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -416,140 +525,285 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", - "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", - "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", - "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-async-generators": { @@ -559,15 +813,36 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-dynamic-import": { @@ -577,6 +852,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-export-namespace-from": { @@ -586,6 +864,24 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-json-strings": { @@ -595,6 +891,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { @@ -604,6 +903,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { @@ -613,6 +915,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-numeric-separator": { @@ -622,6 +927,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-object-rest-spread": { @@ -631,6 +939,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { @@ -640,6 +951,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-chaining": { @@ -649,336 +963,552 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "dependencies": { - "regenerator-transform": "^0.14.2" + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", - "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/polyfill": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.10.4.tgz", - "integrity": "sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", + "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", + "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", "dev": true, "dependencies": { "core-js": "^2.6.5", @@ -986,85 +1516,98 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz", - "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-proposal-private-methods": "^7.10.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.4", - "@babel/plugin-transform-arrow-functions": "^7.10.4", - "@babel/plugin-transform-async-to-generator": "^7.10.4", - "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", - "@babel/plugin-transform-classes": "^7.10.4", - "@babel/plugin-transform-computed-properties": "^7.10.4", - "@babel/plugin-transform-destructuring": "^7.10.4", - "@babel/plugin-transform-dotall-regex": "^7.10.4", - "@babel/plugin-transform-duplicate-keys": "^7.10.4", - "@babel/plugin-transform-exponentiation-operator": "^7.10.4", - "@babel/plugin-transform-for-of": "^7.10.4", - "@babel/plugin-transform-function-name": "^7.10.4", - "@babel/plugin-transform-literals": "^7.10.4", - "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", - "@babel/plugin-transform-modules-umd": "^7.10.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", - "@babel/plugin-transform-new-target": "^7.10.4", - "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", - "@babel/plugin-transform-property-literals": "^7.10.4", - "@babel/plugin-transform-regenerator": "^7.10.4", - "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.11.0", - "@babel/plugin-transform-sticky-regex": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", - "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.4", - "@babel/plugin-transform-unicode-regex": "^7.10.4", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.0", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1072,6 +1615,9 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/register": { @@ -1087,12 +1633,15 @@ "mkdirp": "^0.5.1", "pirates": "^4.0.0", "source-map-support": "^0.5.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/register/node_modules/find-cache-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "integrity": "sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg==", "dev": true, "dependencies": { "commondir": "^1.0.1", @@ -1106,7 +1655,7 @@ "node_modules/@babel/register/node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "dependencies": { "locate-path": "^2.0.0" @@ -1118,7 +1667,7 @@ "node_modules/@babel/register/node_modules/home-or-tmp": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", - "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", + "integrity": "sha512-pj6ktgQDedSIbzwrC108F9aZadnF2ZJ8mP8QbGq2nLPOmqpdqKWMoU4JPJaFEzpoTl6X/jOwE8BlkTOfVPR98A==", "dev": true, "engines": { "node": ">=4" @@ -1127,7 +1676,7 @@ "node_modules/@babel/register/node_modules/locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "dependencies": { "p-locate": "^2.0.0", @@ -1149,6 +1698,18 @@ "node": ">=4" } }, + "node_modules/@babel/register/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/@babel/register/node_modules/p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -1164,7 +1725,7 @@ "node_modules/@babel/register/node_modules/p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "dependencies": { "p-limit": "^1.1.0" @@ -1176,16 +1737,16 @@ "node_modules/@babel/register/node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, "engines": { "node": ">=4" } }, - "node_modules/@babel/register/node_modules/pify": { + "node_modules/@babel/register/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { "node": ">=4" @@ -1194,7 +1755,7 @@ "node_modules/@babel/register/node_modules/pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "integrity": "sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==", "dev": true, "dependencies": { "find-up": "^2.1.0" @@ -1204,66 +1765,64 @@ } }, "node_modules/@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.10" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@cliqz-oss/firefox-client": { @@ -1279,7 +1838,7 @@ "node_modules/@cliqz-oss/firefox-client/node_modules/colors": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", - "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", + "integrity": "sha512-XjsuUwpDeY98+yz959OlUK6m7mLBM+1MEG5oaenfuQnNnrQk1WvtcvFgN3FNDP3f2NmZ211t0mNEfSEN1h0eIg==", "dev": true, "engines": { "node": ">=0.1.90" @@ -1298,88 +1857,128 @@ "node_modules/@cliqz-oss/node-firefox-connect/node_modules/es6-promise": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", - "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=", + "integrity": "sha512-oyOjMhyKMLEjOOtvkwg0G4pAzLQ9WdbbeX7WdqKzvYXu+UFgD0Zo/Brq5Q49zNmnGPPzV5rmYvrr0jz1zWx8Iw==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "node_modules/@octokit/auth-token": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.4.tgz", - "integrity": "sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", "dependencies": { - "@octokit/types": "^6.0.0" + "@octokit/types": "^6.0.3" } }, "node_modules/@octokit/core": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.2.4.tgz", - "integrity": "sha512-d9dTsqdePBqOn7aGkyRFe7pQpCXdibSJ5SFnrTr0axevObZrpz3qkWm7t/NjYv5a66z6vhfteriaq4FRz3e0Qg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", "dependencies": { "@octokit/auth-token": "^2.4.4", "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.4.12", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", "@octokit/types": "^6.0.3", - "before-after-hook": "^2.1.0", + "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" } }, "node_modules/@octokit/endpoint": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.10.tgz", - "integrity": "sha512-9+Xef8nT7OKZglfkOMm7IL6VwxXUQyR7DUSU0LH/F7VNqs8vyd7es5pTfz9E7DwUIx7R3pGscxu1EBhYljyu7Q==", + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", "dependencies": { - "@octokit/types": "^6.0.0", + "@octokit/types": "^6.0.3", "is-plain-object": "^5.0.0", "universal-user-agent": "^6.0.0" } }, - "node_modules/@octokit/endpoint/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@octokit/graphql": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.5.8.tgz", - "integrity": "sha512-WnCtNXWOrupfPJgXe+vSmprZJUr0VIu14G58PMlkWGj3cH+KLZEfKMmbUQ6C3Wwx6fdhzVW1CD5RTnBdUHxhhA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", "dependencies": { - "@octokit/request": "^5.3.0", - "@octokit/types": "^6.0.0", + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", "universal-user-agent": "^6.0.0" } }, "node_modules/@octokit/openapi-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-2.0.0.tgz", - "integrity": "sha512-J4bfM7lf8oZvEAdpS71oTvC1ofKxfEZgU5vKVwzZKi4QPiL82udjpseJwxPid9Pu2FNmyRQOX4iEj6W1iOSnPw==" + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.6.2.tgz", - "integrity": "sha512-3Dy7/YZAwdOaRpGQoNHPeT0VU1fYLpIUdPyvR37IyFLgd6XSij4j9V/xN/+eSjF2KKvmfIulEh9LF1tRPjIiDA==", + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", "dependencies": { - "@octokit/types": "^6.0.1" + "@octokit/types": "^6.40.0" }, "peerDependencies": { "@octokit/core": ">=2" } }, "node_modules/@octokit/plugin-request-log": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz", - "integrity": "sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", "peerDependencies": { "@octokit/core": ">=3" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.4.1.tgz", - "integrity": "sha512-+v5PcvrUcDeFXf8hv1gnNvNLdm4C0+2EiuWt9EatjjUmfriM1pTMM+r4j1lLHxeBQ9bVDmbywb11e3KjuavieA==", + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", "dependencies": { - "@octokit/types": "^6.1.0", + "@octokit/types": "^6.39.0", "deprecation": "^2.3.1" }, "peerDependencies": { @@ -1387,62 +1986,51 @@ } }, "node_modules/@octokit/request": { - "version": "5.4.12", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.12.tgz", - "integrity": "sha512-MvWYdxengUWTGFpfpefBBpVmmEYfkwMoxonIB3sUGp5rhdgwjXL1ejo6JbgzG/QD9B/NYt/9cJX1pxXeSIUCkg==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", "dependencies": { "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.0.0", - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "once": "^1.4.0", + "node-fetch": "^2.6.7", "universal-user-agent": "^6.0.0" } }, "node_modules/@octokit/request-error": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.4.tgz", - "integrity": "sha512-LjkSiTbsxIErBiRh5wSZvpZqT4t0/c9+4dOe0PII+6jXR+oj/h66s7E4a/MghV7iT8W9ffoQ5Skoxzs96+gBPA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", "dependencies": { - "@octokit/types": "^6.0.0", + "@octokit/types": "^6.0.3", "deprecation": "^2.0.0", "once": "^1.4.0" } }, - "node_modules/@octokit/request/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@octokit/rest": { - "version": "18.0.12", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.0.12.tgz", - "integrity": "sha512-hNRCZfKPpeaIjOVuNJzkEL6zacfZlBPV8vw8ReNeyUkVvbuCvvrrx8K8Gw2eyHHsmd4dPlAxIXIZ9oHhJfkJpw==", + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", "dependencies": { - "@octokit/core": "^3.2.3", - "@octokit/plugin-paginate-rest": "^2.6.2", - "@octokit/plugin-request-log": "^1.0.2", - "@octokit/plugin-rest-endpoint-methods": "4.4.1" + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" } }, "node_modules/@octokit/types": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.1.1.tgz", - "integrity": "sha512-btm3D6S7VkRrgyYF31etUtVY/eQ1KzrNRqhFt25KSe2mKlXuLXJilglRC6eDA2P6ou94BUnk/Kz5MPEolXgoiw==", + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", "dependencies": { - "@octokit/openapi-types": "^2.0.0", - "@types/node": ">= 8" + "@octokit/openapi-types": "^12.11.0" } }, "node_modules/@sinonjs/commons": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", - "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz", + "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -1469,34 +2057,35 @@ } }, "node_modules/@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, "node_modules/@types/babel-types": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.8.tgz", - "integrity": "sha512-jvu8g4LR7+p6ao30RhTREnEhHxmP4/R9D9/rOR/Kq14FztORty9SKgtOZUNZNMB9CXLxZ54EWu4dArUE8WdTsw==" + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.11.tgz", + "integrity": "sha512-pkPtJUUY+Vwv6B1inAz55rQvivClHJxc9aVEPPmaq2cbyeMLCiDpbKpcKyX4LAwpNGi+SHBv0tHv6+0gXv0P2A==" }, "node_modules/@types/babylon": { - "version": "6.16.5", - "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", - "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", + "version": "6.16.6", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.6.tgz", + "integrity": "sha512-G4yqdVlhr6YhzLXFKy5F7HtRBU8Y23+iWy7UKthMq/OSQnL1hbsoeXESQ2LY8zEDlknipDG3nRGhUC9tkwvy/w==", "dependencies": { "@types/babel-types": "*" } }, "node_modules/@types/json-schema": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "node_modules/@types/node": { - "version": "14.0.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", - "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "dev": true }, "node_modules/@webassemblyjs/ast": { "version": "1.9.0", @@ -1697,21 +2286,21 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { "node": ">= 0.6" } }, "node_modules/acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==", "bin": { "acorn": "bin/acorn" }, @@ -1722,15 +2311,25 @@ "node_modules/acorn-globals": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "integrity": "sha512-uWttZCk96+7itPxK8xCzY86PnxKTMrReKDqrHzv42VQY0K30PUO8WY13WMOuI+cOdX4EIdzdvQ8k6jkuGRFMYw==", "dependencies": { "acorn": "^4.0.4" } }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "node_modules/acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha512-AU7pnZkguthwBjKgCg6998ByQNIMjbuDQZ8bb78QAFZwPfmKia8AIzgY/gWgqCjnht8JLdXmB4YxA0KaV60ncQ==", + "dev": true, + "dependencies": { + "acorn": "^3.0.4" + } + }, + "node_modules/acorn-jsx/node_modules/acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -1738,12 +2337,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true - }, "node_modules/adbkit": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/adbkit/-/adbkit-2.11.0.tgz", @@ -1768,7 +2361,7 @@ "node_modules/adbkit-logcat": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz", - "integrity": "sha1-Adf5sM75CTowvLOwB+//MBUIli8=", + "integrity": "sha512-57iYRLdjmhI1fnc890KyflzWpnIb/aq5ET3fbn3axdyyeyKeP4Ji/GhnfBNguG1Tw7SQRL2eBnA+hvbwIsTtNg==", "dev": true, "engines": { "node": ">= 0.10.4" @@ -1777,7 +2370,7 @@ "node_modules/adbkit-monkey": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz", - "integrity": "sha1-8pG+cBou/FZ6Y/x6pq/N7TFDC+E=", + "integrity": "sha512-uU8p+p4sv7gLsjO/At4iPufoPD3R16kVbzDVecdIerR9RzhEK6PcyAJghdOXwrYKbhm7SmPQWsxVRloDBMINDA==", "dev": true, "dependencies": { "async": "~0.2.9" @@ -1789,13 +2382,28 @@ "node_modules/adbkit-monkey/node_modules/async": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==", "dev": true }, "node_modules/adbkit/node_modules/bluebird": { "version": "2.9.34", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", - "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g=", + "integrity": "sha512-ZDzCb87X7/IP1uzQ5eJZB+WoQRGTnKL5DHWvPw6kkMbQseouiQIrEi3P1UGE0D1k0N5/+aP/5GMCyHZ1xYJyHQ==", + "dev": true + }, + "node_modules/adbkit/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/adbkit/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/adbkit/node_modules/node-forge": { @@ -1864,6 +2472,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz", "integrity": "sha512-dnrMRkyyr74CRelJwvgnnSUDh2ge2NCTyHVwpOdvRMHtJUyxLtMAfhBN3s64pY41zdw0kgiLPh6S20eb1NcX6Q==", + "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", "dev": true, "dependencies": { "core-js": "^2.5.7", @@ -1883,18 +2492,9 @@ } }, "node_modules/addons-linter/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/addons-linter/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, "engines": { "node": ">=4" @@ -1925,22 +2525,10 @@ "wrap-ansi": "^2.0.0" } }, - "node_modules/addons-linter/node_modules/decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "dependencies": { - "xregexp": "4.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/addons-linter/node_modules/esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", "dev": true, "bin": { "esparse": "bin/esparse.js", @@ -1953,9 +2541,21 @@ "node_modules/addons-linter/node_modules/fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", "dev": true }, + "node_modules/addons-linter/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/addons-linter/node_modules/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -1973,6 +2573,40 @@ "node": "*" } }, + "node_modules/addons-linter/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/addons-linter/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/addons-linter/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/addons-linter/node_modules/regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", @@ -2010,7 +2644,7 @@ "node_modules/addons-linter/node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "dependencies": { "ansi-regex": "^3.0.0" @@ -2019,12 +2653,32 @@ "node": ">=4" } }, - "node_modules/addons-linter/node_modules/xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "node_modules/addons-linter/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/addons-linter/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, + "node_modules/addons-linter/node_modules/whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "node_modules/addons-linter/node_modules/yargs": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", @@ -2045,19 +2699,10 @@ "yargs-parser": "^10.1.0" } }, - "node_modules/addons-linter/node_modules/yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "dependencies": { - "camelcase": "^4.1.0" - } - }, "node_modules/addons-linter/node_modules/yauzl": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha1-T7G8euH8L1cDe1SvasyP4QMcW3c=", + "integrity": "sha512-yyeepe1mQuFKOWHNhvnLzoPPyjjunG8XY/BtRIFAcyyYe4w24diqUHnR4T+ZzfhH/Vas/wk3uClYNgu+GKLYhg==", "dev": true, "dependencies": { "buffer-crc32": "~0.2.3", @@ -2086,28 +2731,38 @@ } }, "node_modules/ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/ajv-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" + } }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } }, "node_modules/ajv-merge-patch": { "version": "4.1.0", @@ -2117,12 +2772,15 @@ "dependencies": { "fast-json-patch": "^2.0.6", "json-merge-patch": "^0.2.3" + }, + "peerDependencies": { + "ajv": ">=6.0.0" } }, "node_modules/align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==", "dependencies": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -2135,7 +2793,7 @@ "node_modules/align-text/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -2143,19 +2801,10 @@ "node": ">=0.10.0" } }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true, - "engines": { - "node": ">=0.4.2" - } - }, "node_modules/ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "integrity": "sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==", "dev": true, "dependencies": { "string-width": "^2.0.0" @@ -2173,7 +2822,7 @@ "node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2194,13 +2843,13 @@ "node_modules/ansicolors": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", "dev": true }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true }, "node_modules/anymatch": { @@ -2222,7 +2871,7 @@ "node_modules/archiver": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", - "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "integrity": "sha512-4q/CtGPNVyC5aT9eYHhFP7SAEjKYzQIDIJWXfexUIPNxitNs1y6hORdX+sYxERSZ6qPeNNBJ5UolFsJdWTU02g==", "dev": true, "dependencies": { "archiver-utils": "^1.3.0", @@ -2242,7 +2891,7 @@ "node_modules/archiver-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", - "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "integrity": "sha512-h+hTREBXcW5e1L9RihGXdH4PHHdGipG/jE2sMZrqIH6BmZAxeGU5IWjVsKhokdCSWX7km6Kkh406zZNEElHFPQ==", "dev": true, "dependencies": { "glob": "^7.0.0", @@ -2257,9 +2906,9 @@ } }, "node_modules/archiver/node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -2268,7 +2917,7 @@ "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, "node_modules/argparse": { @@ -2279,15 +2928,10 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/argparse/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2305,7 +2949,7 @@ "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2314,7 +2958,7 @@ "node_modules/array-differ": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2323,7 +2967,7 @@ "node_modules/array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2332,30 +2976,33 @@ "node_modules/array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "integrity": "sha512-VW0FpCIhjZdarWjIz8Vpva7U95fl2Jn+b+mmFFMLn8PIVscOQcAgEznwUzTEuUHuqZqIxwzRlcaN/urTFFQoiw==", "dev": true }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "node_modules/array-from": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", "dev": true }, "node_modules/array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.1.tgz", + "integrity": "sha512-sxHIeJTGEsRC8/hYkZzdJNNPZ41EXHVys7pqMw1iwE/Kx8/hto0UbDuGQsSJ0ujPovj9qUZl6EOY/EiZ2g3d9Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/array-reduce": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "integrity": "sha512-8jR+StqaC636u7h3ye1co3lQRefgVVUQUhuAmRbDqIMeR2yuXzRvkCNQiQ5J/wbREmoBLNtp13dhaaVpZQDRUw==", "dev": true }, "node_modules/array-slice": { @@ -2370,7 +3017,7 @@ "node_modules/array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "dependencies": { "array-uniq": "^1.0.1" @@ -2382,7 +3029,7 @@ "node_modules/array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2391,7 +3038,7 @@ "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2400,7 +3047,7 @@ "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2409,29 +3056,30 @@ "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, "node_modules/asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "integrity": "sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==", "dev": true }, "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, "node_modules/assert": { @@ -2447,7 +3095,7 @@ "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, "engines": { "node": ">=0.8" @@ -2456,13 +3104,13 @@ "node_modules/assert/node_modules/inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", "dev": true }, "node_modules/assert/node_modules/util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", "dev": true, "dependencies": { "inherits": "2.0.1" @@ -2480,17 +3128,20 @@ "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/ast-types": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", - "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, "engines": { "node": ">=4" } @@ -2498,7 +3149,7 @@ "node_modules/async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "dev": true }, "node_modules/async-each": { @@ -2516,7 +3167,7 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "node_modules/atob": { @@ -2534,22 +3185,22 @@ "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, "engines": { "node": "*" } }, "node_modules/aws4": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, "node_modules/babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", "dev": true, "dependencies": { "chalk": "^1.1.3", @@ -2560,7 +3211,7 @@ "node_modules/babel-code-frame/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2569,7 +3220,7 @@ "node_modules/babel-code-frame/node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "dependencies": { "ansi-styles": "^2.2.1", @@ -2585,13 +3236,13 @@ "node_modules/babel-code-frame/node_modules/js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", "dev": true }, "node_modules/babel-code-frame/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, "engines": { "node": ">=0.8.0" @@ -2624,15 +3275,30 @@ "source-map": "^0.5.7" } }, + "node_modules/babel-core/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, "node_modules/babel-core/node_modules/json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", "dev": true, "bin": { "json5": "lib/cli.js" } }, + "node_modules/babel-core/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/babel-generator": { "version": "6.26.1", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", @@ -2652,7 +3318,7 @@ "node_modules/babel-generator/node_modules/jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -2661,7 +3327,7 @@ "node_modules/babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "integrity": "sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==", "dev": true, "dependencies": { "babel-helper-get-function-arity": "^6.24.1", @@ -2674,7 +3340,7 @@ "node_modules/babel-helper-get-function-arity": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "integrity": "sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==", "dev": true, "dependencies": { "babel-runtime": "^6.22.0", @@ -2684,7 +3350,7 @@ "node_modules/babel-helper-remap-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "integrity": "sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==", "dev": true, "dependencies": { "babel-helper-function-name": "^6.24.1", @@ -2697,7 +3363,7 @@ "node_modules/babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", "dev": true, "dependencies": { "babel-runtime": "^6.22.0", @@ -2705,49 +3371,82 @@ } }, "node_modules/babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", "dev": true, "dependencies": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", "schema-utils": "^2.6.5" }, "engines": { - "node": ">= 6.9" + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" } }, "node_modules/babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", "dev": true, "dependencies": { "babel-runtime": "^6.22.0" } }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", "dev": true, "dependencies": { - "object.assign": "^4.1.0" + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-syntax-async-functions": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "integrity": "sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==", "dev": true }, "node_modules/babel-plugin-transform-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "integrity": "sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==", "dev": true, "dependencies": { "babel-helper-remap-async-to-generator": "^6.24.1", @@ -2758,7 +3457,7 @@ "node_modules/babel-polyfill": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==", "dev": true, "dependencies": { "babel-runtime": "^6.26.0", @@ -2769,13 +3468,13 @@ "node_modules/babel-polyfill/node_modules/regenerator-runtime": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==", "dev": true }, "node_modules/babel-register": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", "dev": true, "dependencies": { "babel-core": "^6.26.0", @@ -2787,6 +3486,18 @@ "source-map-support": "^0.4.15" } }, + "node_modules/babel-register/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/babel-register/node_modules/source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", @@ -2799,7 +3510,7 @@ "node_modules/babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", "dependencies": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" @@ -2813,7 +3524,7 @@ "node_modules/babel-template": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", "dev": true, "dependencies": { "babel-runtime": "^6.26.0", @@ -2826,7 +3537,7 @@ "node_modules/babel-traverse": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", "dev": true, "dependencies": { "babel-code-frame": "^6.26.0", @@ -2840,6 +3551,15 @@ "lodash": "^4.17.4" } }, + "node_modules/babel-traverse/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, "node_modules/babel-traverse/node_modules/globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", @@ -2849,10 +3569,16 @@ "node": ">=0.10.0" } }, + "node_modules/babel-traverse/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/babel-types": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", "dependencies": { "babel-runtime": "^6.26.0", "esutils": "^2.0.2", @@ -2863,7 +3589,7 @@ "node_modules/babel-types/node_modules/to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", "engines": { "node": ">=0.10.0" } @@ -2877,9 +3603,9 @@ } }, "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "node_modules/base": { @@ -2903,7 +3629,7 @@ "node_modules/base/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "dependencies": { "is-descriptor": "^1.0.0" @@ -2912,49 +3638,25 @@ "node": ">=0.10.0" } }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "dev": true + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/base64url": { "version": "3.0.1", @@ -2977,25 +3679,31 @@ "node": ">= 0.8" } }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "dependencies": { "tweetnacl": "^0.14.3" } }, "node_modules/before-after-hook": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", - "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, "node_modules/big.js": { "version": "5.2.2", @@ -3042,15 +3750,15 @@ "dev": true }, "node_modules/bn.js": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", - "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", "dev": true }, "node_modules/body": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "integrity": "sha512-chUsBxGRtuElD6fmw1gHLpvnKdVLK302peeFa9ZqAEk8TyzZ3fygLyUEDDPTJvL9+Bor0dIwn6ePOsRM2y0zQQ==", "dev": true, "dependencies": { "continuable-cache": "^0.3.1", @@ -3060,35 +3768,51 @@ } }, "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dependencies": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/body/node_modules/bytes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "integrity": "sha512-/x68VkHLeTl3/Ll8IvxdwzhrT+IyKc52e/oyHhA2RwqPqswSnjVbSddfPRwAsJtbilMAPSRWwAlpxdYsSWOTKQ==", "dev": true }, "node_modules/body/node_modules/raw-body": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", - "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "integrity": "sha512-WmJJU2e9Y6M5UzTOkHaM7xJGAPQD8PNzx3bAd2+uhZAim6wDk6dAZxPVYLF67XhbR4hmKGh33Lpmh4XWrCH5Mg==", "dev": true, "dependencies": { "bytes": "1", @@ -3098,10 +3822,16 @@ "node": ">= 0.8.0" } }, + "node_modules/body/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "node_modules/bootstrap": { @@ -3137,15 +3867,6 @@ "node": ">=4" } }, - "node_modules/boxen/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3177,22 +3898,10 @@ "node": ">=0.10.0" } }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", "dev": true }, "node_modules/browser-stdout": { @@ -3239,21 +3948,15 @@ } }, "node_modules/browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, "dependencies": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" } }, - "node_modules/browserify-rsa/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, "node_modules/browserify-sign": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", @@ -3271,12 +3974,6 @@ "safe-buffer": "^5.2.0" } }, - "node_modules/browserify-sign/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, "node_modules/browserify-sign/node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -3291,21 +3988,6 @@ "node": ">= 6" } }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "node_modules/browserify-sign/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", @@ -3316,15 +3998,25 @@ } }, "node_modules/browserslist": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", - "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", - "dev": true, + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001093", - "electron-to-chromium": "^1.3.488", - "escalade": "^3.0.1", - "node-releases": "^1.1.58" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" }, "bin": { "browserslist": "cli.js" @@ -3334,13 +4026,14 @@ } }, "node_modules/buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, "dependencies": { "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "node_modules/buffer-alloc": { @@ -3362,7 +4055,7 @@ "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "engines": { "node": "*" @@ -3371,57 +4064,55 @@ "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "dev": true }, "node_modules/buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", "dev": true }, "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "node_modules/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", "dev": true }, "node_modules/builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", "dev": true }, "node_modules/bunyan": { "version": "1.8.12", "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", - "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", + "integrity": "sha512-dmDUbGHeGcvCDLRFOscZkwx1ZO/aFz3bJOCi5nCgzdhFGPxwK+y5AcDBnqagNGlJZ7lje/l6JUEz9mQcutttdg==", "dev": true, "engines": [ "node >=0.10.0" ], - "dependencies": { - "moment": "^2.10.6" - }, "bin": { "bunyan": "bin/bunyan" }, "optionalDependencies": { "dtrace-provider": "~0.8", + "moment": "^2.10.6", "mv": "~2", "safe-json-stringify": "~1" } }, "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { "node": ">= 0.8" } @@ -3447,6 +4138,18 @@ "y18n": "^4.0.0" } }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/cacache/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -3479,10 +4182,22 @@ "node": ">=0.10.0" } }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", "dev": true, "dependencies": { "callsites": "^0.2.0" @@ -3494,45 +4209,59 @@ "node_modules/callsites": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001111", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001111.tgz", - "integrity": "sha512-xnDje2wchd/8mlJu8sXvWxOGvMgv+uT3iZ3bkIAynKOzToCssWCmkz/ZIkQBs/2pUB4uwnJKVORWQ31UkbVjOg==", - "dev": true + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, "node_modules/capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz", + "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==", "dev": true, "engines": { "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, "node_modules/center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==", "dependencies": { "align-text": "^0.1.3", "lazy-cache": "^1.0.3" @@ -3541,17 +4270,26 @@ "node": ">=0.10.0" } }, + "node_modules/center-align/node_modules/lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", - "deep-eql": "^3.0.1", + "deep-eql": "^4.1.2", "get-func-name": "^2.0.0", - "pathval": "^1.1.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", "type-detect": "^4.0.5" }, "engines": { @@ -3574,6 +4312,9 @@ "dev": true, "dependencies": { "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" } }, "node_modules/chai-json-schema": { @@ -3587,6 +4328,9 @@ }, "engines": { "node": ">= 6" + }, + "peerDependencies": { + "chai": ">= 1.6.1 < 5" } }, "node_modules/chalk": { @@ -3606,7 +4350,7 @@ "node_modules/character-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", "dependencies": { "is-regex": "^1.0.3" } @@ -3614,13 +4358,13 @@ "node_modules/chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", "dev": true }, "node_modules/check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "dev": true, "engines": { "node": "*" @@ -3629,7 +4373,7 @@ "node_modules/cheerio": { "version": "1.0.0-rc.2", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "integrity": "sha512-9LDHQy1jHc/eXMzPN6/oah9Qba4CjdKECC7YYEE/2zge/tsGwt19NQp5NFdfd5Lx6TZlyC5SXNQkG41P9r6XDg==", "dev": true, "dependencies": { "css-select": "~1.2.0", @@ -3647,6 +4391,7 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", "dev": true, "dependencies": { "anymatch": "^2.0.0", @@ -3669,7 +4414,9 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", "dev": true, + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -3682,18 +4429,6 @@ "node": ">= 4.0" } }, - "node_modules/chokidar/node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/chokidar/node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -3720,13 +4455,10 @@ "dev": true }, "node_modules/chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, "engines": { "node": ">=6.0" } @@ -3741,43 +4473,115 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", + "dev": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "dependencies": { - "is-descriptor": "^0.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "engines": { "node": ">=0.10.0" } }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", "dependencies": { "source-map": "~0.6.0" }, @@ -3796,7 +4600,7 @@ "node_modules/cli-boxes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "integrity": "sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -3805,7 +4609,7 @@ "node_modules/cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dev": true, "dependencies": { "restore-cursor": "^2.0.0" @@ -3829,7 +4633,7 @@ "node_modules/cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==", "dependencies": { "center-align": "^0.1.1", "right-align": "^0.1.1", @@ -3839,7 +4643,7 @@ "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "engines": { "node": ">=0.8" @@ -3848,7 +4652,7 @@ "node_modules/clone-deep": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", - "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "integrity": "sha512-qp1do6NplYZZcLU+TQ93+A735g1kNcnH75QbC1olpKJphe36CqkjFEK0PyFSoZlI3/1jO5KnDg64xdwWiEH/zA==", "dev": true, "dependencies": { "for-own": "^1.0.0", @@ -3860,10 +4664,22 @@ "node": ">=0.10.0" } }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/clone-deep/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -3875,7 +4691,7 @@ "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "engines": { "iojs": ">= 1.0.0", @@ -3885,22 +4701,22 @@ "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/codemirror": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.56.0.tgz", - "integrity": "sha512-MfKVmYgifXjQpLSgpETuih7A7WTTIsxvKfSLGseTY5+qt0E1UD1wblZGM6WLenORo8sgmf+3X+WTe2WF7mufyw==", + "version": "5.65.9", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.9.tgz", + "integrity": "sha512-19Jox5sAKpusTDgqgKB5dawPpQcY+ipQK7xoEI+MVucEF9qqFaXpeqY1KaoyGBso/wHQoDa4HMMxMjdsS3Zzzw==", "dev": true }, "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "dev": true, "dependencies": { "map-visit": "^1.0.0", @@ -3922,13 +4738,13 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "node_modules/colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", "dev": true, "engines": { "node": ">=0.1.90" @@ -3937,7 +4753,7 @@ "node_modules/columnify": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", - "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "integrity": "sha512-rFl+iXVT1nhLQPfGDw+3WcS8rmm7XsLKUmhsGE3ihzzpIikeGrTaZPIRKYWeLsLBypsHzjXIvYEltVUZS84XxQ==", "dev": true, "dependencies": { "strip-ansi": "^3.0.0", @@ -3974,7 +4790,7 @@ "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "node_modules/component-emitter": { @@ -3986,7 +4802,7 @@ "node_modules/compress-commons": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", - "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "integrity": "sha512-SLTU8iWWmcORfUN+4351Z2aZXKJe1tr0jSilPMCZlLPzpdTXnkBW1LevW/MfuANBKJek8Xu9ggqrtVmQrChLtg==", "dev": true, "dependencies": { "buffer-crc32": "^0.2.1", @@ -4001,7 +4817,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/concat-stream": { @@ -4020,12 +4836,12 @@ } }, "node_modules/configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz", + "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==", "dev": true, "dependencies": { - "dot-prop": "^4.1.0", + "dot-prop": "^4.2.1", "graceful-fs": "^4.1.2", "make-dir": "^1.0.0", "unique-string": "^1.0.0", @@ -4048,15 +4864,6 @@ "node": ">=4" } }, - "node_modules/configstore/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -4075,12 +4882,66 @@ "node_modules/connect-livereload": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", - "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", + "integrity": "sha512-3KnRwsWf4VmP01I4hCDQqTc4e2UxOvJIi8i08GiwqX2oymzxNFY7PqjFkwHglYTJ0yzUJkO5yqdPxVaIz3Pbug==", "dev": true, "engines": { "node": "*" } }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/connect/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", @@ -4101,15 +4962,15 @@ "node_modules/constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", "dev": true }, "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" }, "engines": { "node": ">= 0.6" @@ -4126,22 +4987,19 @@ "node_modules/continuable-cache": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "integrity": "sha512-TF30kpKhTH8AGCG3dut0rdd/19B7Z+qCnrMoBLpyQu/2drZdNrrpcjPEoJeSVsQM+8KmWG5O56oPDjSSUsuTyA==", "dev": true }, "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "engines": { "node": ">= 0.6" } @@ -4149,7 +5007,7 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/copy-concurrently": { "version": "1.0.5", @@ -4165,6 +5023,18 @@ "run-queue": "^1.0.0" } }, + "node_modules/copy-concurrently/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/copy-concurrently/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -4180,40 +5050,36 @@ "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true }, "node_modules/core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", + "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", "dev": true, "dependencies": { - "browserslist": "^4.8.5", - "semver": "7.0.0" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "browserslist": "^4.21.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/crc": { @@ -4225,10 +5091,34 @@ "buffer": "^5.1.0" } }, + "node_modules/crc/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/crc32-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", - "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "integrity": "sha512-UjZSqFCbn+jZUHJIh6Y3vMF7EJLcJWNm4tKDf2peJRwlZKHvkkvOMTvAei6zjU9gO1xONVr3rRFw0gixm2eUng==", "dev": true, "dependencies": { "crc": "^3.4.4", @@ -4249,15 +5139,15 @@ } }, "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, "node_modules/create-error-class": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "integrity": "sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==", "dev": true, "dependencies": { "capture-stack-trace": "^1.0.0" @@ -4309,10 +5199,31 @@ "node": ">=4.8" } }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/crx": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/crx/-/crx-3.2.1.tgz", - "integrity": "sha1-Fyk+51790IxtHIs+F0nS1XV89Cs=", + "integrity": "sha512-UGgKNCy+6oXbMPaibiB2nLjiDCDC5akQbiODN1HWibH3l/0q52hPE10oqH3d2jyyM92nKuBwqD5t6Xg3FM8QTA==", "dev": true, "dependencies": { "archiver": "^1.1.0", @@ -4330,7 +5241,7 @@ "node_modules/crx-parser": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/crx-parser/-/crx-parser-0.1.2.tgz", - "integrity": "sha1-fu7tnt3JXiLBiTguNGJARKiaWm0=", + "integrity": "sha512-B1XsIt+CDGa91o+72tAhMnuTzgO4G2HYvzzhZcL3+NetS1ENfX+6Y+ofWFBfuw+/y8uJAip65zphNNiHVlOyxQ==", "dev": true }, "node_modules/crypto-browserify": { @@ -4358,7 +5269,7 @@ "node_modules/crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", "dev": true, "engines": { "node": ">=4" @@ -4377,15 +5288,18 @@ } }, "node_modules/css-parse": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", - "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==", + "dev": true, + "dependencies": { + "css": "^2.0.0" + } }, "node_modules/css-select": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", "dev": true, "dependencies": { "boolbase": "~1.0.0", @@ -4415,7 +5329,7 @@ "node_modules/cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", "dev": true }, "node_modules/d": { @@ -4431,7 +5345,7 @@ "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "dependencies": { "assert-plus": "^1.0.0" @@ -4462,40 +5376,53 @@ "dev": true }, "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "dependencies": { + "xregexp": "4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", "dev": true, "engines": { "node": ">=0.10" } }, "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", + "integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==", "dev": true, "dependencies": { "type-detect": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=6" } }, "node_modules/deep-equal": { @@ -4510,6 +5437,9 @@ "object-is": "^1.0.1", "object-keys": "^1.1.1", "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/deep-extend": { @@ -4533,19 +5463,19 @@ "node_modules/deep-freeze": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", - "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", + "integrity": "sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==", "dev": true }, "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "node_modules/deepcopy": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-0.6.3.tgz", - "integrity": "sha1-Y0eA8vhlardxr4+oQx7RzO5Vx7A=", + "integrity": "sha512-C7P+E1C5q9rF51zPXI2G03/y7mJ5tbjJUpUjhpghwnbCXi8rzsX/y1JzCX8+Oin9vN9E2BT32RCuDw6xEXDw1A==", "dev": true }, "node_modules/deepmerge": { @@ -4558,24 +5488,31 @@ } }, "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "dependencies": { "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "dependencies": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-property": { @@ -4591,48 +5528,10 @@ "node": ">=0.10.0" } }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/degenerator": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "integrity": "sha512-EMAC+riLSC64jKfOs1jp8J7M4ZXstUUwTdwFBEv6HOzL/Ae+eAzMKEK0nJnpof2fnw9IOjmE6u6qXFejVyk8AA==", "dev": true, "dependencies": { "ast-types": "0.x.x", @@ -4643,7 +5542,7 @@ "node_modules/degenerator/node_modules/esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", "dev": true, "bin": { "esparse": "bin/esparse.js", @@ -4656,18 +5555,18 @@ "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "engines": { "node": ">=0.4.0" } }, "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/deprecation": { @@ -4688,18 +5587,22 @@ "node_modules/desandro-matches-selector": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", - "integrity": "sha1-cXvu1NwT59jzdi9wem1YpndCGOE=", + "integrity": "sha512-+1q0nXhdzg1IpIJdMKalUwvvskeKnYyEe3shPRwedNcWtnhEKT3ZxvFjzywHDeGcKViIxTCAoOYQWP1qD7VNyg==", "dev": true }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, "node_modules/detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -4708,7 +5611,7 @@ "node_modules/detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", "dev": true, "dependencies": { "repeating": "^2.0.0" @@ -4738,15 +5641,16 @@ } }, "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, "node_modules/dispensary": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.27.0.tgz", "integrity": "sha512-bG9pSBPH8wTEaugUIBAbBvBHynqOoGxefOT4YXlPoUc9AxQGDUO1uFHafDVWnsGWiSYvTUga0aZ9xThzfGQtlQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "array-from": "~2.1.1", @@ -4766,23 +5670,32 @@ } }, "node_modules/dispensary/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/dispensary/node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" } }, + "node_modules/dispensary/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/dispensary/node_modules/cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", @@ -4794,6 +5707,61 @@ "wrap-ansi": "^2.0.0" } }, + "node_modules/dispensary/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dispensary/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dispensary/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dispensary/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dispensary/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/dispensary/node_modules/pino": { "version": "5.8.1", "resolved": "https://registry.npmjs.org/pino/-/pino-5.8.1.tgz", @@ -4826,7 +5794,7 @@ "node_modules/dispensary/node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "dependencies": { "ansi-regex": "^3.0.0" @@ -4855,6 +5823,16 @@ "yargs-parser": "^11.1.1" } }, + "node_modules/dispensary/node_modules/yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, "node_modules/dockerfile-ast": { "version": "0.0.12", "resolved": "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.0.12.tgz", @@ -4882,7 +5860,7 @@ "node_modules/doctypes": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==" }, "node_modules/dom-serializer": { "version": "0.1.1", @@ -4928,7 +5906,7 @@ "node_modules/domutils": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", "dev": true, "dependencies": { "dom-serializer": "0", @@ -4948,11 +5926,11 @@ } }, "node_modules/dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/dtrace-provider": { @@ -4960,6 +5938,7 @@ "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", "dev": true, + "hasInstallScript": true, "optional": true, "dependencies": { "nan": "^2.14.0" @@ -4969,9 +5948,9 @@ } }, "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", "dev": true }, "node_modules/duplexify": { @@ -4989,7 +5968,7 @@ "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "dependencies": { "jsbn": "~0.1.0", @@ -5008,33 +5987,33 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.3.523", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.523.tgz", - "integrity": "sha512-D4/3l5DpciddD92IDRtpLearQSGzly8FwBJv+nITvLH8YJrFabpDFe4yuiOJh2MS4/EsXqyQTXyw1toeYPtshQ==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "node_modules/elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, "node_modules/elliptic/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, "node_modules/email-validator": { @@ -5058,7 +6037,7 @@ "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { "node": ">= 0.8" } @@ -5067,16 +6046,16 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, + "devOptional": true, "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "dev": true, + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -5094,9 +6073,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -5126,9 +6105,9 @@ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, "node_modules/errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "dependencies": { "prr": "~1.0.1" @@ -5156,25 +6135,41 @@ } }, "node_modules/es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", "dev": true, "dependencies": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es-to-primitive": { @@ -5189,17 +6184,24 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", "dev": true, + "hasInstallScript": true, "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/es6-error": { @@ -5211,7 +6213,7 @@ "node_modules/es6-iterator": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "dev": true, "dependencies": { "d": "1", @@ -5222,7 +6224,7 @@ "node_modules/es6-map": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==", "dev": true, "dependencies": { "d": "1", @@ -5236,13 +6238,13 @@ "node_modules/es6-promise": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", "dev": true }, "node_modules/es6-promisify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", "dev": true, "dependencies": { "es6-promise": "^4.0.3" @@ -5255,27 +6257,27 @@ "dev": true }, "node_modules/es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz", + "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", "dev": true, "dependencies": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "es6-iterator": "~2.0.3", + "es6-symbol": "^3.1.3", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" } }, - "node_modules/es6-set/node_modules/es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } + "node_modules/es6-set/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true }, "node_modules/es6-symbol": { "version": "3.1.3", @@ -5300,9 +6302,9 @@ } }, "node_modules/escalade": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", - "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, "engines": { "node": ">=6" @@ -5311,12 +6313,12 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { "node": ">=0.8.0" @@ -5357,7 +6359,7 @@ "node_modules/escope": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "integrity": "sha512-75IUQsusDdalQEW/G/2esa87J7raqdJF+Ca0/Xm5C3Q58Nr4yVYjZGp/P1+2xiEVgXRrA39dpRb8LcshajbqDQ==", "dev": true, "dependencies": { "es6-map": "^0.1.3", @@ -5424,7 +6426,7 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsafe-innerhtml/-/eslint-plugin-no-unsafe-innerhtml-1.0.16.tgz", - "integrity": "sha1-fQKHjI6b95FriINtWsEitC8VGTI=", + "integrity": "sha512-zdymo/6S8sovPZPPcF07bblXIkflbzDoGXmWG2KIaiGY2DTWQxotCv4eRSpJp5xXS66uacLceMQXTzeI3im9+g==", "dev": true, "dependencies": { "eslint": "^3.7.1" @@ -5442,31 +6444,10 @@ "node": ">=0.4.0" } }, - "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "dependencies": { - "acorn": "^3.0.4" - } - }, - "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/acorn-jsx/node_modules/acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "integrity": "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ==", "dev": true, "dependencies": { "co": "^4.6.0", @@ -5476,13 +6457,16 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ajv-keywords": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true + "integrity": "sha512-vuBv+fm2s6cqUyey2A7qYcvsik+GMDJsw8BARP2sDE76cqmaZVarsvHf7Vx6VJ0Xk8gLl+u3MoAPf6gKzJefeA==", + "dev": true, + "peerDependencies": { + "ajv": ">=4.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "integrity": "sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -5491,7 +6475,7 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -5500,7 +6484,7 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "dependencies": { "ansi-styles": "^2.2.1", @@ -5516,7 +6500,7 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/cli-cursor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", "dev": true, "dependencies": { "restore-cursor": "^1.0.1" @@ -5525,10 +6509,19 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/eslint": { "version": "3.19.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "integrity": "sha512-x6LJGXWCGB/4YOBhL48yeppZTo+YQUNC37N5qqCpC1b1kkNzydlQHQAtPuUSFoZSxgIadrysQoW2Hq602P+uEA==", "dev": true, "dependencies": { "babel-code-frame": "^6.16.0", @@ -5590,7 +6583,7 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5", @@ -5612,7 +6605,7 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/inquirer": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "integrity": "sha512-bOetEz5+/WpgaW4D1NYOk1aD+JCqRjqu/FwRFgnIfiP7FC/zinsrfyO1vlS3nyH/R7S0IH3BIHBu4DBIDSqiGQ==", "dev": true, "dependencies": { "ansi-escapes": "^1.1.0", @@ -5630,10 +6623,24 @@ "through": "^2.3.6" } }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/inquirer/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "dependencies": { "number-is-nan": "^1.0.0" @@ -5642,10 +6649,28 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/onetime": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", "dev": true, "engines": { "node": ">=0.10.0" @@ -5654,22 +6679,34 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/pluralize": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "integrity": "sha512-TH+BeeL6Ct98C7as35JbZLf8lgsRzlNJb5gklRIGHKaPkGl1esOKBc5ALUMd+q08Sr6tiEKM+Icbsxg5vuhMKQ==", "dev": true }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/progress": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "integrity": "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==", "dev": true, "engines": { "node": ">=0.4.0" } }, + "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", "dev": true, "dependencies": { "exit-hook": "^1.0.0", @@ -5682,7 +6719,7 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/run-async": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "integrity": "sha512-qOX+w+IxFgpUpJfkv2oGN0+ExPs68F4sZHfaRRx4dDexAQkG83atugKVEylyT5ARees3HBbfmuvnjbrd8j9Wjw==", "dev": true, "dependencies": { "once": "^1.3.0" @@ -5691,7 +6728,7 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/shelljs": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "integrity": "sha512-/YF5Uk8hcwi7ima04ppkbA4RaRMdPMBfwAvAf8sufYOxsJRtbdoBsT8vGvlb+799BrlGdYrd+oczIA2eN2JdWA==", "dev": true, "dependencies": { "glob": "^7.0.0", @@ -5709,22 +6746,8 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/slice-ansi": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, "engines": { "node": ">=0.10.0" } @@ -5732,7 +6755,7 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, "engines": { "node": ">=0.8.0" @@ -5741,7 +6764,7 @@ "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "integrity": "sha512-RZuzIOtzFbprLCE0AXhkI0Xi42ZJLZhCC+qkwuMLf/Vjz3maWpA8gz1qMdbmNoI9cOROT2Am/DxeRyXenrL11g==", "dev": true, "dependencies": { "ajv": "^4.7.0", @@ -5752,49 +6775,6 @@ "string-width": "^2.0.0" } }, - "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -5818,33 +6798,48 @@ } }, "node_modules/eslint/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/eslint/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/eslint/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } }, "node_modules/eslint/node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "dependencies": { "ansi-regex": "^3.0.0" @@ -5877,9 +6872,9 @@ } }, "node_modules/espree/node_modules/acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -5888,6 +6883,15 @@ "node": ">=0.4.0" } }, + "node_modules/espree/node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -5902,9 +6906,9 @@ } }, "node_modules/esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -5914,26 +6918,35 @@ } }, "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" } }, "node_modules/esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" }, "engines": { "node": ">=4.0" } }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", @@ -5954,7 +6967,7 @@ "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "engines": { "node": ">= 0.6" } @@ -5968,7 +6981,7 @@ "node_modules/event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "dev": true, "dependencies": { "d": "1", @@ -5978,19 +6991,20 @@ "node_modules/event-to-promise": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz", - "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=", + "integrity": "sha512-/J+h6lLXMhNrahk5XipFHjSOlTv4Zl+D5rXomuhT3MIUxkP7beRxazgCQ6ERYJTFPPM8WC8dbHIeQc1VaKrOxw==", + "deprecated": "Use promise-toolbox/fromEvent instead", "dev": true }, "node_modules/eventemitter2": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==", "dev": true }, "node_modules/events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "engines": { "node": ">=0.8.x" @@ -6027,7 +7041,7 @@ "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -6036,7 +7050,7 @@ "node_modules/exit-hook": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6045,7 +7059,7 @@ "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dev": true, "dependencies": { "debug": "^2.3.3", @@ -6060,10 +7074,19 @@ "node": ">=0.10.0" } }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, "node_modules/expand-brackets/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "dependencies": { "is-descriptor": "^0.1.0" @@ -6072,22 +7095,87 @@ "node": ">=0.10.0" } }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "engines": { "node": ">=0.10.0" } }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, "dependencies": { "homedir-polyfill": "^1.0.1" @@ -6097,37 +7185,38 @@ } }, "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -6139,21 +7228,34 @@ "node_modules/express-sslify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/express-sslify/-/express-sslify-1.2.0.tgz", - "integrity": "sha1-MOhLzu0VV+sYdnK74UMKCioQDZw=" + "integrity": "sha512-OOf2B3MxAVjEXPPWl4Z19wA2oMH+RCULJVhejPwuhiDDClr9QczZz5ycABLSnnN+oY8JcLs32ghs9cxOj0vi+w==" + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dev": true, "dependencies": { - "type": "^2.0.0" + "type": "^2.7.2" } }, "node_modules/ext/node_modules/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", "dev": true }, "node_modules/extend": { @@ -6163,25 +7265,12 @@ "dev": true }, "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "dependencies": { - "is-plain-object": "^2.0.4" + "is-extendable": "^0.1.0" }, "engines": { "node": ">=0.10.0" @@ -6223,7 +7312,7 @@ "node_modules/extglob/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "dependencies": { "is-descriptor": "^1.0.0" @@ -6232,56 +7321,6 @@ "node": ">=0.10.0" } }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/extract-zip": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", @@ -6297,10 +7336,37 @@ "extract-zip": "cli.js" } }, + "node_modules/extract-zip/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extract-zip/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true, "engines": [ "node >=0.6.0" @@ -6333,7 +7399,7 @@ "node_modules/fast-json-patch/node_modules/fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", "dev": true }, "node_modules/fast-json-stable-stringify": { @@ -6345,7 +7411,7 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "node_modules/fast-redact": { @@ -6358,15 +7424,15 @@ } }, "node_modules/fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true }, "node_modules/faye-websocket": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "integrity": "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==", "dev": true, "dependencies": { "websocket-driver": ">=0.5.1" @@ -6378,7 +7444,7 @@ "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "dependencies": { "pend": "~1.2.0" @@ -6393,7 +7459,7 @@ "node_modules/figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" @@ -6405,7 +7471,7 @@ "node_modules/file-entry-cache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", "dev": true, "dependencies": { "flat-cache": "^1.2.1", @@ -6418,7 +7484,7 @@ "node_modules/file-sync-cmp": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "integrity": "sha512-0k45oWBokCqh2MOexeYKpyqmGKG+8mQ2Wd8iawx+uWd/weWJQAZ6SoPybagdCI4xFisag8iAR77WPm4h3pTfxA==", "dev": true }, "node_modules/file-uri-to-path": { @@ -6430,7 +7496,7 @@ "node_modules/fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, "dependencies": { "extend-shallow": "^2.0.1", @@ -6442,65 +7508,70 @@ "node": ">=0.10.0" } }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "dependencies": { "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/findup-sync": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "integrity": "sha512-z8Nrwhi6wzxNMIbxlrTzuUW6KWuKkogZ/7OdDVq+0+kxn77KUH1nipx8iU6suqkHqc4y6n7a9A8IpmxY/pTjWg==", "dev": true, "dependencies": { "glob": "~5.0.0" @@ -6512,7 +7583,7 @@ "node_modules/findup-sync/node_modules/glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", "dev": true, "dependencies": { "inflight": "^1.0.4", @@ -6541,6 +7612,18 @@ "node": ">= 0.10" } }, + "node_modules/fined/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/firefox-profile": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-1.2.0.tgz", @@ -6566,7 +7649,7 @@ "node_modules/firefox-profile/node_modules/archiver": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", - "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", + "integrity": "sha512-01psM0DMD3YItvhnAXZODfsViaeDidrJwfne3lsoVrbyYa/xFQwTbVjY+2WlEBm7qH1fCsyxAA1SgNr/XenTlQ==", "dev": true, "dependencies": { "archiver-utils": "^1.3.0", @@ -6594,7 +7677,7 @@ "node_modules/first-chunk-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", - "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "integrity": "sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==", "dev": true, "dependencies": { "readable-stream": "^2.0.2" @@ -6657,7 +7740,7 @@ "node_modules/flipclock": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/flipclock/-/flipclock-0.7.8.tgz", - "integrity": "sha1-838ffKkETZAsH+4fGuf0vR7vGlQ=", + "integrity": "sha512-YkMQ5krRzxZJz38m8aJuyPqtphPdnXmas4kNLZbAwu3FNNwsRsg3gzUJM0onWDy34tDlh20IUSSmKiyuE8QJjg==", "dev": true, "dependencies": { "jquery": ">=1.7" @@ -6685,7 +7768,7 @@ "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6694,7 +7777,7 @@ "node_modules/for-own": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", "dev": true, "dependencies": { "for-in": "^1.0.1" @@ -6706,7 +7789,7 @@ "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, "engines": { "node": "*" @@ -6727,9 +7810,9 @@ } }, "node_modules/forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "engines": { "node": ">= 0.6" } @@ -6737,7 +7820,7 @@ "node_modules/fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dev": true, "dependencies": { "map-cache": "^0.2.2" @@ -6749,7 +7832,7 @@ "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { "node": ">= 0.6" } @@ -6757,7 +7840,7 @@ "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, "dependencies": { "inherits": "^2.0.1", @@ -6784,7 +7867,7 @@ "node_modules/fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -6796,14 +7879,16 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "node_modules/fsevents": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.1.tgz", "integrity": "sha512-p+CXqK/iLvDESUWdn3NA3JVO9HxdfI+iXx8xR3DqWgKZvQNiEVpAyUQo0lmwz8rqksb4xaGerG291xuwwhX2kA==", + "deprecated": "\"Please update to latest v2.3 or v2.2\"", "dev": true, + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -6815,7 +7900,7 @@ "node_modules/ftp": { "version": "0.3.10", "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", "dev": true, "dependencies": { "readable-stream": "1.1.x", @@ -6828,13 +7913,13 @@ "node_modules/ftp/node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true }, "node_modules/ftp/node_modules/readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", @@ -6843,22 +7928,63 @@ "string_decoder": "~0.10.x" } }, + "node_modules/ftp/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "node_modules/ftp/node_modules/xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/fx-runner": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.0.9.tgz", - "integrity": "sha1-eyPzdz3HaqzELxHZr/J2lnXLY/A=", + "integrity": "sha512-/9YF7XcTd/Ee2p2EV/1ZwnXEg8WkwTXHW7GfYYq9eaz5YAwqF22J95A8lPo/rcKP+Qy+SwEwNRcpRZTUFna2DA==", "dev": true, "dependencies": { "commander": "2.9.0", @@ -6876,7 +8002,7 @@ "node_modules/fx-runner/node_modules/commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", "dev": true, "dependencies": { "graceful-readlink": ">= 1.0.0" @@ -6888,7 +8014,7 @@ "node_modules/fx-runner/node_modules/is-absolute": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", - "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "integrity": "sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==", "dev": true, "dependencies": { "is-relative": "^0.1.0" @@ -6900,7 +8026,7 @@ "node_modules/fx-runner/node_modules/is-relative": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", - "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", + "integrity": "sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6909,7 +8035,7 @@ "node_modules/fx-runner/node_modules/isexe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", - "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", + "integrity": "sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==", "dev": true }, "node_modules/fx-runner/node_modules/lodash": { @@ -6921,7 +8047,7 @@ "node_modules/fx-runner/node_modules/which": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", - "integrity": "sha1-FVf5YIBgTlsRs1meufRbUKnv1yI=", + "integrity": "sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==", "dev": true, "dependencies": { "is-absolute": "^0.1.7", @@ -6955,16 +8081,16 @@ "node_modules/generate-object-property": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", "dev": true, "dependencies": { "is-property": "^1.0.0" } }, "node_modules/gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -6979,12 +8105,25 @@ "node_modules/get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "dev": true, "engines": { "node": "*" } }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-size": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz", @@ -6994,12 +8133,28 @@ "node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "engines": { "node": ">=4" } }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-uri": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", @@ -7014,28 +8169,43 @@ "readable-stream": "2" } }, + "node_modules/get-uri/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/get-uri/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/getobject": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", + "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", "dev": true, "engines": { - "node": ">= 0.8.0" + "node": ">=10" } }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "dependencies": { "assert-plus": "^1.0.0" @@ -7044,7 +8214,7 @@ "node_modules/gettext-parser": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.0.tgz", - "integrity": "sha1-LFpmONiTk0ubVQN9CtgstwBLJnk=", + "integrity": "sha512-zL3eayB0jF+cr6vogH/VJKoKcj7uQj2TPByaaj6a4k/3elk9iq7fiwCM2FqdzS/umo021RetSanVisarzeb9Wg==", "dev": true, "dependencies": { "encoding": "^0.1.11" @@ -7053,7 +8223,7 @@ "node_modules/git-rev-sync": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/git-rev-sync/-/git-rev-sync-1.9.1.tgz", - "integrity": "sha1-oMLj3TkqvPa3aWLif8dfsyI0Sc4=", + "integrity": "sha512-n6yNICNnWOe0uR2XAQQyBIVMCCCEPFY6dkun9s+9QM39nJpmPxgU48BX4UlLh95MXU5cbkhpbIP7RHOw5ujPew==", "dev": true, "dependencies": { "escape-string-regexp": "1.0.5", @@ -7064,16 +8234,28 @@ "node_modules/git-rev-sync/node_modules/graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "integrity": "sha512-9x6DLUuW+ROFdMTII9ec9t/FK8va6kYcC8/LggumssLM8kNv7IdFl3VrNUqgir2tJuBVxBga1QBoRziZacO5Zg==", "dev": true, "engines": { "node": ">=0.4.0" } }, + "node_modules/git-rev-sync/node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/git-rev-sync/node_modules/shelljs": { "version": "0.7.7", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", - "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", + "integrity": "sha512-5ZXTlakejjdxXAnFl23pgPDzCcyPoshqMVWYqMH8HiP1R+i4auEKHabljL6XQlhQV58jkSRTR33Fq7OlxyLLTg==", "dev": true, "dependencies": { "glob": "^7.0.0", @@ -7089,9 +8271,9 @@ } }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -7103,18 +8285,33 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dev": true, "dependencies": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" } }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/global": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", @@ -7128,7 +8325,7 @@ "node_modules/global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", "dev": true, "dependencies": { "ini": "^1.3.4" @@ -7154,7 +8351,7 @@ "node_modules/global-prefix": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "dev": true, "dependencies": { "expand-tilde": "^2.0.2", @@ -7167,6 +8364,18 @@ "node": ">=0.10.0" } }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -7177,13 +8386,13 @@ } }, "node_modules/globule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", - "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", "dev": true, "dependencies": { "glob": "~7.1.1", - "lodash": "~4.17.10", + "lodash": "^4.17.21", "minimatch": "~3.0.2" }, "engines": { @@ -7193,7 +8402,7 @@ "node_modules/got": { "version": "6.7.1", "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "integrity": "sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==", "dev": true, "dependencies": { "create-error-class": "^3.0.0", @@ -7213,15 +8422,15 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "node_modules/graceful-readlink": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", "dev": true }, "node_modules/graphlib": { @@ -7245,13 +8454,13 @@ "node_modules/growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", "dev": true }, "node_modules/grunt": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.2.1.tgz", - "integrity": "sha512-zgJjn9N56tScvRt/y0+1QA+zDBnKTrkpyeSBqQPLcZvbqTD/oyGMrdZQXmm6I3828s+FmPvxc3Xv+lgKFtudOw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz", + "integrity": "sha512-mKwmo4X2d8/4c/BmcOETHek675uOqw0RuA/zy12jaspWqvTp4+ZeQF1W+OTpcbncnaBsfbQJ6l0l4j+Sn/GmaQ==", "dev": true, "dependencies": { "dateformat": "~3.0.3", @@ -7259,10 +8468,10 @@ "exit": "~0.1.2", "findup-sync": "~0.3.0", "glob": "~7.1.6", - "grunt-cli": "~1.3.2", - "grunt-known-options": "~1.1.0", - "grunt-legacy-log": "~2.0.0", - "grunt-legacy-util": "~1.1.1", + "grunt-cli": "~1.4.3", + "grunt-known-options": "~2.0.0", + "grunt-legacy-log": "~3.0.0", + "grunt-legacy-util": "~2.0.1", "iconv-lite": "~0.4.13", "js-yaml": "~3.14.0", "minimatch": "~3.0.4", @@ -7278,22 +8487,22 @@ } }, "node_modules/grunt-cli": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz", - "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", + "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", "dev": true, "dependencies": { - "grunt-known-options": "~1.1.0", + "grunt-known-options": "~2.0.0", "interpret": "~1.1.0", - "liftoff": "~2.5.0", + "liftup": "~3.0.1", "nopt": "~4.0.1", - "v8flags": "~3.1.1" + "v8flags": "~3.2.0" }, "bin": { "grunt": "bin/grunt" }, "engines": { - "node": ">=4" + "node": ">=10" } }, "node_modules/grunt-cli/node_modules/nopt": { @@ -7312,7 +8521,7 @@ "node_modules/grunt-contrib-clean": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz", - "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=", + "integrity": "sha512-tET+TYTd8vCtKeGwbLjoH8+SdI8ngVzGbPr7vlWkewG7mYYHIccd2Ldxq+PK3DyBp5Www3ugdkfsjoNKUl5MTg==", "dev": true, "dependencies": { "async": "^1.5.2", @@ -7320,6 +8529,9 @@ }, "engines": { "node": ">= 0.10.0" + }, + "peerDependencies": { + "grunt": ">=0.4.5" } }, "node_modules/grunt-contrib-clean/node_modules/rimraf": { @@ -7337,7 +8549,7 @@ "node_modules/grunt-contrib-connect": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz", - "integrity": "sha1-XPkzuRpnOGBEJzwLJERgPNmIebo=", + "integrity": "sha512-7OPoyfGrpOYzuiRPzGyzWDe/xFcjttXe1ztVSFS8TAVBtpfXeeOV9RiwuyqA4yN1UeOG2Pnpx8s0DcUDAu21Gw==", "dev": true, "dependencies": { "async": "^1.5.2", @@ -7352,12 +8564,15 @@ }, "engines": { "node": ">=0.10.0" + }, + "peerDependencies": { + "grunt": ">=0.4.0" } }, "node_modules/grunt-contrib-copy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", - "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", + "integrity": "sha512-gFRFUB0ZbLcjKb67Magz1yOHGBkyU6uL29hiEW1tdQ9gQt72NuMKIy/kS6dsCbV0cZ0maNCb0s6y+uT1FKU7jA==", "dev": true, "dependencies": { "chalk": "^1.1.1", @@ -7370,7 +8585,7 @@ "node_modules/grunt-contrib-copy/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -7379,7 +8594,7 @@ "node_modules/grunt-contrib-copy/node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "dependencies": { "ansi-styles": "^2.2.1", @@ -7395,7 +8610,7 @@ "node_modules/grunt-contrib-copy/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, "engines": { "node": ">=0.8.0" @@ -7404,7 +8619,7 @@ "node_modules/grunt-contrib-pug": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-contrib-pug/-/grunt-contrib-pug-1.0.0.tgz", - "integrity": "sha1-tSWlwK/wRiL3Vw4x+SQQbxb4G0Y=", + "integrity": "sha512-VfP4Jzf8u2DK8oFsNWMKvJOjnNAYOBOCfcatt7VSJlpo6zQG2fFjPmbUqgtfff450HEnM7qY5m6ix77JyNuYmw==", "dev": true, "dependencies": { "chalk": "^1.0.0", @@ -7417,7 +8632,7 @@ "node_modules/grunt-contrib-pug/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -7426,7 +8641,7 @@ "node_modules/grunt-contrib-pug/node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "dependencies": { "ansi-styles": "^2.2.1", @@ -7442,7 +8657,7 @@ "node_modules/grunt-contrib-pug/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, "engines": { "node": ">=0.8.0" @@ -7451,7 +8666,7 @@ "node_modules/grunt-contrib-stylus": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/grunt-contrib-stylus/-/grunt-contrib-stylus-1.2.0.tgz", - "integrity": "sha1-R9RG7wVESW7/naQY0A9XdFQ0crs=", + "integrity": "sha512-L+XT68YNgvpucbwczexLhkCXYcQdI1ozQZprSuFzMY8/sodFWD3gZfqSu/HUeK87g/ov09Yla24mMiNBhfaKcg==", "dev": true, "dependencies": { "async": "^1.5.2", @@ -7467,7 +8682,7 @@ "node_modules/grunt-contrib-stylus/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -7476,7 +8691,7 @@ "node_modules/grunt-contrib-stylus/node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "dependencies": { "ansi-styles": "^2.2.1", @@ -7492,7 +8707,7 @@ "node_modules/grunt-contrib-stylus/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, "engines": { "node": ">=0.8.0" @@ -7514,9 +8729,9 @@ } }, "node_modules/grunt-contrib-watch/node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -7525,7 +8740,7 @@ "node_modules/grunt-crx": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/grunt-crx/-/grunt-crx-1.0.5.tgz", - "integrity": "sha1-nU5QHO8WtyF3KmBBxNQdH5KFirU=", + "integrity": "sha512-CVmBxn3ScZX2uzyS7KQ24MpFVYFIi6pX4aEZ4zcKICzsRi7DFW8XMPY5QdKEzsNefK5XOnrOpXnbht5BUDl9Xw==", "dev": true, "dependencies": { "crx": "^3.0.1", @@ -7541,6 +8756,18 @@ "node": ">= 0.10.0" } }, + "node_modules/grunt-crx/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/grunt-exec": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz", @@ -7548,63 +8775,142 @@ "dev": true, "engines": { "node": ">=0.8.0" + }, + "peerDependencies": { + "grunt": ">=0.4" } }, "node_modules/grunt-known-options": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", - "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", + "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/grunt-legacy-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", - "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", + "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", "dev": true, "dependencies": { "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.0.0", + "grunt-legacy-log-utils": "~2.1.0", "hooker": "~0.2.3", - "lodash": "~4.17.5" + "lodash": "~4.17.19" }, "engines": { "node": ">= 0.10.0" } }, "node_modules/grunt-legacy-log-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", + "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", + "dev": true, + "dependencies": { + "chalk": "~4.1.0", + "lodash": "~4.17.19" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", - "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "chalk": "~2.4.1", - "lodash": "~4.17.10" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/grunt-legacy-log-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/grunt-legacy-util": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", - "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", + "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", "dev": true, "dependencies": { - "async": "~1.5.2", - "exit": "~0.1.1", - "getobject": "~0.1.0", + "async": "~3.2.0", + "exit": "~0.1.2", + "getobject": "~1.0.0", "hooker": "~0.2.3", - "lodash": "~4.17.10", - "underscore.string": "~3.3.4", - "which": "~1.3.0" + "lodash": "~4.17.21", + "underscore.string": "~3.3.5", + "which": "~2.0.2" }, "engines": { - "node": ">= 6" + "node": ">=10" } }, + "node_modules/grunt-legacy-util/node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, "node_modules/grunt-mocha-test": { "version": "0.13.3", "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.13.3.tgz", @@ -7616,6 +8922,21 @@ }, "engines": { "node": ">= 0.10.4" + }, + "peerDependencies": { + "mocha": ">=1.20.0" + } + }, + "node_modules/grunt-mocha-test/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, "node_modules/grunt-webpack": { @@ -7629,24 +8950,15 @@ }, "engines": { "node": ">=4" - } - }, - "node_modules/grunt/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" } }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true, "engines": { "node": ">=4" @@ -7656,6 +8968,7 @@ "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dev": true, "dependencies": { "ajv": "^6.12.3", @@ -7669,7 +8982,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -7680,7 +8992,7 @@ "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, "dependencies": { "ansi-regex": "^2.0.0" @@ -7689,10 +9001,19 @@ "node": ">=0.10.0" } }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-color": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "integrity": "sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -7701,24 +9022,53 @@ "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "dev": true, "dependencies": { "get-value": "^2.0.6", @@ -7732,7 +9082,7 @@ "node_modules/has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "dev": true, "dependencies": { "is-number": "^3.0.0", @@ -7745,7 +9095,7 @@ "node_modules/has-values/node_modules/kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -7757,7 +9107,7 @@ "node_modules/hasbin": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", - "integrity": "sha1-eMWSaJPIAhXCtWiuH9P8q3omlrA=", + "integrity": "sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg==", "dev": true, "dependencies": { "async": "~1.5" @@ -7780,12 +9130,6 @@ "node": ">=4" } }, - "node_modules/hash-base/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, "node_modules/hash-base/node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -7800,21 +9144,6 @@ "node": ">= 6" } }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "node_modules/hash-base/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -7828,16 +9157,16 @@ "node_modules/he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "integrity": "sha512-z/GDPjlRMNOa2XJiB4em8wJpuuBfrFOlYKTZxtpkdr1uPdibHI8rYA3MY0KDObpVyaes0e/aunid/t88ZI2EKA==", "dev": true, "bin": { "he": "bin/he" } }, "node_modules/highlight.js": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.1.tgz", - "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==", + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", "dev": true, "engines": { "node": "*" @@ -7846,7 +9175,7 @@ "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dev": true, "dependencies": { "hash.js": "^1.0.3", @@ -7857,7 +9186,7 @@ "node_modules/home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", "dev": true, "dependencies": { "os-homedir": "^1.0.0", @@ -7882,16 +9211,16 @@ "node_modules/hooker": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "integrity": "sha512-t+UerCsQviSymAInD01Pw+Dn/usmz1sRO+3Zk1+lx8eg+WKpD2ulcwWqHHL0+aseRBr+3+vIhiG1K1JTwaIcTA==", "dev": true, "engines": { "node": "*" } }, "node_modules/hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "node_modules/htmlparser2": { @@ -7922,40 +9251,25 @@ "node": ">= 6" } }, - "node_modules/htmlparser2/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "node_modules/htmlparser2/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/http-parser-js": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", - "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "node_modules/http-proxy-agent": { @@ -7980,10 +9294,16 @@ "ms": "2.0.0" } }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, "dependencies": { "assert-plus": "^1.0.0", @@ -7999,6 +9319,7 @@ "version": "3.3.7", "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.7.tgz", "integrity": "sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ==", + "deprecated": "Use the built-in module in node 9.0.0 or newer, instead", "dev": true, "engines": { "node": ">=0.12.0 <9.0.0" @@ -8007,7 +9328,7 @@ "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", "dev": true }, "node_modules/https-proxy-agent": { @@ -8024,20 +9345,14 @@ } }, "node_modules/https-proxy-agent/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -8050,15 +9365,29 @@ } }, "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", "dev": true }, "node_modules/ignore": { @@ -8070,13 +9399,13 @@ "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true }, "node_modules/import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", "dev": true, "engines": { "node": ">=4" @@ -8085,7 +9414,7 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { "node": ">=0.8.19" @@ -8100,7 +9429,7 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { "once": "^1.3.0", @@ -8108,23 +9437,26 @@ } }, "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "node_modules/inject-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/inject-loader/-/inject-loader-3.0.1.tgz", - "integrity": "sha512-0Kd4NqMJUhknG4ECiJ/mgyHJBpfBBWZ3IKHl2BLNQiFtMO7/xiv9mmHl7mGvE0iKrBeQAZdMcQP3sMXZN0cqeg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/inject-loader/-/inject-loader-4.0.1.tgz", + "integrity": "sha512-fUFtHkso2AnzQyyJjuGuDYL0mW2EIQUlS4MgXXmCIRjVLyDk3oXGJqNcSTUg6DGs1q4gvqVIWsxfmPKxF44xfw==", "dev": true, "dependencies": { "babel-core": "~6" + }, + "peerDependencies": { + "webpack": "^1 || ^2 || ^3 || ^4" } }, "node_modules/inquirer": { @@ -8152,9 +9484,9 @@ } }, "node_modules/inquirer/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, "engines": { "node": ">=4" @@ -8163,7 +9495,7 @@ "node_modules/inquirer/node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "dependencies": { "ansi-regex": "^3.0.0" @@ -8172,10 +9504,24 @@ "node": ">=4" } }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/interpret": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "integrity": "sha512-CLM8SNMDu7C5psFCn6Wg/tgpj/bKAg7hc2gWqcuR9OD5Ft9PhBpIu8PLicPeis+xDd6YX2ncI8MCA64I9tftIA==", "dev": true }, "node_modules/invariant": { @@ -8197,9 +9543,9 @@ } }, "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, "node_modules/ipaddr.js": { @@ -8224,48 +9570,55 @@ } }, "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "kind-of": "^6.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", "dev": true, "dependencies": { "binary-extensions": "^1.0.0" @@ -8274,100 +9627,104 @@ "node": ">=0.10.0" } }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "node_modules/is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dependencies": { - "kind-of": "^3.0.2" + "has": "^1.0.3" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "kind-of": "^6.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-expression": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", - "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", + "integrity": "sha512-vyMeQMq+AiH5uUnoBfMTwf18tO3bM6k1QXBE9D6ueAAquEfCZe3AJPtud9g6qS0+4X8xA7ndpZiDyeb2l2qOBw==", "dependencies": { "acorn": "~4.0.2", "object-assign": "^4.0.1" } }, - "node_modules/is-expression/node_modules/acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8376,7 +9733,7 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8389,24 +9746,27 @@ "dev": true, "engines": { "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "is-extglob": "^2.1.0" + "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" @@ -8415,7 +9775,7 @@ "node_modules/is-installed-globally": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "integrity": "sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==", "dev": true, "dependencies": { "global-dirs": "^0.1.0", @@ -8432,28 +9792,40 @@ "dev": true }, "node_modules/is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz", + "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==", "dev": true }, "node_modules/is-my-json-valid": { - "version": "2.20.5", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.5.tgz", - "integrity": "sha512-VTPuvvGQtxvCeghwspQu1rBgjYUT6FGxPlvFKbYuFtgc4ADsX3U5ihZOYN0qyU6u+d4X9xXb0IT5O6QpXKt87A==", + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz", + "integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==", "dev": true, "dependencies": { "generate-function": "^2.0.0", "generate-object-property": "^1.1.0", "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", + "jsonpointer": "^5.0.0", "xtend": "^4.0.0" } }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "integrity": "sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8462,7 +9834,7 @@ "node_modules/is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, "dependencies": { "kind-of": "^3.0.2" @@ -8471,10 +9843,25 @@ "node": ">=0.10.0" } }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -8486,7 +9873,7 @@ "node_modules/is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8495,7 +9882,7 @@ "node_modules/is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", "dev": true, "dependencies": { "path-is-inside": "^1.0.1" @@ -8505,13 +9892,9 @@ } }, "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "engines": { "node": ">=0.10.0" } @@ -8524,27 +9907,31 @@ "node_modules/is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", "dev": true }, "node_modules/is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "integrity": "sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dependencies": { - "has-symbols": "^1.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-relative": { @@ -8574,31 +9961,61 @@ "node": ">=0.10.0" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "node_modules/is-unc-path": { @@ -8616,9 +10033,21 @@ "node_modules/is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", "dev": true }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -8631,7 +10060,7 @@ "node_modules/is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, "engines": { "node": ">=4" @@ -8640,19 +10069,19 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8674,40 +10103,42 @@ "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, "node_modules/jed": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", - "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=", + "integrity": "sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==", "dev": true }, "node_modules/jetpack-id": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jetpack-id/-/jetpack-id-1.0.0.tgz", - "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", + "integrity": "sha512-uqasW8dq68KMl8cGkJpakBG/VgsfROblW7B3w9cTN0MQiZ5s+jmi8WgO4/lkrTPbakpU2LA+bZvyVBxadk+MHg==", + "deprecated": "Jetpack extensions are no longer supported by Firefox. Use web-ext instead to build a WebExtension.", "dev": true }, "node_modules/jose": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.1.0.tgz", - "integrity": "sha512-Hqx2vuNlo5sDe+ZWvOXAExWXk31mXgxMuUkUjEIeGNU4KFPZHO8hOnljhb25eoK4g+fth+7tU+k+AA+p/eZtYw==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.11.0.tgz", + "integrity": "sha512-wLe+lJHeG8Xt6uEubS4x0LVjS/3kXXu9dGoj9BNnlhYq7Kts0Pbb2pvv5KiI0yaKH/eaiR0LUOBhOVo9ktd05A==", "dev": true, "funding": { "url": "https://github.com/sponsors/panva" } }, "node_modules/jquery": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", - "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz", + "integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==", "dev": true }, "node_modules/js-select": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/js-select/-/js-select-0.6.0.tgz", - "integrity": "sha1-woTiKCTVknrsli3N8kcXSu+w0ZA=", + "integrity": "sha512-npBjRT1DXCKnpLqcsaXj5XVB5l/wAcSGCp03e/6xD5BHg9cFlnoQ/wrSGZIrtaa3J7+N9tLvX1RkxcykmJVyyg==", + "deprecated": "Package no longer supported. Contact support@npmjs.com for more info.", "dev": true, "dependencies": { "JSONSelect": "0.2.1", @@ -8717,7 +10148,7 @@ "node_modules/js-stringify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==" }, "node_modules/js-tokens": { "version": "4.0.0", @@ -8726,9 +10157,9 @@ "dev": true }, "node_modules/js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { "argparse": "^1.0.7", @@ -8741,7 +10172,7 @@ "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, "node_modules/jsesc": { @@ -8759,7 +10190,7 @@ "node_modules/json-merge-patch": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-0.2.3.tgz", - "integrity": "sha1-+ixrWvh9p3uuKWalidUuI+2B/kA=", + "integrity": "sha512-mjd5eObNGOhWkKCztwVuF25KOzLj2T4TJaWXLBgCQPeoPRJrMxKNgjNBE8sPmXoWRT0WDlo4Itd/gTlFh29TFw==", "dev": true, "dependencies": { "deep-equal": "^1.0.0" @@ -8772,9 +10203,9 @@ "dev": true }, "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "node_modules/json-schema-traverse": { @@ -8784,34 +10215,34 @@ "dev": true }, "node_modules/json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", + "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", "dev": true, "dependencies": { - "jsonify": "~0.0.0" + "jsonify": "^0.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, "node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -8822,25 +10253,25 @@ "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "dependencies": { + "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", "dev": true, - "engines": { - "node": "*" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/jsonpointer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", - "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8849,13 +10280,13 @@ "node_modules/jsonpointer.js": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/jsonpointer.js/-/jsonpointer.js-0.4.0.tgz", - "integrity": "sha1-ACyxI/dnqv3rAZYTLOXE+ZQcyro=", + "integrity": "sha512-2bf/1crAmPpsmj1I6rDT6W0SOErkrNBpb555xNWcMVWYrX6VnXpG0GRMQ2shvOHwafpfse8q0gnzPFYVH6Tqdg==", "dev": true }, "node_modules/JSONSelect": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.2.1.tgz", - "integrity": "sha1-QVQYpSbTP+MddLTe+jyDbUhewgM=", + "integrity": "sha512-Q/zZyUq4PZ7Mja7Jz7doBHcdQpfyCq2zR2B5AUqFtQs4hzIe4gsiZ1Yzkx7nEiS15JrYpfWe99MAjYwFt05Q4g==", "dev": true, "engines": { "node": ">=0.4.7" @@ -8883,31 +10314,25 @@ "npm": ">=1.4.28" } }, - "node_modules/jsonwebtoken/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/jstransformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", "dependencies": { "is-promise": "^2.0.0", "promise": "^7.0.1" @@ -8927,7 +10352,7 @@ "node_modules/jstransformer-markdown-it": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.1.0.tgz", - "integrity": "sha1-aewwzkUYvtWZezjwJ2SOjChekvc=", + "integrity": "sha512-E9uALZSe3M3jiq9Mza+wTlT44Yyh/s3D5XWUeJgH3vyzB05KFQz8Tv2I9do3BbRY/S5SDxFMkxB6fCGj+MA2rg==", "dependencies": { "markdown-it": "^8.0.0" }, @@ -8936,21 +10361,21 @@ } }, "node_modules/jszip": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", - "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" + "setimmediate": "^1.0.5" } }, "node_modules/just-extend": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.0.tgz", - "integrity": "sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", "dev": true }, "node_modules/jwa": { @@ -8986,7 +10411,7 @@ "node_modules/latest-version": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "integrity": "sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==", "dev": true, "dependencies": { "package-json": "^4.0.0" @@ -8996,17 +10421,18 @@ } }, "node_modules/lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==", + "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dev": true, "dependencies": { "readable-stream": "^2.0.5" @@ -9021,87 +10447,136 @@ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "dependencies": { - "invert-kv": "^2.0.0" + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/liftup": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", + "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==", + "dev": true, + "dependencies": { + "extend": "^3.0.2", + "findup-sync": "^4.0.0", + "fined": "^1.2.0", + "flagged-respawn": "^1.0.1", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.1", + "rechoir": "^0.7.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/liftup/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "node_modules/liftup/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "node_modules/liftup/node_modules/findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", "dev": true, "dependencies": { - "leven": "^3.1.0" + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" }, "engines": { - "node": ">= 6" + "node": ">= 8" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/liftup/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=0.12.0" } }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "node_modules/liftup/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "dependencies": { - "immediate": "~3.0.5" + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "node_modules/liftup/node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^2.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">= 0.8" + "node": ">=8.6" } }, - "node_modules/liftoff/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "node_modules/liftup/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "is-number": "^7.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8.0" } }, "node_modules/linkify-it": { @@ -9121,7 +10596,7 @@ "node_modules/load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -9137,7 +10612,7 @@ "node_modules/load-json-file/node_modules/parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "dev": true, "dependencies": { "error-ex": "^1.2.0" @@ -9149,7 +10624,7 @@ "node_modules/load-json-file/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { "node": ">=0.10.0" @@ -9158,7 +10633,7 @@ "node_modules/load-json-file/node_modules/strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dev": true, "dependencies": { "is-utf8": "^0.2.0" @@ -9177,151 +10652,142 @@ } }, "node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", + "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", "dev": true, "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "json5": "^2.1.2" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" + "node": ">=8.9.0" } }, "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.assign": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", "dev": true }, "node_modules/lodash.assignin": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", + "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==", "dev": true }, "node_modules/lodash.clone": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "integrity": "sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==", "dev": true }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", "dev": true }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, "node_modules/lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", "dev": true }, "node_modules/lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", "dev": true }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true }, "node_modules/lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "dev": true }, "node_modules/lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "dev": true }, "node_modules/lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "dev": true }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true }, "node_modules/lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "dev": true }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true }, "node_modules/lodash.set": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==", "dev": true }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, "node_modules/loglevel": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", - "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", "dev": true, "engines": { "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" } }, "node_modules/lolex": { @@ -9333,7 +10799,7 @@ "node_modules/longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", "engines": { "node": ">=0.10.0" } @@ -9350,6 +10816,15 @@ "loose-envify": "cli.js" } }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, "node_modules/lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -9379,16 +10854,18 @@ } }, "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/make-iterator": { @@ -9418,7 +10895,7 @@ "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -9427,7 +10904,7 @@ "node_modules/map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, "dependencies": { "object-visit": "^1.0.0" @@ -9439,12 +10916,15 @@ "node_modules/markdown": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", - "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", + "integrity": "sha512-ctGPIcuqsYoJ493sCtFK7H4UEgMWAUdXeBhPbdsg1W0LsV9yJELAHRsMmWfTgao6nH0/x5gf9FmsbxiXnrgaIQ==", "dependencies": { "nopt": "~2.1.1" }, "bin": { "md2html": "bin/md2html.js" + }, + "engines": { + "node": "*" } }, "node_modules/markdown-it": { @@ -9465,7 +10945,7 @@ "node_modules/markdown/node_modules/nopt": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", - "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", + "integrity": "sha512-x8vXm7BZ2jE1Txrxh/hO74HTuYZQEbo8edoRcANgdZ4+PCV+pbjd/xdummkmjjC7LU5EjPzlu8zEq/oxWylnKA==", "dependencies": { "abbrev": "1" }, @@ -9497,12 +10977,12 @@ "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "engines": { "node": ">= 0.6" } @@ -9524,7 +11004,7 @@ "node_modules/memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "dependencies": { "errno": "^0.1.3", @@ -9534,12 +11014,12 @@ "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "engines": { "node": ">= 0.6" } @@ -9568,6 +11048,43 @@ "node": ">=0.10.0" } }, + "node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", @@ -9582,36 +11099,37 @@ } }, "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, "bin": { "mime": "cli.js" }, "engines": { - "node": ">=4" + "node": ">=4.0.0" } }, "node_modules/mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "mime-db": "1.44.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -9629,7 +11147,7 @@ "node_modules/min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", "dev": true, "dependencies": { "dom-walk": "^0.1.0" @@ -9644,13 +11162,13 @@ "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", "dev": true }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -9660,10 +11178,13 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mississippi": { "version": "2.0.0", @@ -9711,10 +11232,22 @@ "node": ">=0.10.0" } }, + "node_modules/mixin-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/mixin-object": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "integrity": "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==", "dev": true, "dependencies": { "for-in": "^0.1.3", @@ -9727,22 +11260,22 @@ "node_modules/mixin-object/node_modules/for-in": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "integrity": "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/mocha": { @@ -9803,16 +11336,29 @@ "node": "*" } }, + "node_modules/mocha/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/mocha/node_modules/minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", "dev": true }, "node_modules/mocha/node_modules/mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, "dependencies": { "minimist": "0.0.8" @@ -9821,6 +11367,12 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/mocha/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/mocha/node_modules/supports-color": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", @@ -9834,9 +11386,9 @@ } }, "node_modules/moment": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "dev": true, "engines": { "node": "*" @@ -9858,11 +11410,29 @@ "node": ">= 0.8.0" } }, - "node_modules/morgan/node_modules/depd": { + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, "engines": { "node": ">= 0.8" } @@ -9870,7 +11440,7 @@ "node_modules/move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", "dev": true, "dependencies": { "aproba": "^1.1.1", @@ -9881,6 +11451,18 @@ "run-queue": "^1.0.3" } }, + "node_modules/move-concurrently/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/move-concurrently/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -9894,14 +11476,15 @@ } }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/multimatch": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "integrity": "sha512-0mzK8ymiWdehTBiJh0vClAzGyQbdtyWqzSVx//EK4N/D+599RFlGfTAsKw2zMSABtDG9C6Ul2+t8f2Lbdjf5mA==", "dev": true, "dependencies": { "array-differ": "^1.0.0", @@ -9916,13 +11499,13 @@ "node_modules/mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", "dev": true }, "node_modules/mv": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", "dev": true, "optional": true, "dependencies": { @@ -9937,7 +11520,7 @@ "node_modules/mv/node_modules/glob": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", "dev": true, "optional": true, "dependencies": { @@ -9951,10 +11534,23 @@ "node": "*" } }, + "node_modules/mv/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "optional": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/mv/node_modules/rimraf": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", "dev": true, "optional": true, "dependencies": { @@ -9976,9 +11572,9 @@ } }, "node_modules/nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "dev": true, "optional": true }, @@ -10004,16 +11600,53 @@ "node": ">=0.10.0" } }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "node_modules/natural-compare-lite": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q=", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, "node_modules/nconf": { @@ -10034,7 +11667,7 @@ "node_modules/nconf/node_modules/camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -10043,7 +11676,7 @@ "node_modules/nconf/node_modules/cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "dev": true, "dependencies": { "string-width": "^1.0.1", @@ -10051,10 +11684,19 @@ "wrap-ansi": "^2.0.0" } }, + "node_modules/nconf/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/nconf/node_modules/invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -10063,7 +11705,7 @@ "node_modules/nconf/node_modules/is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "dependencies": { "number-is-nan": "^1.0.0" @@ -10075,7 +11717,7 @@ "node_modules/nconf/node_modules/lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", "dev": true, "dependencies": { "invert-kv": "^1.0.0" @@ -10087,7 +11729,7 @@ "node_modules/nconf/node_modules/os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", "dev": true, "dependencies": { "lcid": "^1.0.0" @@ -10099,7 +11741,7 @@ "node_modules/nconf/node_modules/string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, "dependencies": { "code-point-at": "^1.0.0", @@ -10113,7 +11755,7 @@ "node_modules/nconf/node_modules/window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "integrity": "sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw==", "dev": true, "bin": { "window-size": "cli.js" @@ -10123,15 +11765,15 @@ } }, "node_modules/nconf/node_modules/y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, "node_modules/nconf/node_modules/yargs": { "version": "3.32.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "integrity": "sha512-ONJZiimStfZzhKamYvR/xvmgW3uEkAUFSP91y2caTEPhzF6uP2JfPiVZcq66b/YR0C3uitxSV7+T1x8p5bkmMg==", "dev": true, "dependencies": { "camelcase": "^2.0.1", @@ -10146,7 +11788,7 @@ "node_modules/ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", "dev": true, "optional": true, "bin": { @@ -10154,9 +11796,9 @@ } }, "node_modules/needle": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", - "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", "dev": true, "dependencies": { "debug": "^3.2.6", @@ -10171,30 +11813,18 @@ } }, "node_modules/needle/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/needle/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/needle/node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "engines": { "node": ">= 0.6" } @@ -10208,77 +11838,28 @@ "node_modules/netmask": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", + "integrity": "sha512-3DWDqAtIiPSkBXZyYEjwebfK56nrlQfRGt642fu8RPaL+ePu750+HCMHxjJCG3iEHq/0aeMvX6KIzlv7nuhfrA==", "dev": true, "engines": { "node": ">= 0.4.0" } }, "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, "node_modules/nib": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", - "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", - "dev": true, - "dependencies": { - "stylus": "0.54.5" - }, - "engines": { - "node": "*" - } - }, - "node_modules/nib/node_modules/glob": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.2.0.tgz", + "integrity": "sha512-7HgrnMl/3yOmWykueO8/D0q+0iWwe7Z+CK2Eaq/xQV8w1hK80WN1oReRQkfkrztbAAnp/nTHkUSl5EcVkor6JQ==", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, "engines": { "node": "*" - } - }, - "node_modules/nib/node_modules/source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "dependencies": { - "amdefine": ">=0.0.4" }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/nib/node_modules/stylus": { - "version": "0.54.5", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", - "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", - "dev": true, - "dependencies": { - "css-parse": "1.7.x", - "debug": "*", - "glob": "7.0.x", - "mkdirp": "0.5.x", - "sax": "0.5.x", - "source-map": "0.1.x" - }, - "bin": { - "stylus": "bin/stylus" - }, - "engines": { - "node": "*" + "peerDependencies": { + "stylus": "*" } }, "node_modules/nice-try": { @@ -10313,7 +11894,7 @@ "node_modules/nise/node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true }, "node_modules/nise/node_modules/lolex": { @@ -10335,55 +11916,43 @@ } }, "node_modules/nock": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.1.3.tgz", - "integrity": "sha512-YKj0rKQWMGiiIO+Y65Ut8OEgYM3PplLU2+GAhnPmqZdBd6z5IskgdBqWmjzA6lH3RF0S2a3wiAlrMOF5Iv2Jeg==", + "version": "13.2.9", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.9.tgz", + "integrity": "sha512-1+XfJNYF1cjGB+TKMWi29eZ0b82QOvQs2YoLNzbpWGqFMtRQHTa57osqdGj4FrFPgkO4D4AZinzUJR9VvW3QUA==", "dev": true, "dependencies": { "debug": "^4.1.0", "json-stringify-safe": "^5.0.1", - "lodash.set": "^4.3.2", + "lodash": "^4.17.21", "propagate": "^2.0.0" }, "engines": { "node": ">= 10.13" } }, - "node_modules/nock/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dependencies": { - "ms": "2.1.2" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=6.0" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" }, "peerDependenciesMeta": { - "supports-color": { + "encoding": { "optional": true } } }, - "node_modules/nock/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "engines": { - "node": "4.x || >=6.0.0" - } - }, "node_modules/node-forge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.0.0.tgz", - "integrity": "sha512-ShkiiAlzSsgH1IwGlA0jybk9vQTIOLyJ9nBd0JTuP+nzADJFLY0NoDijM2zvD/JaezooGu3G2p2FNxOAK6459g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, "engines": { "node": ">= 6.13.0" @@ -10420,38 +11989,18 @@ "vm-browserify": "^1.0.1" } }, - "node_modules/node-libs-browser/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } + "node_modules/node-libs-browser/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true }, "node_modules/node-libs-browser/node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "node_modules/node-libs-browser/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, - "node_modules/node-libs-browser/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/node-libs-browser/node_modules/util": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", @@ -10461,15 +12010,6 @@ "inherits": "2.0.3" } }, - "node_modules/node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/node-notifier": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", @@ -10482,16 +12022,37 @@ "which": "^1.3.0" } }, + "node_modules/node-notifier/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-notifier/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/node-releases": { - "version": "1.1.60", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", - "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "node_modules/node-rsa": { "version": "0.2.30", "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-0.2.30.tgz", - "integrity": "sha1-iRLiw7G2TM5sp4PKsa8oKzAK3uY=", + "integrity": "sha512-Tg5XrlbigFm6rek1UoIIPRHRbisJL8MhVvzx6xl/bNMaW3qRKQYJSswHsQOnoa/zTLaRG/uKht+XisA71P8U4Q==", "dev": true, "dependencies": { "asn1": "0.2.3", @@ -10501,13 +12062,14 @@ "node_modules/node-rsa/node_modules/lodash": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.3.0.tgz", - "integrity": "sha1-ARzlLQGxTmDq7qdqy5uLpCxwWBs=", + "integrity": "sha512-gpux6tVfBHsUdUIciz5HoV0ChAxUTvi0ChpQMIjAsKtg6FTYFtd1B1G0JlqHvAio3teaMVGPDPk2seVq1INwOQ==", "dev": true }, "node_modules/nomnom": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", - "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "integrity": "sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ==", + "deprecated": "Package no longer supported. Contact support@npmjs.com for more info.", "dev": true, "dependencies": { "chalk": "~0.4.0", @@ -10517,7 +12079,7 @@ "node_modules/nomnom/node_modules/ansi-styles": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "integrity": "sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA==", "dev": true, "engines": { "node": ">=0.8.0" @@ -10526,7 +12088,7 @@ "node_modules/nomnom/node_modules/chalk": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "integrity": "sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==", "dev": true, "dependencies": { "ansi-styles": "~1.0.0", @@ -10540,7 +12102,7 @@ "node_modules/nomnom/node_modules/strip-ansi": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "integrity": "sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg==", "dev": true, "bin": { "strip-ansi": "cli.js" @@ -10552,7 +12114,7 @@ "node_modules/nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "dev": true, "dependencies": { "abbrev": "1" @@ -10573,10 +12135,19 @@ "validate-npm-package-license": "^3.0.1" } }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, "dependencies": { "remove-trailing-separator": "^1.0.1" @@ -10588,7 +12159,7 @@ "node_modules/npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, "dependencies": { "path-key": "^2.0.0" @@ -10609,7 +12180,7 @@ "node_modules/number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -10627,7 +12198,7 @@ "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { "node": ">=0.10.0" } @@ -10635,7 +12206,7 @@ "node_modules/object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, "dependencies": { "copy-descriptor": "^0.1.0", @@ -10649,7 +12220,7 @@ "node_modules/object-copy/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "dependencies": { "is-descriptor": "^0.1.0" @@ -10658,10 +12229,57 @@ "node": ">=0.10.0" } }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-copy/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -10671,22 +12289,27 @@ } }, "node_modules/object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { @@ -10701,7 +12324,7 @@ "node_modules/object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, "dependencies": { "isobject": "^3.0.0" @@ -10711,24 +12334,27 @@ } }, "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", "dev": true, "dependencies": { "array-each": "^1.0.1", @@ -10743,7 +12369,7 @@ "node_modules/object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", "dev": true, "dependencies": { "for-own": "^1.0.0", @@ -10756,7 +12382,7 @@ "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, "dependencies": { "isobject": "^3.0.1" @@ -10766,9 +12392,9 @@ } }, "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dependencies": { "ee-first": "1.1.1" }, @@ -10788,7 +12414,7 @@ "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } @@ -10796,7 +12422,7 @@ "node_modules/onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, "dependencies": { "mimic-fn": "^1.0.0" @@ -10817,7 +12443,7 @@ "node_modules/opn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "integrity": "sha512-iPBWbPP4OEOzR1xfhpGLDh+ypKBOygunZhM9jBtA7FS5sKjEiMZw0EFb82hnDOmTZX90ZWLoZKUza4cVt8MexA==", "dev": true, "dependencies": { "object-assign": "^4.0.1", @@ -10847,13 +12473,13 @@ "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -10876,7 +12502,7 @@ "node_modules/os-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/os-name/-/os-name-2.0.1.tgz", - "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=", + "integrity": "sha512-zzMwE/HWRISM52Q966yHosPJ1alrm5Cpw/C9ZhSid50RsMpLtOwc1rtmWxKn7TggPM+GVLUC3RxgWmklOiUgOQ==", "dev": true, "dependencies": { "macos-release": "^1.0.0", @@ -10889,7 +12515,7 @@ "node_modules/os-shim": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", - "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", + "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==", "dev": true, "engines": { "node": ">= 0.4.0" @@ -10898,7 +12524,7 @@ "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, "engines": { "node": ">=0.10.0" @@ -10917,7 +12543,7 @@ "node_modules/outlayer": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", - "integrity": "sha1-KYY7beEOpdrf/8rfoNcokHOH6aI=", + "integrity": "sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw==", "dev": true, "dependencies": { "ev-emitter": "^1.0.0", @@ -10928,7 +12554,7 @@ "node_modules/p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", "dev": true, "engines": { "node": ">=4" @@ -10937,7 +12563,7 @@ "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, "engines": { "node": ">=4" @@ -10962,18 +12588,21 @@ }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/p-try": { @@ -11002,20 +12631,14 @@ } }, "node_modules/pac-proxy-agent/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/pac-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/pac-resolver": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", @@ -11032,7 +12655,7 @@ "node_modules/package-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "integrity": "sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==", "dev": true, "dependencies": { "got": "^6.7.1", @@ -11044,6 +12667,15 @@ "node": ">=4" } }, + "node_modules/package-json/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -11062,14 +12694,13 @@ } }, "node_modules/parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, "dependencies": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" @@ -11078,7 +12709,7 @@ "node_modules/parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", "dev": true, "dependencies": { "is-absolute": "^1.0.0", @@ -11092,7 +12723,7 @@ "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "dependencies": { "error-ex": "^1.3.1", @@ -11105,7 +12736,7 @@ "node_modules/parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11131,7 +12762,7 @@ "node_modules/pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11140,7 +12771,7 @@ "node_modules/path": { "version": "0.12.7", "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", "dev": true, "dependencies": { "process": "^0.11.1", @@ -11156,22 +12787,22 @@ "node_modules/path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", "dev": true }, "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11180,27 +12811,27 @@ "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true }, "node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-root": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", "dev": true, "dependencies": { "path-root-regex": "^0.1.0" @@ -11212,7 +12843,7 @@ "node_modules/path-root-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11221,12 +12852,12 @@ "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, "node_modules/path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -11240,25 +12871,25 @@ "node_modules/path-type/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, "engines": { "node": "*" } }, "node_modules/pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "dependencies": { "create-hash": "^1.1.2", @@ -11274,38 +12905,46 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "optional": true, "engines": { "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=4" } }, "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11314,7 +12953,7 @@ "node_modules/pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "dependencies": { "pinkie": "^2.0.0" @@ -11343,9 +12982,9 @@ } }, "node_modules/pino-std-serializers": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz", - "integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.5.0.tgz", + "integrity": "sha512-wXqbqSrIhE58TdrxxlfLwU9eDhrzppQDvGhBEr1gYbzzM4KKo3Y63gSjiDXRKLVS2UOXdPNR2v+KnQgNrs+xUg==", "dev": true }, "node_modules/pino/node_modules/pump": { @@ -11359,27 +12998,24 @@ } }, "node_modules/pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true, - "dependencies": { - "node-modules-regexp": "^1.0.0" - }, "engines": { "node": ">= 6" } }, - "node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/pluralize": { @@ -11394,7 +13030,7 @@ "node_modules/po2json": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/po2json/-/po2json-0.4.5.tgz", - "integrity": "sha1-R7spUtoy1Yob4vJWpZjuvAt0URg=", + "integrity": "sha512-JH0hgi1fC0t9UvdiyS7kcVly0N1WNey4R2YZ/jPaxQKYm6Cfej7ZTgiEy8LP2JwoEhONceiNS8JH5mWPQkiXeA==", "dev": true, "dependencies": { "gettext-parser": "1.1.0", @@ -11411,12 +13047,17 @@ "version": "1.16.1", "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "dev": true + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } }, "node_modules/portscanner": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz", - "integrity": "sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI=", + "integrity": "sha512-3MCx40XO6ChNJJHw1tTFukQK/M/8FacGZK/vGbnrKpozObrJzembYtfi7ZdA2hkF2Lojg77XhsKUPvF8eHKcDA==", "dev": true, "dependencies": { "async": "1.5.2" @@ -11429,7 +13070,7 @@ "node_modules/posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11461,7 +13102,7 @@ "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -11470,7 +13111,7 @@ "node_modules/prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11502,7 +13143,7 @@ "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, "engines": { "node": ">= 0.6.0" @@ -11534,13 +13175,14 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, "node_modules/promise.any": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/promise.any/-/promise.any-0.1.1.tgz", - "integrity": "sha1-Fg+JisPHW1y7cw/yOgyi8XQHvzo=", + "integrity": "sha512-RGLK/1LwpbkZMv1WGVN6dpSRqi03QtYXuInuVHBhJx6dQ9+VDl7zYfVnKpU15awZGQDpmPvrigsTiVBFvw18mw==", + "deprecated": "Please use v1.0 or higher, which is now compliant with the proposed JS spec", "dev": true, "engines": { "node": ">=4.0.0" @@ -11556,11 +13198,11 @@ } }, "node_modules/proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dependencies": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" }, "engines": { @@ -11584,20 +13226,14 @@ } }, "node_modules/proxy-agent/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -11607,19 +13243,19 @@ "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "node_modules/public-encrypt": { @@ -11637,9 +13273,9 @@ } }, "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, "node_modules/pug": { @@ -11668,9 +13304,9 @@ } }, "node_modules/pug-code-gen": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", - "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.3.tgz", + "integrity": "sha512-r9sezXdDuZJfW9J91TN/2LFbiqDhmltTFmGpHTsGdrNGp3p4SxAjjXEfnuK2e4ywYsRIVP0NeLbSAMHUcaX1EA==", "dependencies": { "constantinople": "^3.1.2", "doctypes": "^1.1.0", @@ -11790,7 +13426,9 @@ "version": "1.20.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz", "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==", + "deprecated": "Version no longer supported. Upgrade to @latest", "dev": true, + "hasInstallScript": true, "dependencies": { "debug": "^4.1.0", "extract-zip": "^1.6.6", @@ -11805,33 +13443,6 @@ "node": ">=6.4.0" } }, - "node_modules/puppeteer/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/puppeteer/node_modules/mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/puppeteer/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/puppeteer/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -11845,17 +13456,24 @@ } }, "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "engines": { "node": ">=0.4.x" } @@ -11863,7 +13481,7 @@ "node_modules/querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true, "engines": { "node": ">=0.4.x" @@ -11903,12 +13521,12 @@ } }, "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -11934,7 +13552,7 @@ "node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", "dev": true, "dependencies": { "load-json-file": "^1.0.0", @@ -11948,7 +13566,7 @@ "node_modules/read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", "dev": true, "dependencies": { "find-up": "^1.0.0", @@ -11961,7 +13579,7 @@ "node_modules/read-pkg-up/node_modules/find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", "dev": true, "dependencies": { "path-exists": "^2.0.0", @@ -11974,7 +13592,7 @@ "node_modules/read-pkg-up/node_modules/path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", "dev": true, "dependencies": { "pinkie-promise": "^2.0.0" @@ -11998,14 +13616,11 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/readdirp": { "version": "2.2.1", @@ -12024,7 +13639,7 @@ "node_modules/readline2": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "integrity": "sha512-8/td4MmwUB6PkZUbV25uKz7dfrmjYWxsW8DVfibWdlHRk/l/DfHKn4pU+dfcoGLFgWOdyGCzINRQD7jn+Bv+/g==", "dev": true, "dependencies": { "code-point-at": "^1.0.0", @@ -12035,7 +13650,7 @@ "node_modules/readline2/node_modules/is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "dependencies": { "number-is-nan": "^1.0.0" @@ -12047,61 +13662,61 @@ "node_modules/readline2/node_modules/mute-stream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "integrity": "sha512-EbrziT4s8cWPmzr47eYVW3wimS4HsvlnV5ri1xw1aR6JQo/OrJX5rkl32K/QQHdxeabJETtfeaROGhd8W7uBgg==", "dev": true }, "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, "dependencies": { - "resolve": "^1.1.6" + "resolve": "^1.9.0" }, "engines": { "node": ">= 0.10" } }, "node_modules/recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "dependencies": { - "minimatch": "3.0.4" + "minimatch": "^3.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, "node_modules/regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==", "dev": true }, "node_modules/regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" @@ -12120,17 +13735,58 @@ "node": ">=0.10.0" } }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dev": true, "dependencies": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "functions-have-names": "^1.2.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regexpp": { @@ -12143,17 +13799,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", + "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -12172,7 +13828,7 @@ "node_modules/registry-url": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", "dev": true, "dependencies": { "rc": "^1.0.1" @@ -12182,15 +13838,15 @@ } }, "node_modules/regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", "dev": true }, "node_modules/regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -12202,7 +13858,7 @@ "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -12211,7 +13867,7 @@ "node_modules/relaxed-json": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/relaxed-json/-/relaxed-json-1.0.1.tgz", - "integrity": "sha1-fI1KovCVcEzQIOMugJm8rhA/C9Q=", + "integrity": "sha512-1ECKWi9z++YJI6kopSh4gAFPgNIKD7IgzQdImhqtlb9ip62LgkQmD70AwNgPGXgqxlmVzKTvg/s+wNG1Da7UTw==", "dev": true, "dependencies": { "chalk": "^1.0.0", @@ -12227,7 +13883,7 @@ "node_modules/relaxed-json/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -12236,7 +13892,7 @@ "node_modules/relaxed-json/node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "dependencies": { "ansi-styles": "^2.2.1", @@ -12252,7 +13908,7 @@ "node_modules/relaxed-json/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, "engines": { "node": ">=0.8.0" @@ -12261,13 +13917,13 @@ "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true }, "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -12276,7 +13932,7 @@ "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "engines": { "node": ">=0.10" } @@ -12284,7 +13940,7 @@ "node_modules/repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", "dev": true, "dependencies": { "is-finite": "^1.0.0" @@ -12297,6 +13953,7 @@ "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -12334,12 +13991,16 @@ }, "engines": { "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" } }, "node_modules/request-promise-native": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", "dev": true, "dependencies": { "request-promise-core": "1.1.4", @@ -12348,12 +14009,15 @@ }, "engines": { "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" } }, "node_modules/request/node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true, "engines": { "node": ">=0.6" @@ -12362,7 +14026,7 @@ "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -12371,13 +14035,13 @@ "node_modules/require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", "dev": true }, "node_modules/require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", "dev": true, "dependencies": { "caller-path": "^0.1.0", @@ -12388,17 +14052,25 @@ } }, "node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dependencies": { - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, "dependencies": { "expand-tilde": "^2.0.0", @@ -12411,7 +14083,7 @@ "node_modules/resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -12420,13 +14092,14 @@ "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", "dev": true }, "node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, "dependencies": { "onetime": "^2.0.0", @@ -12448,7 +14121,7 @@ "node_modules/right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", "dependencies": { "align-text": "^0.1.1" }, @@ -12466,6 +14139,9 @@ }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ripemd160": { @@ -12490,7 +14166,7 @@ "node_modules/run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", "dev": true, "dependencies": { "aproba": "^1.1.1" @@ -12499,13 +14175,13 @@ "node_modules/rx-lite": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "integrity": "sha512-1I1+G2gteLB8Tkt8YI1sJvSIfa0lWuRtC8GjvtyPBcLSF5jBCCJJqKrpER5JU5r6Bhe+i9/pK3VMuUcXu0kdwQ==", "dev": true }, "node_modules/rx-lite-aggregates": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "integrity": "sha512-3xPNZGW93oCjiO7PtKxRK6iOVYBWBvtf9QHDfU23Oc+dLIQmAV//UnyXV/yihv81VS/UqoQPk4NegS8EFi55Hg==", "dev": true, "dependencies": { "rx-lite": "*" @@ -12524,14 +14200,28 @@ } }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/safe-json-parse": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", - "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "integrity": "sha512-o0JmTu17WGUaUOHa1l0FPGXKBfijbxK6qoHzlkihsDXxzBHvJcA7zgviKR92Xs841rX9pK16unfphLq0/KqX7A==", "dev": true }, "node_modules/safe-json-stringify": { @@ -12544,12 +14234,26 @@ "node_modules/safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, "dependencies": { "ret": "~0.1.10" } }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -12559,47 +14263,52 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", + "deprecated": "This package has been deprecated in favour of @sinonjs/samsam", "dev": true }, "node_modules/sax": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", - "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, "node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" }, "engines": { "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/secure-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", - "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o=", + "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==", "dev": true }, "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" } }, "node_modules/semver-diff": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "integrity": "sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw==", "dev": true, "dependencies": { "semver": "^5.0.3" @@ -12608,33 +14317,66 @@ "node": ">=0.10.0" } }, + "node_modules/semver-diff/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/serialize-javascript": { "version": "1.9.1", @@ -12645,7 +14387,7 @@ "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "dependencies": { "accepts": "~1.3.4", @@ -12660,10 +14402,28 @@ "node": ">= 0.8.0" } }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "dependencies": { "depd": "~1.1.2", @@ -12675,21 +14435,42 @@ "node": ">= 0.6" } }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" @@ -12698,18 +14479,9 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, - "node_modules/set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -12725,13 +14497,13 @@ "node": ">=0.10.0" } }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "isobject": "^3.0.1" }, "engines": { "node": ">=0.10.0" @@ -12740,13 +14512,13 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/sha.js": { "version": "2.4.11", @@ -12764,7 +14536,7 @@ "node_modules/shallow-clone": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "integrity": "sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==", "dev": true, "dependencies": { "is-extendable": "^0.1.1", @@ -12779,7 +14551,7 @@ "node_modules/shallow-clone/node_modules/kind-of": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "integrity": "sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==", "dev": true, "dependencies": { "is-buffer": "^1.0.2" @@ -12788,19 +14560,10 @@ "node": ">=0.10.0" } }, - "node_modules/shallow-clone/node_modules/lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "dependencies": { "shebang-regex": "^1.0.0" @@ -12812,7 +14575,7 @@ "node_modules/shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -12821,7 +14584,7 @@ "node_modules/shell-quote": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "integrity": "sha512-V0iQEZ/uoem3NmD91rD8XiuozJnq9/ZJnbHVXHnWqP1ucAhS3yJ7sLIIzEi57wFFcK3oi3kFUC46uSyWr35mxg==", "dev": true, "dependencies": { "array-filter": "~0.0.0", @@ -12847,12 +14610,37 @@ "node": ">=4" } }, + "node_modules/shelljs/node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "dev": true }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/sign-addon": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-0.3.1.tgz", @@ -12874,7 +14662,7 @@ "node_modules/sign-addon/node_modules/ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", "dev": true, "dependencies": { "co": "^4.6.0", @@ -12886,7 +14674,7 @@ "node_modules/sign-addon/node_modules/babel-polyfill": { "version": "6.16.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", - "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", + "integrity": "sha512-PI/IOV3AnDfLph2y9meCys0AGY4U3Pj8ozSIKp+76zlMvin2w0Rxy0RgQUnCTAQWqKsHqvPijoEyNIdrao6J1g==", "dev": true, "dependencies": { "babel-runtime": "^6.9.1", @@ -12897,19 +14685,20 @@ "node_modules/sign-addon/node_modules/es6-error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.0.tgz", - "integrity": "sha1-8JTHBB9mJZm7EnINoFnWucf/D0A=", + "integrity": "sha512-atCcmEjui49DMEp2RgaUrQcmJPqoQOiSL9LEXAM4tEcy29maTfJP2motu75GfyefeZElQOEzOHiO/8Do7Dr1Lw==", "dev": true }, "node_modules/sign-addon/node_modules/fast-deep-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", "dev": true }, "node_modules/sign-addon/node_modules/har-validator": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "integrity": "sha512-r7LZkP7Z6WMxj5zARzB9dSpIKu/sp0NfHIgtj6kmQXhEArNctjB5FEv/L2XfLdWqIocPT2QVt0LFOlEUioTBtQ==", + "deprecated": "this library is no longer supported", "dev": true, "dependencies": { "ajv": "^5.1.0", @@ -12922,13 +14711,13 @@ "node_modules/sign-addon/node_modules/json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", "dev": true }, "node_modules/sign-addon/node_modules/mz": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.5.0.tgz", - "integrity": "sha1-KFkCXfA9RrV7sxcXSxlkd85kzsE=", + "integrity": "sha512-jTqXIBzwjbFIwluxl7vtU5BbzQjPbhSsugBkJfqL9i3fx3Tl6N0VI/+AI8vDROzTdrzdjGBazK7n5yK1xCNE7A==", "dev": true, "dependencies": { "any-promise": "^1.0.0", @@ -12939,7 +14728,7 @@ "node_modules/sign-addon/node_modules/oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "integrity": "sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg==", "dev": true, "engines": { "node": "*" @@ -12948,13 +14737,13 @@ "node_modules/sign-addon/node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, "node_modules/sign-addon/node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true, "engines": { "node": ">=0.6" @@ -12963,13 +14752,14 @@ "node_modules/sign-addon/node_modules/regenerator-runtime": { "version": "0.9.6", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", - "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=", + "integrity": "sha512-D0Y/JJ4VhusyMOd/o25a3jdUqN/bC85EFsaoL9Oqmy/O4efCh+xhp7yj2EEOsj974qvMkcW8AwUzJ1jB/MbxCw==", "dev": true }, "node_modules/sign-addon/node_modules/request": { "version": "2.87.0", "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -13000,7 +14790,7 @@ "node_modules/sign-addon/node_modules/source-map-support": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.6.tgz", - "integrity": "sha1-MlUqpktFg5KoXqs7C17mFScWeus=", + "integrity": "sha512-cqbwg0QgDOUayGgn8KALCCBWf/tuxJCCyvqkNmtb6pF/3YgJUoKqtZ+7AKDyCITNd3+dbz7VdHjcxEgFL9U/aQ==", "dev": true, "dependencies": { "source-map": "^0.5.3" @@ -13019,9 +14809,9 @@ } }, "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "node_modules/sinon": { @@ -13029,6 +14819,7 @@ "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.5.0.tgz", "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", "dev": true, + "hasInstallScript": true, "dependencies": { "@sinonjs/formatio": "^2.0.0", "diff": "^3.1.0", @@ -13043,12 +14834,16 @@ "version": "2.14.0", "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", - "dev": true + "dev": true, + "peerDependencies": { + "chai": ">=1.9.2 <5", + "sinon": "^1.4.0 || ^2.1.0 || ^3.0.0 || ^4.0.0" + } }, "node_modules/slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -13069,7 +14864,7 @@ "node_modules/smart-buffer": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", - "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", + "integrity": "sha512-1+8bxygjTsNfvQe0/0pNBesTOlSHtOeG6b6LYbvsZCCHDKYZ40zcQo6YTnZBWrBSLWOCbrHljLdEmGMYebu7aQ==", "dev": true, "engines": { "node": ">= 0.10.15", @@ -13112,7 +14907,7 @@ "node_modules/snapdragon-node/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "dependencies": { "is-descriptor": "^1.0.0" @@ -13121,60 +14916,67 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "kind-of": "^3.2.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dev": true, "dependencies": { - "kind-of": "^3.2.0" + "kind-of": "^3.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon-util/node_modules/kind-of": { + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -13183,34 +14985,64 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dev": true, "dependencies": { - "is-descriptor": "^0.1.0" + "kind-of": "^3.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" } }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/snyk": { "version": "1.110.2", "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.110.2.tgz", "integrity": "sha512-SQE4sudrscd48EoRJqy5h5S6c8YBiOw0r0Se3rfg1l6ElJGgCB9je6XEzfe+UmfES06D7ueFYepiQPxTwH4Qww==", + "deprecated": "A medium severity vulnerability was found in the Snyk CLI version you are using. We fixed the vulnerability in version 1.996.0. We recommend updating to the latest version. More details here: https://snyk.co/ue1NS", "dev": true, "dependencies": { "abbrev": "^1.1.1", @@ -13269,20 +15101,14 @@ } }, "node_modules/snyk-config/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/snyk-config/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/snyk-docker-plugin": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.12.3.tgz", @@ -13295,18 +15121,18 @@ } }, "node_modules/snyk-docker-plugin/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/snyk-docker-plugin/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/snyk-docker-plugin/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "node_modules/snyk-go-plugin": { @@ -13340,20 +15166,14 @@ } }, "node_modules/snyk-module/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/snyk-module/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/snyk-mvn-plugin": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.0.0.tgz", @@ -13386,6 +15206,12 @@ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, + "node_modules/snyk-nodejs-lockfile-parser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/snyk-nuget-plugin": { "version": "1.6.5", "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.6.5.tgz", @@ -13399,20 +15225,14 @@ } }, "node_modules/snyk-nuget-plugin/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/snyk-nuget-plugin/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/snyk-php-plugin": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.5.1.tgz", @@ -13425,20 +15245,14 @@ } }, "node_modules/snyk-php-plugin/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/snyk-php-plugin/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/snyk-policy": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.13.1.tgz", @@ -13457,19 +15271,22 @@ } }, "node_modules/snyk-policy/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/snyk-policy/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/snyk-policy/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } }, "node_modules/snyk-python-plugin": { "version": "1.9.0", @@ -13514,35 +15331,32 @@ } }, "node_modules/snyk-resolve-deps/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/snyk-resolve-deps/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/snyk-resolve-deps/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } }, "node_modules/snyk-resolve/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/snyk-resolve/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/snyk-sbt-plugin": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.0.0.tgz", @@ -13552,7 +15366,7 @@ "node_modules/snyk-tree": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/snyk-tree/-/snyk-tree-1.0.0.tgz", - "integrity": "sha1-D7cxdtvzLngvGRAClBYESPkRHMg=", + "integrity": "sha512-JQezX6eaVi0uNctPcx2Uzy5KA9lpTRRe31n8NI71DIseGvI6OVCfuKjzFptE06h4ZISMey351ICXnHBadBtWdg==", "dev": true, "dependencies": { "archy": "^1.0.0" @@ -13564,7 +15378,7 @@ "node_modules/snyk-try-require": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/snyk-try-require/-/snyk-try-require-1.3.1.tgz", - "integrity": "sha1-bgJvkuZK9/zM6h7lPVJIQeQYohI=", + "integrity": "sha512-adCnpfCvigiarbADOHuqh82P4aQUlyq6nWzhVmEUly62Q3tnVg4BGtgjYISkaj9GGBmpgVZiJegENBpQr02NsQ==", "dev": true, "dependencies": { "debug": "^3.1.0", @@ -13574,33 +15388,27 @@ } }, "node_modules/snyk-try-require/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/snyk-try-require/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/snyk/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/snyk/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -13628,12 +15436,6 @@ "through": "^2.3.6" } }, - "node_modules/snyk/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/snyk/node_modules/opn": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", @@ -13649,13 +15451,22 @@ "node_modules/snyk/node_modules/rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "integrity": "sha512-Cun9QucwK6MIrp3mry/Y7hqD1oFqTYLQ4pGxaHTjIdaFDWRGGLikqp6u8LcWJnzpoALg9hap+JGk8sFIUuEGNA==", "dev": true }, + "node_modules/snyk/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/snyk/node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "dependencies": { "ansi-regex": "^3.0.0" @@ -13667,7 +15478,8 @@ "node_modules/socks": { "version": "1.1.10", "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", - "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", + "integrity": "sha512-ArX4vGPULWjKDKgUnW8YzfI2uXW7kzgkJuB0GnFBA/PfT3exrrOk+7Wk2oeb894Qf20u1PWv9LEgrO0Z82qAzA==", + "deprecated": "If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0", "dev": true, "dependencies": { "ip": "^1.1.4", @@ -13706,7 +15518,7 @@ "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "engines": { "node": ">=0.10.0" } @@ -13715,6 +15527,7 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "dev": true, "dependencies": { "atob": "^2.1.2", @@ -13725,9 +15538,9 @@ } }, "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -13744,16 +15557,18 @@ } }, "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", "dev": true }, "node_modules/spawn-sync": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", - "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", + "integrity": "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==", "dev": true, + "hasInstallScript": true, "dependencies": { "concat-stream": "^1.4.7", "os-shim": "^0.1.2" @@ -13786,15 +15601,15 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "node_modules/split": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", "dev": true, "dependencies": { "through": "2" @@ -13815,16 +15630,52 @@ "node": ">=0.10.0" } }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "dependencies": { "asn1": "~0.2.3", @@ -13858,7 +15709,7 @@ "node_modules/static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, "dependencies": { "define-property": "^0.2.5", @@ -13868,30 +15719,101 @@ "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "dependencies": { - "is-descriptor": "^0.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "engines": { "node": ">=0.10.0" } }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", "dev": true, "engines": { "node": ">=0.10.0" @@ -13933,12 +15855,27 @@ "node_modules/stream-parser": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", - "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==", "dev": true, "dependencies": { "debug": "2" } }, + "node_modules/stream-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/stream-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", @@ -13948,7 +15885,7 @@ "node_modules/stream-to-array": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", - "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=", + "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==", "dev": true, "dependencies": { "any-promise": "^1.1.0" @@ -13957,7 +15894,7 @@ "node_modules/stream-to-promise": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-2.2.0.tgz", - "integrity": "sha1-se2y4cjLESidG1A8CNPyrvUeZQ8=", + "integrity": "sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw==", "dev": true, "dependencies": { "any-promise": "~1.3.0", @@ -13968,7 +15905,7 @@ "node_modules/stream-to-promise/node_modules/end-of-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", - "integrity": "sha1-6TUyWLqpEIll78QcsO+K3i88+wc=", + "integrity": "sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==", "dev": true, "dependencies": { "once": "~1.3.0" @@ -13977,22 +15914,31 @@ "node_modules/stream-to-promise/node_modules/once": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", "dev": true, "dependencies": { "wrappy": "1" } }, "node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "node_modules/string-template": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "integrity": "sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw==", "dev": true }, "node_modules/string-width": { @@ -14009,9 +15955,9 @@ } }, "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, "engines": { "node": ">=4" @@ -14020,7 +15966,7 @@ "node_modules/string-width/node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "dependencies": { "ansi-regex": "^3.0.0" @@ -14043,29 +15989,37 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "dependencies": { "ansi-regex": "^2.0.0" @@ -14077,7 +16031,7 @@ "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { "node": ">=4" @@ -14086,7 +16040,7 @@ "node_modules/strip-bom-buf": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", - "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "integrity": "sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==", "dev": true, "dependencies": { "is-utf8": "^0.2.1" @@ -14098,7 +16052,7 @@ "node_modules/strip-bom-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz", - "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", + "integrity": "sha512-2di6sulSHfspbuEJHwwF6vzwijA4uaKsKYtviRQsJsOdxxb6yexiDcZFQ5oY10J50YxmCdHn/1sQmxDKbrGOVw==", "dev": true, "dependencies": { "first-chunk-stream": "^2.0.0", @@ -14111,7 +16065,7 @@ "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -14120,7 +16074,7 @@ "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -14148,15 +16102,6 @@ "node": "*" } }, - "node_modules/stylus/node_modules/css-parse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", - "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", - "dev": true, - "dependencies": { - "css": "^2.0.0" - } - }, "node_modules/stylus/node_modules/debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -14166,37 +16111,16 @@ "ms": "2.0.0" } }, - "node_modules/stylus/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stylus/node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "node_modules/stylus/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/stylus/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/stylus/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { "node": ">= 8" @@ -14214,10 +16138,21 @@ "node": ">=4" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -14270,7 +16205,7 @@ "node_modules/temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true, "engines": { "node": ">=4" @@ -14279,7 +16214,7 @@ "node_modules/tempfile": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==", "dev": true, "dependencies": { "temp-dir": "^1.0.0", @@ -14292,7 +16227,7 @@ "node_modules/term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "integrity": "sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==", "dev": true, "dependencies": { "execa": "^0.7.0" @@ -14304,7 +16239,7 @@ "node_modules/term-size/node_modules/cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "dependencies": { "lru-cache": "^4.0.1", @@ -14315,7 +16250,7 @@ "node_modules/term-size/node_modules/execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", "dev": true, "dependencies": { "cross-spawn": "^5.0.1", @@ -14330,10 +16265,22 @@ "node": ">=4" } }, + "node_modules/term-size/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "dependencies": { "commander": "^2.20.0", @@ -14348,16 +16295,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", - "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "dev": true, "dependencies": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^3.1.0", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", @@ -14365,6 +16312,9 @@ }, "engines": { "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, "node_modules/terser-webpack-plugin/node_modules/cacache": { @@ -14390,6 +16340,45 @@ "y18n": "^4.0.0" } }, + "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/terser-webpack-plugin/node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -14399,6 +16388,19 @@ "yallist": "^3.0.2" } }, + "node_modules/terser-webpack-plugin/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/terser-webpack-plugin/node_modules/mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", @@ -14420,6 +16422,60 @@ "node": ">=4.0.0" } }, + "node_modules/terser-webpack-plugin/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/terser-webpack-plugin/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/terser-webpack-plugin/node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -14456,10 +16512,19 @@ "node": ">= 4" } }, + "node_modules/terser-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", - "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -14475,9 +16540,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "dependencies": { "figgy-pudding": "^3.5.1" @@ -14501,13 +16566,13 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "node_modules/then-fs": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/then-fs/-/then-fs-2.0.0.tgz", - "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", + "integrity": "sha512-5ffcBcU+vFUCYDNi/o507IqjqrTkuGsLVZ1Fp50hwgZRY7ufVFa9jFfTy5uZ2QnSKacKigWKeaXkOqLa4DsjLw==", "dev": true, "dependencies": { "promise": ">=3.2 <8" @@ -14525,7 +16590,7 @@ "node_modules/thenify-all": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, "dependencies": { "thenify": ">= 3.1.0 < 4" @@ -14537,7 +16602,7 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "node_modules/through2": { @@ -14553,22 +16618,22 @@ "node_modules/thunkify": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", - "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", + "integrity": "sha512-w9foI80XcGImrhMQ19pxunaEC5Rp2uzxZZg4XBAFRfiLOplk3F0l7wo+bO16vC2/nlQfR/mXZxcduo0MF2GWLg==", "dev": true }, "node_modules/timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, "dependencies": { "setimmediate": "^1.0.4" @@ -14592,20 +16657,14 @@ } }, "node_modules/tiny-lr/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/tiny-lr/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/tippy.js": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-2.6.0.tgz", @@ -14630,7 +16689,7 @@ "node_modules/to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", "dev": true }, "node_modules/to-buffer": { @@ -14642,7 +16701,7 @@ "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "engines": { "node": ">=4" @@ -14651,7 +16710,7 @@ "node_modules/to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, "dependencies": { "kind-of": "^3.0.2" @@ -14663,7 +16722,7 @@ "node_modules/to-object-path/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -14690,20 +16749,57 @@ "node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "isobject": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "engines": { "node": ">=0.6" } @@ -14711,7 +16807,7 @@ "node_modules/token-stream": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", - "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=" + "integrity": "sha512-nfjOAu/zAWmX9tgwi5NRp7O7zTDUD1miHiB40klUnAh9qnL1iXdgzcz/i5dMaL5jahcBAaSfmNOBBJBLJW8TEg==" }, "node_modules/toml": { "version": "2.3.6", @@ -14722,7 +16818,7 @@ "node_modules/tosource": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", - "integrity": "sha1-QtiN0RZhi88A1hBt1URvNCeQL/E=", + "integrity": "sha512-N6g8eQ1eerw6Y1pBhdgkubWIiPFwXa2POSUrlL8jth5CyyEWNWzoGKRkO3CaO7Jx27hlJP54muB3btIAbx4MPg==", "dev": true, "engines": { "node": ">=0.4.0" @@ -14742,18 +16838,14 @@ } }, "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/traverse": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.4.6.tgz", - "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=", + "integrity": "sha512-eIHWCq7YzOYYst5xsHyBbjPNP7PYkL9OYukWxUY2SopyxkTQSo2LkUmqWvkdkYhfDTtUCbaNTUnyo0b+ErjbIA==", "dev": true, "engines": { "node": "*" @@ -14762,28 +16854,28 @@ "node_modules/trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, "node_modules/tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", "dev": true }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "dependencies": { "safe-buffer": "^5.0.1" @@ -14795,7 +16887,7 @@ "node_modules/tv4": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", - "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=", + "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -14804,7 +16896,7 @@ "node_modules/tv4-formats": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/tv4-formats/-/tv4-formats-3.0.3.tgz", - "integrity": "sha1-a3l43S3IqjnQrCWU3dtvbAy/2SE=", + "integrity": "sha512-T8qYFu5k0O8QamObivhw+giNF9v4EeN8Am1jo8HmArKowmg50H2zN/1Bffi0gf6BhsMd5qx/UUfLD8NNcRe/WA==", "dev": true, "dependencies": { "moment": "^2.10.6", @@ -14814,7 +16906,7 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, "node_modules/type": { @@ -14826,7 +16918,7 @@ "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "dependencies": { "prelude-ls": "~1.1.2" @@ -14859,7 +16951,7 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, "node_modules/uc.micro": { @@ -14867,10 +16959,42 @@ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, + "node_modules/uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0", + "dev": true, + "dependencies": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-es/node_modules/commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "node_modules/uglify-es/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", "dependencies": { "source-map": "~0.5.1", "yargs": "~3.10.0" @@ -14888,7 +17012,7 @@ "node_modules/uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", "optional": true }, "node_modules/uglifyjs-webpack-plugin": { @@ -14908,18 +17032,15 @@ }, "engines": { "node": ">= 4.8 < 5.0.0 || >= 5.10" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" } }, - "node_modules/uglifyjs-webpack-plugin/node_modules/commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, "node_modules/uglifyjs-webpack-plugin/node_modules/find-cache-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "integrity": "sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg==", "dev": true, "dependencies": { "commondir": "^1.0.1", @@ -14933,7 +17054,7 @@ "node_modules/uglifyjs-webpack-plugin/node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "dependencies": { "locate-path": "^2.0.0" @@ -14945,7 +17066,7 @@ "node_modules/uglifyjs-webpack-plugin/node_modules/locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "dependencies": { "p-locate": "^2.0.0", @@ -14982,7 +17103,7 @@ "node_modules/uglifyjs-webpack-plugin/node_modules/p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "dependencies": { "p-limit": "^1.1.0" @@ -14994,16 +17115,16 @@ "node_modules/uglifyjs-webpack-plugin/node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, "engines": { "node": ">=4" } }, - "node_modules/uglifyjs-webpack-plugin/node_modules/pify": { + "node_modules/uglifyjs-webpack-plugin/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { "node": ">=4" @@ -15012,7 +17133,7 @@ "node_modules/uglifyjs-webpack-plugin/node_modules/pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "integrity": "sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==", "dev": true, "dependencies": { "find-up": "^2.1.0" @@ -15043,94 +17164,96 @@ "node": ">=0.10.0" } }, - "node_modules/uglifyjs-webpack-plugin/node_modules/uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "dependencies": { - "commander": "~2.13.0", - "source-map": "~0.6.1" + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "dev": true, - "dependencies": { - "debug": "^2.2.0" - } + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true }, "node_modules/underscore": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "integrity": "sha512-z4o1fvKUojIWh9XuaVLUDdf86RQiq13AC1dmHbTpoyuu+bquHms76v16CjycCbec87J7z0k//SiQVk0sMdFmpQ==", "dev": true }, "node_modules/underscore.string": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", - "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz", + "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==", "dev": true, "dependencies": { - "sprintf-js": "^1.0.3", + "sprintf-js": "^1.1.1", "util-deprecate": "^1.0.2" }, "engines": { "node": "*" } }, + "node_modules/underscore.string/node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, "engines": { "node": ">=4" @@ -15172,7 +17295,7 @@ "node_modules/unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", "dev": true, "dependencies": { "crypto-random-string": "^1.0.0" @@ -15198,7 +17321,7 @@ "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "engines": { "node": ">= 0.8" } @@ -15206,7 +17329,7 @@ "node_modules/unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, "dependencies": { "has-value": "^0.3.1", @@ -15219,7 +17342,7 @@ "node_modules/unset-value/node_modules/has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "dev": true, "dependencies": { "get-value": "^2.0.3", @@ -15233,7 +17356,7 @@ "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dev": true, "dependencies": { "isarray": "1.0.0" @@ -15245,7 +17368,7 @@ "node_modules/unset-value/node_modules/has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -15254,7 +17377,7 @@ "node_modules/unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "integrity": "sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==", "dev": true, "engines": { "node": ">=4" @@ -15269,10 +17392,36 @@ "node": ">=4" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/update-notifier": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", - "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "integrity": "sha512-KBLtk9uq+79OJkHB+hdxbikPrYwPc1JoiSbpU/bKknBG3z2gzFzYabHI7jNkQXzMDqipUnvNsKnowCq6PoEakg==", "dev": true, "dependencies": { "boxen": "^1.2.1", @@ -15290,9 +17439,9 @@ } }, "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "dependencies": { "punycode": "^2.1.0" @@ -15301,13 +17450,14 @@ "node_modules/urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", "dev": true }, "node_modules/url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "dev": true, "dependencies": { "punycode": "1.3.2", @@ -15317,7 +17467,7 @@ "node_modules/url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", "dev": true, "dependencies": { "prepend-http": "^1.0.1" @@ -15329,9 +17479,19 @@ "node_modules/url/node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", "dev": true }, + "node_modules/url/node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -15344,7 +17504,7 @@ "node_modules/user-home": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "integrity": "sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==", "dev": true, "dependencies": { "os-homedir": "^1.0.0" @@ -15365,13 +17525,19 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "engines": { "node": ">= 0.4.0" } @@ -15380,15 +17546,16 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true, "bin": { "uuid": "bin/uuid" } }, "node_modules/v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", "dev": true, "dependencies": { "homedir-polyfill": "^1.0.1" @@ -15419,7 +17586,7 @@ "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "engines": { "node": ">= 0.8" } @@ -15427,7 +17594,7 @@ "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "engines": [ "node >=0.6.0" @@ -15438,6 +17605,12 @@ "extsprintf": "^1.2.0" } }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, "node_modules/vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", @@ -15447,21 +17620,21 @@ "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", "engines": { "node": ">=0.10.0" } }, "node_modules/vscode-languageserver-types": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", - "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==", + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz", + "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==", "dev": true }, "node_modules/walkdir": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", - "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "integrity": "sha512-lMFYXGpf7eg+RInVL021ZbJJT4hqsvsBvq5sZBp874jfhs3IWlA7OPoG0ojQrYcXHuUSi+Nqp6qGN+pPGaMgPQ==", "dev": true, "engines": { "node": ">=0.6.0" @@ -15479,22 +17652,19 @@ } }, "node_modules/watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "dev": true, "optional": true, "dependencies": { "chokidar": "^2.1.8" - }, - "engines": { - "node": "<8.10.0" } }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "dependencies": { "defaults": "^1.0.3" @@ -15548,19 +17718,10 @@ "npm": ">=3.0.0" } }, - "node_modules/web-ext/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/web-ext/node_modules/cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "dev": true, "dependencies": { "string-width": "^1.0.1", @@ -15568,22 +17729,10 @@ "wrap-ansi": "^2.0.0" } }, - "node_modules/web-ext/node_modules/decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "dependencies": { - "xregexp": "4.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/web-ext/node_modules/invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -15592,7 +17741,7 @@ "node_modules/web-ext/node_modules/is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "dependencies": { "number-is-nan": "^1.0.0" @@ -15604,7 +17753,7 @@ "node_modules/web-ext/node_modules/lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", "dev": true, "dependencies": { "invert-kv": "^1.0.0" @@ -15616,13 +17765,14 @@ "node_modules/web-ext/node_modules/minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", "dev": true }, "node_modules/web-ext/node_modules/mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, "dependencies": { "minimist": "0.0.8" @@ -15646,7 +17796,7 @@ "node_modules/web-ext/node_modules/os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", "dev": true, "dependencies": { "lcid": "^1.0.0" @@ -15682,7 +17832,7 @@ "node_modules/web-ext/node_modules/string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, "dependencies": { "code-point-at": "^1.0.0", @@ -15696,25 +17846,19 @@ "node_modules/web-ext/node_modules/which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "node_modules/web-ext/node_modules/xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", "dev": true }, "node_modules/web-ext/node_modules/y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, "node_modules/web-ext/node_modules/yargs": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "integrity": "sha512-6/QWTdisjnu5UHUzQGst+UOEuEVwIzFVGBjq3jMTFNs5WJQsH/X6nMURSaScIdF5txylr1Ao9bvbWiKi2yXbwA==", "dev": true, "dependencies": { "camelcase": "^3.0.0", @@ -15735,7 +17879,7 @@ "node_modules/web-ext/node_modules/yargs-parser": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "integrity": "sha512-+QQWqC2xeL0N5/TE+TY6OGEqyNRM+g2/r712PDNYgiCdXYCApXf1vzfmDSLBxfGRwV+moTq/V8FnMI24JCm2Yg==", "dev": true, "dependencies": { "camelcase": "^3.0.0" @@ -15744,7 +17888,7 @@ "node_modules/web-ext/node_modules/yargs-parser/node_modules/camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -15753,7 +17897,7 @@ "node_modules/web-ext/node_modules/yargs/node_modules/camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -15762,22 +17906,21 @@ "node_modules/web-ext/node_modules/yargs/node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz", - "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==", + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", "dev": true, "dependencies": { "@webassemblyjs/ast": "1.9.0", @@ -15788,7 +17931,7 @@ "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", + "enhanced-resolve": "^4.5.0", "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.4.0", @@ -15809,6 +17952,18 @@ }, "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, "node_modules/webpack-merge": { @@ -15840,9 +17995,9 @@ } }, "node_modules/webpack/node_modules/acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -15852,9 +18007,9 @@ } }, "node_modules/webpack/node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "optional": true, "dependencies": { @@ -15866,9 +18021,9 @@ } }, "node_modules/webpack/node_modules/binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "optional": true, "engines": { @@ -15889,23 +18044,31 @@ } }, "node_modules/webpack/node_modules/chokidar": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", - "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", - "dev": true, + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "optional": true, "dependencies": { - "anymatch": "~3.1.1", + "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" + "readdirp": "~3.6.0" }, "engines": { "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, "node_modules/webpack/node_modules/fill-range": { @@ -15922,10 +18085,11 @@ } }, "node_modules/webpack/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -15935,9 +18099,9 @@ } }, "node_modules/webpack/node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "optional": true, "dependencies": { @@ -15960,19 +18124,6 @@ "node": ">=8" } }, - "node_modules/webpack/node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "optional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/webpack/node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -15983,6 +18134,44 @@ "node": ">=0.12.0" } }, + "node_modules/webpack/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/webpack/node_modules/loader-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.1.tgz", + "integrity": "sha512-1Qo97Y2oKaU+Ro2xnDMR26g1BwMT29jNbem1EvcujW2jqt+j5COXyscjM7bLQkM9HaxI7pkWeW7gnI072yMI9Q==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/webpack/node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -15994,9 +18183,9 @@ } }, "node_modules/webpack/node_modules/readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "optional": true, "dependencies": { @@ -16034,9 +18223,9 @@ } }, "node_modules/webpack/node_modules/watchpack": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", - "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -16044,7 +18233,7 @@ }, "optionalDependencies": { "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.0" + "watchpack-chokidar2": "^2.0.1" } }, "node_modules/websocket-driver": { @@ -16071,38 +18260,55 @@ } }, "node_modules/whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/when": { "version": "3.7.7", "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz", - "integrity": "sha1-q6A/w7tzbWyIsJHQE9io5ZDYRxg=", + "integrity": "sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==", "dev": true }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, "node_modules/widest-line": { @@ -16120,7 +18326,7 @@ "node_modules/win-release": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", - "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", + "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==", "dev": true, "dependencies": { "semver": "^5.0.1" @@ -16129,10 +18335,19 @@ "node": ">=0.10.0" } }, + "node_modules/win-release/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==", "engines": { "node": ">= 0.8.0" } @@ -16140,18 +18355,29 @@ "node_modules/winreg": { "version": "0.0.12", "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz", - "integrity": "sha1-BxBVVLoanQiXklHRKUdb/64wBrc=", + "integrity": "sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ==", "dev": true }, "node_modules/with": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", - "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", + "integrity": "sha512-uAnSsFGfSpF6DNhBXStvlZILfHJfJu4eUkfbRGk94kGO1Ta7bg6FwfvoOhhyHAJuFbCw+0xk4uJ3u57jLvlCJg==", "dependencies": { "acorn": "^3.1.0", "acorn-globals": "^3.0.0" } }, + "node_modules/with/node_modules/acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -16164,7 +18390,7 @@ "node_modules/wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", "engines": { "node": ">=0.4.0" } @@ -16181,7 +18407,7 @@ "node_modules/wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", "dev": true, "dependencies": { "string-width": "^1.0.1", @@ -16194,7 +18420,7 @@ "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "dependencies": { "number-is-nan": "^1.0.0" @@ -16206,7 +18432,7 @@ "node_modules/wrap-ansi/node_modules/string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, "dependencies": { "code-point-at": "^1.0.0", @@ -16220,12 +18446,12 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", "dev": true, "dependencies": { "mkdirp": "^0.5.1" @@ -16245,10 +18471,22 @@ "signal-exit": "^3.0.2" } }, + "node_modules/write/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "dev": true, "dependencies": { "async-limiter": "~1.0.0" @@ -16257,7 +18495,7 @@ "node_modules/xdg-basedir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "integrity": "sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==", "dev": true, "engines": { "node": ">=4" @@ -16286,12 +18524,6 @@ "node": ">=4.0.0" } }, - "node_modules/xml2js/node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, "node_modules/xmlbuilder": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", @@ -16304,20 +18536,18 @@ "node_modules/xmldom": { "version": "0.1.27", "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "integrity": "sha512-7WpJBYwyhvsddFJA51SOIU0Be9W44sbGGjc6Z3ly8Wx/Wl7nriMPZ5xf6Np9ASlJ6gACfXcTLukm4DtX372lFw==", + "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", "dev": true, "engines": { "node": ">=0.1" } }, "node_modules/xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", - "dev": true, - "engines": { - "node": "*" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true }, "node_modules/xtend": { "version": "4.0.2", @@ -16329,21 +18559,21 @@ } }, "node_modules/y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true }, "node_modules/yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", "dependencies": { "camelcase": "^1.0.2", "cliui": "^2.1.0", @@ -16352,28 +18582,34 @@ } }, "node_modules/yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", "dev": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "^4.1.0" } }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, + "node_modules/yargs/node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", "engines": { - "node": ">=6" + "node": ">=0.10.0" + } + }, + "node_modules/yargs/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" } }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "dependencies": { "buffer-crc32": "~0.2.3", @@ -16383,7 +18619,7 @@ "node_modules/zip-dir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-1.0.2.tgz", - "integrity": "sha1-JT+QeurWKiGs2HIdi4gDKyQRwFE=", + "integrity": "sha512-OZ4WThDcFqvamrq4e2lSdz+q6a9fnD55ktBzsfQ95R0YrnZDd7Cz1gTI8OMveqlASz8PXVN0av8Bi7Ky+uJ+SA==", "dev": true, "dependencies": { "async": "^1.5.2", @@ -16391,9 +18627,9 @@ } }, "node_modules/zip-dir/node_modules/jszip": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", - "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.7.0.tgz", + "integrity": "sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw==", "dev": true, "dependencies": { "pako": "~1.0.2" @@ -16402,7 +18638,7 @@ "node_modules/zip-stream": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", - "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "integrity": "sha512-2olrDUuPM4NvRIgGPhvrp84f7/HmWR6RiQrgwFF2VctmnssFiogtYL3DcA8Vl2bsSmju79sVXe38TsII7JleUg==", "dev": true, "dependencies": { "archiver-utils": "^1.3.0", @@ -16416,472 +18652,518 @@ } }, "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, "requires": { - "@babel/highlight": "^7.10.4" + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, - "@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" + "@babel/highlight": "^7.18.6" } }, + "@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "dev": true + }, "@babel/core": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz", - "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.1", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.0", - "@babel/types": "^7.11.0", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", + "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, "requires": { - "ms": "^2.1.1" + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, - "@babel/generator": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", - "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.18.6" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" } }, "@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.10.4", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" } }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" } }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, "@babel/helper-explode-assignable-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", - "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "requires": { - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.18.6" } }, "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.18.6" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.18.9" } }, "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", - "lodash": "^4.17.19" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" } }, "@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.18.6" } }, "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true }, - "@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, "@babel/helper-remap-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", - "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" } }, "@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, "requires": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.20.2" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.20.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", - "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", "dev": true, "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" } }, "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.2.tgz", - "integrity": "sha512-Vuj/+7vLo6l1Vi7uuO+1ngCDNeVmNbTngcJFKCR/oEtz8tKz0CJxZEGmPt9KcIloZhOZ3Zit6xbpXT2MDlS9Vw==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } + }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", - "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", - "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", - "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-syntax-async-generators": { @@ -16894,12 +19176,21 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-dynamic-import": { @@ -16920,6 +19211,15 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -16983,334 +19283,342 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" } }, "@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "requires": { - "regenerator-transform": "^0.14.2" + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", - "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/polyfill": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.10.4.tgz", - "integrity": "sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", + "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", "dev": true, "requires": { "core-js": "^2.6.5", @@ -17318,85 +19626,92 @@ } }, "@babel/preset-env": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz", - "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-proposal-private-methods": "^7.10.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.4", - "@babel/plugin-transform-arrow-functions": "^7.10.4", - "@babel/plugin-transform-async-to-generator": "^7.10.4", - "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", - "@babel/plugin-transform-classes": "^7.10.4", - "@babel/plugin-transform-computed-properties": "^7.10.4", - "@babel/plugin-transform-destructuring": "^7.10.4", - "@babel/plugin-transform-dotall-regex": "^7.10.4", - "@babel/plugin-transform-duplicate-keys": "^7.10.4", - "@babel/plugin-transform-exponentiation-operator": "^7.10.4", - "@babel/plugin-transform-for-of": "^7.10.4", - "@babel/plugin-transform-function-name": "^7.10.4", - "@babel/plugin-transform-literals": "^7.10.4", - "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", - "@babel/plugin-transform-modules-umd": "^7.10.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", - "@babel/plugin-transform-new-target": "^7.10.4", - "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", - "@babel/plugin-transform-property-literals": "^7.10.4", - "@babel/plugin-transform-regenerator": "^7.10.4", - "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.11.0", - "@babel/plugin-transform-sticky-regex": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", - "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.4", - "@babel/plugin-transform-unicode-regex": "^7.10.4", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.0", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -17424,7 +19739,7 @@ "find-cache-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "integrity": "sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -17435,7 +19750,7 @@ "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -17444,13 +19759,13 @@ "home-or-tmp": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", - "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", + "integrity": "sha512-pj6ktgQDedSIbzwrC108F9aZadnF2ZJ8mP8QbGq2nLPOmqpdqKWMoU4JPJaFEzpoTl6X/jOwE8BlkTOfVPR98A==", "dev": true }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -17466,6 +19781,15 @@ "pify": "^3.0.0" } }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -17478,7 +19802,7 @@ "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -17487,19 +19811,19 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true }, - "pify": { + "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "integrity": "sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==", "dev": true, "requires": { "find-up": "^2.1.0" @@ -17508,67 +19832,51 @@ } }, "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.10" } }, "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, @@ -17585,7 +19893,7 @@ "colors": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", - "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", + "integrity": "sha512-XjsuUwpDeY98+yz959OlUK6m7mLBM+1MEG5oaenfuQnNnrQk1WvtcvFgN3FNDP3f2NmZ211t0mNEfSEN1h0eIg==", "dev": true } } @@ -17603,143 +19911,165 @@ "es6-promise": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", - "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=", + "integrity": "sha512-oyOjMhyKMLEjOOtvkwg0G4pAzLQ9WdbbeX7WdqKzvYXu+UFgD0Zo/Brq5Q49zNmnGPPzV5rmYvrr0jz1zWx8Iw==", "dev": true } } }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "@octokit/auth-token": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.4.tgz", - "integrity": "sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", "requires": { - "@octokit/types": "^6.0.0" + "@octokit/types": "^6.0.3" } }, "@octokit/core": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.2.4.tgz", - "integrity": "sha512-d9dTsqdePBqOn7aGkyRFe7pQpCXdibSJ5SFnrTr0axevObZrpz3qkWm7t/NjYv5a66z6vhfteriaq4FRz3e0Qg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", "requires": { "@octokit/auth-token": "^2.4.4", "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.4.12", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", "@octokit/types": "^6.0.3", - "before-after-hook": "^2.1.0", + "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" } }, "@octokit/endpoint": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.10.tgz", - "integrity": "sha512-9+Xef8nT7OKZglfkOMm7IL6VwxXUQyR7DUSU0LH/F7VNqs8vyd7es5pTfz9E7DwUIx7R3pGscxu1EBhYljyu7Q==", + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", "requires": { - "@octokit/types": "^6.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - } + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" } }, "@octokit/graphql": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.5.8.tgz", - "integrity": "sha512-WnCtNXWOrupfPJgXe+vSmprZJUr0VIu14G58PMlkWGj3cH+KLZEfKMmbUQ6C3Wwx6fdhzVW1CD5RTnBdUHxhhA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", "requires": { - "@octokit/request": "^5.3.0", - "@octokit/types": "^6.0.0", + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", "universal-user-agent": "^6.0.0" } }, "@octokit/openapi-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-2.0.0.tgz", - "integrity": "sha512-J4bfM7lf8oZvEAdpS71oTvC1ofKxfEZgU5vKVwzZKi4QPiL82udjpseJwxPid9Pu2FNmyRQOX4iEj6W1iOSnPw==" + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" }, "@octokit/plugin-paginate-rest": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.6.2.tgz", - "integrity": "sha512-3Dy7/YZAwdOaRpGQoNHPeT0VU1fYLpIUdPyvR37IyFLgd6XSij4j9V/xN/+eSjF2KKvmfIulEh9LF1tRPjIiDA==", + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", "requires": { - "@octokit/types": "^6.0.1" + "@octokit/types": "^6.40.0" } }, "@octokit/plugin-request-log": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz", - "integrity": "sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", "requires": {} }, "@octokit/plugin-rest-endpoint-methods": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.4.1.tgz", - "integrity": "sha512-+v5PcvrUcDeFXf8hv1gnNvNLdm4C0+2EiuWt9EatjjUmfriM1pTMM+r4j1lLHxeBQ9bVDmbywb11e3KjuavieA==", + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", "requires": { - "@octokit/types": "^6.1.0", + "@octokit/types": "^6.39.0", "deprecation": "^2.3.1" } }, "@octokit/request": { - "version": "5.4.12", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.12.tgz", - "integrity": "sha512-MvWYdxengUWTGFpfpefBBpVmmEYfkwMoxonIB3sUGp5rhdgwjXL1ejo6JbgzG/QD9B/NYt/9cJX1pxXeSIUCkg==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", "requires": { "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.0.0", - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "once": "^1.4.0", + "node-fetch": "^2.6.7", "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - } } }, "@octokit/request-error": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.4.tgz", - "integrity": "sha512-LjkSiTbsxIErBiRh5wSZvpZqT4t0/c9+4dOe0PII+6jXR+oj/h66s7E4a/MghV7iT8W9ffoQ5Skoxzs96+gBPA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", "requires": { - "@octokit/types": "^6.0.0", + "@octokit/types": "^6.0.3", "deprecation": "^2.0.0", "once": "^1.4.0" } }, "@octokit/rest": { - "version": "18.0.12", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.0.12.tgz", - "integrity": "sha512-hNRCZfKPpeaIjOVuNJzkEL6zacfZlBPV8vw8ReNeyUkVvbuCvvrrx8K8Gw2eyHHsmd4dPlAxIXIZ9oHhJfkJpw==", + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", "requires": { - "@octokit/core": "^3.2.3", - "@octokit/plugin-paginate-rest": "^2.6.2", - "@octokit/plugin-request-log": "^1.0.2", - "@octokit/plugin-rest-endpoint-methods": "4.4.1" + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" } }, "@octokit/types": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.1.1.tgz", - "integrity": "sha512-btm3D6S7VkRrgyYF31etUtVY/eQ1KzrNRqhFt25KSe2mKlXuLXJilglRC6eDA2P6ou94BUnk/Kz5MPEolXgoiw==", + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", "requires": { - "@octokit/openapi-types": "^2.0.0", - "@types/node": ">= 8" + "@octokit/openapi-types": "^12.11.0" } }, "@sinonjs/commons": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", - "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz", + "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -17766,34 +20096,35 @@ } }, "@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, "@types/babel-types": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.8.tgz", - "integrity": "sha512-jvu8g4LR7+p6ao30RhTREnEhHxmP4/R9D9/rOR/Kq14FztORty9SKgtOZUNZNMB9CXLxZ54EWu4dArUE8WdTsw==" + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.11.tgz", + "integrity": "sha512-pkPtJUUY+Vwv6B1inAz55rQvivClHJxc9aVEPPmaq2cbyeMLCiDpbKpcKyX4LAwpNGi+SHBv0tHv6+0gXv0P2A==" }, "@types/babylon": { - "version": "6.16.5", - "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", - "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", + "version": "6.16.6", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.6.tgz", + "integrity": "sha512-G4yqdVlhr6YhzLXFKy5F7HtRBU8Y23+iWy7UKthMq/OSQnL1hbsoeXESQ2LY8zEDlknipDG3nRGhUC9tkwvy/w==", "requires": { "@types/babel-types": "*" } }, "@types/json-schema": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "@types/node": { - "version": "14.0.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", - "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "dev": true }, "@webassemblyjs/ast": { "version": "1.9.0", @@ -17994,40 +20325,44 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==" }, "acorn-globals": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "integrity": "sha512-uWttZCk96+7itPxK8xCzY86PnxKTMrReKDqrHzv42VQY0K30PUO8WY13WMOuI+cOdX4EIdzdvQ8k6jkuGRFMYw==", "requires": { "acorn": "^4.0.4" + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha512-AU7pnZkguthwBjKgCg6998ByQNIMjbuDQZ8bb78QAFZwPfmKia8AIzgY/gWgqCjnht8JLdXmB4YxA0KaV60ncQ==", + "dev": true, + "requires": { + "acorn": "^3.0.4" }, "dependencies": { "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==", + "dev": true } } }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true - }, "adbkit": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/adbkit/-/adbkit-2.11.0.tgz", @@ -18046,7 +20381,22 @@ "bluebird": { "version": "2.9.34", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", - "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g=", + "integrity": "sha512-ZDzCb87X7/IP1uzQ5eJZB+WoQRGTnKL5DHWvPw6kkMbQseouiQIrEi3P1UGE0D1k0N5/+aP/5GMCyHZ1xYJyHQ==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node-forge": { @@ -18060,13 +20410,13 @@ "adbkit-logcat": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz", - "integrity": "sha1-Adf5sM75CTowvLOwB+//MBUIli8=", + "integrity": "sha512-57iYRLdjmhI1fnc890KyflzWpnIb/aq5ET3fbn3axdyyeyKeP4Ji/GhnfBNguG1Tw7SQRL2eBnA+hvbwIsTtNg==", "dev": true }, "adbkit-monkey": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz", - "integrity": "sha1-8pG+cBou/FZ6Y/x6pq/N7TFDC+E=", + "integrity": "sha512-uU8p+p4sv7gLsjO/At4iPufoPD3R16kVbzDVecdIerR9RzhEK6PcyAJghdOXwrYKbhm7SmPQWsxVRloDBMINDA==", "dev": true, "requires": { "async": "~0.2.9" @@ -18075,7 +20425,7 @@ "async": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==", "dev": true } } @@ -18151,15 +20501,9 @@ } }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true }, "chalk": { @@ -18184,27 +20528,27 @@ "wrap-ansi": "^2.0.0" } }, - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "requires": { - "xregexp": "4.0.0" - } - }, "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", "dev": true }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -18219,6 +20563,31 @@ "path-is-absolute": "^1.0.0" } }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", @@ -18250,18 +20619,38 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "requires": { "ansi-regex": "^3.0.0" } }, - "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "yargs": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", @@ -18282,19 +20671,10 @@ "yargs-parser": "^10.1.0" } }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - }, "yauzl": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha1-T7G8euH8L1cDe1SvasyP4QMcW3c=", + "integrity": "sha512-yyeepe1mQuFKOWHNhvnLzoPPyjjunG8XY/BtRIFAcyyYe4w24diqUHnR4T+ZzfhH/Vas/wk3uClYNgu+GKLYhg==", "dev": true, "requires": { "buffer-crc32": "~0.2.3", @@ -18319,9 +20699,9 @@ } }, "ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -18334,13 +20714,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv-merge-patch": { "version": "4.1.0", @@ -18355,7 +20737,7 @@ "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==", "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -18365,23 +20747,17 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } } } }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "integrity": "sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==", "dev": true, "requires": { "string-width": "^2.0.0" @@ -18396,7 +20772,7 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, "ansi-styles": { @@ -18411,13 +20787,13 @@ "ansicolors": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", "dev": true }, "any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true }, "anymatch": { @@ -18439,7 +20815,7 @@ "archiver": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", - "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "integrity": "sha512-4q/CtGPNVyC5aT9eYHhFP7SAEjKYzQIDIJWXfexUIPNxitNs1y6hORdX+sYxERSZ6qPeNNBJ5UolFsJdWTU02g==", "dev": true, "requires": { "archiver-utils": "^1.3.0", @@ -18454,9 +20830,9 @@ }, "dependencies": { "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" @@ -18467,7 +20843,7 @@ "archiver-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", - "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "integrity": "sha512-h+hTREBXcW5e1L9RihGXdH4PHHdGipG/jE2sMZrqIH6BmZAxeGU5IWjVsKhokdCSWX7km6Kkh406zZNEElHFPQ==", "dev": true, "requires": { "glob": "^7.0.0", @@ -18481,7 +20857,7 @@ "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, "argparse": { @@ -18490,19 +20866,12 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - } } }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "dev": true }, "arr-flatten": { @@ -18514,48 +20883,48 @@ "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true }, "array-differ": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", "dev": true }, "array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", "dev": true }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "integrity": "sha512-VW0FpCIhjZdarWjIz8Vpva7U95fl2Jn+b+mmFFMLn8PIVscOQcAgEznwUzTEuUHuqZqIxwzRlcaN/urTFFQoiw==", "dev": true }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "array-from": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", "dev": true }, "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.1.tgz", + "integrity": "sha512-sxHIeJTGEsRC8/hYkZzdJNNPZ41EXHVys7pqMw1iwE/Kx8/hto0UbDuGQsSJ0ujPovj9qUZl6EOY/EiZ2g3d9Q==", "dev": true }, "array-reduce": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "integrity": "sha512-8jR+StqaC636u7h3ye1co3lQRefgVVUQUhuAmRbDqIMeR2yuXzRvkCNQiQ5J/wbREmoBLNtp13dhaaVpZQDRUw==", "dev": true }, "array-slice": { @@ -18567,7 +20936,7 @@ "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "requires": { "array-uniq": "^1.0.1" @@ -18576,47 +20945,48 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "dev": true }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "integrity": "sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==", "dev": true }, "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -18634,13 +21004,13 @@ "inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", "dev": true }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", "dev": true, "requires": { "inherits": "2.0.1" @@ -18651,7 +21021,7 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true }, "assertion-error": { @@ -18663,19 +21033,22 @@ "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "dev": true }, "ast-types": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", - "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", - "dev": true + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + } }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "dev": true }, "async-each": { @@ -18693,7 +21066,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "atob": { @@ -18705,19 +21078,19 @@ "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true }, "aws4": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", "dev": true, "requires": { "chalk": "^1.1.3", @@ -18728,13 +21101,13 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -18747,13 +21120,13 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true } } @@ -18785,10 +21158,25 @@ "source-map": "^0.5.7" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -18812,7 +21200,7 @@ "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", "dev": true } } @@ -18820,7 +21208,7 @@ "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "integrity": "sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==", "dev": true, "requires": { "babel-helper-get-function-arity": "^6.24.1", @@ -18833,7 +21221,7 @@ "babel-helper-get-function-arity": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "integrity": "sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==", "dev": true, "requires": { "babel-runtime": "^6.22.0", @@ -18843,7 +21231,7 @@ "babel-helper-remap-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "integrity": "sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==", "dev": true, "requires": { "babel-helper-function-name": "^6.24.1", @@ -18856,7 +21244,7 @@ "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", "dev": true, "requires": { "babel-runtime": "^6.22.0", @@ -18864,46 +21252,66 @@ } }, "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", "dev": true, "requires": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", "schema-utils": "^2.6.5" } }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", "dev": true, "requires": { - "object.assign": "^4.1.0" + "@babel/helper-define-polyfill-provider": "^0.3.3" } }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "integrity": "sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==", "dev": true }, "babel-plugin-transform-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "integrity": "sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==", "dev": true, "requires": { "babel-helper-remap-async-to-generator": "^6.24.1", @@ -18914,7 +21322,7 @@ "babel-polyfill": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==", "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -18925,7 +21333,7 @@ "regenerator-runtime": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==", "dev": true } } @@ -18933,7 +21341,7 @@ "babel-register": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", "dev": true, "requires": { "babel-core": "^6.26.0", @@ -18945,6 +21353,15 @@ "source-map-support": "^0.4.15" }, "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, "source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", @@ -18959,7 +21376,7 @@ "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" @@ -18975,7 +21392,7 @@ "babel-template": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -18988,7 +21405,7 @@ "babel-traverse": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", "dev": true, "requires": { "babel-code-frame": "^6.26.0", @@ -19002,18 +21419,33 @@ "lodash": "^4.17.4" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true } } }, "babel-types": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", "requires": { "babel-runtime": "^6.26.0", "esutils": "^2.0.2", @@ -19024,7 +21456,7 @@ "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==" } } }, @@ -19034,9 +21466,9 @@ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "base": { @@ -19057,47 +21489,18 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "requires": { "is-descriptor": "^1.0.0" } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } } } }, "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, "base64url": { @@ -19113,27 +21516,35 @@ "dev": true, "requires": { "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } } }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "requires": { "tweetnacl": "^0.14.3" } }, "before-after-hook": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", - "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, "big.js": { "version": "5.2.2", @@ -19174,15 +21585,15 @@ "dev": true }, "bn.js": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", - "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", "dev": true }, "body": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "integrity": "sha512-chUsBxGRtuElD6fmw1gHLpvnKdVLK302peeFa9ZqAEk8TyzZ3fygLyUEDDPTJvL9+Bor0dIwn6ePOsRM2y0zQQ==", "dev": true, "requires": { "continuable-cache": "^0.3.1", @@ -19194,42 +21605,65 @@ "bytes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "integrity": "sha512-/x68VkHLeTl3/Ll8IvxdwzhrT+IyKc52e/oyHhA2RwqPqswSnjVbSddfPRwAsJtbilMAPSRWwAlpxdYsSWOTKQ==", "dev": true }, "raw-body": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", - "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "integrity": "sha512-WmJJU2e9Y6M5UzTOkHaM7xJGAPQD8PNzx3bAd2+uhZAim6wDk6dAZxPVYLF67XhbR4hmKGh33Lpmh4XWrCH5Mg==", "dev": true, "requires": { "bytes": "1", "string_decoder": "0.10" } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true } } }, "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "requires": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } } }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "bootstrap": { @@ -19257,14 +21691,6 @@ "string-width": "^2.0.0", "term-size": "^1.2.0", "widest-line": "^2.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } } }, "brace-expansion": { @@ -19293,23 +21719,12 @@ "snapdragon-node": "^2.0.1", "split-string": "^3.0.2", "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } } }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", "dev": true }, "browser-stdout": { @@ -19356,21 +21771,13 @@ } }, "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, "requires": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } } }, "browserify-sign": { @@ -19390,36 +21797,15 @@ "safe-buffer": "^5.2.0" }, "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, "readable-stream": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { - "safe-buffer": "~5.2.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } } } @@ -19434,25 +21820,26 @@ } }, "browserslist": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", - "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001093", - "electron-to-chromium": "^1.3.488", - "escalade": "^3.0.1", - "node-releases": "^1.1.58" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" } }, "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, "requires": { "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "buffer-alloc": { @@ -19474,43 +21861,43 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, "buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "dev": true }, "buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", "dev": true }, "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", "dev": true }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", "dev": true }, "bunyan": { "version": "1.8.12", "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", - "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", + "integrity": "sha512-dmDUbGHeGcvCDLRFOscZkwx1ZO/aFz3bJOCi5nCgzdhFGPxwK+y5AcDBnqagNGlJZ7lje/l6JUEz9mQcutttdg==", "dev": true, "requires": { "dtrace-provider": "~0.8", @@ -19520,9 +21907,9 @@ } }, "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, "cacache": { "version": "10.0.4", @@ -19545,6 +21932,15 @@ "y18n": "^4.0.0" }, "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -19573,10 +21969,19 @@ "unset-value": "^1.0.0" } }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", "dev": true, "requires": { "callsites": "^0.2.0" @@ -19585,52 +21990,61 @@ "callsites": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", "dev": true }, "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "dev": true }, "caniuse-lite": { - "version": "1.0.30001111", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001111.tgz", - "integrity": "sha512-xnDje2wchd/8mlJu8sXvWxOGvMgv+uT3iZ3bkIAynKOzToCssWCmkz/ZIkQBs/2pUB4uwnJKVORWQ31UkbVjOg==", + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", "dev": true }, "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz", + "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==", "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, "center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==", "requires": { "align-text": "^0.1.3", "lazy-cache": "^1.0.3" + }, + "dependencies": { + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==" + } } }, "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", "dev": true, "requires": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", - "deep-eql": "^3.0.1", + "deep-eql": "^4.1.2", "get-func-name": "^2.0.0", - "pathval": "^1.1.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", "type-detect": "^4.0.5" } }, @@ -19673,7 +22087,7 @@ "character-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", "requires": { "is-regex": "^1.0.3" } @@ -19681,19 +22095,19 @@ "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", "dev": true }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "dev": true }, "cheerio": { "version": "1.0.0-rc.2", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "integrity": "sha512-9LDHQy1jHc/eXMzPN6/oah9Qba4CjdKECC7YYEE/2zge/tsGwt19NQp5NFdfd5Lx6TZlyC5SXNQkG41P9r6XDg==", "dev": true, "requires": { "css-select": "~1.2.0", @@ -19735,15 +22149,6 @@ "nan": "^2.12.1" } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -19765,13 +22170,10 @@ "dev": true }, "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true }, "cipher-base": { "version": "1.0.4", @@ -19804,18 +22206,75 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", "requires": { "source-map": "~0.6.0" }, @@ -19830,13 +22289,13 @@ "cli-boxes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "integrity": "sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==", "dev": true }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dev": true, "requires": { "restore-cursor": "^2.0.0" @@ -19857,7 +22316,7 @@ "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==", "requires": { "center-align": "^0.1.1", "right-align": "^0.1.1", @@ -19867,13 +22326,13 @@ "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true }, "clone-deep": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", - "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "integrity": "sha512-qp1do6NplYZZcLU+TQ93+A735g1kNcnH75QbC1olpKJphe36CqkjFEK0PyFSoZlI3/1jO5KnDg64xdwWiEH/zA==", "dev": true, "requires": { "for-own": "^1.0.0", @@ -19882,10 +22341,19 @@ "shallow-clone": "^0.1.2" }, "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -19896,25 +22364,25 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "dev": true }, "codemirror": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.56.0.tgz", - "integrity": "sha512-MfKVmYgifXjQpLSgpETuih7A7WTTIsxvKfSLGseTY5+qt0E1UD1wblZGM6WLenORo8sgmf+3X+WTe2WF7mufyw==", + "version": "5.65.9", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.9.tgz", + "integrity": "sha512-19Jox5sAKpusTDgqgKB5dawPpQcY+ipQK7xoEI+MVucEF9qqFaXpeqY1KaoyGBso/wHQoDa4HMMxMjdsS3Zzzw==", "dev": true }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "dev": true, "requires": { "map-visit": "^1.0.0", @@ -19933,19 +22401,19 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", "dev": true }, "columnify": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", - "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "integrity": "sha512-rFl+iXVT1nhLQPfGDw+3WcS8rmm7XsLKUmhsGE3ihzzpIikeGrTaZPIRKYWeLsLBypsHzjXIvYEltVUZS84XxQ==", "dev": true, "requires": { "strip-ansi": "^3.0.0", @@ -19976,7 +22444,7 @@ "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "component-emitter": { @@ -19988,7 +22456,7 @@ "compress-commons": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", - "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "integrity": "sha512-SLTU8iWWmcORfUN+4351Z2aZXKJe1tr0jSilPMCZlLPzpdTXnkBW1LevW/MfuANBKJek8Xu9ggqrtVmQrChLtg==", "dev": true, "requires": { "buffer-crc32": "^0.2.1", @@ -20000,7 +22468,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "concat-stream": { @@ -20016,12 +22484,12 @@ } }, "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz", + "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==", "dev": true, "requires": { - "dot-prop": "^4.1.0", + "dot-prop": "^4.2.1", "graceful-fs": "^4.1.2", "make-dir": "^1.0.0", "unique-string": "^1.0.0", @@ -20037,12 +22505,6 @@ "requires": { "pify": "^3.0.0" } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true } } }, @@ -20056,12 +22518,59 @@ "finalhandler": "1.1.2", "parseurl": "~1.3.3", "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } } }, "connect-livereload": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", - "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", + "integrity": "sha512-3KnRwsWf4VmP01I4hCDQqTc4e2UxOvJIi8i08GiwqX2oymzxNFY7PqjFkwHglYTJ0yzUJkO5yqdPxVaIz3Pbug==", "dev": true }, "console-browserify": { @@ -20084,15 +22593,15 @@ "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", "dev": true }, "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" } }, "content-type": { @@ -20103,27 +22612,24 @@ "continuable-cache": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "integrity": "sha512-TF30kpKhTH8AGCG3dut0rdd/19B7Z+qCnrMoBLpyQu/2drZdNrrpcjPEoJeSVsQM+8KmWG5O56oPDjSSUsuTyA==", "dev": true }, "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "copy-concurrently": { "version": "1.0.5", @@ -20139,6 +22645,15 @@ "run-queue": "^1.0.0" }, "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -20153,36 +22668,27 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", "dev": true }, "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" }, "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", + "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", "dev": true, "requires": { - "browserslist": "^4.8.5", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "browserslist": "^4.21.4" } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "crc": { @@ -20192,12 +22698,24 @@ "dev": true, "requires": { "buffer": "^5.1.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } } }, "crc32-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", - "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "integrity": "sha512-UjZSqFCbn+jZUHJIh6Y3vMF7EJLcJWNm4tKDf2peJRwlZKHvkkvOMTvAei6zjU9gO1xONVr3rRFw0gixm2eUng==", "dev": true, "requires": { "crc": "^3.4.4", @@ -20215,9 +22733,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -20225,7 +22743,7 @@ "create-error-class": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "integrity": "sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==", "dev": true, "requires": { "capture-stack-trace": "^1.0.0" @@ -20269,12 +22787,29 @@ "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "crx": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/crx/-/crx-3.2.1.tgz", - "integrity": "sha1-Fyk+51790IxtHIs+F0nS1XV89Cs=", + "integrity": "sha512-UGgKNCy+6oXbMPaibiB2nLjiDCDC5akQbiODN1HWibH3l/0q52hPE10oqH3d2jyyM92nKuBwqD5t6Xg3FM8QTA==", "dev": true, "requires": { "archiver": "^1.1.0", @@ -20286,7 +22821,7 @@ "crx-parser": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/crx-parser/-/crx-parser-0.1.2.tgz", - "integrity": "sha1-fu7tnt3JXiLBiTguNGJARKiaWm0=", + "integrity": "sha512-B1XsIt+CDGa91o+72tAhMnuTzgO4G2HYvzzhZcL3+NetS1ENfX+6Y+ofWFBfuw+/y8uJAip65zphNNiHVlOyxQ==", "dev": true }, "crypto-browserify": { @@ -20311,7 +22846,7 @@ "crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", "dev": true }, "css": { @@ -20335,15 +22870,18 @@ } }, "css-parse": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", - "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==", + "dev": true, + "requires": { + "css": "^2.0.0" + } }, "css-select": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", "dev": true, "requires": { "boolbase": "~1.0.0", @@ -20361,7 +22899,7 @@ "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", "dev": true }, "d": { @@ -20377,7 +22915,7 @@ "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -20402,28 +22940,33 @@ "dev": true }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "requires": { - "ms": "2.0.0" + "ms": "2.1.2" } }, "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", "dev": true }, "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", + "integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -20461,19 +23004,19 @@ "deep-freeze": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", - "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", + "integrity": "sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==", "dev": true }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "deepcopy": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-0.6.3.tgz", - "integrity": "sha1-Y0eA8vhlardxr4+oQx7RzO5Vx7A=", + "integrity": "sha512-C7P+E1C5q9rF51zPXI2G03/y7mJ5tbjJUpUjhpghwnbCXi8rzsX/y1JzCX8+Oin9vN9E2BT32RCuDw6xEXDw1A==", "dev": true }, "deepmerge": { @@ -20483,21 +23026,22 @@ "dev": true }, "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "requires": { "clone": "^1.0.2" } }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "requires": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "define-property": { @@ -20508,43 +23052,12 @@ "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } } }, "degenerator": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "integrity": "sha512-EMAC+riLSC64jKfOs1jp8J7M4ZXstUUwTdwFBEv6HOzL/Ae+eAzMKEK0nJnpof2fnw9IOjmE6u6qXFejVyk8AA==", "dev": true, "requires": { "ast-types": "0.x.x", @@ -20555,7 +23068,7 @@ "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", "dev": true } } @@ -20563,13 +23076,13 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, "deprecation": { "version": "2.3.1", @@ -20589,24 +23102,24 @@ "desandro-matches-selector": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", - "integrity": "sha1-cXvu1NwT59jzdi9wem1YpndCGOE=", + "integrity": "sha512-+1q0nXhdzg1IpIJdMKalUwvvskeKnYyEe3shPRwedNcWtnhEKT3ZxvFjzywHDeGcKViIxTCAoOYQWP1qD7VNyg==", "dev": true }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, "detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", "dev": true }, "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", "dev": true, "requires": { "repeating": "^2.0.0" @@ -20630,9 +23143,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -20654,31 +23167,77 @@ }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" } }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "p-limit": "^2.0.0" } }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, "pino": { "version": "5.8.1", "resolved": "https://registry.npmjs.org/pino/-/pino-5.8.1.tgz", @@ -20708,7 +23267,7 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -20733,6 +23292,16 @@ "y18n": "^3.2.1 || ^4.0.0", "yargs-parser": "^11.1.1" } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -20757,7 +23326,7 @@ "doctypes": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==" }, "dom-serializer": { "version": "0.1.1", @@ -20799,7 +23368,7 @@ "domutils": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", "dev": true, "requires": { "dom-serializer": "0", @@ -20816,9 +23385,9 @@ } }, "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" }, "dtrace-provider": { "version": "0.8.8", @@ -20831,9 +23400,9 @@ } }, "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", "dev": true }, "duplexify": { @@ -20851,7 +23420,7 @@ "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "requires": { "jsbn": "~0.1.0", @@ -20870,33 +23439,33 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "electron-to-chromium": { - "version": "1.3.523", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.523.tgz", - "integrity": "sha512-D4/3l5DpciddD92IDRtpLearQSGzly8FwBJv+nITvLH8YJrFabpDFe4yuiOJh2MS4/EsXqyQTXyw1toeYPtshQ==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -20916,22 +23485,22 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, "encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, + "devOptional": true, "requires": { "iconv-lite": "^0.6.2" }, "dependencies": { "iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "dev": true, + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -20948,9 +23517,9 @@ } }, "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -20976,9 +23545,9 @@ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "requires": { "prr": "~1.0.1" @@ -21003,22 +23572,35 @@ } }, "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", "dev": true, "requires": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" } }, "es-to-primitive": { @@ -21033,14 +23615,14 @@ } }, "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", "dev": true, "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" } }, "es6-error": { @@ -21052,7 +23634,7 @@ "es6-iterator": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "dev": true, "requires": { "d": "1", @@ -21063,7 +23645,7 @@ "es6-map": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==", "dev": true, "requires": { "d": "1", @@ -21077,13 +23659,13 @@ "es6-promise": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", "dev": true }, "es6-promisify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", "dev": true, "requires": { "es6-promise": "^4.0.3" @@ -21098,27 +23680,24 @@ } }, "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz", + "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "es6-iterator": "~2.0.3", + "es6-symbol": "^3.1.3", + "event-emitter": "^0.3.5", + "type": "^2.7.2" }, "dependencies": { - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true } } }, @@ -21145,20 +23724,20 @@ } }, "escalade": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", - "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "escodegen": { @@ -21186,7 +23765,7 @@ "escope": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "integrity": "sha512-75IUQsusDdalQEW/G/2esa87J7raqdJF+Ca0/Xm5C3Q58Nr4yVYjZGp/P1+2xiEVgXRrA39dpRb8LcshajbqDQ==", "dev": true, "requires": { "es6-map": "^0.1.3", @@ -21242,30 +23821,39 @@ }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -21276,7 +23864,7 @@ "eslint-plugin-no-unsafe-innerhtml": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsafe-innerhtml/-/eslint-plugin-no-unsafe-innerhtml-1.0.16.tgz", - "integrity": "sha1-fQKHjI6b95FriINtWsEitC8VGTI=", + "integrity": "sha512-zdymo/6S8sovPZPPcF07bblXIkflbzDoGXmWG2KIaiGY2DTWQxotCv4eRSpJp5xXS66uacLceMQXTzeI3im9+g==", "dev": true, "requires": { "eslint": "^3.7.1" @@ -21288,27 +23876,10 @@ "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", "dev": true }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, "ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "integrity": "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ==", "dev": true, "requires": { "co": "^4.6.0", @@ -21318,25 +23889,26 @@ "ajv-keywords": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true + "integrity": "sha512-vuBv+fm2s6cqUyey2A7qYcvsik+GMDJsw8BARP2sDE76cqmaZVarsvHf7Vx6VJ0Xk8gLl+u3MoAPf6gKzJefeA==", + "dev": true, + "requires": {} }, "ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "integrity": "sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==", "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -21349,16 +23921,25 @@ "cli-cursor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", "dev": true, "requires": { "restore-cursor": "^1.0.1" } }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "eslint": { "version": "3.19.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "integrity": "sha512-x6LJGXWCGB/4YOBhL48yeppZTo+YQUNC37N5qqCpC1b1kkNzydlQHQAtPuUSFoZSxgIadrysQoW2Hq602P+uEA==", "dev": true, "requires": { "babel-code-frame": "^6.16.0", @@ -21411,7 +23992,7 @@ "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5", @@ -21427,7 +24008,7 @@ "inquirer": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "integrity": "sha512-bOetEz5+/WpgaW4D1NYOk1aD+JCqRjqu/FwRFgnIfiP7FC/zinsrfyO1vlS3nyH/R7S0IH3BIHBu4DBIDSqiGQ==", "dev": true, "requires": { "ansi-escapes": "^1.1.0", @@ -21443,39 +24024,76 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.0", "through": "^2.3.6" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } } }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "requires": { "number-is-nan": "^1.0.0" } }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "onetime": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", "dev": true }, "pluralize": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "integrity": "sha512-TH+BeeL6Ct98C7as35JbZLf8lgsRzlNJb5gklRIGHKaPkGl1esOKBc5ALUMd+q08Sr6tiEKM+Icbsxg5vuhMKQ==", "dev": true }, "progress": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "integrity": "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==", "dev": true }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", "dev": true, "requires": { "exit-hook": "^1.0.0", @@ -21485,7 +24103,7 @@ "run-async": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "integrity": "sha512-qOX+w+IxFgpUpJfkv2oGN0+ExPs68F4sZHfaRRx4dDexAQkG83atugKVEylyT5ARees3HBbfmuvnjbrd8j9Wjw==", "dev": true, "requires": { "once": "^1.3.0" @@ -21494,7 +24112,7 @@ "shelljs": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "integrity": "sha512-/YF5Uk8hcwi7ima04ppkbA4RaRMdPMBfwAvAf8sufYOxsJRtbdoBsT8vGvlb+799BrlGdYrd+oczIA2eN2JdWA==", "dev": true, "requires": { "glob": "^7.0.0", @@ -21505,30 +24123,19 @@ "slice-ansi": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", "dev": true }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true }, "table": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "integrity": "sha512-RZuzIOtzFbprLCE0AXhkI0Xi42ZJLZhCC+qkwuMLf/Vjz3maWpA8gz1qMdbmNoI9cOROT2Am/DxeRyXenrL11g==", "dev": true, "requires": { "ajv": "^4.7.0", @@ -21537,39 +24144,6 @@ "lodash": "^4.0.0", "slice-ansi": "0.0.4", "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } } } } @@ -21608,10 +24182,17 @@ }, "dependencies": { "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} } } }, @@ -21622,29 +24203,37 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, "estraverse": { @@ -21661,7 +24250,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, "ev-emitter": { "version": "1.1.1", @@ -21672,7 +24261,7 @@ "event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "dev": true, "requires": { "d": "1", @@ -21682,19 +24271,19 @@ "event-to-promise": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz", - "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=", + "integrity": "sha512-/J+h6lLXMhNrahk5XipFHjSOlTv4Zl+D5rXomuhT3MIUxkP7beRxazgCQ6ERYJTFPPM8WC8dbHIeQc1VaKrOxw==", "dev": true }, "eventemitter2": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==", "dev": true }, "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "evp_bytestokey": { @@ -21725,19 +24314,19 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, "exit-hook": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==", "dev": true }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dev": true, "requires": { "debug": "^2.3.3", @@ -21749,90 +24338,169 @@ "to-regex": "^3.0.1" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true } } }, "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, "requires": { "homedir-polyfill": "^1.0.1" } }, "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } } }, "express-sslify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/express-sslify/-/express-sslify-1.2.0.tgz", - "integrity": "sha1-MOhLzu0VV+sYdnK74UMKCioQDZw=" + "integrity": "sha512-OOf2B3MxAVjEXPPWl4Z19wA2oMH+RCULJVhejPwuhiDDClr9QczZz5ycABLSnnN+oY8JcLs32ghs9cxOj0vi+w==" }, "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dev": true, "requires": { - "type": "^2.0.0" + "type": "^2.7.2" }, "dependencies": { "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", "dev": true } } @@ -21844,24 +24512,12 @@ "dev": true }, "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "is-extendable": "^0.1.0" } }, "external-editor": { @@ -21878,64 +24534,26 @@ "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-descriptor": "^1.0.0" } } } @@ -21950,12 +24568,38 @@ "debug": "^2.6.9", "mkdirp": "^0.5.4", "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } } }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true }, "fast-deep-equal": { @@ -21982,7 +24626,7 @@ "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", "dev": true } } @@ -21996,7 +24640,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "fast-redact": { @@ -22006,15 +24650,15 @@ "dev": true }, "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true }, "faye-websocket": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "integrity": "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" @@ -22023,7 +24667,7 @@ "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "requires": { "pend": "~1.2.0" @@ -22038,7 +24682,7 @@ "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -22047,7 +24691,7 @@ "file-entry-cache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", "dev": true, "requires": { "flat-cache": "^1.2.1", @@ -22057,7 +24701,7 @@ "file-sync-cmp": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "integrity": "sha512-0k45oWBokCqh2MOexeYKpyqmGKG+8mQ2Wd8iawx+uWd/weWJQAZ6SoPybagdCI4xFisag8iAR77WPm4h3pTfxA==", "dev": true }, "file-uri-to-path": { @@ -22069,64 +24713,69 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", "repeat-string": "^1.6.1", "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } } }, "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } } }, "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" } }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "findup-sync": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "integrity": "sha512-z8Nrwhi6wzxNMIbxlrTzuUW6KWuKkogZ/7OdDVq+0+kxn77KUH1nipx8iU6suqkHqc4y6n7a9A8IpmxY/pTjWg==", "dev": true, "requires": { "glob": "~5.0.0" @@ -22135,7 +24784,7 @@ "glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", "dev": true, "requires": { "inflight": "^1.0.4", @@ -22158,6 +24807,17 @@ "object.defaults": "^1.1.0", "object.pick": "^1.2.0", "parse-filepath": "^1.0.1" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } } }, "firefox-profile": { @@ -22182,7 +24842,7 @@ "archiver": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", - "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", + "integrity": "sha512-01psM0DMD3YItvhnAXZODfsViaeDidrJwfne3lsoVrbyYa/xFQwTbVjY+2WlEBm7qH1fCsyxAA1SgNr/XenTlQ==", "dev": true, "requires": { "archiver-utils": "^1.3.0", @@ -22209,7 +24869,7 @@ "first-chunk-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", - "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "integrity": "sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==", "dev": true, "requires": { "readable-stream": "^2.0.2" @@ -22262,7 +24922,7 @@ "flipclock": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/flipclock/-/flipclock-0.7.8.tgz", - "integrity": "sha1-838ffKkETZAsH+4fGuf0vR7vGlQ=", + "integrity": "sha512-YkMQ5krRzxZJz38m8aJuyPqtphPdnXmas4kNLZbAwu3FNNwsRsg3gzUJM0onWDy34tDlh20IUSSmKiyuE8QJjg==", "dev": true, "requires": { "jquery": ">=1.7" @@ -22287,13 +24947,13 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true }, "for-own": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", "dev": true, "requires": { "for-in": "^1.0.1" @@ -22302,7 +24962,7 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true }, "form-data": { @@ -22317,14 +24977,14 @@ } }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dev": true, "requires": { "map-cache": "^0.2.2" @@ -22333,12 +24993,12 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -22365,7 +25025,7 @@ "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -22377,7 +25037,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "fsevents": { @@ -22390,7 +25050,7 @@ "ftp": { "version": "0.3.10", "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", "dev": true, "requires": { "readable-stream": "1.1.x", @@ -22400,13 +25060,13 @@ "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true }, "readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -22414,25 +25074,54 @@ "isarray": "0.0.1", "string_decoder": "~0.10.x" } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", + "dev": true } } }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, "fx-runner": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.0.9.tgz", - "integrity": "sha1-eyPzdz3HaqzELxHZr/J2lnXLY/A=", + "integrity": "sha512-/9YF7XcTd/Ee2p2EV/1ZwnXEg8WkwTXHW7GfYYq9eaz5YAwqF22J95A8lPo/rcKP+Qy+SwEwNRcpRZTUFna2DA==", "dev": true, "requires": { "commander": "2.9.0", @@ -22447,7 +25136,7 @@ "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", "dev": true, "requires": { "graceful-readlink": ">= 1.0.0" @@ -22456,7 +25145,7 @@ "is-absolute": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", - "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "integrity": "sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==", "dev": true, "requires": { "is-relative": "^0.1.0" @@ -22465,13 +25154,13 @@ "is-relative": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", - "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", + "integrity": "sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==", "dev": true }, "isexe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", - "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", + "integrity": "sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==", "dev": true }, "lodash": { @@ -22483,7 +25172,7 @@ "which": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", - "integrity": "sha1-FVf5YIBgTlsRs1meufRbUKnv1yI=", + "integrity": "sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==", "dev": true, "requires": { "is-absolute": "^0.1.7", @@ -22513,16 +25202,16 @@ "generate-object-property": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", "dev": true, "requires": { "is-property": "^1.0.0" } }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, "get-caller-file": { @@ -22534,9 +25223,19 @@ "get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "dev": true }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, "get-size": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz", @@ -22546,9 +25245,19 @@ "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "get-uri": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", @@ -22561,24 +25270,41 @@ "file-uri-to-path": "1", "ftp": "~0.3.10", "readable-stream": "2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } } }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true }, "getobject": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", + "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", "dev": true }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -22587,7 +25313,7 @@ "gettext-parser": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.0.tgz", - "integrity": "sha1-LFpmONiTk0ubVQN9CtgstwBLJnk=", + "integrity": "sha512-zL3eayB0jF+cr6vogH/VJKoKcj7uQj2TPByaaj6a4k/3elk9iq7fiwCM2FqdzS/umo021RetSanVisarzeb9Wg==", "dev": true, "requires": { "encoding": "^0.1.11" @@ -22596,7 +25322,7 @@ "git-rev-sync": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/git-rev-sync/-/git-rev-sync-1.9.1.tgz", - "integrity": "sha1-oMLj3TkqvPa3aWLif8dfsyI0Sc4=", + "integrity": "sha512-n6yNICNnWOe0uR2XAQQyBIVMCCCEPFY6dkun9s+9QM39nJpmPxgU48BX4UlLh95MXU5cbkhpbIP7RHOw5ujPew==", "dev": true, "requires": { "escape-string-regexp": "1.0.5", @@ -22607,13 +25333,22 @@ "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "integrity": "sha512-9x6DLUuW+ROFdMTII9ec9t/FK8va6kYcC8/LggumssLM8kNv7IdFl3VrNUqgir2tJuBVxBga1QBoRziZacO5Zg==", "dev": true }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, "shelljs": { "version": "0.7.7", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", - "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", + "integrity": "sha512-5ZXTlakejjdxXAnFl23pgPDzCcyPoshqMVWYqMH8HiP1R+i4auEKHabljL6XQlhQV58jkSRTR33Fq7OlxyLLTg==", "dev": true, "requires": { "glob": "^7.0.0", @@ -22624,9 +25359,9 @@ } }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -22640,11 +25375,22 @@ "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dev": true, "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } }, "global": { @@ -22660,7 +25406,7 @@ "global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", "dev": true, "requires": { "ini": "^1.3.4" @@ -22680,7 +25426,7 @@ "global-prefix": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "dev": true, "requires": { "expand-tilde": "^2.0.2", @@ -22688,6 +25434,17 @@ "ini": "^1.3.4", "is-windows": "^1.0.1", "which": "^1.2.14" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "globals": { @@ -22697,20 +25454,20 @@ "dev": true }, "globule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", - "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", "dev": true, "requires": { "glob": "~7.1.1", - "lodash": "~4.17.10", + "lodash": "^4.17.21", "minimatch": "~3.0.2" } }, "got": { "version": "6.7.1", "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "integrity": "sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==", "dev": true, "requires": { "create-error-class": "^3.0.0", @@ -22727,15 +25484,15 @@ } }, "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "graceful-readlink": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", "dev": true }, "graphlib": { @@ -22756,13 +25513,13 @@ "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", "dev": true }, "grunt": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.2.1.tgz", - "integrity": "sha512-zgJjn9N56tScvRt/y0+1QA+zDBnKTrkpyeSBqQPLcZvbqTD/oyGMrdZQXmm6I3828s+FmPvxc3Xv+lgKFtudOw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz", + "integrity": "sha512-mKwmo4X2d8/4c/BmcOETHek675uOqw0RuA/zy12jaspWqvTp4+ZeQF1W+OTpcbncnaBsfbQJ6l0l4j+Sn/GmaQ==", "dev": true, "requires": { "dateformat": "~3.0.3", @@ -22770,37 +25527,29 @@ "exit": "~0.1.2", "findup-sync": "~0.3.0", "glob": "~7.1.6", - "grunt-cli": "~1.3.2", - "grunt-known-options": "~1.1.0", - "grunt-legacy-log": "~2.0.0", - "grunt-legacy-util": "~1.1.1", + "grunt-cli": "~1.4.3", + "grunt-known-options": "~2.0.0", + "grunt-legacy-log": "~3.0.0", + "grunt-legacy-util": "~2.0.1", "iconv-lite": "~0.4.13", "js-yaml": "~3.14.0", "minimatch": "~3.0.4", "mkdirp": "~1.0.4", "nopt": "~3.0.6", "rimraf": "~3.0.2" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } } }, "grunt-cli": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz", - "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", + "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", "dev": true, "requires": { - "grunt-known-options": "~1.1.0", + "grunt-known-options": "~2.0.0", "interpret": "~1.1.0", - "liftoff": "~2.5.0", + "liftup": "~3.0.1", "nopt": "~4.0.1", - "v8flags": "~3.1.1" + "v8flags": "~3.2.0" }, "dependencies": { "nopt": { @@ -22818,7 +25567,7 @@ "grunt-contrib-clean": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz", - "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=", + "integrity": "sha512-tET+TYTd8vCtKeGwbLjoH8+SdI8ngVzGbPr7vlWkewG7mYYHIccd2Ldxq+PK3DyBp5Www3ugdkfsjoNKUl5MTg==", "dev": true, "requires": { "async": "^1.5.2", @@ -22839,7 +25588,7 @@ "grunt-contrib-connect": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz", - "integrity": "sha1-XPkzuRpnOGBEJzwLJERgPNmIebo=", + "integrity": "sha512-7OPoyfGrpOYzuiRPzGyzWDe/xFcjttXe1ztVSFS8TAVBtpfXeeOV9RiwuyqA4yN1UeOG2Pnpx8s0DcUDAu21Gw==", "dev": true, "requires": { "async": "^1.5.2", @@ -22856,7 +25605,7 @@ "grunt-contrib-copy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", - "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", + "integrity": "sha512-gFRFUB0ZbLcjKb67Magz1yOHGBkyU6uL29hiEW1tdQ9gQt72NuMKIy/kS6dsCbV0cZ0maNCb0s6y+uT1FKU7jA==", "dev": true, "requires": { "chalk": "^1.1.1", @@ -22866,13 +25615,13 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -22885,7 +25634,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true } } @@ -22893,7 +25642,7 @@ "grunt-contrib-pug": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-contrib-pug/-/grunt-contrib-pug-1.0.0.tgz", - "integrity": "sha1-tSWlwK/wRiL3Vw4x+SQQbxb4G0Y=", + "integrity": "sha512-VfP4Jzf8u2DK8oFsNWMKvJOjnNAYOBOCfcatt7VSJlpo6zQG2fFjPmbUqgtfff450HEnM7qY5m6ix77JyNuYmw==", "dev": true, "requires": { "chalk": "^1.0.0", @@ -22903,13 +25652,13 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -22922,7 +25671,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true } } @@ -22930,7 +25679,7 @@ "grunt-contrib-stylus": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/grunt-contrib-stylus/-/grunt-contrib-stylus-1.2.0.tgz", - "integrity": "sha1-R9RG7wVESW7/naQY0A9XdFQ0crs=", + "integrity": "sha512-L+XT68YNgvpucbwczexLhkCXYcQdI1ozQZprSuFzMY8/sodFWD3gZfqSu/HUeK87g/ov09Yla24mMiNBhfaKcg==", "dev": true, "requires": { "async": "^1.5.2", @@ -22943,13 +25692,13 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -22962,7 +25711,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true } } @@ -22980,9 +25729,9 @@ }, "dependencies": { "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" @@ -22993,7 +25742,7 @@ "grunt-crx": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/grunt-crx/-/grunt-crx-1.0.5.tgz", - "integrity": "sha1-nU5QHO8WtyF3KmBBxNQdH5KFirU=", + "integrity": "sha512-CVmBxn3ScZX2uzyS7KQ24MpFVYFIi6pX4aEZ4zcKICzsRi7DFW8XMPY5QdKEzsNefK5XOnrOpXnbht5BUDl9Xw==", "dev": true, "requires": { "crx": "^3.0.1", @@ -23001,55 +25750,126 @@ "mkdirp": "^0.5.0", "os-homedir": "^1.0.1", "xtend": "^4.0.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } } }, "grunt-exec": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz", "integrity": "sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg==", - "dev": true + "dev": true, + "requires": {} }, "grunt-known-options": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", - "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", + "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==", "dev": true }, "grunt-legacy-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", - "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", + "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", "dev": true, "requires": { "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.0.0", + "grunt-legacy-log-utils": "~2.1.0", "hooker": "~0.2.3", - "lodash": "~4.17.5" + "lodash": "~4.17.19" } }, "grunt-legacy-log-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", - "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", + "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", "dev": true, "requires": { - "chalk": "~2.4.1", - "lodash": "~4.17.10" + "chalk": "~4.1.0", + "lodash": "~4.17.19" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "grunt-legacy-util": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", - "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", + "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", "dev": true, "requires": { - "async": "~1.5.2", - "exit": "~0.1.1", - "getobject": "~0.1.0", + "async": "~3.2.0", + "exit": "~0.1.2", + "getobject": "~1.0.0", "hooker": "~0.2.3", - "lodash": "~4.17.10", - "underscore.string": "~3.3.4", - "which": "~1.3.0" + "lodash": "~4.17.21", + "underscore.string": "~3.3.5", + "which": "~2.0.2" + }, + "dependencies": { + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + } } }, "grunt-mocha-test": { @@ -23060,6 +25880,17 @@ "requires": { "hooker": "^0.2.3", "mkdirp": "^0.5.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } } }, "grunt-webpack": { @@ -23075,7 +25906,7 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true }, "har-validator": { @@ -23092,7 +25923,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -23100,33 +25930,56 @@ "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" } }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, "has-color": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "integrity": "sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "dev": true, "requires": { "get-value": "^2.0.6", @@ -23137,7 +25990,7 @@ "has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -23147,7 +26000,7 @@ "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -23158,7 +26011,7 @@ "hasbin": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", - "integrity": "sha1-eMWSaJPIAhXCtWiuH9P8q3omlrA=", + "integrity": "sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg==", "dev": true, "requires": { "async": "~1.5" @@ -23175,36 +26028,15 @@ "safe-buffer": "^5.2.0" }, "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { - "safe-buffer": "~5.2.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } } } @@ -23222,19 +26054,19 @@ "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "integrity": "sha512-z/GDPjlRMNOa2XJiB4em8wJpuuBfrFOlYKTZxtpkdr1uPdibHI8rYA3MY0KDObpVyaes0e/aunid/t88ZI2EKA==", "dev": true }, "highlight.js": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.1.tgz", - "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==", + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", "dev": true }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dev": true, "requires": { "hash.js": "^1.0.3", @@ -23245,7 +26077,7 @@ "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", "dev": true, "requires": { "os-homedir": "^1.0.0", @@ -23264,13 +26096,13 @@ "hooker": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "integrity": "sha512-t+UerCsQviSymAInD01Pw+Dn/usmz1sRO+3Zk1+lx8eg+WKpD2ulcwWqHHL0+aseRBr+3+vIhiG1K1JTwaIcTA==", "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "htmlparser2": { @@ -23297,40 +26129,25 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } } } }, "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" } }, "http-parser-js": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", - "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "http-proxy-agent": { @@ -23351,13 +26168,19 @@ "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true } } }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -23374,7 +26197,7 @@ "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", "dev": true }, "https-proxy-agent": { @@ -23388,19 +26211,13 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -23413,15 +26230,15 @@ } }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, "iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", "dev": true }, "ignore": { @@ -23433,19 +26250,19 @@ "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", "dev": true }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "infer-owner": { @@ -23457,7 +26274,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -23465,20 +26282,20 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "inject-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/inject-loader/-/inject-loader-3.0.1.tgz", - "integrity": "sha512-0Kd4NqMJUhknG4ECiJ/mgyHJBpfBBWZ3IKHl2BLNQiFtMO7/xiv9mmHl7mGvE0iKrBeQAZdMcQP3sMXZN0cqeg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/inject-loader/-/inject-loader-4.0.1.tgz", + "integrity": "sha512-fUFtHkso2AnzQyyJjuGuDYL0mW2EIQUlS4MgXXmCIRjVLyDk3oXGJqNcSTUg6DGs1q4gvqVIWsxfmPKxF44xfw==", "dev": true, "requires": { "babel-core": "~6" @@ -23506,15 +26323,15 @@ }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -23522,10 +26339,21 @@ } } }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "interpret": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "integrity": "sha512-CLM8SNMDu7C5psFCn6Wg/tgpj/bKAg7hc2gWqcuR9OD5Ft9PhBpIu8PLicPeis+xDd6YX2ncI8MCA64I9tftIA==", "dev": true }, "invariant": { @@ -23544,9 +26372,9 @@ "dev": true }, "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, "ipaddr.js": { @@ -23565,128 +26393,125 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "kind-of": "^6.0.0" } }, "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", "dev": true, "requires": { "binary-extensions": "^1.0.0" } }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "kind-of": "^6.0.0" } }, "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-expression": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", - "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", + "integrity": "sha512-vyMeQMq+AiH5uUnoBfMTwf18tO3bM6k1QXBE9D6ueAAquEfCZe3AJPtud9g6qS0+4X8xA7ndpZiDyeb2l2qOBw==", "requires": { "acorn": "~4.0.2", "object-assign": "^4.0.1" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" - } } }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-finite": { @@ -23698,22 +26523,22 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true }, "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "^2.1.1" } }, "is-installed-globally": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "integrity": "sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==", "dev": true, "requires": { "global-dirs": "^0.1.0", @@ -23727,34 +26552,40 @@ "dev": true }, "is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz", + "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==", "dev": true }, "is-my-json-valid": { - "version": "2.20.5", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.5.tgz", - "integrity": "sha512-VTPuvvGQtxvCeghwspQu1rBgjYUT6FGxPlvFKbYuFtgc4ADsX3U5ihZOYN0qyU6u+d4X9xXb0IT5O6QpXKt87A==", + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz", + "integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==", "dev": true, "requires": { "generate-function": "^2.0.0", "generate-object-property": "^1.1.0", "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", + "jsonpointer": "^5.0.0", "xtend": "^4.0.0" } }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "integrity": "sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg==", "dev": true }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -23763,7 +26594,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -23771,29 +26602,34 @@ } } }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", "dev": true }, "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", "dev": true, "requires": { "path-is-inside": "^1.0.1" } }, "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" }, "is-promise": { "version": "2.2.2", @@ -23803,21 +26639,22 @@ "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", "dev": true }, "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "integrity": "sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==", "dev": true }, "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "requires": { - "has-symbols": "^1.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-relative": { @@ -23841,25 +26678,43 @@ "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", "dev": true }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "requires": { - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" } }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "is-unc-path": { @@ -23874,9 +26729,18 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", "dev": true }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -23886,25 +26750,25 @@ "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, "isotope-layout": { @@ -23923,37 +26787,37 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, "jed": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", - "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=", + "integrity": "sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==", "dev": true }, "jetpack-id": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jetpack-id/-/jetpack-id-1.0.0.tgz", - "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", + "integrity": "sha512-uqasW8dq68KMl8cGkJpakBG/VgsfROblW7B3w9cTN0MQiZ5s+jmi8WgO4/lkrTPbakpU2LA+bZvyVBxadk+MHg==", "dev": true }, "jose": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.1.0.tgz", - "integrity": "sha512-Hqx2vuNlo5sDe+ZWvOXAExWXk31mXgxMuUkUjEIeGNU4KFPZHO8hOnljhb25eoK4g+fth+7tU+k+AA+p/eZtYw==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.11.0.tgz", + "integrity": "sha512-wLe+lJHeG8Xt6uEubS4x0LVjS/3kXXu9dGoj9BNnlhYq7Kts0Pbb2pvv5KiI0yaKH/eaiR0LUOBhOVo9ktd05A==", "dev": true }, "jquery": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", - "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz", + "integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==", "dev": true }, "js-select": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/js-select/-/js-select-0.6.0.tgz", - "integrity": "sha1-woTiKCTVknrsli3N8kcXSu+w0ZA=", + "integrity": "sha512-npBjRT1DXCKnpLqcsaXj5XVB5l/wAcSGCp03e/6xD5BHg9cFlnoQ/wrSGZIrtaa3J7+N9tLvX1RkxcykmJVyyg==", "dev": true, "requires": { "JSONSelect": "0.2.1", @@ -23963,7 +26827,7 @@ "js-stringify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==" }, "js-tokens": { "version": "4.0.0", @@ -23972,9 +26836,9 @@ "dev": true }, "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -23984,7 +26848,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, "jsesc": { @@ -23996,7 +26860,7 @@ "json-merge-patch": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-0.2.3.tgz", - "integrity": "sha1-+ixrWvh9p3uuKWalidUuI+2B/kA=", + "integrity": "sha512-mjd5eObNGOhWkKCztwVuF25KOzLj2T4TJaWXLBgCQPeoPRJrMxKNgjNBE8sPmXoWRT0WDlo4Itd/gTlFh29TFw==", "dev": true, "requires": { "deep-equal": "^1.0.0" @@ -24009,9 +26873,9 @@ "dev": true }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "json-schema-traverse": { @@ -24021,66 +26885,63 @@ "dev": true }, "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", + "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", "dev": true, "requires": { - "jsonify": "~0.0.0" + "jsonify": "^0.0.1" } }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "requires": { "graceful-fs": "^4.1.6" } }, "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", "dev": true }, "jsonpointer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", - "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true }, "jsonpointer.js": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/jsonpointer.js/-/jsonpointer.js-0.4.0.tgz", - "integrity": "sha1-ACyxI/dnqv3rAZYTLOXE+ZQcyro=", + "integrity": "sha512-2bf/1crAmPpsmj1I6rDT6W0SOErkrNBpb555xNWcMVWYrX6VnXpG0GRMQ2shvOHwafpfse8q0gnzPFYVH6Tqdg==", "dev": true }, "JSONSelect": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.2.1.tgz", - "integrity": "sha1-QVQYpSbTP+MddLTe+jyDbUhewgM=", + "integrity": "sha512-Q/zZyUq4PZ7Mja7Jz7doBHcdQpfyCq2zR2B5AUqFtQs4hzIe4gsiZ1Yzkx7nEiS15JrYpfWe99MAjYwFt05Q4g==", "dev": true }, "jsonwebtoken": { @@ -24099,32 +26960,24 @@ "lodash.once": "^4.0.0", "ms": "^2.1.1", "xtend": "^4.0.1" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, "jstransformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", "requires": { "is-promise": "^2.0.0", "promise": "^7.0.1" @@ -24141,27 +26994,27 @@ "jstransformer-markdown-it": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.1.0.tgz", - "integrity": "sha1-aewwzkUYvtWZezjwJ2SOjChekvc=", + "integrity": "sha512-E9uALZSe3M3jiq9Mza+wTlT44Yyh/s3D5XWUeJgH3vyzB05KFQz8Tv2I9do3BbRY/S5SDxFMkxB6fCGj+MA2rg==", "requires": { "markdown-it": "^8.0.0" } }, "jszip": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", - "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, "requires": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" + "setimmediate": "^1.0.5" } }, "just-extend": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.0.tgz", - "integrity": "sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", "dev": true }, "jwa": { @@ -24194,21 +27047,22 @@ "latest-version": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "integrity": "sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==", "dev": true, "requires": { "package-json": "^4.0.0" } }, "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==", + "dev": true }, "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dev": true, "requires": { "readable-stream": "^2.0.5" @@ -24223,25 +27077,10 @@ "invert-kv": "^2.0.0" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "requires": { "prelude-ls": "~1.1.2", @@ -24257,32 +27096,84 @@ "immediate": "~3.0.5" } }, - "liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "liftup": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", + "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==", "dev": true, "requires": { - "extend": "^3.0.0", - "findup-sync": "^2.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", + "extend": "^3.0.2", + "findup-sync": "^4.0.0", + "fined": "^1.2.0", + "flagged-respawn": "^1.0.1", "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" + "object.map": "^1.0.1", + "rechoir": "^0.7.0", + "resolve": "^1.19.0" }, "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "is-number": "^7.0.0" } } } @@ -24304,7 +27195,7 @@ "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -24317,7 +27208,7 @@ "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "dev": true, "requires": { "error-ex": "^1.2.0" @@ -24326,13 +27217,13 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -24347,141 +27238,129 @@ "dev": true }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", + "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } + "json5": "^2.1.2" } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.assign": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", "dev": true }, "lodash.assignin": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", + "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==", "dev": true }, "lodash.clone": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "integrity": "sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==", "dev": true }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", "dev": true }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, "lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", "dev": true }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", "dev": true }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true }, "lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "dev": true }, "lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "dev": true }, "lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "dev": true }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true }, "lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "dev": true }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true }, "lodash.set": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==", "dev": true }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, "loglevel": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", - "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", "dev": true }, "lolex": { @@ -24493,7 +27372,7 @@ "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==" }, "loose-envify": { "version": "1.4.0", @@ -24504,6 +27383,15 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -24527,13 +27415,12 @@ "dev": true }, "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^6.0.0" } }, "make-iterator": { @@ -24557,13 +27444,13 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, "requires": { "object-visit": "^1.0.0" @@ -24572,7 +27459,7 @@ "markdown": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", - "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", + "integrity": "sha512-ctGPIcuqsYoJ493sCtFK7H4UEgMWAUdXeBhPbdsg1W0LsV9yJELAHRsMmWfTgao6nH0/x5gf9FmsbxiXnrgaIQ==", "requires": { "nopt": "~2.1.1" }, @@ -24580,7 +27467,7 @@ "nopt": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", - "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", + "integrity": "sha512-x8vXm7BZ2jE1Txrxh/hO74HTuYZQEbo8edoRcANgdZ4+PCV+pbjd/xdummkmjjC7LU5EjPzlu8zEq/oxWylnKA==", "requires": { "abbrev": "1" } @@ -24623,12 +27510,12 @@ "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" }, "mem": { "version": "4.3.0", @@ -24644,7 +27531,7 @@ "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "requires": { "errno": "^0.1.3", @@ -24654,12 +27541,12 @@ "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" }, "micromatch": { "version": "3.1.10", @@ -24680,6 +27567,36 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } } }, "miller-rabin": { @@ -24693,29 +27610,30 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } }, "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true }, "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "requires": { - "mime-db": "1.44.0" + "mime-db": "1.52.0" } }, "mimic-fn": { @@ -24727,7 +27645,7 @@ "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", "dev": true, "requires": { "dom-walk": "^0.1.0" @@ -24742,22 +27660,22 @@ "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "mississippi": { @@ -24796,13 +27714,22 @@ "requires": { "is-plain-object": "^2.0.4" } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } } } }, "mixin-object": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "integrity": "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==", "dev": true, "requires": { "for-in": "^0.1.3", @@ -24812,19 +27739,16 @@ "for-in": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "integrity": "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==", "dev": true } } }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, "mocha": { "version": "5.2.0", @@ -24874,21 +27798,36 @@ "path-is-absolute": "^1.0.0" } }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", "dev": true, "requires": { "minimist": "0.0.8" } }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "supports-color": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", @@ -24901,9 +27840,9 @@ } }, "moment": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "dev": true }, "morgan": { @@ -24919,18 +27858,36 @@ "on-headers": "~1.0.2" }, "dependencies": { - "depd": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } } } }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", "dev": true, "requires": { "aproba": "^1.1.1", @@ -24941,6 +27898,15 @@ "run-queue": "^1.0.3" }, "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -24953,14 +27919,15 @@ } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "multimatch": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "integrity": "sha512-0mzK8ymiWdehTBiJh0vClAzGyQbdtyWqzSVx//EK4N/D+599RFlGfTAsKw2zMSABtDG9C6Ul2+t8f2Lbdjf5mA==", "dev": true, "requires": { "array-differ": "^1.0.0", @@ -24972,13 +27939,13 @@ "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", "dev": true }, "mv": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", "dev": true, "optional": true, "requires": { @@ -24990,7 +27957,7 @@ "glob": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", "dev": true, "optional": true, "requires": { @@ -25001,10 +27968,20 @@ "path-is-absolute": "^1.0.0" } }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.6" + } + }, "rimraf": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", "dev": true, "optional": true, "requires": { @@ -25025,9 +28002,9 @@ } }, "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "dev": true, "optional": true }, @@ -25048,18 +28025,48 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } } }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "natural-compare-lite": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q=", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, "nconf": { @@ -25077,13 +28084,13 @@ "camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", "dev": true }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "dev": true, "requires": { "string-width": "^1.0.1", @@ -25091,16 +28098,22 @@ "wrap-ansi": "^2.0.0" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -25109,7 +28122,7 @@ "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -25118,7 +28131,7 @@ "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", "dev": true, "requires": { "lcid": "^1.0.0" @@ -25127,7 +28140,7 @@ "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -25138,19 +28151,19 @@ "window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "integrity": "sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw==", "dev": true }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, "yargs": { "version": "3.32.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "integrity": "sha512-ONJZiimStfZzhKamYvR/xvmgW3uEkAUFSP91y2caTEPhzF6uP2JfPiVZcq66b/YR0C3uitxSV7+T1x8p5bkmMg==", "dev": true, "requires": { "camelcase": "^2.0.1", @@ -25167,14 +28180,14 @@ "ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", "dev": true, "optional": true }, "needle": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", - "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", "dev": true, "requires": { "debug": "^3.2.6", @@ -25183,32 +28196,20 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true } } }, "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, "neo-async": { "version": "2.6.2", @@ -25219,62 +28220,21 @@ "netmask": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", + "integrity": "sha512-3DWDqAtIiPSkBXZyYEjwebfK56nrlQfRGt642fu8RPaL+ePu750+HCMHxjJCG3iEHq/0aeMvX6KIzlv7nuhfrA==", "dev": true }, "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, "nib": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", - "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.2.0.tgz", + "integrity": "sha512-7HgrnMl/3yOmWykueO8/D0q+0iWwe7Z+CK2Eaq/xQV8w1hK80WN1oReRQkfkrztbAAnp/nTHkUSl5EcVkor6JQ==", "dev": true, - "requires": { - "stylus": "0.54.5" - }, - "dependencies": { - "glob": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - }, - "stylus": { - "version": "0.54.5", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", - "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", - "dev": true, - "requires": { - "css-parse": "1.7.x", - "debug": "*", - "glob": "7.0.x", - "mkdirp": "0.5.x", - "sax": "0.5.x", - "source-map": "0.1.x" - } - } - } + "requires": {} }, "nice-try": { "version": "1.0.5", @@ -25308,7 +28268,7 @@ "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true }, "lolex": { @@ -25332,43 +28292,29 @@ } }, "nock": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.1.3.tgz", - "integrity": "sha512-YKj0rKQWMGiiIO+Y65Ut8OEgYM3PplLU2+GAhnPmqZdBd6z5IskgdBqWmjzA6lH3RF0S2a3wiAlrMOF5Iv2Jeg==", + "version": "13.2.9", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.9.tgz", + "integrity": "sha512-1+XfJNYF1cjGB+TKMWi29eZ0b82QOvQs2YoLNzbpWGqFMtRQHTa57osqdGj4FrFPgkO4D4AZinzUJR9VvW3QUA==", "dev": true, "requires": { "debug": "^4.1.0", "json-stringify-safe": "^5.0.1", - "lodash.set": "^4.3.2", + "lodash": "^4.17.21", "propagate": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } }, "node-forge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.0.0.tgz", - "integrity": "sha512-ShkiiAlzSsgH1IwGlA0jybk9vQTIOLyJ9nBd0JTuP+nzADJFLY0NoDijM2zvD/JaezooGu3G2p2FNxOAK6459g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, "node-libs-browser": { @@ -25402,38 +28348,18 @@ "vm-browserify": "^1.0.1" }, "dependencies": { - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, "util": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", @@ -25445,12 +28371,6 @@ } } }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, "node-notifier": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", @@ -25461,18 +28381,35 @@ "semver": "^5.4.1", "shellwords": "^0.1.1", "which": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "node-releases": { - "version": "1.1.60", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", - "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "node-rsa": { "version": "0.2.30", "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-0.2.30.tgz", - "integrity": "sha1-iRLiw7G2TM5sp4PKsa8oKzAK3uY=", + "integrity": "sha512-Tg5XrlbigFm6rek1UoIIPRHRbisJL8MhVvzx6xl/bNMaW3qRKQYJSswHsQOnoa/zTLaRG/uKht+XisA71P8U4Q==", "dev": true, "requires": { "asn1": "0.2.3", @@ -25482,7 +28419,7 @@ "lodash": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.3.0.tgz", - "integrity": "sha1-ARzlLQGxTmDq7qdqy5uLpCxwWBs=", + "integrity": "sha512-gpux6tVfBHsUdUIciz5HoV0ChAxUTvi0ChpQMIjAsKtg6FTYFtd1B1G0JlqHvAio3teaMVGPDPk2seVq1INwOQ==", "dev": true } } @@ -25490,7 +28427,7 @@ "nomnom": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", - "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "integrity": "sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ==", "dev": true, "requires": { "chalk": "~0.4.0", @@ -25500,13 +28437,13 @@ "ansi-styles": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "integrity": "sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA==", "dev": true }, "chalk": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "integrity": "sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==", "dev": true, "requires": { "ansi-styles": "~1.0.0", @@ -25517,7 +28454,7 @@ "strip-ansi": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "integrity": "sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg==", "dev": true } } @@ -25525,7 +28462,7 @@ "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "dev": true, "requires": { "abbrev": "1" @@ -25541,12 +28478,20 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" @@ -25555,7 +28500,7 @@ "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, "requires": { "path-key": "^2.0.0" @@ -25573,7 +28518,7 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true }, "oauth-sign": { @@ -25585,12 +28530,12 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -25601,16 +28546,53 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -25619,19 +28601,18 @@ } }, "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" }, "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "object-keys": { @@ -25643,28 +28624,28 @@ "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, "requires": { "isobject": "^3.0.0" } }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" } }, "object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", "dev": true, "requires": { "array-each": "^1.0.1", @@ -25676,7 +28657,7 @@ "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", "dev": true, "requires": { "for-own": "^1.0.0", @@ -25686,16 +28667,16 @@ "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, "requires": { "isobject": "^3.0.1" } }, "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "requires": { "ee-first": "1.1.1" } @@ -25709,7 +28690,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } @@ -25717,7 +28698,7 @@ "onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -25734,7 +28715,7 @@ "opn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "integrity": "sha512-iPBWbPP4OEOzR1xfhpGLDh+ypKBOygunZhM9jBtA7FS5sKjEiMZw0EFb82hnDOmTZX90ZWLoZKUza4cVt8MexA==", "dev": true, "requires": { "object-assign": "^4.0.1", @@ -25758,13 +28739,13 @@ "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true }, "os-locale": { @@ -25781,7 +28762,7 @@ "os-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/os-name/-/os-name-2.0.1.tgz", - "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=", + "integrity": "sha512-zzMwE/HWRISM52Q966yHosPJ1alrm5Cpw/C9ZhSid50RsMpLtOwc1rtmWxKn7TggPM+GVLUC3RxgWmklOiUgOQ==", "dev": true, "requires": { "macos-release": "^1.0.0", @@ -25791,13 +28772,13 @@ "os-shim": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", - "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", + "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==", "dev": true }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, "osenv": { @@ -25813,7 +28794,7 @@ "outlayer": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", - "integrity": "sha1-KYY7beEOpdrf/8rfoNcokHOH6aI=", + "integrity": "sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw==", "dev": true, "requires": { "ev-emitter": "^1.0.0", @@ -25824,13 +28805,13 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true }, "p-is-promise": { @@ -25849,12 +28830,12 @@ } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-try": { @@ -25880,19 +28861,13 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -25912,13 +28887,21 @@ "package-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "integrity": "sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==", "dev": true, "requires": { "got": "^6.7.1", "registry-auth-token": "^3.0.1", "registry-url": "^3.0.3", "semver": "^5.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "pako": { @@ -25939,14 +28922,13 @@ } }, "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, "requires": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" @@ -25955,7 +28937,7 @@ "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", "dev": true, "requires": { "is-absolute": "^1.0.0", @@ -25966,7 +28948,7 @@ "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "requires": { "error-ex": "^1.3.1", @@ -25976,7 +28958,7 @@ "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true }, "parse5": { @@ -25996,13 +28978,13 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true }, "path": { "version": "0.12.7", "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", "dev": true, "requires": { "process": "^0.11.1", @@ -26018,42 +29000,42 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", "dev": true }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-root": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", "dev": true, "requires": { "path-root-regex": "^0.1.0" @@ -26062,18 +29044,18 @@ "path-root-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", "dev": true }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -26084,21 +29066,21 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true } } }, "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true }, "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -26111,38 +29093,43 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "optional": true + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true }, "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -26177,27 +29164,24 @@ } }, "pino-std-serializers": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz", - "integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.5.0.tgz", + "integrity": "sha512-wXqbqSrIhE58TdrxxlfLwU9eDhrzppQDvGhBEr1gYbzzM4KKo3Y63gSjiDXRKLVS2UOXdPNR2v+KnQgNrs+xUg==", "dev": true }, "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" } }, "pluralize": { @@ -26209,7 +29193,7 @@ "po2json": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/po2json/-/po2json-0.4.5.tgz", - "integrity": "sha1-R7spUtoy1Yob4vJWpZjuvAt0URg=", + "integrity": "sha512-JH0hgi1fC0t9UvdiyS7kcVly0N1WNey4R2YZ/jPaxQKYm6Cfej7ZTgiEy8LP2JwoEhONceiNS8JH5mWPQkiXeA==", "dev": true, "requires": { "gettext-parser": "1.1.0", @@ -26225,7 +29209,7 @@ "portscanner": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz", - "integrity": "sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI=", + "integrity": "sha512-3MCx40XO6ChNJJHw1tTFukQK/M/8FacGZK/vGbnrKpozObrJzembYtfi7ZdA2hkF2Lojg77XhsKUPvF8eHKcDA==", "dev": true, "requires": { "async": "1.5.2" @@ -26234,7 +29218,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "dev": true }, "postcss": { @@ -26259,13 +29243,13 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", "dev": true }, "private": { @@ -26291,7 +29275,7 @@ "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true }, "process-nextick-args": { @@ -26317,13 +29301,13 @@ "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, "promise.any": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/promise.any/-/promise.any-0.1.1.tgz", - "integrity": "sha1-Fg+JisPHW1y7cw/yOgyi8XQHvzo=", + "integrity": "sha512-RGLK/1LwpbkZMv1WGVN6dpSRqi03QtYXuInuVHBhJx6dQ9+VDl7zYfVnKpU15awZGQDpmPvrigsTiVBFvw18mw==", "dev": true }, "propagate": { @@ -26333,11 +29317,11 @@ "dev": true }, "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, @@ -26358,19 +29342,13 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -26383,19 +29361,19 @@ "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "public-encrypt": { @@ -26413,9 +29391,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -26446,9 +29424,9 @@ } }, "pug-code-gen": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", - "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.3.tgz", + "integrity": "sha512-r9sezXdDuZJfW9J91TN/2LFbiqDhmltTFmGpHTsGdrNGp3p4SxAjjXEfnuK2e4ywYsRIVP0NeLbSAMHUcaX1EA==", "requires": { "constantinople": "^3.1.2", "doctypes": "^1.1.0", @@ -26577,27 +29555,6 @@ "ws": "^6.1.0" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -26610,19 +29567,22 @@ } }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } }, "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==" }, "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true }, "quick-format-unescaped": { @@ -26656,12 +29616,12 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } @@ -26681,7 +29641,7 @@ "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -26692,7 +29652,7 @@ "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", "dev": true, "requires": { "find-up": "^1.0.0", @@ -26702,7 +29662,7 @@ "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -26712,7 +29672,7 @@ "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -26735,14 +29695,11 @@ "util-deprecate": "~1.0.1" }, "dependencies": { - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -26760,7 +29717,7 @@ "readline2": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "integrity": "sha512-8/td4MmwUB6PkZUbV25uKz7dfrmjYWxsW8DVfibWdlHRk/l/DfHKn4pU+dfcoGLFgWOdyGCzINRQD7jn+Bv+/g==", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -26771,7 +29728,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -26780,54 +29737,54 @@ "mute-stream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "integrity": "sha512-EbrziT4s8cWPmzr47eYVW3wimS4HsvlnV5ri1xw1aR6JQo/OrJX5rkl32K/QQHdxeabJETtfeaROGhd8W7uBgg==", "dev": true } } }, "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, "requires": { - "resolve": "^1.1.6" + "resolve": "^1.9.0" } }, "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.5" } }, "regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==", "dev": true }, "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" @@ -26841,16 +29798,47 @@ "requires": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } } }, "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "functions-have-names": "^1.2.2" } }, "regexpp": { @@ -26860,17 +29848,17 @@ "dev": true }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", + "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "registry-auth-token": { @@ -26886,22 +29874,22 @@ "registry-url": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", "dev": true, "requires": { "rc": "^1.0.1" } }, "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", "dev": true }, "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -26910,7 +29898,7 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true } } @@ -26918,7 +29906,7 @@ "relaxed-json": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/relaxed-json/-/relaxed-json-1.0.1.tgz", - "integrity": "sha1-fI1KovCVcEzQIOMugJm8rhA/C9Q=", + "integrity": "sha512-1ECKWi9z++YJI6kopSh4gAFPgNIKD7IgzQdImhqtlb9ip62LgkQmD70AwNgPGXgqxlmVzKTvg/s+wNG1Da7UTw==", "dev": true, "requires": { "chalk": "^1.0.0", @@ -26928,13 +29916,13 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -26947,7 +29935,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true } } @@ -26955,24 +29943,24 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true }, "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "dev": true }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" }, "repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", "dev": true, "requires": { "is-finite": "^1.0.0" @@ -27007,9 +29995,9 @@ }, "dependencies": { "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true } } @@ -27037,19 +30025,19 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", "dev": true }, "require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", "dev": true, "requires": { "caller-path": "^0.1.0", @@ -27057,17 +30045,19 @@ } }, "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "requires": { - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, "requires": { "expand-tilde": "^2.0.0", @@ -27077,19 +30067,19 @@ "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", "dev": true }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "dev": true }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, "requires": { "onetime": "^2.0.0", @@ -27105,7 +30095,7 @@ "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", "requires": { "align-text": "^0.1.1" } @@ -27138,7 +30128,7 @@ "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", "dev": true, "requires": { "aproba": "^1.1.1" @@ -27147,13 +30137,13 @@ "rx-lite": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "integrity": "sha512-1I1+G2gteLB8Tkt8YI1sJvSIfa0lWuRtC8GjvtyPBcLSF5jBCCJJqKrpER5JU5r6Bhe+i9/pK3VMuUcXu0kdwQ==", "dev": true }, "rx-lite-aggregates": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "integrity": "sha512-3xPNZGW93oCjiO7PtKxRK6iOVYBWBvtf9QHDfU23Oc+dLIQmAV//UnyXV/yihv81VS/UqoQPk4NegS8EFi55Hg==", "dev": true, "requires": { "rx-lite": "*" @@ -27169,14 +30159,14 @@ } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safe-json-parse": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", - "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "integrity": "sha512-o0JmTu17WGUaUOHa1l0FPGXKBfijbxK6qoHzlkihsDXxzBHvJcA7zgviKR92Xs841rX9pK16unfphLq0/KqX7A==", "dev": true }, "safe-json-stringify": { @@ -27189,12 +30179,23 @@ "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, "requires": { "ret": "~0.1.10" } }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -27207,67 +30208,95 @@ "dev": true }, "sax": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", - "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" } }, "secure-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", - "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o=", + "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==", "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "semver-diff": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "integrity": "sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw==", "dev": true, "requires": { "semver": "^5.0.3" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, @@ -27280,7 +30309,7 @@ "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -27292,10 +30321,25 @@ "parseurl": "~1.3.2" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "requires": { "depd": "~1.1.2", @@ -27304,35 +30348,47 @@ "statuses": ">= 1.4.0 < 2" } }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true } } }, "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.18.0" } }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "set-value": { @@ -27347,13 +30403,13 @@ "split-string": "^3.0.1" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "isobject": "^3.0.1" } } } @@ -27361,13 +30417,13 @@ "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "sha.js": { "version": "2.4.11", @@ -27382,7 +30438,7 @@ "shallow-clone": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "integrity": "sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==", "dev": true, "requires": { "is-extendable": "^0.1.1", @@ -27394,24 +30450,18 @@ "kind-of": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "integrity": "sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==", "dev": true, "requires": { "is-buffer": "^1.0.2" } - }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", - "dev": true } } }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -27420,13 +30470,13 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true }, "shell-quote": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "integrity": "sha512-V0iQEZ/uoem3NmD91rD8XiuozJnq9/ZJnbHVXHnWqP1ucAhS3yJ7sLIIzEi57wFFcK3oi3kFUC46uSyWr35mxg==", "dev": true, "requires": { "array-filter": "~0.0.0", @@ -27444,6 +30494,17 @@ "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" + }, + "dependencies": { + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + } } }, "shellwords": { @@ -27452,6 +30513,16 @@ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "sign-addon": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-0.3.1.tgz", @@ -27473,7 +30544,7 @@ "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", "dev": true, "requires": { "co": "^4.6.0", @@ -27485,7 +30556,7 @@ "babel-polyfill": { "version": "6.16.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", - "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", + "integrity": "sha512-PI/IOV3AnDfLph2y9meCys0AGY4U3Pj8ozSIKp+76zlMvin2w0Rxy0RgQUnCTAQWqKsHqvPijoEyNIdrao6J1g==", "dev": true, "requires": { "babel-runtime": "^6.9.1", @@ -27496,19 +30567,19 @@ "es6-error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.0.tgz", - "integrity": "sha1-8JTHBB9mJZm7EnINoFnWucf/D0A=", + "integrity": "sha512-atCcmEjui49DMEp2RgaUrQcmJPqoQOiSL9LEXAM4tEcy29maTfJP2motu75GfyefeZElQOEzOHiO/8Do7Dr1Lw==", "dev": true }, "fast-deep-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", "dev": true }, "har-validator": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "integrity": "sha512-r7LZkP7Z6WMxj5zARzB9dSpIKu/sp0NfHIgtj6kmQXhEArNctjB5FEv/L2XfLdWqIocPT2QVt0LFOlEUioTBtQ==", "dev": true, "requires": { "ajv": "^5.1.0", @@ -27518,13 +30589,13 @@ "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", "dev": true }, "mz": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.5.0.tgz", - "integrity": "sha1-KFkCXfA9RrV7sxcXSxlkd85kzsE=", + "integrity": "sha512-jTqXIBzwjbFIwluxl7vtU5BbzQjPbhSsugBkJfqL9i3fx3Tl6N0VI/+AI8vDROzTdrzdjGBazK7n5yK1xCNE7A==", "dev": true, "requires": { "any-promise": "^1.0.0", @@ -27535,25 +30606,25 @@ "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "integrity": "sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg==", "dev": true }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, "regenerator-runtime": { "version": "0.9.6", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", - "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=", + "integrity": "sha512-D0Y/JJ4VhusyMOd/o25a3jdUqN/bC85EFsaoL9Oqmy/O4efCh+xhp7yj2EEOsj974qvMkcW8AwUzJ1jB/MbxCw==", "dev": true }, "request": { @@ -27587,7 +30658,7 @@ "source-map-support": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.6.tgz", - "integrity": "sha1-MlUqpktFg5KoXqs7C17mFScWeus=", + "integrity": "sha512-cqbwg0QgDOUayGgn8KALCCBWf/tuxJCCyvqkNmtb6pF/3YgJUoKqtZ+7AKDyCITNd3+dbz7VdHjcxEgFL9U/aQ==", "dev": true, "requires": { "source-map": "^0.5.3" @@ -27605,9 +30676,9 @@ } }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "sinon": { @@ -27629,12 +30700,13 @@ "version": "2.14.0", "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", - "dev": true + "dev": true, + "requires": {} }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", "dev": true }, "slice-ansi": { @@ -27649,7 +30721,7 @@ "smart-buffer": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", - "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", + "integrity": "sha512-1+8bxygjTsNfvQe0/0pNBesTOlSHtOeG6b6LYbvsZCCHDKYZ40zcQo6YTnZBWrBSLWOCbrHljLdEmGMYebu7aQ==", "dev": true }, "snapdragon": { @@ -27668,23 +30740,86 @@ "use": "^3.1.0" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true } } }, @@ -27702,40 +30837,11 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "requires": { "is-descriptor": "^1.0.0" } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } } } }, @@ -27751,7 +30857,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -27804,15 +30910,15 @@ }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" @@ -27840,12 +30946,6 @@ "through": "^2.3.6" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "opn": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", @@ -27858,13 +30958,19 @@ "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "integrity": "sha512-Cun9QucwK6MIrp3mry/Y7hqD1oFqTYLQ4pGxaHTjIdaFDWRGGLikqp6u8LcWJnzpoALg9hap+JGk8sFIUuEGNA==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -27884,19 +30990,13 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -27912,18 +31012,18 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } @@ -27959,19 +31059,13 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -28000,6 +31094,12 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true } } }, @@ -28016,19 +31116,13 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -28044,19 +31138,13 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -28078,18 +31166,18 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -28114,19 +31202,13 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -28154,18 +31236,18 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -28179,7 +31261,7 @@ "snyk-tree": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/snyk-tree/-/snyk-tree-1.0.0.tgz", - "integrity": "sha1-D7cxdtvzLngvGRAClBYESPkRHMg=", + "integrity": "sha512-JQezX6eaVi0uNctPcx2Uzy5KA9lpTRRe31n8NI71DIseGvI6OVCfuKjzFptE06h4ZISMey351ICXnHBadBtWdg==", "dev": true, "requires": { "archy": "^1.0.0" @@ -28188,7 +31270,7 @@ "snyk-try-require": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/snyk-try-require/-/snyk-try-require-1.3.1.tgz", - "integrity": "sha1-bgJvkuZK9/zM6h7lPVJIQeQYohI=", + "integrity": "sha512-adCnpfCvigiarbADOHuqh82P4aQUlyq6nWzhVmEUly62Q3tnVg4BGtgjYISkaj9GGBmpgVZiJegENBpQr02NsQ==", "dev": true, "requires": { "debug": "^3.1.0", @@ -28198,26 +31280,20 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, "socks": { "version": "1.1.10", "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", - "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", + "integrity": "sha512-ArX4vGPULWjKDKgUnW8YzfI2uXW7kzgkJuB0GnFBA/PfT3exrrOk+7Wk2oeb894Qf20u1PWv9LEgrO0Z82qAzA==", "dev": true, "requires": { "ip": "^1.1.4", @@ -28252,7 +31328,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" }, "source-map-resolve": { "version": "0.5.3", @@ -28268,9 +31344,9 @@ } }, "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -28286,15 +31362,15 @@ } }, "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", "dev": true }, "spawn-sync": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", - "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", + "integrity": "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==", "dev": true, "requires": { "concat-stream": "^1.4.7", @@ -28328,15 +31404,15 @@ } }, "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "split": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", "dev": true, "requires": { "through": "2" @@ -28349,18 +31425,47 @@ "dev": true, "requires": { "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } } }, "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -28386,7 +31491,7 @@ "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, "requires": { "define-property": "^0.2.5", @@ -28396,23 +31501,80 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", "dev": true }, "stream-browserify": { @@ -28451,10 +31613,27 @@ "stream-parser": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", - "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==", "dev": true, "requires": { "debug": "2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } } }, "stream-shift": { @@ -28466,7 +31645,7 @@ "stream-to-array": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", - "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=", + "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==", "dev": true, "requires": { "any-promise": "^1.1.0" @@ -28475,7 +31654,7 @@ "stream-to-promise": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-2.2.0.tgz", - "integrity": "sha1-se2y4cjLESidG1A8CNPyrvUeZQ8=", + "integrity": "sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw==", "dev": true, "requires": { "any-promise": "~1.3.0", @@ -28486,7 +31665,7 @@ "end-of-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", - "integrity": "sha1-6TUyWLqpEIll78QcsO+K3i88+wc=", + "integrity": "sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==", "dev": true, "requires": { "once": "~1.3.0" @@ -28495,7 +31674,7 @@ "once": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", "dev": true, "requires": { "wrappy": "1" @@ -28504,15 +31683,26 @@ } }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } }, "string-template": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "integrity": "sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw==", "dev": true }, "string-width": { @@ -28526,15 +31716,15 @@ }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -28556,29 +31746,31 @@ } }, "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -28587,13 +31779,13 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, "strip-bom-buf": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", - "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "integrity": "sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==", "dev": true, "requires": { "is-utf8": "^0.2.1" @@ -28602,7 +31794,7 @@ "strip-bom-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz", - "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", + "integrity": "sha512-2di6sulSHfspbuEJHwwF6vzwijA4uaKsKYtviRQsJsOdxxb6yexiDcZFQ5oY10J50YxmCdHn/1sQmxDKbrGOVw==", "dev": true, "requires": { "first-chunk-stream": "^2.0.0", @@ -28612,13 +31804,13 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true }, "stylus": { @@ -28637,15 +31829,6 @@ "source-map": "^0.7.3" }, "dependencies": { - "css-parse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", - "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", - "dev": true, - "requires": { - "css": "^2.0.0" - } - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -28655,28 +31838,16 @@ "ms": "2.0.0" } }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true } } @@ -28690,10 +31861,15 @@ "has-flag": "^3.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, "symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", "dev": true }, "table": { @@ -28734,13 +31910,13 @@ "temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true }, "tempfile": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==", "dev": true, "requires": { "temp-dir": "^1.0.0", @@ -28750,7 +31926,7 @@ "term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "integrity": "sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==", "dev": true, "requires": { "execa": "^0.7.0" @@ -28759,7 +31935,7 @@ "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -28770,7 +31946,7 @@ "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -28781,13 +31957,22 @@ "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -28804,16 +31989,16 @@ } }, "terser-webpack-plugin": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", - "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "dev": true, "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^3.1.0", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", @@ -28843,6 +32028,36 @@ "y18n": "^4.0.0" } }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -28852,6 +32067,16 @@ "yallist": "^3.0.2" } }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, "mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", @@ -28870,6 +32095,45 @@ "through2": "^2.0.0" } }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -28900,10 +32164,16 @@ "ajv-keywords": "^3.1.0" } }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, "serialize-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", - "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -28916,9 +32186,9 @@ "dev": true }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "requires": { "figgy-pudding": "^3.5.1" @@ -28935,13 +32205,13 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "then-fs": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/then-fs/-/then-fs-2.0.0.tgz", - "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", + "integrity": "sha512-5ffcBcU+vFUCYDNi/o507IqjqrTkuGsLVZ1Fp50hwgZRY7ufVFa9jFfTy5uZ2QnSKacKigWKeaXkOqLa4DsjLw==", "dev": true, "requires": { "promise": ">=3.2 <8" @@ -28959,7 +32229,7 @@ "thenify-all": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, "requires": { "thenify": ">= 3.1.0 < 4" @@ -28968,7 +32238,7 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "through2": { @@ -28984,19 +32254,19 @@ "thunkify": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", - "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", + "integrity": "sha512-w9foI80XcGImrhMQ19pxunaEC5Rp2uzxZZg4XBAFRfiLOplk3F0l7wo+bO16vC2/nlQfR/mXZxcduo0MF2GWLg==", "dev": true }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", "dev": true }, "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -29017,19 +32287,13 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -29054,7 +32318,7 @@ "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", "dev": true }, "to-buffer": { @@ -29066,13 +32330,13 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -29081,7 +32345,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -29099,12 +32363,42 @@ "extend-shallow": "^3.0.2", "regex-not": "^1.0.2", "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } } }, "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -29112,14 +32406,14 @@ } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, "token-stream": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", - "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=" + "integrity": "sha512-nfjOAu/zAWmX9tgwi5NRp7O7zTDUD1miHiB40klUnAh9qnL1iXdgzcz/i5dMaL5jahcBAaSfmNOBBJBLJW8TEg==" }, "toml": { "version": "2.3.6", @@ -29130,7 +32424,7 @@ "tosource": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", - "integrity": "sha1-QtiN0RZhi88A1hBt1URvNCeQL/E=", + "integrity": "sha512-N6g8eQ1eerw6Y1pBhdgkubWIiPFwXa2POSUrlL8jth5CyyEWNWzoGKRkO3CaO7Jx27hlJP54muB3btIAbx4MPg==", "dev": true }, "tough-cookie": { @@ -29144,42 +32438,38 @@ } }, "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "traverse": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.4.6.tgz", - "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=", + "integrity": "sha512-eIHWCq7YzOYYst5xsHyBbjPNP7PYkL9OYukWxUY2SopyxkTQSo2LkUmqWvkdkYhfDTtUCbaNTUnyo0b+ErjbIA==", "dev": true }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", "dev": true }, "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", "dev": true }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -29188,13 +32478,13 @@ "tv4": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", - "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=", + "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", "dev": true }, "tv4-formats": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/tv4-formats/-/tv4-formats-3.0.3.tgz", - "integrity": "sha1-a3l43S3IqjnQrCWU3dtvbAy/2SE=", + "integrity": "sha512-T8qYFu5k0O8QamObivhw+giNF9v4EeN8Am1jo8HmArKowmg50H2zN/1Bffi0gf6BhsMd5qx/UUfLD8NNcRe/WA==", "dev": true, "requires": { "moment": "^2.10.6", @@ -29204,7 +32494,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, "type": { @@ -29216,7 +32506,7 @@ "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "requires": { "prelude-ls": "~1.1.2" @@ -29240,7 +32530,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, "uc.micro": { @@ -29248,10 +32538,34 @@ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", "requires": { "source-map": "~0.5.1", "uglify-to-browserify": "~1.0.0", @@ -29261,7 +32575,7 @@ "uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", "optional": true }, "uglifyjs-webpack-plugin": { @@ -29280,16 +32594,10 @@ "worker-farm": "^1.5.2" }, "dependencies": { - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, "find-cache-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "integrity": "sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -29300,7 +32608,7 @@ "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -29309,7 +32617,7 @@ "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -29337,7 +32645,7 @@ "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -29346,19 +32654,19 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true }, - "pify": { + "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "integrity": "sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==", "dev": true, "requires": { "find-up": "^2.1.0" @@ -29379,76 +32687,83 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - } } } }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", "dev": true }, "undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "dev": true, - "requires": { - "debug": "^2.2.0" - } + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true }, "underscore": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "integrity": "sha512-z4o1fvKUojIWh9XuaVLUDdf86RQiq13AC1dmHbTpoyuu+bquHms76v16CjycCbec87J7z0k//SiQVk0sMdFmpQ==", "dev": true }, "underscore.string": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", - "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz", + "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==", "dev": true, "requires": { - "sprintf-js": "^1.0.3", + "sprintf-js": "^1.1.1", "util-deprecate": "^1.0.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + } } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, "union-value": { @@ -29484,7 +32799,7 @@ "unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", "dev": true, "requires": { "crypto-random-string": "^1.0.0" @@ -29504,12 +32819,12 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, "requires": { "has-value": "^0.3.1", @@ -29519,7 +32834,7 @@ "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "dev": true, "requires": { "get-value": "^2.0.3", @@ -29530,7 +32845,7 @@ "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dev": true, "requires": { "isarray": "1.0.0" @@ -29541,7 +32856,7 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "dev": true } } @@ -29549,7 +32864,7 @@ "unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "integrity": "sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==", "dev": true }, "upath": { @@ -29558,10 +32873,20 @@ "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", "dev": true }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "update-notifier": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", - "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "integrity": "sha512-KBLtk9uq+79OJkHB+hdxbikPrYwPc1JoiSbpU/bKknBG3z2gzFzYabHI7jNkQXzMDqipUnvNsKnowCq6PoEakg==", "dev": true, "requires": { "boxen": "^1.2.1", @@ -29576,9 +32901,9 @@ } }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -29587,13 +32912,13 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "dev": true }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "dev": true, "requires": { "punycode": "1.3.2", @@ -29603,7 +32928,13 @@ "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", "dev": true } } @@ -29611,7 +32942,7 @@ "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", "dev": true, "requires": { "prepend-http": "^1.0.1" @@ -29626,7 +32957,7 @@ "user-home": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "integrity": "sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==", "dev": true, "requires": { "os-homedir": "^1.0.0" @@ -29639,18 +32970,26 @@ "dev": true, "requires": { "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + } } }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, "uuid": { "version": "3.4.0", @@ -29659,9 +32998,9 @@ "dev": true }, "v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", "dev": true, "requires": { "homedir-polyfill": "^1.0.1" @@ -29686,17 +33025,25 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + } } }, "vm-browserify": { @@ -29708,18 +33055,18 @@ "void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==" }, "vscode-languageserver-types": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", - "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==", + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz", + "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==", "dev": true }, "walkdir": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", - "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "integrity": "sha512-lMFYXGpf7eg+RInVL021ZbJJT4hqsvsBvq5sZBp874jfhs3IWlA7OPoG0ojQrYcXHuUSi+Nqp6qGN+pPGaMgPQ==", "dev": true }, "watchpack": { @@ -29734,9 +33081,9 @@ } }, "watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "dev": true, "optional": true, "requires": { @@ -29746,7 +33093,7 @@ "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "requires": { "defaults": "^1.0.3" @@ -29793,16 +33140,10 @@ "zip-dir": "1.0.2" }, "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "dev": true, "requires": { "string-width": "^1.0.1", @@ -29810,25 +33151,16 @@ "wrap-ansi": "^2.0.0" } }, - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "requires": { - "xregexp": "4.0.0" - } - }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -29837,7 +33169,7 @@ "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -29846,13 +33178,13 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", "dev": true, "requires": { "minimist": "0.0.8" @@ -29870,7 +33202,7 @@ "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", "dev": true, "requires": { "lcid": "^1.0.0" @@ -29900,7 +33232,7 @@ "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -29911,25 +33243,19 @@ "which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", "dev": true }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, "yargs": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "integrity": "sha512-6/QWTdisjnu5UHUzQGst+UOEuEVwIzFVGBjq3jMTFNs5WJQsH/X6nMURSaScIdF5txylr1Ao9bvbWiKi2yXbwA==", "dev": true, "requires": { "camelcase": "^3.0.0", @@ -29950,13 +33276,13 @@ "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", "dev": true }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true } } @@ -29964,7 +33290,7 @@ "yargs-parser": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "integrity": "sha512-+QQWqC2xeL0N5/TE+TY6OGEqyNRM+g2/r712PDNYgiCdXYCApXf1vzfmDSLBxfGRwV+moTq/V8FnMI24JCm2Yg==", "dev": true, "requires": { "camelcase": "^3.0.0" @@ -29973,7 +33299,7 @@ "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", "dev": true } } @@ -29981,15 +33307,14 @@ } }, "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "webpack": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz", - "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==", + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", @@ -30000,7 +33325,7 @@ "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", + "enhanced-resolve": "^4.5.0", "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.4.0", @@ -30018,15 +33343,15 @@ }, "dependencies": { "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "optional": true, "requires": { @@ -30035,9 +33360,9 @@ } }, "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "optional": true }, @@ -30052,20 +33377,20 @@ } }, "chokidar": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", - "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "optional": true, "requires": { - "anymatch": "~3.1.1", + "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" + "readdirp": "~3.6.0" } }, "fill-range": { @@ -30079,16 +33404,16 @@ } }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "optional": true, "requires": { @@ -30105,16 +33430,6 @@ "binary-extensions": "^2.0.0" } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -30122,6 +33437,35 @@ "dev": true, "optional": true }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.1.tgz", + "integrity": "sha512-1Qo97Y2oKaU+Ro2xnDMR26g1BwMT29jNbem1EvcujW2jqt+j5COXyscjM7bLQkM9HaxI7pkWeW7gnI072yMI9Q==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -30130,9 +33474,9 @@ "optional": true }, "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "optional": true, "requires": { @@ -30161,15 +33505,15 @@ } }, "watchpack": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", - "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, "requires": { "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" + "watchpack-chokidar2": "^2.0.1" } } } @@ -30219,35 +33563,46 @@ "dev": true }, "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "when": { "version": "3.7.7", "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz", - "integrity": "sha1-q6A/w7tzbWyIsJHQE9io5ZDYRxg=", + "integrity": "sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==", "dev": true }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, "widest-line": { @@ -30262,30 +33617,45 @@ "win-release": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", - "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", + "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==", "dev": true, "requires": { "semver": "^5.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==" }, "winreg": { "version": "0.0.12", "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz", - "integrity": "sha1-BxBVVLoanQiXklHRKUdb/64wBrc=", + "integrity": "sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ==", "dev": true }, "with": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", - "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", + "integrity": "sha512-uAnSsFGfSpF6DNhBXStvlZILfHJfJu4eUkfbRGk94kGO1Ta7bg6FwfvoOhhyHAJuFbCw+0xk4uJ3u57jLvlCJg==", "requires": { "acorn": "^3.1.0", "acorn-globals": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==" + } } }, "word-wrap": { @@ -30297,7 +33667,7 @@ "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==" }, "worker-farm": { "version": "1.7.0", @@ -30311,7 +33681,7 @@ "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", "dev": true, "requires": { "string-width": "^1.0.1", @@ -30321,7 +33691,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -30330,7 +33700,7 @@ "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -30343,15 +33713,26 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", "dev": true, "requires": { "mkdirp": "^0.5.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } } }, "write-file-atomic": { @@ -30366,9 +33747,9 @@ } }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "dev": true, "requires": { "async-limiter": "~1.0.0" @@ -30377,7 +33758,7 @@ "xdg-basedir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "integrity": "sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==", "dev": true }, "xhr-mock": { @@ -30398,14 +33779,6 @@ "requires": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" - }, - "dependencies": { - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - } } }, "xmlbuilder": { @@ -30417,13 +33790,13 @@ "xmldom": { "version": "0.1.27", "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "integrity": "sha512-7WpJBYwyhvsddFJA51SOIU0Be9W44sbGGjc6Z3ly8Wx/Wl7nriMPZ5xf6Np9ASlJ6gACfXcTLukm4DtX372lFw==", "dev": true }, "xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", "dev": true }, "xtend": { @@ -30433,50 +33806,53 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true }, "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", "requires": { "camelcase": "^1.0.2", "cliui": "^2.1.0", "decamelize": "^1.0.0", "window-size": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==" + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + } } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } + "camelcase": "^4.1.0" } }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "requires": { "buffer-crc32": "~0.2.3", @@ -30486,7 +33862,7 @@ "zip-dir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-1.0.2.tgz", - "integrity": "sha1-JT+QeurWKiGs2HIdi4gDKyQRwFE=", + "integrity": "sha512-OZ4WThDcFqvamrq4e2lSdz+q6a9fnD55ktBzsfQ95R0YrnZDd7Cz1gTI8OMveqlASz8PXVN0av8Bi7Ky+uJ+SA==", "dev": true, "requires": { "async": "^1.5.2", @@ -30494,9 +33870,9 @@ }, "dependencies": { "jszip": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", - "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.7.0.tgz", + "integrity": "sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw==", "dev": true, "requires": { "pako": "~1.0.2" @@ -30507,7 +33883,7 @@ "zip-stream": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", - "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "integrity": "sha512-2olrDUuPM4NvRIgGPhvrp84f7/HmWR6RiQrgwFF2VctmnssFiogtYL3DcA8Vl2bsSmju79sVXe38TsII7JleUg==", "dev": true, "requires": { "archiver-utils": "^1.3.0", diff --git a/package.json b/package.json index d9d76a05..78d2c4d9 100644 --- a/package.json +++ b/package.json @@ -47,9 +47,9 @@ "grunt-mocha-test": "^0.13.3", "grunt-webpack": "^3.1.3", "highlight.js": "^10.4.1", - "inject-loader": "^3.0.1", + "inject-loader": "^4.0.1", "isotope-layout": "^3.0.6", - "jose": "^4.1.0", + "jose": "^4.11.0", "jquery": "^3.4.1", "lodash": "^4.17.13", "loglevel": "^1.6.2", From a16410b309783e06a4ba5bc9d7f79fd1d68162b3 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 9 Nov 2022 16:34:09 +0100 Subject: [PATCH 552/611] sort library language cards by language name --- views/website/libraries/support/get-languages.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/views/website/libraries/support/get-languages.js b/views/website/libraries/support/get-languages.js index d04b7901..616956fe 100644 --- a/views/website/libraries/support/get-languages.js +++ b/views/website/libraries/support/get-languages.js @@ -23,5 +23,19 @@ module.exports = function getLanguages() { result.push(data); }); + result.sort((a, b) => { + const nameA = a.name.toUpperCase(); // ignore upper and lowercase + const nameB = b.name.toUpperCase(); // ignore upper and lowercase + if (nameA < nameB) { + return -1; + } + if (nameA > nameB) { + return 1; + } + + // names must be equal + return 0; + }) + return result; -}; \ No newline at end of file +}; From c32b6421beb552969783a2d27de5af3cfbd82d64 Mon Sep 17 00:00:00 2001 From: florcaputti Date: Wed, 7 Dec 2022 14:44:36 -0300 Subject: [PATCH 553/611] wip - crpa link --- src/website/ccpa-modal.js | 11 +++++++++++ src/website/index.js | 4 +++- stylus/website/index.styl | 37 +++++++++++++++++++++++++++++++++++++ views/website/layout.pug | 15 ++++++++++++--- 4 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 src/website/ccpa-modal.js diff --git a/src/website/ccpa-modal.js b/src/website/ccpa-modal.js new file mode 100644 index 00000000..9d76ccac --- /dev/null +++ b/src/website/ccpa-modal.js @@ -0,0 +1,11 @@ +export function CCPAModal() { + document.addEventListener("DOMContentLoaded", function () { + document.querySelector("#open-ccpa").addEventListener("click", () => { + document.querySelector("#ccpa-modal").style.display = "block"; + }); + + document.querySelector("#close-ccpa").addEventListener("click", () => { + document.querySelector("#ccpa-modal").style.display = "none"; + }); + }); +} diff --git a/src/website/index.js b/src/website/index.js index 2b75d2f6..1f2e33c3 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -10,6 +10,7 @@ import { shareJwtButton, shareJwtTextElement, } from "./dom-elements.js"; +import { CCPAModal } from "./ccpa-modal.js"; import queryString from "querystring"; @@ -52,4 +53,5 @@ setupTokenEditor(); parseLocationQuery(); setupHighlighting(); setupJwtCounter(); -setupShareJwtButton(shareJwtButton, shareJwtTextElement); \ No newline at end of file +setupShareJwtButton(shareJwtButton, shareJwtTextElement); +CCPAModal(); \ No newline at end of file diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 5218d084..2a54ff5c 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1240,6 +1240,11 @@ footer color white img margin-left 5px + .as-anchor + color: white + background: none + padding: 0 + border: none .logo height 18px @@ -1265,6 +1270,38 @@ footer +breakpoint("tablet") text-align right + #ccpa-modal + display: none + position: fixed + top: 50% + left: 50% + transform: translate(-50%, -50%) + width: 90% + height: auto + background: white + z-index: 10000 + color: black + border-radius: 16px + padding: 24px + text-align: left + +breakpoint("tablet") + width: 50% + #close-ccpa + background: none + border: none + padding: 0 + position: absolute + top: 20px + right: 30px + font-size: 24px + line-height: 24px + .settings + color: #635dff + appearance: none + border: none + background: none + padding: 0 + .warning display block width 100% diff --git a/views/website/layout.pug b/views/website/layout.pug index ac7a7fed..8188c8a2 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -37,14 +37,14 @@ html(lang='en') // Chrome extension link, required for inline installs link(rel="chrome-webstore-item", href="https://chrome.google.com/webstore/detail/ppmmlchacdbknfphdeafcbmklcghghmd") - + body // Google Tag Manager (noscript) noscript iframe(src='https://www.googletagmanager.com/ns.html?id=GTM-W7FRLJ', height='0', width='0', style='display:none;visibility:hidden') - + include ./navigation.pug - + block content footer @@ -60,6 +60,15 @@ html(lang='en') a(href='https://auth0.com/developers/', target="_blank") | Supported by img(src='http://github.com/img/ico_logo.svg' alt='Supported by Auth0 - JWT.io Token Based Authentication').logo + #ccpa-modal + button#close-ccpa x + h3 Your Privacy Choices + p Under the California Consumer Privacy Act (CCPA), California residents have the right to opt out of certain sharing of their personal information with third-party ad partners. We may share personal information with third-party ad partners, such as through cookies or by providing lists of email addresses for potential customers, so that we can reach them across the web with relevant ads. + p If you wish to opt out of this sharing of your personal data in connection with cookies, please update your + button.settings(onClick="window.OneTrust.ToggleInfoDisplay()") cookie settings. + p If you wish to opt out of email-based sharing, provide your email address at + a.settings(href="") this link. + .column.pull-request span Missing something? a(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/tree/master/views', target="_blank") Send a Pull Request From 1c8bf219700c7ee1828fb892c88803e83d27707c Mon Sep 17 00:00:00 2001 From: florcaputti Date: Mon, 12 Dec 2022 12:17:28 -0300 Subject: [PATCH 554/611] update copy --- views/website/layout.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/layout.pug b/views/website/layout.pug index 8188c8a2..92f76197 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -63,7 +63,7 @@ html(lang='en') #ccpa-modal button#close-ccpa x h3 Your Privacy Choices - p Under the California Consumer Privacy Act (CCPA), California residents have the right to opt out of certain sharing of their personal information with third-party ad partners. We may share personal information with third-party ad partners, such as through cookies or by providing lists of email addresses for potential customers, so that we can reach them across the web with relevant ads. + p Depending on your state of residence, including if you are a California resident, you have the right to opt out of certain sharing of personal information with third-party ad partners. We may share personal information with third-party ad partners, such as through cookies or by providing lists of email addresses for potential customers, so that we can reach them across the web with relevant ads. p If you wish to opt out of this sharing of your personal data in connection with cookies, please update your button.settings(onClick="window.OneTrust.ToggleInfoDisplay()") cookie settings. p If you wish to opt out of email-based sharing, provide your email address at From 0363eb55c8b09f6584549c836566f5b074e9f27b Mon Sep 17 00:00:00 2001 From: florcaputti Date: Mon, 19 Dec 2022 11:22:09 -0300 Subject: [PATCH 555/611] open modal on hash url --- src/website/ccpa-modal.js | 3 +++ stylus/website/index.styl | 3 +++ views/website/layout.pug | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/src/website/ccpa-modal.js b/src/website/ccpa-modal.js index 9d76ccac..912be571 100644 --- a/src/website/ccpa-modal.js +++ b/src/website/ccpa-modal.js @@ -1,5 +1,8 @@ export function CCPAModal() { document.addEventListener("DOMContentLoaded", function () { + if(window.location.hash.substring(1) === 'your-privacy-choices') { + document.querySelector("#ccpa-modal").style.display = "block"; + } document.querySelector("#open-ccpa").addEventListener("click", () => { document.querySelector("#ccpa-modal").style.display = "block"; }); diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 2a54ff5c..71bea162 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1245,6 +1245,8 @@ footer background: none padding: 0 border: none + .ccpa-toggle + max-width: 39px .logo height 18px @@ -1286,6 +1288,7 @@ footer text-align: left +breakpoint("tablet") width: 50% + max-width: 670px #close-ccpa background: none border: none diff --git a/views/website/layout.pug b/views/website/layout.pug index 92f76197..ecb3b748 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -57,6 +57,10 @@ html(lang='en') span • a(href='https://auth0.com/web-terms', target="_blank") | Terms of Service + span • + button.as-anchor#open-ccpa + | Your Privacy Choices + img.ccpa-toggle(src='https://cdn.auth0.com/website/footer/ccpa.svg' alt='Privacy choices') a(href='https://auth0.com/developers/', target="_blank") | Supported by img(src='http://github.com/img/ico_logo.svg' alt='Supported by Auth0 - JWT.io Token Based Authentication').logo From dc895ada184005263e46a527bc07dac274cb93b5 Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Mon, 19 Dec 2022 16:10:50 +0100 Subject: [PATCH 556/611] Fix/ask nav link (#639) Fix the Ask link in the main navigation --- views/website/navigation.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 46f2cc01..9021950a 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -12,7 +12,7 @@ nav.navbar.closed a(href='http://github.com/#debugger-io').scrollto Debugger a(href='http://github.com/libraries') Libraries a(href='http://github.com/introduction') Introduction - a(href='https://community.auth0.com/c/identity/jwt', target='_blank') Ask + a(href='https://community.auth0.com/c/jwt/8', target='_blank') Ask .social a.a0(href='https://auth0.com/developers?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') From 0c31c8e81dee1f2c49b0e07679f6a869792b3591 Mon Sep 17 00:00:00 2001 From: florcaputti Date: Wed, 21 Dec 2022 10:02:18 -0300 Subject: [PATCH 557/611] PR review --- src/website/ccpa-modal.js | 2 +- views/website/layout.pug | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/website/ccpa-modal.js b/src/website/ccpa-modal.js index 912be571..1372e3ae 100644 --- a/src/website/ccpa-modal.js +++ b/src/website/ccpa-modal.js @@ -1,6 +1,6 @@ export function CCPAModal() { document.addEventListener("DOMContentLoaded", function () { - if(window.location.hash.substring(1) === 'your-privacy-choices') { + if(window.location.hash.includes('your-privacy-choices')) { document.querySelector("#ccpa-modal").style.display = "block"; } document.querySelector("#open-ccpa").addEventListener("click", () => { diff --git a/views/website/layout.pug b/views/website/layout.pug index ecb3b748..6a296b37 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -71,7 +71,7 @@ html(lang='en') p If you wish to opt out of this sharing of your personal data in connection with cookies, please update your button.settings(onClick="window.OneTrust.ToggleInfoDisplay()") cookie settings. p If you wish to opt out of email-based sharing, provide your email address at - a.settings(href="") this link. + a.settings(href="https://www.okta.com/your-privacy-choices/", target="_blank") this link. .column.pull-request span Missing something? From 7ab2675984f9312cff8d84889ac10f25f2e11f06 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Tue, 17 Jan 2023 14:47:59 +0100 Subject: [PATCH 558/611] square/js-jose is deprecated --- views/website/libraries/4-JavaScript.json | 31 ----------------------- 1 file changed, 31 deletions(-) diff --git a/views/website/libraries/4-JavaScript.json b/views/website/libraries/4-JavaScript.json index 8fd6e50a..b7a87c5f 100644 --- a/views/website/libraries/4-JavaScript.json +++ b/views/website/libraries/4-JavaScript.json @@ -66,37 +66,6 @@ "repoUrl": "https://github.com/kjur/jsrsasign", "installCommandHtml": "npm install jsrsasign" }, - { - "minimumVersion": null, - "support": { - "sign": true, - "verify": true, - "iss": false, - "sub": false, - "aud": false, - "exp": false, - "nbf": false, - "iat": false, - "jti": false, - "hs256": true, - "hs384": true, - "hs512": true, - "rs256": true, - "rs384": true, - "rs512": true, - "es256": true, - "es384": true, - "es512": true, - "ps256": true, - "ps384": true, - "ps512": true - }, - "authorUrl": "https://github.com/square", - "authorName": "Square, Inc.", - "gitHubRepoPath": "square/js-jose", - "repoUrl": "https://github.com/square/js-jose", - "installCommandHtml": "npm install jose-jwe-jws" - }, { "minimumVersion": "0.9.4", "support": { From 0f788d771cfda2a66d45ef6290532cf2f13460f8 Mon Sep 17 00:00:00 2001 From: Daniel DeGroff Date: Thu, 19 Jan 2023 16:59:48 -0700 Subject: [PATCH 559/611] Update fusionauth-jwt to 5.2.2 --- views/website/libraries/3-Java.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index 1079bd99..a0438257 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -160,7 +160,7 @@ "authorName": "FusionAuth", "gitHubRepoPath": "fusionauth/fusionauth-jwt", "repoUrl": "https://github.com/fusionauth/fusionauth-jwt", - "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 5.0.0" + "installCommandHtml": "maven: io.fusionauth / fusionauth-jwt / 5.2.2" }, { "minimumVersion": null, From 3a995765e6765b482d665415315f7f61a990294c Mon Sep 17 00:00:00 2001 From: Jonas Roussel Date: Mon, 30 Jan 2023 20:30:10 +0100 Subject: [PATCH 560/611] Add Dart language & library dart_jsonwebtoken --- img/website/36.png | Bin 0 -> 6567 bytes views/website/libraries/36-Dart.json | 42 +++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 img/website/36.png create mode 100644 views/website/libraries/36-Dart.json diff --git a/img/website/36.png b/img/website/36.png new file mode 100644 index 0000000000000000000000000000000000000000..b8f2adbb8ee2f65361f9e0d5fa740d3901714b6b GIT binary patch literal 6567 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 Date: Wed, 8 Feb 2023 12:56:04 -0700 Subject: [PATCH 561/611] bump jose4j to 0.9.3 (and lowercase eddsa) newer version of jose4j and it looks like `"eddsa": true` is needed rather than `"EdDSA": true` --- views/website/libraries/3-Java.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/website/libraries/3-Java.json b/views/website/libraries/3-Java.json index 1079bd99..b8867a07 100644 --- a/views/website/libraries/3-Java.json +++ b/views/website/libraries/3-Java.json @@ -61,13 +61,13 @@ "ps256": true, "ps384": true, "ps512": true, - "EdDSA": true + "eddsa": true }, "authorUrl": "https://twitter.com/__b_c", "authorName": "Brian Campbell", "gitHubRepoPath": null, "repoUrl": "https://bitbucket.org/b_c/jose4j", - "installCommandHtml": "maven: org.bitbucket.b_c / jose4j / 0.9.0" + "installCommandHtml": "maven: org.bitbucket.b_c / jose4j / 0.9.3" }, { "minimumVersion": null, From 5601a7916d4fee392820dc67db5bf902509a4531 Mon Sep 17 00:00:00 2001 From: monikakinder Date: Mon, 3 Apr 2023 11:29:17 +0200 Subject: [PATCH 562/611] Define node version --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 78d2c4d9..b44e5ead 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,9 @@ "webpack-merge": "^4.2.1", "xhr-mock": "^2.4.1" }, + "engines": { + "node": "16" + }, "scripts": { "start": "node server.js", "test": "grunt test", From 6ba7f8349b25bfae058b525a74b42e972ff68d4f Mon Sep 17 00:00:00 2001 From: monikakinder Date: Mon, 3 Apr 2023 13:07:18 +0200 Subject: [PATCH 563/611] Trigger Heroku redeploy From be9b4b489f0f73d747e3224612828c69085a8a19 Mon Sep 17 00:00:00 2001 From: Jade Ellis Date: Thu, 13 Apr 2023 18:27:51 +0000 Subject: [PATCH 564/611] Add jsonwebtoken-rustcrypto --- views/website/libraries/13-Rust.json | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/views/website/libraries/13-Rust.json b/views/website/libraries/13-Rust.json index f1d6fa77..608f8b53 100644 --- a/views/website/libraries/13-Rust.json +++ b/views/website/libraries/13-Rust.json @@ -66,6 +66,37 @@ "repoUrl": "https://github.com/Keats/jsonwebtoken", "installCommandHtml": "cargo: name = \"jsonwebtoken\" version = \"*\"" }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": false, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": false, + "es384": false, + "es512": false, + "ps256": true, + "ps384": true, + "ps512": true + }, + "authorUrl": "https://github.com/JadedBlueEyes", + "authorName": "Jade", + "gitHubRepoPath": "JadedBlueEyes/jsonwebtoken", + "repoUrl": "https://github.com/JadedBlueEyes/jsonwebtoken", + "installCommandHtml": "cargo: name = \"jsonwebtoken-rustcrypto\" version = \"*\"" + }, { "minimumVersion": null, "support": { From 254ea695b16d7c5d26c55c1a022442ed3cef31d0 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 14 Apr 2023 10:05:56 +0200 Subject: [PATCH 565/611] Apply suggestions from code review --- views/website/libraries/13-Rust.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/views/website/libraries/13-Rust.json b/views/website/libraries/13-Rust.json index 608f8b53..6bab3cc3 100644 --- a/views/website/libraries/13-Rust.json +++ b/views/website/libraries/13-Rust.json @@ -87,6 +87,8 @@ "es256": false, "es384": false, "es512": false, + "es256k": false, + "eddsa": false, "ps256": true, "ps384": true, "ps512": true From 455d3be608fae34530e8637e500b5d020ef553ce Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 14 Apr 2023 10:10:13 +0200 Subject: [PATCH 566/611] Update 35-Bun.json --- views/website/libraries/35-Bun.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/35-Bun.json b/views/website/libraries/35-Bun.json index db23c7d0..76cb28b1 100644 --- a/views/website/libraries/35-Bun.json +++ b/views/website/libraries/35-Bun.json @@ -29,7 +29,7 @@ "ps256": true, "ps384": true, "ps512": true, - "eddsa": false, + "eddsa": true, "es256k": false }, "authorUrl": "https://github.com/panva", From fbc5ab09b377a7c0a9b110d03b01486ca65fc040 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 14 Apr 2023 10:11:16 +0200 Subject: [PATCH 567/611] Update 4-JavaScript.json --- views/website/libraries/4-JavaScript.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/libraries/4-JavaScript.json b/views/website/libraries/4-JavaScript.json index b7a87c5f..19c5b4d5 100644 --- a/views/website/libraries/4-JavaScript.json +++ b/views/website/libraries/4-JavaScript.json @@ -29,7 +29,7 @@ "ps256": true, "ps384": true, "ps512": true, - "eddsa": false, + "eddsa": true, "es256k": false }, "authorUrl": "https://github.com/panva", From 7fa7b796f3042b9cf288eb346746126468095fd0 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 14 Apr 2023 10:14:04 +0200 Subject: [PATCH 568/611] Update 2-Node.js.json --- views/website/libraries/2-Node.js.json | 1 + 1 file changed, 1 insertion(+) diff --git a/views/website/libraries/2-Node.js.json b/views/website/libraries/2-Node.js.json index fddc5aa7..67d68fcf 100644 --- a/views/website/libraries/2-Node.js.json +++ b/views/website/libraries/2-Node.js.json @@ -16,6 +16,7 @@ "nbf": true, "iat": true, "jti": true, + "typ": false, "hs256": true, "hs384": true, "hs512": true, From 9044234bb1cc84f09ec7cce838ed0adcc2ad2278 Mon Sep 17 00:00:00 2001 From: florcaputti Date: Fri, 14 Apr 2023 09:38:51 -0300 Subject: [PATCH 569/611] top banner --- src/website/index.js | 4 +- src/website/topbar.js | 3 + stylus/website/index.styl | 2875 ++++++++++++++++++++-------------- views/website/navigation.pug | 6 + 4 files changed, 1690 insertions(+), 1198 deletions(-) create mode 100644 src/website/topbar.js diff --git a/src/website/index.js b/src/website/index.js index 1f2e33c3..3dc37042 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -11,6 +11,7 @@ import { shareJwtTextElement, } from "./dom-elements.js"; import { CCPAModal } from "./ccpa-modal.js"; +import { TopBar } from "./topbar.js"; import queryString from "querystring"; @@ -54,4 +55,5 @@ parseLocationQuery(); setupHighlighting(); setupJwtCounter(); setupShareJwtButton(shareJwtButton, shareJwtTextElement); -CCPAModal(); \ No newline at end of file +CCPAModal(); +TopBar(); \ No newline at end of file diff --git a/src/website/topbar.js b/src/website/topbar.js new file mode 100644 index 00000000..36789986 --- /dev/null +++ b/src/website/topbar.js @@ -0,0 +1,3 @@ +export function TopBar() { + +} diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 71bea162..ef7aa651 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1,406 +1,542 @@ -@import 'http://github.com/mixins' -@import 'http://github.com/codemirror' -@import 'http://github.com/flip-clock' -@import 'http://github.com/highlight' -@import 'http://github.com/nib' -@import 'http://github.com/nib/gradients' -@import 'http://github.com/fonts' - -/* +@import 'http://github.com/mixins'; +@import 'http://github.com/codemirror'; +@import 'http://github.com/flip-clock'; +@import 'http://github.com/highlight'; +@import 'http://github.com/nib'; +@import 'http://github.com/nib/gradients'; +@import 'http://github.com/fonts'; /* * Webfont */ +font-url(http://github.com/file) { + return '../../fonts/' + file; +} -font-url(http://github.com/file) - return '../../fonts/' + file - -webfont(family, file, weight = 'normal') - @font-face - font-family family - src url(http://github.com/font-url(file%20+%20'.eot')) - src url(http://github.com/font-url(file%20+%20'.eot?#iefix')) format('embedded-opentype'), - url(http://github.com/font-url(file%20+%20'.woff')) format('woff'), - url(http://github.com/font-url(file%20+%20'.ttf')) format('truetype'), - url(http://github.com/font-url(file%20+%20'.svg#'+%20family)) format('svg') - font-weight weight - font-style normal +webfont(family, file, weight = 'normal') { + @font-face { + font-family: family; + src: url(http://github.com/font-url(file%20+%20'.eot')); + src: url(http://github.com/font-url(file%20+%20'.eot?#iefix')) format('embedded-opentype'), url(http://github.com/font-url(file%20+%20'.woff')) format('woff'), url(http://github.com/font-url(file%20+%20'.ttf')) format('truetype'), url(http://github.com/font-url(file%20+%20'.svg#'%20+%20family)) format('svg'); + font-weight: weight; + font-style: normal; + } +} -webfont('DINCondensedBold', 'DINCondensedBold', 'normal') +webfont('DINCondensedBold', 'DINCondensedBold', 'normal'); /* * Principal style */ +html { + position: relative; + min-height: 100%; + + h1, h2, h3, h4, h5 { + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + } +} + +body { + font-family: 'fakt-web', 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +pre, code { + padding: 0; + margin: 0; + font-family: 'Roboto Mono', Menlo; +} + +code { + font-size: 80%; +} + +a { + color: darken(#00b9f1, 20%); + transition: all 0.3s ease; + + &:hover { + color: darken(#00b9f1, 50%); + } +} + +p { + margin: 30px 0 30px 0; +} + +.container { + width: 100%; + max-width: 1200px; + padding: 0 15px; + margin: auto; + overflow: hidden; + + +breakpoint('desktop') { + overflow: visible; + } +} + +section { + padding: 30px 0; + + +breakpoint('tablet') { + padding: 60px 0; + } -html - position relative - min-height 100% - - h1, h2, h3, h4, h5 - -webkit-font-smoothing antialiased - -moz-font-smoothing antialiased - -body - font-family: 'fakt-web', "Helvetica Neue", Helvetica, Arial, sans-serif; - -pre, -code - padding 0 - margin 0 - font-family 'Roboto Mono', Menlo - -code - font-size 80% - -a - color: darken(#00b9f1, 20%) - transition: all .3s ease; - &:hover - color: darken(#00b9f1, 50%) - -p - margin 30px 0 30px 0 - -.container - width 100% - max-width 1200px - padding 0 15px - margin auto - overflow hidden - +breakpoint("desktop") - overflow visible - -section - padding 30px 0 - +breakpoint("tablet") - padding 60px 0 - h1 - color black - text-align center - margin 0 0 30px - font-weight normal - +breakpoint("tablet") - font-size 38px - -body - &.menu-mobile - .banner-jwt - padding-top 122px!important + h1 { + color: black; + text-align: center; + margin: 0 0 30px; + font-weight: normal; + + +breakpoint('tablet') { + font-size: 38px; + } + } +} + +body { + &.menu-mobile { + .banner-jwt { + padding-top: 122px !important; + } + } +} // navbar +.navbar { + background: black; + margin: 0; + border-radius: 0; + border: 0; + text-align: center; + + +breakpoint('tablet') { + width: 100%; + height: 80px; + border-bottom: 1px solid rgba(#4A4A4A, 0.6); + position: fixed; + top: 0; + z-index: 100; + } + + +breakpoint('desktop') { + height: 100px; + } + + &.top-bar-open { + margin-top: 48px; + } + + .container { + position: relative; + } + + .top-mobile { + border-bottom: 1px solid rgba(#4A4A4A, 0.6); + clearfix(); + margin: 0 -15px; + + +breakpoint('tablet') { + border: none; + margin: 0; + } + } + + .menu-trigger { + height: 10px; + width: 23px; + padding-top: 7px; + cursor: pointer; + float: right; + margin: 23px 15px 0 0; + float: right; + + span, span:before, span:after { + background: white; + width: 100%; + height: 2px; + display: block; + transition(0.3s ease-out); + backface-visibility: hidden; + } + + span { + position: relative; + + &:before, &:after { + content: ''; + position: absolute; + } + + &:before { + top: -7px; + } + + &:after { + top: 7px; + } + } + + +breakpoint('tablet') { + display: none; + } + + &.active { + span { + background: transparent; + + &:before { + transform(translate(0, 7px) rotate(-45deg)); + } -.navbar - background black - margin 0 - border-radius 0 - border 0 - text-align center - +breakpoint("tablet") - width 100% - height 80px - border-bottom 1px solid rgba(#4A4A4A,.6) - position fixed - top 0 - z-index 100 - +breakpoint("desktop") - height 100px - - .container - position relative - - .top-mobile - border-bottom 1px solid rgba(#4A4A4A,.6) - clearfix() - margin 0 -15px - +breakpoint("tablet") - border none - margin 0 - - .menu-trigger - height 10px - width 23px - padding-top 7px - cursor pointer - float right - margin 23px 15px 0 0 - float right - span, span:before, span:after - background white - width 100% - height 2px - display block - transition(.3s ease-out) - backface-visibility hidden - span - position relative - &:before, &:after - content "" - position absolute - &:before - top -7px - &:after - top 7px - +breakpoint("tablet") - display none - - &.active - span - background transparent - &:before - transform(translate(0, 7px) rotate(-45deg)) - &:after - transform(translate(0, -7px) rotate(45deg)) - - - .brand - display inline-block - float left - padding 20px 0 20px 15px - +breakpoint("tablet") - float none - position absolute - left 15px - top 20px - padding 0 - .icon - display none - +breakpoint("tablet") - display inline-block - width 40px - height 40px - opacity 0 - transform(scale(0)) - +breakpoint("desktop") - width 60px - height 60px - .logo - width 60px - +breakpoint("tablet") - width 80px - height 25px - display inline-block - vertical-align top - margin-top 7px - transition(.3s ease-in-out) - transform(translateX(-40px)) - +breakpoint("desktop") - width 100px - height 32px - margin-top 14px - transform(translateX(-60px)) - - nav.menu - display none + &:after { + transform(translate(0, -7px) rotate(45deg)); + } + } + } + } + + .brand { + display: inline-block; + float: left; + padding: 20px 0 20px 15px; + + +breakpoint('tablet') { + float: none; + position: absolute; + left: 15px; + top: 20px; + padding: 0; + } + + .icon { + display: none; + + +breakpoint('tablet') { + display: inline-block; + width: 40px; + height: 40px; + opacity: 0; + transform(scale(0)); + } + + +breakpoint('desktop') { + width: 60px; + height: 60px; + } + } + + .logo { + width: 60px; + + +breakpoint('tablet') { + width: 80px; + height: 25px; + display: inline-block; + vertical-align: top; + margin-top: 7px; + transition(0.3s ease-in-out); + transform(translateX(-40px)); + } + + +breakpoint('desktop') { + width: 100px; + height: 32px; + margin-top: 14px; + transform(translateX(-60px)); + } + } + } + + nav.menu { + display: none; min-width: 300px; - +breakpoint("tablet") - display inline-block - a - background none - color #9B9B9B - padding 0 10px - display block - text-decoration none - &:hover - +breakpoint("tablet") - color rgba(white,.8) - &.active - color white - +breakpoint("tablet") - display inline-block - line-height 5.7 - +breakpoint("desktop") - line-height 7 - padding 0 15px - - .social - display none - +breakpoint("tablet") - display inline-block - position absolute - right 15px - top 28px - +breakpoint("desktop") - top 38px - - a - margin-left 10px - text-decoration none - position relative - top -1px - - img - height 35px - - .by-text - color white - padding-right 10px - - .crafted-by__question-mark - background-color #555 - color black - font-size 10px - border-radius 50% - width 14px - height 14px - display inline-block - margin-left 10px - vertical-align middle - transition background-color .5s - &:before - content "Learn more about Auth0" - position absolute - width 164px - padding 6px - top 30px - border-radius 3px - background-color #555 - color white - transition visibility 0s, opacity .5s - visibility hidden - opacity 0 - &:hover - .crafted-by__question-mark - background-color white - &:before - visibility visible - opacity 1 - - - .supported - display none - - .logo-mobile - height 18px - - &.fixed - .brand - .icon - +breakpoint("tablet") - transition(.3s ease-in) - opacity 1 - transform(scale(1)) - .logo - +breakpoint("tablet") - transform(translateX(10px)) - +breakpoint("desktop") - transform(translateX(20px)) - - &.open - background: -moz-linear-gradient(top, rgba(0,0,0,1) 0%, rgba(0,0,0,0.9) 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,1)), color-stop(100%,rgba(0,0,0,0.9))); - background: -webkit-linear-gradient(top, rgba(0,0,0,1) 0%,rgba(0,0,0,0.9) 100%); - background: -o-linear-gradient(top, rgba(0,0,0,1) 0%,rgba(0,0,0,0.9) 100%); - background: -ms-linear-gradient(top, rgba(0,0,0,1) 0%,rgba(0,0,0,0.9) 100%); - background: linear-gradient(to bottom, rgba(0,0,0,1) 0%,rgba(0,0,0,0.9) 100%); - - - position fixed - width 100vw - height 100vh - z-index 100 - .container - padding 0 - height 100vh - - .top-mobile - margin 0 - - nav.menu - position absolute - top 50% - left 50% - transform(translate(-50%,-50%)) - display block - a - color white - font-size 30px - margin 10% 0 - - .supported - display block - width 100% - padding 21px 0 - color white - position absolute - bottom 0 - border-top 1px solid rgba(#4A4A4A,.6) - text-decoration none - img - margin-left 5px + +breakpoint('tablet') { + display: inline-block; + } + + a { + background: none; + color: #9B9B9B; + padding: 0 10px; + display: block; + text-decoration: none; + + &:hover { + +breakpoint('tablet') { + color: rgba(white, 0.8); + } + } + + &.active { + color: white; + } + + +breakpoint('tablet') { + display: inline-block; + line-height: 5.7; + } + + +breakpoint('desktop') { + line-height: 7; + padding: 0 15px; + } + } + } + + .social { + display: none; + + +breakpoint('tablet') { + display: inline-block; + position: absolute; + right: 15px; + top: 28px; + } + + +breakpoint('desktop') { + top: 38px; + } + + a { + margin-left: 10px; + text-decoration: none; + position: relative; + top: -1px; + + img { + height: 35px; + } + + .by-text { + color: white; + padding-right: 10px; + } + + .crafted-by__question-mark { + background-color: #555; + color: black; + font-size: 10px; + border-radius: 50%; + width: 14px; + height: 14px; + display: inline-block; + margin-left: 10px; + vertical-align: middle; + transition: background-color 0.5s; + } + + &:before { + content: 'Learn more about Auth0'; + position: absolute; + width: 164px; + padding: 6px; + top: 30px; + border-radius: 3px; + background-color: #555; + color: white; + transition: visibility 0s, opacity 0.5s; + visibility: hidden; + opacity: 0; + } + + &:hover { + .crafted-by__question-mark { + background-color: white; + } + + &:before { + visibility: visible; + opacity: 1; + } + } + } + } + + .supported { + display: none; + + .logo-mobile { + height: 18px; + } + } + + &.fixed { + .brand { + .icon { + +breakpoint('tablet') { + transition(0.3s ease-in); + opacity: 1; + transform(scale(1)); + } + } + + .logo { + +breakpoint('tablet') { + transform(translateX(10px)); + } + + +breakpoint('desktop') { + transform(translateX(20px)); + } + } + } + } + + &.open { + background: -moz-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.9) 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 1)), color-stop(100%, rgba(0, 0, 0, 0.9))); + background: -webkit-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.9) 100%); + background: -o-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.9) 100%); + background: -ms-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.9) 100%); + background: linear-gradient(to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.9) 100%); + position: fixed; + width: 100vw; + height: 100vh; + z-index: 100; + + .container { + padding: 0; + height: 100vh; + } + + .top-mobile { + margin: 0; + } + + nav.menu { + position: absolute; + top: 50%; + left: 50%; + transform(translate(-50%, -50%)); + display: block; + + a { + color: white; + font-size: 30px; + margin: 10% 0; + } + } + + .supported { + display: block; + width: 100%; + padding: 21px 0; + color: white; + position: absolute; + bottom: 0; + border-top: 1px solid rgba(#4A4A4A, 0.6); + text-decoration: none; + + img { + margin-left: 5px; + } + } + } +} // banner-jwt +.banner-jwt { + background: black; + text-align: center; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transform(translateZ(0)); -.banner-jwt - background black - text-align center - -webkit-backface-visibility hidden - backface-visibility hidden - transform(translateZ(0)) - +breakpoint("tablet") - padding 140px 0 60px - +breakpoint("desktop") - padding 150px 0 60px - - h1 - color white - margin 25px 0 0 - +breakpoint("tablet") - font-size 34px - +breakpoint("desktop") - font-size 40px - - p - color white - a - color #00b9f1 - - p - font-size 20px - color white - +breakpoint("tablet") - line-height 1.4 - font-size 24px - +breakpoint("desktop") - font-size 30px - - a - font-weight bold - text-decoration none - - .logo - display inline-block - img - width 70px - display block - +breakpoint("desktop") - width 80px - -.update-site + +breakpoint('tablet') { + padding: 140px 0 60px; + } + + +breakpoint('desktop') { + padding: 150px 0 60px; + } + + h1 { + color: white; + margin: 25px 0 0; + + +breakpoint('tablet') { + font-size: 34px; + } + + +breakpoint('desktop') { + font-size: 40px; + } + } + + p { + color: white; + + a { + color: #00b9f1; + } + } + + p { + font-size: 20px; + color: white; + + +breakpoint('tablet') { + line-height: 1.4; + font-size: 24px; + } + + +breakpoint('desktop') { + font-size: 30px; + } + + a { + font-weight: bold; + text-decoration: none; + } + } + + .logo { + display: inline-block; + + img { + width: 70px; + display: block; + + +breakpoint('desktop') { + width: 80px; + } + } + } +} + +.update-site { display: none; - background: #e3e5e7 + background: #e3e5e7; padding: 30px 20px; font-size: 18px; text-align: center; - color: darken(#e3e5e7, 70%) + color: darken(#e3e5e7, 70%); - +breakpoint("desktop") + +breakpoint('desktop') { padding: 30px 0; + } - span - margin-right 5px - display inline-block - line-height 33px - display block - margin-bottom 15px + span { + margin-right: 5px; + display: inline-block; + line-height: 33px; + display: block; + margin-bottom: 15px; - +breakpoint("desktop") - display inline-block - margin-bottom 0 + +breakpoint('desktop') { + display: inline-block; + margin-bottom: 0; + } - strong - margin-right 5px + strong { + margin-right: 5px; + } + } - a.extension-button + a.extension-button { font-size: 12px; text-transform: uppercase; color: white; @@ -411,20 +547,22 @@ body text-shadow: 0 1px 1px rgba(black, 0.1); border: 1px solid #2D53AF; background-color: #5689DB; - background: linear-gradient(to bottom, #5689DB , #4D7BD6); + background: linear-gradient(to bottom, #5689DB, #4D7BD6); height: 34px; line-height: 34px; cursor: pointer; - &.is-installed + &.is-installed { border-color: #488500; background-color: #5fb000; - background-image: linear-gradient(to bottom,#71bf00,#4da100); + background-image: linear-gradient(to bottom, #71bf00, #4da100); - svg + svg { display: none; + } + } - svg + svg { fill: #0094c1; height: 14px; width: 12px; @@ -432,19 +570,23 @@ body margin-right: 10px; line-height: 33px; display: inline-block; + } + } +} // jtw ebook banner -.jtw-ebook-banner +.jtw-ebook-banner { background: #e3e5e7; padding: 30px 20px; font-size: 18px; text-align: center; color: darken(#e3e5e7, 70%); - +breakpoint("desktop") + +breakpoint('desktop') { padding: 30px 0; + } - .btn-download-ebook + .btn-download-ebook { padding: 8px 24px; margin: 0px auto 0 11px; color: #fff; @@ -455,874 +597,1190 @@ body text-transform: uppercase; text-align: center; text-decoration: none; + } +} -.jwt-ebook-banner-image +.jwt-ebook-banner-image { position: relative; padding: 45px 45px 235px; margin-left: -15px; margin-right: -15px; background: #E3E5E7 url('http://github.com/img/ebook.png') 100% 100% no-repeat; - p + p { margin-top: 0; + } - .btn-download-ebook + .btn-download-ebook { display: block; + } - &::after + &::after { content: ''; - position: absolute + position: absolute; bottom: 202px; left: 0; right: 0; width: 100%; height: 35px; - background: linear-gradient(rgba(227, 229, 231,1), rgba(227, 229, 231,0)); + background: linear-gradient(rgba(227, 229, 231, 1), rgba(227, 229, 231, 0)); + } - - @media (min-width: 768px) + @media (min-width: 768px) { height: 235px; - margin: 8rem 0 + margin: 8rem 0; padding: 65px 235px 65px 65px; - box-shadow: 0 10px 20px 0 rgba(0,0,0,0.25) + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.25); text-align: left; - .btn-download-ebook + .btn-download-ebook { display: inline-block; + } - &::after + &::after { display: none; + } + } +} // debugger-jwt +.jwt-select { + display: inline-block; + position: relative; + + select { + background: white; + width: 112px; + height: 38px; + font-size: 12px; + padding: 0 10px; + border: 1px solid #D8D8D8; + border-radius: 3px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + outline: 0; + + &::-ms-expand { + display: none; + } + } + + &:after { + background: url('http://github.com/img/bg_arrow_select.svg') no-repeat; + width: 8px; + height: 6px; + content: ''; + display: inline-block; + position: absolute; + top: 16px; + right: 10px; + } +} -.jwt-select - display inline-block - position relative - select - background white - width 112px - height 38px - font-size 12px - padding 0 10px - border 1px solid #D8D8D8 - border-radius 3px - -webkit-appearance none - -moz-appearance none - appearance none - outline 0 - &::-ms-expand - display none - &:after - background url(http://github.com/img/bg_arrow_select.svg) no-repeat - width 8px - height 6px - content '' - display inline-block - position absolute - top 16px - right 10px - -.jwt-playground - .selections - display flex - justify-content center - - .algorithm - text-align center - span - font-weight bold - text-transform uppercase - font-size 12px - vertical-align middle - .jwt-select - margin-left 10px - - .token-type - display none - text-align center - span - font-weight bold - text-transform uppercase - font-size 12px - vertical-align middle - .jwt-select - margin-left 10px - margin-right 20px - - .algorithm-code - margin-top 35px - .tab-nav - grid(2, 0, '.tab-link') - margin-bottom 20px - - .tab-link - text-align center - +breakpoint("tablet") - text-align left - &:nth-child(2) - +breakpoint("tablet") - padding-left 15px - &.current - border-bottom 6px solid #FB015B - +breakpoint("tablet") - border none - a - font-size 24px - color black - text-decoration none - display block - cursor default - padding-bottom 5px - +breakpoint("tablet") - font-size 28px - padding-bottom 0 - small - font-size 10px - color #979797 - text-transform uppercase - margin-left 10px - display none - +breakpoint("desktop") - display inline-block - - .tab-content - +breakpoint("tablet") - grid(2, 30px, '.box-content') - - .error .CodeMirror - background-color #ffc0cb - - .warning .CodeMirror - background-color #fff7c9 - - .box-content - height 0 - overflow hidden - +breakpoint("tablet") - height auto - &.current - height auto - - .input, .output - border 1px solid rgba(#9B9B9B,.5) - border-radius 3px - - .input - padding 10px - position relative - +breakpoint("tablet") - padding 20px +.jwt-playground { + .selections { + display: flex; + justify-content: center; + } + + .algorithm { + text-align: center; + + span { + font-weight: bold; + text-transform: uppercase; + font-size: 12px; + vertical-align: middle; + } + + .jwt-select { + margin-left: 10px; + } + } + + .token-type { + display: none; + text-align: center; + + span { + font-weight: bold; + text-transform: uppercase; + font-size: 12px; + vertical-align: middle; + } + + .jwt-select { + margin-left: 10px; + margin-right: 20px; + } + } + + .algorithm-code { + margin-top: 35px; + + .tab-nav { + grid(2, 0, '.tab-link'); + margin-bottom: 20px; + + .tab-link { + text-align: center; + + +breakpoint('tablet') { + text-align: left; + } + + &:nth-child(2) { + +breakpoint('tablet') { + padding-left: 15px; + } + } + + &.current { + border-bottom: 6px solid #FB015B; + + +breakpoint('tablet') { + border: none; + } + } + } + + a { + font-size: 24px; + color: black; + text-decoration: none; + display: block; + cursor: default; + padding-bottom: 5px; + + +breakpoint('tablet') { + font-size: 28px; + padding-bottom: 0; + } + + small { + font-size: 10px; + color: #979797; + text-transform: uppercase; + margin-left: 10px; + display: none; + + +breakpoint('desktop') { + display: inline-block; + } + } + } + } + + .tab-content { + +breakpoint('tablet') { + grid(2, 30px, '.box-content'); + } + + .error .CodeMirror { + background-color: #ffc0cb; + } + + .warning .CodeMirror { + background-color: #fff7c9; + } + + .box-content { + height: 0; + overflow: hidden; + + +breakpoint('tablet') { + height: auto; + } + + &.current { + height: auto; + } + } + + .input, .output { + border: 1px solid rgba(#9B9B9B, 0.5); + border-radius: 3px; + } + + .input { + padding: 10px; + position: relative; + + +breakpoint('tablet') { + padding: 20px; // &[data-alg="HS256"] - // min-height 550px + // min-height 550px // &[data-alg="RS256"] - // min-height 719px - - .jwt-explained - .text-line - margin 0 - font-size 12px - color black - clearfix() - border-top 1px solid rgba(#9B9B9B,.5) - border-bottom 1px solid rgba(#9B9B9B,.5) - line-height 2.5 - padding 0 10px - span - color #979797 - margin-left 5px - display none - +breakpoint("desktop") - display inline-block - a - float right - - &.jwt-header - .text-line - border-top none - - .CodeMirror-wrap - padding 20px - - .pre-encode - border none - padding 20px - line-height 1.8 - input, textarea - border 1px solid #D0D2D3 - border-radius 3px - textarea - width 100% - max-width 266px - resize none - input[type="checkbox"] - margin-right 5px - position relative - top 2px - - .validation-status - text-transform capitalize - background-color white - text-align center - border-radius 3px - padding 0 - margin-top 30px - font-size 20px - +breakpoint("tablet") - font-size 30px - padding 10px 0 - text-align left - &.valid-token - color #00B9F1 - &.invalid-token - color red - i - font-size 18px - vertical-align bottom - display inline-block - margin-right 5px - +breakpoint("tablet") - font-size 24px - - .debugger-footer - font-size 30px - .website-validation - padding-left 0 - .website-share - padding-right 0 - button - width 100%; - background-color #00b9f1; - color white; - font-weight 400; - border-color #00b9f1; + // min-height 719px + } + } + + .jwt-explained { + .text-line { + margin: 0; + font-size: 12px; + color: black; + clearfix(); + border-top: 1px solid rgba(#9B9B9B, 0.5); + border-bottom: 1px solid rgba(#9B9B9B, 0.5); + line-height: 2.5; + padding: 0 10px; + + span { + color: #979797; + margin-left: 5px; + display: none; + + +breakpoint('desktop') { + display: inline-block; + } + } + + a { + float: right; + } + } + + &.jwt-header { + .text-line { + border-top: none; + } + } + + .CodeMirror-wrap { + padding: 20px; + } + + .pre-encode { + border: none; + padding: 20px; + line-height: 1.8; + + input, textarea { + border: 1px solid #D0D2D3; + border-radius: 3px; + } + + textarea { + width: 100%; + max-width: 266px; + resize: none; + } + + input[type='checkbox'] { + margin-right: 5px; + position: relative; + top: 2px; + } + } + } + } + } + + .validation-status { + text-transform: capitalize; + background-color: white; + text-align: center; + border-radius: 3px; + padding: 0; + margin-top: 30px; + font-size: 20px; + + +breakpoint('tablet') { + font-size: 30px; + padding: 10px 0; + text-align: left; + } + + &.valid-token { + color: #00B9F1; + } + + &.invalid-token { + color: red; + } + + i { + font-size: 18px; + vertical-align: bottom; + display: inline-block; + margin-right: 5px; + + +breakpoint('tablet') { + font-size: 24px; + } + } + } + + .debugger-footer { + font-size: 30px; + + .website-validation { + padding-left: 0; + } + + .website-share { + padding-right: 0; + + button { + width: 100%; + background-color: #00b9f1; + color: white; + font-weight: 400; + border-color: #00b9f1; + } + } + } +} +// libraries-jwt +.libraries-jwt { + background-color: #e3e5e7; + @media (max-width: 767px) { + padding-bottom: 0; + } -// libraries-jwt + .title-header { + clearfix(); + text-align: center; + + +breakpoint('tablet') { + text-align: left; + } + + h1 { + display: inline-block; + + +breakpoint('tablet') { + float: left; + } + } -.libraries-jwt - background-color #e3e5e7 - - @media (max-width: 767px) - padding-bottom 0 - - .title-header - clearfix() - text-align center - +breakpoint("tablet") - text-align left - h1 - display inline-block - +breakpoint("tablet") - float left - .filter - display inline-block - margin 0 auto 2rem auto - +breakpoint("tablet") - float right - - .filter - margin-bottom 30px - +breakpoint("tablet") - margin-top 8px - margin-bottom 0 - span - font-weight bold - text-transform uppercase - font-size 12px - vertical-align middle - .jwt-select - margin-left 10px - - .warning - margin 0 -15px - border-radius 0 - line-height 1.8 - +breakpoint("tablet") - margin 0 0 30px - border-radius 3px - svg + .filter { + display: inline-block; + margin: 0 auto 2rem auto; + + +breakpoint('tablet') { + float: right; + } + } + } + + .filter { + margin-bottom: 30px; + + +breakpoint('tablet') { + margin-top: 8px; + margin-bottom: 0; + } + + span { + font-weight: bold; + text-transform: uppercase; + font-size: 12px; + vertical-align: middle; + } + + .jwt-select { + margin-left: 10px; + } + } + + .warning { + margin: 0 -15px; + border-radius: 0; + line-height: 1.8; + + +breakpoint('tablet') { + margin: 0 0 30px; + border-radius: 3px; + } + + svg { height: 14px; width: 14px; - fill: darken(#FFFCD2, 80%) + fill: darken(#FFFCD2, 80%); margin-bottom: -2px; - .libraries-sv - margin 0 -15px - - @media (max-width: 767px) - height auto!important - - +breakpoint("tablet") - grid(2, 30px, 'article') - margin 0 - +breakpoint("desktop") - grid(3, 30px, 'article') - - article - width 100% - - @media (max-width: 767px) - position relative!important - top auto!important - left auto!important - - +breakpoint("tablet") - margin-bottom 30px - &:nth-child(2n+1) - clear both - - +breakpoint("desktop") - &:nth-child(2n+1) - clear none - &:nth-child(3n+1) - clear both - - .panel-heading - padding 0 - border-bottom 0 - - img - float left - width 45px + } + } + + .libraries-sv { + margin: 0 -15px; + + @media (max-width: 767px) { + height: auto !important; + } + + +breakpoint('tablet') { + grid(2, 30px, 'article'); + margin: 0; + } + + +breakpoint('desktop') { + grid(3, 30px, 'article'); + } + } + + article { + width: 100%; + + @media (max-width: 767px) { + position: relative !important; + top: auto !important; + left: auto !important; + } + + +breakpoint('tablet') { + margin-bottom: 30px; + + &:nth-child(2n+1) { + clear: both; + } + } + + +breakpoint('desktop') { + &:nth-child(2n+1) { + clear: none; + } + + &:nth-child(3n+1) { + clear: both; + } + } + + .panel-heading { + padding: 0; + border-bottom: 0; + + img { + float: left; + width: 45px; height: 45px; - margin 10px - +breakpoint("tablet") - float none - display block - margin 0 auto -45px - width 90px - height: 90px; - h3 - font-size 18px - font-weight bold - color white - margin 0 - padding 20px 20px 20px 70px - +breakpoint("tablet") - padding 20px - border-radius 3px 3px 0 0 - - .panel-body - grid(2, 0, '.column') - background-color white - padding 37px 20px 20px - - p - font-size 18px - margin 10px 0 - code - background-color #f9f2f4 - color #c7254e - i - vertical-align middle - margin-right 5px - font-size 20px - &.icon-budicon-500 - color #7ED321 - &.icon-budicon-501 - color #F0586A - - &.mversion - padding-top 0 - - .version - background-color #FFFCD2 - color darken(#FFFCD2, 80%) - font-size 12px - text-align center - padding 10px - text-transform uppercase - p - margin 0 - a - color rgba(black,.5) - img - width 13px - margin 2px 0 0 5px - color white - vertical-align top - - .author-info - background-color white - clearfix() - padding 20px - border-top 1px solid rgba(#979797,.3) - font-size 16px - color #4A4A4A - - .maintainer - float left - font-size 12px - line-height 1.5 - i - vertical-align middle - margin-right 2px - font-size 17px - height 25px - display inline-block - a - color #4A4A4A - text-decoration none - .stars - margin-left 15px - - .repository - float right - i - height 24px - display inline-block - font-size 20px - vertical-align middle - margin-right 5px - a - font-size 12px - color #4A4A4A - text-decoration none - - .panel-footer - background-color black - border-radius 0 0 3px 3px - padding 20px - code - font-size 12px - color white - background-color black - a - color white - text-decoration none - - [data-content] - +breakpoint("tablet") - max-height 100%!important - overflow visible!important + margin: 10px; + +breakpoint('tablet') { + float: none; + display: block; + margin: 0 auto -45px; + width: 90px; + height: 90px; + } + } + + h3 { + font-size: 18px; + font-weight: bold; + color: white; + margin: 0; + padding: 20px 20px 20px 70px; + + +breakpoint('tablet') { + padding: 20px; + border-radius: 3px 3px 0 0; + } + } + } + + .panel-body { + grid(2, 0, '.column'); + background-color: white; + padding: 37px 20px 20px; + + p { + font-size: 18px; + margin: 10px 0; + + code { + background-color: #f9f2f4; + color: #c7254e; + } + + i { + vertical-align: middle; + margin-right: 5px; + font-size: 20px; + + &.icon-budicon-500 { + color: #7ED321; + } + + &.icon-budicon-501 { + color: #F0586A; + } + } + } + + &.mversion { + padding-top: 0; + } + } + + .version { + background-color: #FFFCD2; + color: darken(#FFFCD2, 80%); + font-size: 12px; + text-align: center; + padding: 10px; + text-transform: uppercase; + + p { + margin: 0; + } + + a { + color: rgba(black, 0.5); + + img { + width: 13px; + margin: 2px 0 0 5px; + color: white; + vertical-align: top; + } + } + } + + .author-info { + background-color: white; + clearfix(); + padding: 20px; + border-top: 1px solid rgba(#979797, 0.3); + font-size: 16px; + color: #4A4A4A; + + .maintainer { + float: left; + font-size: 12px; + line-height: 1.5; + + i { + vertical-align: middle; + margin-right: 2px; + font-size: 17px; + height: 25px; + display: inline-block; + } + + a { + color: #4A4A4A; + text-decoration: none; + } + + .stars { + margin-left: 15px; + } + } + + .repository { + float: right; + + i { + height: 24px; + display: inline-block; + font-size: 20px; + vertical-align: middle; + margin-right: 5px; + } + + a { + font-size: 12px; + color: #4A4A4A; + text-decoration: none; + } + } + } + + .panel-footer { + background-color: black; + border-radius: 0 0 3px 3px; + padding: 20px; + + code { + font-size: 12px; + color: white; + background-color: black; + } + + a { + color: white; + text-decoration: none; + } + } + + [data-content] { + +breakpoint('tablet') { + max-height: 100% !important; + overflow: visible !important; + } + } + } +} // sources +.sources { + background-color: #222; + + .columns { + +breakpoint('tablet') { + grid(3, 30px, '.column'); + } -.sources - background-color #222 - .columns - +breakpoint("tablet") - grid(3, 30px, '.column') + .column { + margin-bottom: 20px; + text-align: center; - .column - margin-bottom 20px - text-align center - &.libraries + &.libraries { margin: 0 0 20px 0; - +breakpoint("tablet") - margin-bottom 0 + } + + +breakpoint('tablet') { + margin-bottom: 0; - &.libraries + &.libraries { margin: -2rem 0; + } + } + } + } - h2 - font-size 30px - color white - text-align center - margin 0 - font-weight normal - - .libraries - background rgba(255, 255, 255, .05) - +breakpoint("tablet") - height 373px - - .libraries-container - padding: 2rem - - p - color white - font-size 20px - line-height 1.2 - - .logotype - img - height 40px - - .hold - min-height 70px - margin-top 40px - a - text-decoration none - - .text-hold - background-color #000 - color white - text-align left - padding 10px 15px - border-radius 3px - width 100% - max-width 340px - display inline-block + h2 { + font-size: 30px; + color: white; + text-align: center; + margin: 0; + font-weight: normal; + } + + .libraries { + background: rgba(255, 255, 255, 0.05); + + +breakpoint('tablet') { + height: 373px; + } + + .libraries-container { + padding: 2rem; + } + + p { + color: white; + font-size: 20px; + line-height: 1.2; + } + } + + .logotype { + img { + height: 40px; + } + } + + .hold { + min-height: 70px; + margin-top: 40px; + + a { + text-decoration: none; + } + } + + .text-hold { + background-color: #000; + color: white; + text-align: left; + padding: 10px 15px; + border-radius: 3px; + width: 100%; + max-width: 340px; + display: inline-block; font-size: 13px; - a - float right - color white - font-size 18px - text-decoration none + + a { + float: right; + color: white; + font-size: 18px; + text-decoration: none; margin-top: 4px; - p - margin 0 - white-space nowrap - text-overflow ellipsis - overflow hidden + } + + p { + margin: 0; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; line-height: 30px; - font-family: "Roboto Mono", "Menlo" - - .tshirt - text-align center - h2 - margin-bottom 20px - img - max-width 180px - width 100% - display inline-block - +breakpoint("tablet") - max-width 227px - a - background-color #00B9F1 - color white - max-width 180px - margin 20px auto 0 - font-size 16px - font-weight bold - text-transform uppercase - border-radius 3px - padding 15px - text-align center - text-decoration none - display block - +breakpoint("tablet") - max-width 270px + font-family: 'Roboto Mono', 'Menlo'; + } + } + .tshirt { + text-align: center; + + h2 { + margin-bottom: 20px; + } + + img { + max-width: 180px; + width: 100%; + display: inline-block; + + +breakpoint('tablet') { + max-width: 227px; + } + } + + a { + background-color: #00B9F1; + color: white; + max-width: 180px; + margin: 20px auto 0; + font-size: 16px; + font-weight: bold; + text-transform: uppercase; + border-radius: 3px; + padding: 15px; + text-align: center; + text-decoration: none; + display: block; + + +breakpoint('tablet') { + max-width: 270px; + } + } + } +} // tokens-created +.tokens-created { + background-color: black; + text-align: center; + color: white; + font-size: 20px; + line-height: 1.8; + padding: 30px 0; + + +breakpoint('tablet') { + padding: 60px 0; + font-size: 26px; + } + + .logo { + height: 55px; + } + + img { + margin-bottom: 35px; + } + + p { + max-width: 875px; + margin: 5px auto; + } +} + +.btn, a.btn { + transition(background-color 0.2s ease); + text-transform: uppercase; + letter-spacing: 2px; + font-weight: bold; + border: 1px solid #d0d2d3; + line-height: 30px; + padding: 15px 30px; + font-size: 15px; + border-radius: 3px; + text-decoration: none; + display: inline-block; + margin-top: 30px; -.tokens-created - background-color black - text-align center - color white - font-size 20px - line-height 1.8 - padding 30px 0 - +breakpoint("tablet") - padding 60px 0 - font-size 26px - - .logo - height 55px - - img - margin-bottom 35px - - p - max-width 875px - margin 5px auto - -.btn, a.btn - transition(background-color 0.2s ease) - text-transform uppercase - letter-spacing 2px - font-weight bold - border 1px solid #d0d2d3 - line-height 30px - padding 15px 30px - font-size 15px - border-radius 3px - text-decoration none - display inline-block - margin-top 30px - &.btn-success - background-color #635dff - color white - border-color transparent - &:hover - background-color #564ed1 - color white - -.btn, a.btn - &.btn-lg - background-color #D63AFF - color white - border none - - &.btn-ghost - background transparent - border 1px solid #D63AFF - color #D63AFF - - & + .btn - margin-left 2rem - - .token - margin-top 35px - h5 - font-size 14px - font-weight normal - margin 0 0 10px 0; + &.btn-success { + background-color: #635dff; + color: white; + border-color: transparent; + + &:hover { + background-color: #564ed1; + color: white; + } + } +} + +.btn, a.btn { + &.btn-lg { + background-color: #D63AFF; + color: white; + border: none; + } + + &.btn-ghost { + background: transparent; + border: 1px solid #D63AFF; + color: #D63AFF; + } + + & + .btn { + margin-left: 2rem; + } + + .token { + margin-top: 35px; + } + + h5 { + font-size: 14px; + font-weight: normal; + margin: 0 0 10px 0; color: #999; letter-spacing: 1px; - + } +} // plain-text +.plain-text { + .container { + max-width: 630px; + } + + h1 { + font-size: 25px; + font-weight: 300; + color: #333; + margin-top: 10px; + line-height: 1.3; + + +breakpoint('mobile-landscape') { + font-size: 40px; + } + } + + & > h1, & > hr { + display: none; + } + + h2, h3, h4, h5, h6 { + &.anchor-heading { + position: relative; + + .anchor { + display: none; + + +breakpoint('tablet') { + position: absolute; + top: 0; + left: -25px; + visibility: hidden; + } + } + + &:hover { + +breakpoint('tablet') { + .anchor { + visibility: visible; + } + } + } + } + } + + h2, h3, h4 { + font-weight: 700; + color: #333; + line-height: 1.3; + } + + h2 { + font-size: 20px; + margin-top: 40px; + + &:first-child { + margin-top: 0; + } + } + + h3 { + font-size: 16px; + } + + h4, h5, h6 { + font-size: 13px; + text-transform: uppercase; + letter-spacing: 1px; + } + + p, ul li { + color: #5c666f; + font-size: 16px; + line-height: 2; + + strong { + color: #333; + } + + code { + border-radius: 4px; + font-size: 90%; + padding: 3px 8px; + background-color: #F7F7F7; + } + } + + blockquote { + background-color: lighten(#F7F7F7, 55%); + padding: 60px 30px; + border-radius: 3px; + margin: 30px 0; + text-align: center; + border: none; + + p { + margin: 0; + font-size: 12px; + + +breakpoint('tablet') { + font-size: 16px; + } + } + + em { + font-size: 18px; + line-height: 1.5; + + +breakpoint('tablet') { + font-size: 25px; + } + } + + strong { + display: block; + margin-top: 15px; + color: rgba(#333, 0.5); + text-transform: uppercase; + } + } + + sup { + font-size: 90%; + } + + img { + max-width: 100%; + } + + table { + border-collapse: collapse; + width: 100%; + margin: 20px 0 30px; + } + + thead tr th { + font-family: Helvetica, Arial, sans-serif; + font-weight: bold; + text-align: center; + font-size: 13px; + } + + td, th { + border: 1px solid #E0E0E0; + padding: 0.5rem; + text-align: left; + } -.plain-text - .container - max-width 630px - - h1 - font-size 25px - font-weight 300 - color #333 - margin-top 10px - line-height 1.3 - +breakpoint("mobile-landscape") - font-size 40px - - & > h1, & > hr - display none - - h2, h3, h4, h5, h6 - &.anchor-heading - position relative - - .anchor - display none - +breakpoint("tablet") - position absolute - top 0 - left -25px - visibility hidden - &:hover - +breakpoint("tablet") - .anchor - visibility visible - - h2, h3, h4 - font-weight 700 - color #333 - line-height 1.3 - - h2 - font-size 20px - margin-top 40px - &:first-child - margin-top 0 - - h3 - font-size 16px - - h4, h5, h6 - font-size 13px - text-transform uppercase - letter-spacing 1px - - p, ul li - color #5c666f - font-size 16px - line-height 2 - strong - color #333 - code - border-radius 4px - font-size 90% - padding 3px 8px - background-color #F7F7F7 - - blockquote - background-color lighten(#F7F7F7, 55%) - padding 60px 30px - border-radius 3px - margin 30px 0 - text-align center - border none - - p - margin 0 - font-size 12px - +breakpoint("tablet") - font-size 16px - - em - font-size 18px - line-height 1.5 - +breakpoint("tablet") - font-size 25px - - strong - display block - margin-top 15px - color rgba(#333,.5) - text-transform uppercase - - sup - font-size 90% - - img - max-width 100% - - table - border-collapse collapse - width 100% - margin 20px 0 30px - - thead tr th - font-family Helvetica, Arial, sans-serif - font-weight bold - text-align center - font-size 13px - - td, th - border 1px solid #E0E0E0 - padding 0.5rem - text-align left - - tbody tr:nth-child(odd) - background rgba(#eee,.5) - - pre - display block - font-size 13px - line-height 1.42857143 - color #333 - word-break break-all - background-color #f5f5f5 - border-radius 4px - margin-bottom 30px - - pre code - font-size inherit - border none - border-radius 0 + tbody tr:nth-child(odd) { + background: rgba(#eee, 0.5); + } + + pre { + display: block; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + background-color: #f5f5f5; + border-radius: 4px; + margin-bottom: 30px; + } + + pre code { + font-size: inherit; + border: none; + border-radius: 0; + } +} // go-tool +.go-tool { + text-align: center; + border-top: 1px solid #DDD; + + p { + font-size: 15px; + display: inline-block; + text-transform: uppercase; -.go-tool - text-align center - border-top 1px solid #DDD - p - font-size 15px - display inline-block - text-transform uppercase - +breakpoint("tablet") - margin-right 20px - .btn.btn-success - background-color #D63AFF - margin 0 - &:hover - background-color darken(#D63AFF, 30%) + +breakpoint('tablet') { + margin-right: 20px; + } + } + .btn.btn-success { + background-color: #D63AFF; + margin: 0; + + &:hover { + background-color: darken(#D63AFF, 30%); + } + } +} // footer +footer { + background-color: black; + border-top: 1px solid rgba(#979797, 0.4); + padding: 20px 0; + text-align: center; + + +breakpoint('tablet') { + text-align: left; + padding: 60px 0; + } + + .columns { + color: white; + font-size: 14px; -footer - background-color black - border-top 1px solid rgba(#979797,.4) - padding 20px 0 - text-align center - +breakpoint("tablet") - text-align left - padding 60px 0 - - .columns - color white - font-size 14px - +breakpoint("tablet") - grid(3, 0, '.column') - - .column - margin 15px 0 - +breakpoint("tablet") - margin 0 - - a - color white - img - margin-left 5px - .as-anchor - color: white - background: none - padding: 0 - border: none - .ccpa-toggle - max-width: 39px - - .logo - height 18px - - .privacy-links - margin-bottom 16px - span - padding 0 6px - - .pull-request - +breakpoint("tablet") - text-align center - font-size 16px - span - display block - +breakpoint("desktop") - display inline-block - a - color #00B9F1 - margin-left 5px - - .social-counter - +breakpoint("tablet") - text-align right - - #ccpa-modal - display: none - position: fixed - top: 50% - left: 50% - transform: translate(-50%, -50%) - width: 90% - height: auto - background: white - z-index: 10000 - color: black - border-radius: 16px - padding: 24px - text-align: left - +breakpoint("tablet") - width: 50% - max-width: 670px - #close-ccpa - background: none - border: none - padding: 0 - position: absolute - top: 20px - right: 30px - font-size: 24px - line-height: 24px - .settings - color: #635dff - appearance: none - border: none - background: none - padding: 0 - -.warning - display block - width 100% - padding 15px - margin 0 0 40px 0 - background #fff7c9 - border-radius 3px - font-size 14px - color rgba(0,0,0,.8) - line-height 2 - - a - border-bottom 1px solid rgba(0,0,0,.4) - color rgba(0,0,0,.8) - text-decoration none - - &:hover - opacity .7 + +breakpoint('tablet') { + grid(3, 0, '.column'); + } + + .column { + margin: 15px 0; + + +breakpoint('tablet') { + margin: 0; + } + } + + a { + color: white; + } + + img { + margin-left: 5px; + } + + .as-anchor { + color: white; + background: none; + padding: 0; + border: none; + } + + .ccpa-toggle { + max-width: 39px; + } + } + + .logo { + height: 18px; + } + + .privacy-links { + margin-bottom: 16px; + + span { + padding: 0 6px; + } + } + + .pull-request { + +breakpoint('tablet') { + text-align: center; + font-size: 16px; + } + + span { + display: block; + + +breakpoint('desktop') { + display: inline-block; + } + } + + a { + color: #00B9F1; + margin-left: 5px; + } + } + + .social-counter { + +breakpoint('tablet') { + text-align: right; + } + } + + #ccpa-modal { + display: none; + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 90%; + height: auto; + background: white; + z-index: 10000; + color: black; + border-radius: 16px; + padding: 24px; + text-align: left; + + +breakpoint('tablet') { + width: 50%; + max-width: 670px; + } + + #close-ccpa { + background: none; + border: none; + padding: 0; + position: absolute; + top: 20px; + right: 30px; + font-size: 24px; + line-height: 24px; + } + + .settings { + color: #635dff; + appearance: none; + border: none; + background: none; + padding: 0; + } + } +} + +.warning { + display: block; + width: 100%; + padding: 15px; + margin: 0 0 40px 0; + background: #fff7c9; + border-radius: 3px; + font-size: 14px; + color: rgba(0, 0, 0, 0.8); + line-height: 2; + + a { + border-bottom: 1px solid rgba(0, 0, 0, 0.4); + color: rgba(0, 0, 0, 0.8); + text-decoration: none; + + &:hover { + opacity: 0.7; + } + } +} .icon-unknown { display: inline-block; @@ -1335,6 +1793,7 @@ footer line-height: 13px; font-style: normal; } + .icon-unknown::after { content: '?'; font-size: 14px; @@ -1344,29 +1803,51 @@ footer display: inline; } -.editor-warning +.editor-warning { position: absolute; bottom: 0; left: 0; right: 0; z-index: 1; - background: rgba(127,123,100,0.1) + background: rgba(127, 123, 100, 0.1); margin: 0; - border-top: 1px solid rgba(155,155,155,0.5); + border-top: 1px solid rgba(155, 155, 155, 0.5); - &.hidden - display: none + &.hidden { + display: none; + } - p - margin: 0 + p { + margin: 0; + } - p + p - margin: 20px 0 0 + p + p { + margin: 20px 0 0; + } +} -.jwt-playground .algorithm-code .tab-content .input:hover - .editor-warning +.jwt-playground .algorithm-code .tab-content .input:hover { + .editor-warning { display: none; + } +} .bun h3 { - color: rgb(0,0,0)!important; + color: rgb(0, 0, 0) !important; +} + +.top-bar { + max-width: 1444px; + margin: 0 auto; + visibility: visible; + opacity: 1; + height: 48px; } + +.top-bar.closed { + visibility: hidden; + height: 0; + opacity: 0; + padding: 0; + transition: all 0.2s linear; +} \ No newline at end of file diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 9021950a..5327d1a7 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,3 +1,9 @@ +.top-bar + .top-bar-container + p Learn what's new with Auth0 at Devday23 on May 16 + a(href="https://developerday.com/register" target="_blank") Register now + button + + nav.navbar.closed .container .top-mobile From 940333831ab5b6d6bc903007ce79d70a0342b3a8 Mon Sep 17 00:00:00 2001 From: florcaputti Date: Fri, 14 Apr 2023 16:54:37 -0300 Subject: [PATCH 570/611] Add top banner --- package.json | 2 +- src/website/index.js | 4 +- src/website/top-banner.js | 9 +++ src/website/topbar.js | 3 - stylus/website/index.styl | 105 +++++++++++++++++++++++++++++++---- views/website/navigation.pug | 16 ++++-- 6 files changed, 115 insertions(+), 24 deletions(-) create mode 100644 src/website/top-banner.js delete mode 100644 src/website/topbar.js diff --git a/package.json b/package.json index b44e5ead..fe769327 100644 --- a/package.json +++ b/package.json @@ -83,4 +83,4 @@ "build:libraries": "node libraries.js" }, "heroku-run-build-script": true -} +} \ No newline at end of file diff --git a/src/website/index.js b/src/website/index.js index 3dc37042..9532ae5a 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -11,7 +11,7 @@ import { shareJwtTextElement, } from "./dom-elements.js"; import { CCPAModal } from "./ccpa-modal.js"; -import { TopBar } from "./topbar.js"; +import { TopBanner } from "./top-banner.js"; import queryString from "querystring"; @@ -56,4 +56,4 @@ setupHighlighting(); setupJwtCounter(); setupShareJwtButton(shareJwtButton, shareJwtTextElement); CCPAModal(); -TopBar(); \ No newline at end of file +TopBanner(); \ No newline at end of file diff --git a/src/website/top-banner.js b/src/website/top-banner.js new file mode 100644 index 00000000..91a3dbfc --- /dev/null +++ b/src/website/top-banner.js @@ -0,0 +1,9 @@ +export function TopBanner() { + document.addEventListener("DOMContentLoaded", function () { + document.querySelector(".close-top-banner").addEventListener("click", () => { + document.querySelector(".top-banner").classList.add('closed'); + document.querySelector(".top-banner-spacer").classList.add('hide'); + document.querySelector(".navbar").classList.remove("top-banner-open"); + }); + }); +} diff --git a/src/website/topbar.js b/src/website/topbar.js deleted file mode 100644 index 36789986..00000000 --- a/src/website/topbar.js +++ /dev/null @@ -1,3 +0,0 @@ -export function TopBar() { - -} diff --git a/stylus/website/index.styl b/stylus/website/index.styl index ef7aa651..e4d37b06 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -124,8 +124,12 @@ body { height: 100px; } - &.top-bar-open { - margin-top: 48px; + &.top-banner-open { + margin-top: 5px; + transition: all 0.2s linear; + +breakpoint('tablet') { + margin-top: 48px; + } } .container { @@ -1836,18 +1840,95 @@ footer { color: rgb(0, 0, 0) !important; } -.top-bar { - max-width: 1444px; - margin: 0 auto; +.top-banner { + background: linear-gradient(90deg, #ff4f40 0%, #ff44dd 99.99%); + border-radius: 8px; + max-width: 1440px; + padding: 8px 16px; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); visibility: visible; opacity: 1; - height: 48px; + box-sizing: border-box; + margin: 0 auto; + position: absolute; + top: 12px; + z-index: 1000; + width: 100%; + left: 0; + right: 0; + overflow: hidden; + + &.closed { + visibility: hidden; + height: 0; + opacity: 0; + padding: 0; + transition: all 0.2s linear; + } + + .top-banner-container { + margin: 0 auto; + display: grid; + grid-template-columns: 1fr 30px; + max-width: 1200px; + align-items: center; + + div { + +breakpoint('tablet') { + display: flex; + align-items: center; + } + } + } + + p { + font-size: 14px; + color: #fff; + margin: 0 2rem 0 0; + display: inline; + } + + a { + font-weight: 600; + font-size: 14px; + color: #fff; + text-decoration: none; + display: block; + + span { + margin-left: 8px; + } + + &:hover { + text-decoration: underline; + } + + +breakpoint('tablet') { + display: inline; + } + } + + button { + font-weight: 600; + font-size: 20px; + color: #fff; + text-decoration: none; + background: none; + border: none; + justify-self: flex-end; + display: block; + cursor: pointer; + text-align: right; + transform: rotate(45deg); + } } -.top-bar.closed { - visibility: hidden; - height: 0; - opacity: 0; - padding: 0; - transition: all 0.2s linear; +.top-banner-spacer { + background: black; + height: 50px; + + &.hide { + height: 0; + transition: all 0.2s linear; + } } \ No newline at end of file diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 5327d1a7..4c2f6db0 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,10 +1,14 @@ -.top-bar - .top-bar-container - p Learn what's new with Auth0 at Devday23 on May 16 - a(href="https://developerday.com/register" target="_blank") Register now - button + +.top-banner + .top-banner-container + div + p Learn what's new with Auth0 at Devday23 on May 16 + a(href="https://developerday.com/register" target="_blank") Register now + span(aria-hiden="true") → + button.close-top-banner + + +.top-banner-spacer -nav.navbar.closed +nav.navbar.closed.top-banner-open .container .top-mobile .menu-trigger From e8febcf8c951cc608d4cd15f911444baa09617f5 Mon Sep 17 00:00:00 2001 From: florcaputti Date: Mon, 17 Apr 2023 12:49:26 -0300 Subject: [PATCH 571/611] change max-width --- stylus/website/index.styl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index e4d37b06..6b711783 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1843,7 +1843,7 @@ footer { .top-banner { background: linear-gradient(90deg, #ff4f40 0%, #ff44dd 99.99%); border-radius: 8px; - max-width: 1440px; + max-width: 1216px; padding: 8px 16px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); visibility: visible; From d45c87a0ccdfc0c48971c5eb830d9258d17ae3ff Mon Sep 17 00:00:00 2001 From: florcaputti Date: Mon, 17 Apr 2023 16:40:14 -0300 Subject: [PATCH 572/611] Add background --- stylus/website/index.styl | 12 +++++++++++- views/website/navigation.pug | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 6b711783..54f45be1 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -127,6 +127,7 @@ body { &.top-banner-open { margin-top: 5px; transition: all 0.2s linear; + +breakpoint('tablet') { margin-top: 48px; } @@ -1840,6 +1841,15 @@ footer { color: rgb(0, 0, 0) !important; } +.top-banner-bg { + position: fixed; + top: 0; + background: black; + width: 100%; + height: 48px; + z-index: 100; +} + .top-banner { background: linear-gradient(90deg, #ff4f40 0%, #ff44dd 99.99%); border-radius: 8px; @@ -1850,7 +1860,7 @@ footer { opacity: 1; box-sizing: border-box; margin: 0 auto; - position: absolute; + position: fixed; top: 12px; z-index: 1000; width: 100%; diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 4c2f6db0..628b559d 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,3 +1,4 @@ +.top-banner-bg .top-banner .top-banner-container div From a21ee25215c24d4841be75a9ecce8d351f3a0638 Mon Sep 17 00:00:00 2001 From: Flor Lafuente Date: Tue, 27 Jun 2023 12:09:45 -0300 Subject: [PATCH 573/611] chore: remove devdays banner (#657) --- src/website/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/website/index.js b/src/website/index.js index 9532ae5a..1f2e33c3 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -11,7 +11,6 @@ import { shareJwtTextElement, } from "./dom-elements.js"; import { CCPAModal } from "./ccpa-modal.js"; -import { TopBanner } from "./top-banner.js"; import queryString from "querystring"; @@ -55,5 +54,4 @@ parseLocationQuery(); setupHighlighting(); setupJwtCounter(); setupShareJwtButton(shareJwtButton, shareJwtTextElement); -CCPAModal(); -TopBanner(); \ No newline at end of file +CCPAModal(); \ No newline at end of file From dc450f36c5aeaba6192198c12a2c9cb63880d72d Mon Sep 17 00:00:00 2001 From: Sam Bellen Date: Tue, 27 Jun 2023 17:46:57 +0200 Subject: [PATCH 574/611] Devdays banner cleanup (#659) * Trigger Heroku deploy after updating GitHub credentials * Trigger Heroku deploy after updating GitHub credentials * Remove the devdays banner --- src/website/top-banner.js | 9 ---- stylus/website/index.styl | 93 ------------------------------------ views/website/navigation.pug | 13 +---- 3 files changed, 1 insertion(+), 114 deletions(-) delete mode 100644 src/website/top-banner.js diff --git a/src/website/top-banner.js b/src/website/top-banner.js deleted file mode 100644 index 91a3dbfc..00000000 --- a/src/website/top-banner.js +++ /dev/null @@ -1,9 +0,0 @@ -export function TopBanner() { - document.addEventListener("DOMContentLoaded", function () { - document.querySelector(".close-top-banner").addEventListener("click", () => { - document.querySelector(".top-banner").classList.add('closed'); - document.querySelector(".top-banner-spacer").classList.add('hide'); - document.querySelector(".navbar").classList.remove("top-banner-open"); - }); - }); -} diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 54f45be1..868e875a 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1848,97 +1848,4 @@ footer { width: 100%; height: 48px; z-index: 100; -} - -.top-banner { - background: linear-gradient(90deg, #ff4f40 0%, #ff44dd 99.99%); - border-radius: 8px; - max-width: 1216px; - padding: 8px 16px; - border-bottom: 1px solid rgba(255, 255, 255, 0.1); - visibility: visible; - opacity: 1; - box-sizing: border-box; - margin: 0 auto; - position: fixed; - top: 12px; - z-index: 1000; - width: 100%; - left: 0; - right: 0; - overflow: hidden; - - &.closed { - visibility: hidden; - height: 0; - opacity: 0; - padding: 0; - transition: all 0.2s linear; - } - - .top-banner-container { - margin: 0 auto; - display: grid; - grid-template-columns: 1fr 30px; - max-width: 1200px; - align-items: center; - - div { - +breakpoint('tablet') { - display: flex; - align-items: center; - } - } - } - - p { - font-size: 14px; - color: #fff; - margin: 0 2rem 0 0; - display: inline; - } - - a { - font-weight: 600; - font-size: 14px; - color: #fff; - text-decoration: none; - display: block; - - span { - margin-left: 8px; - } - - &:hover { - text-decoration: underline; - } - - +breakpoint('tablet') { - display: inline; - } - } - - button { - font-weight: 600; - font-size: 20px; - color: #fff; - text-decoration: none; - background: none; - border: none; - justify-self: flex-end; - display: block; - cursor: pointer; - text-align: right; - transform: rotate(45deg); - } -} - -.top-banner-spacer { - background: black; - height: 50px; - - &.hide { - height: 0; - transition: all 0.2s linear; - } } \ No newline at end of file diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 628b559d..9021950a 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,15 +1,4 @@ -.top-banner-bg -.top-banner - .top-banner-container - div - p Learn what's new with Auth0 at Devday23 on May 16 - a(href="https://developerday.com/register" target="_blank") Register now - span(aria-hiden="true") → - button.close-top-banner + - -.top-banner-spacer - -nav.navbar.closed.top-banner-open +nav.navbar.closed .container .top-mobile .menu-trigger From 262fa4675444d3448fe023d34128f4482e153746 Mon Sep 17 00:00:00 2001 From: florcaputti Date: Fri, 4 Aug 2023 09:13:19 -0300 Subject: [PATCH 575/611] Remove ebook utm --- views/website/ebook.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/ebook.pug b/views/website/ebook.pug index 01dfb666..ff72170d 100644 --- a/views/website/ebook.pug +++ b/views/website/ebook.pug @@ -3,4 +3,4 @@ section.container p strong Get the JWT Handbook for free! |  Download it now and get up-to-speed faster. - a.btn.btn-download-ebook(href='https://auth0.com/resources/ebooks/jwt-handbook?utm_source=jwtio&utm_medium=main_gc_banner&utm_campaign=gc_jwt_test_10_2019', target='_blank') Download Ebook + a.btn.btn-download-ebook(href='https://auth0.com/resources/ebooks/jwt-handbook', target='_blank') Download Ebook From d12e26fc0e53275e343a1e0aaebe1ecd6ccea5b6 Mon Sep 17 00:00:00 2001 From: florcaputti Date: Fri, 4 Aug 2023 12:15:59 -0300 Subject: [PATCH 576/611] remove utms --- README.md | 2 +- views/extension/index.pug | 2 +- views/website/layout.pug | 2 +- views/website/navigation.pug | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 4cbfafbf..8e09a5a2 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ||| |-|-| -|![auth0 logo](https://user-images.githubusercontent.com/83319/31722733-de95bbde-b3ea-11e7-96bf-4f4e8f915588.png)|If you want to quickly add secure (JSON Web) token-based authentication to your projects, feel free to check Auth0's documentation and free plan at [auth0.com/developers](https://auth0.com/developers?utm_source=GHsponsor&utm_medium=GHsponsor&utm_campaign=jwtio&utm_content=auth)| +|![auth0 logo](https://user-images.githubusercontent.com/83319/31722733-de95bbde-b3ea-11e7-96bf-4f4e8f915588.png)|If you want to quickly add secure (JSON Web) token-based authentication to your projects, feel free to check Auth0's documentation and free plan at [developer.auth0.com](https://developer.auth0.com)| ### How to add a library diff --git a/views/extension/index.pug b/views/extension/index.pug index 3e956e40..131b7306 100644 --- a/views/extension/index.pug +++ b/views/extension/index.pug @@ -36,7 +36,7 @@ block content .colophon.clearfix .pull-left - a(target="_blank" href="https://auth0.com/developers/?utm_source=jwt-ext&utm_campaign=badge") + a(target="_blank" href="https://developer.auth0.com/") | Supported by   img(src="http://github.com/img/ico_logo.svg" alt='Supported by Auth0 - JWT.io Token Based Authentication') a  -  diff --git a/views/website/layout.pug b/views/website/layout.pug index 6a296b37..40ee91e5 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -61,7 +61,7 @@ html(lang='en') button.as-anchor#open-ccpa | Your Privacy Choices img.ccpa-toggle(src='https://cdn.auth0.com/website/footer/ccpa.svg' alt='Privacy choices') - a(href='https://auth0.com/developers/', target="_blank") + a(href='https://developer.auth0.com/', target="_blank") | Supported by img(src='http://github.com/img/ico_logo.svg' alt='Supported by Auth0 - JWT.io Token Based Authentication').logo #ccpa-modal diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 9021950a..57edd64c 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -15,11 +15,11 @@ nav.navbar.closed a(href='https://community.auth0.com/c/jwt/8', target='_blank') Ask .social - a.a0(href='https://auth0.com/developers?utm_source=jwtio&utm_medium=navbar_whats_auth0&utm_campaign=jwt_nav_cta_12_2019', target='_blank') + a.a0(href='https://developer.auth0.com/', target='_blank') span.by-text Crafted by img(src='http://github.com/img/pic_logo_ft.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication') span.crafted-by__question-mark ? - a.supported(href='https://auth0.com/?utm_source=jwtio&utm_campaign=craftedby', target="_blank") + a.supported(href='https://auth0.com/', target="_blank") | Supported by img(src='http://github.com/img/ico_logo.svg', alt='Supported by Auth0 - JWT.io Token Based Authentication').logo-mobile \ No newline at end of file From 4ce7d9bc86541c4552ea1eeac6757bc73986052a Mon Sep 17 00:00:00 2001 From: Jonas Roussel Date: Wed, 23 Aug 2023 13:13:57 +0200 Subject: [PATCH 577/611] Add the support for PS256, PS384, PS512 & ES256K for the dart_jsonwebtoken library --- views/website/libraries/36-Dart.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/views/website/libraries/36-Dart.json b/views/website/libraries/36-Dart.json index d68e52d0..85530ea6 100644 --- a/views/website/libraries/36-Dart.json +++ b/views/website/libraries/36-Dart.json @@ -16,7 +16,7 @@ "nbf": true, "iat": true, "jti": true, - "typ": true, + "typ": true, "hs256": true, "hs384": true, "hs512": true, @@ -27,10 +27,10 @@ "es384": true, "es512": true, "eddsa": true, - "ps256": false, - "ps384": false, - "ps512": false, - "es256k": false + "ps256": true, + "ps384": true, + "ps512": true, + "es256k": true }, "authorUrl": "https://github.com/jonasroussel", "authorName": "Jonas Roussel", From 6cffb089d127c20f9d98d9bf19fc60e05bc3dcc0 Mon Sep 17 00:00:00 2001 From: Christian Banse Date: Fri, 15 Sep 2023 22:43:58 +0200 Subject: [PATCH 578/611] Updating info about `jwt` Go library This PR updates the `jwt` Go library with features recently introduced in `v5`. --- views/website/libraries/9-Go.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/views/website/libraries/9-Go.json b/views/website/libraries/9-Go.json index ac602548..385f61bd 100644 --- a/views/website/libraries/9-Go.json +++ b/views/website/libraries/9-Go.json @@ -9,8 +9,8 @@ "support": { "sign": true, "verify": true, - "iss": false, - "sub": false, + "iss": true, + "sub": true, "aud": true, "exp": true, "nbf": true, @@ -25,16 +25,16 @@ "es256": true, "es384": true, "es512": true, - "ps256": false, - "ps384": false, - "ps512": false, + "ps256": true, + "ps384": true, + "ps512": true, "eddsa": true }, "authorUrl": "https://github.com/golang-jwt", "authorName": "golang-jwt", "gitHubRepoPath": "golang-jwt/jwt", "repoUrl": "https://github.com/golang-jwt/jwt", - "installCommandHtml": "go get github.com/golang-jwt/jwt/v4" + "installCommandHtml": "go get github.com/golang-jwt/jwt/v5" }, { "minimumVersion": null, From a342f71f7972f154d07e8e497ceac4abe5571e4d Mon Sep 17 00:00:00 2001 From: Hardik Juneja Date: Fri, 29 Sep 2023 16:11:53 +0200 Subject: [PATCH 579/611] DXD-112: update new cic logos everywhere --- img/website/ico_logo.svg | 7 ++++++- img/website/pic_logo_ft.svg | 21 +++++++++++++++++---- stylus/website/index.styl | 4 ++-- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/img/website/ico_logo.svg b/img/website/ico_logo.svg index bdd8e582..e3ced17f 100644 --- a/img/website/ico_logo.svg +++ b/img/website/ico_logo.svg @@ -1 +1,6 @@ - \ No newline at end of file + + + + + + diff --git a/img/website/pic_logo_ft.svg b/img/website/pic_logo_ft.svg index f29ae85d..c24832d1 100644 --- a/img/website/pic_logo_ft.svg +++ b/img/website/pic_logo_ft.svg @@ -1,4 +1,17 @@ - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 868e875a..5f70f938 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -312,7 +312,7 @@ body { top: -1px; img { - height: 35px; + height: 32px; } .by-text { @@ -1848,4 +1848,4 @@ footer { width: 100%; height: 48px; z-index: 100; -} \ No newline at end of file +} From ea34512a5c0fbdfa4603e9b7b72c41826a7453ba Mon Sep 17 00:00:00 2001 From: dan <37590801+dan-auth0@users.noreply.github.com> Date: Wed, 20 Dec 2023 15:39:29 -0500 Subject: [PATCH 580/611] update footer links --- .gitignore | 1 + views/website/counter.pug | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 7ad7b569..97d73092 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ Dockerfile yarn.lock .env libraries.json +.idea/* diff --git a/views/website/counter.pug b/views/website/counter.pug index 8fdf5310..a3f2bdd0 100644 --- a/views/website/counter.pug +++ b/views/website/counter.pug @@ -2,10 +2,10 @@ .container img(src='http://github.com/img/pic_logo_ft.svg' alt='Auth0 logo').logo p JWT.io is brought to you by - a(href='https://auth0.com/signup', target="_blank") Auth0 + a(href='https://auth0.com/signup/?utm_source=jwt.io&utm_medium=microsites&utm_campaign=devn_signup', target="_blank", rel="noreferrer noopener") Auth0 p Securely implement authentication with JWTs using Auth0 on any stack and any device in less than 10 minutes. - a(href='https://auth0.com/signup', target="_blank").btn.btn-success Create free account + a(href='https://auth0.com/signup/?utm_source=jwt.io&utm_medium=microsites&utm_campaign=devn_signup', target="_blank", rel="noreferrer noopener").btn.btn-success Create free account .token h5 TOKENS CREATED From 1b2138398522d9ae14bfec5349e6a8d146fc9d8f Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Tue, 2 Jan 2024 12:48:17 -0500 Subject: [PATCH 581/611] update/remove old logo from images --- img/website/ebook.png | Bin 107722 -> 34745 bytes views/website/md/introduction.md | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/img/website/ebook.png b/img/website/ebook.png index e176e43f6f84bad64ec29534c6fb3e06eba4e8df..9d75fac88860ac6c92d6ec07d06d0441daef6300 100644 GIT binary patch literal 34745 zcmV)aK&roqP)7#AHI8yx27=@%Cm?d|O2<>na~8T$ME`1<_f;NA1} z_2c8?>g($5@bll_-RbP^@A35D;NcV#81(n~_WAqo@9pO2=IH9|^7HZJ<>c$_@7>+q z+T8) z3evo>$ElghsF&8dt<|@v?ezA|w5He5%*@2TA|WE*)6Ct^$KA}s$iTeDq?F*+(cQ_u z(zT_=ytm)u=Hl7bz@wAbyt2{D$J^W6%C)Pwt*IU#CD_Tq!nw5C!nfVUy1%usE-y5@ zv8~X^!sg@Ov#O=rzOL%=^VQDCuA!XUz_rb%li1nX!oz$;;BR zp{As%+qtQgouU>RDZReI!>gjPrl9LOWZ2!|!l#+$x1ExQkCxWf*V5C}NKRB>WohHf!BJ9Hpkb`q;pL2zm{(d|HZ?d$ zNK1W$jIyz_pQo&*t+GKsLYktdtDTt3#>97ig`S=+wb~{& zB2Ca_9&|B!7$nt9YtwYSc-WdO{V(?ZJkR&b^Zf;gxShVQ?+?DXwrl6B@6Ypjo`+dX zZpS^r55(sxhBe$*GpS^}EhFOTCiod+O1v^2kCkI5Y&T-CXKaI?fkC^?U)y>W$X>5h zx7S{_n9}ozV=?KG2bOzu;B0H*aAylAxrOw|Eu3s;p*Zx!<%9f_4`HF7--U}15Xb*w z;h-no*ho4;m&c`zrIv$aA>D+6I7|!w%P542{H~M`54|O#p??t^I0b&Dp)L#k>NvCt z>>iFy2Mm?u>sdtT$M5)Q{(N&i5U8J*_m*dsIfxelcW}zI@K*kbENmBrIJtoudbLo* zV23E=5;75SDzmVwg?bZ3Q1)S=-7}Wj$~gkL^Ho?l1qb=XBs8<|zluVjl@NEmiFcEQ zA`1J>LSqX#eOc%$?gSj!-1%{7XNd&F$uYC=ZnMzR&cfktC^f`I4|);xTB@uQS;+mv z3D`{|A)&O;jzfuuXsM@?kV!R254~acPB+VrK(>ClTixDSTOtS9X@r@Dcb|oF`0aBj#+4hhh7}4 z2Gb!$Ado^)kIhb+DzJ68FkV^CIvjHx3dC!8hymgTYgAO2Gc|qn$lC6t$0(ebXxWI9 z&=@MWEV?ut=P{_sLIqHDDGExCmKBdF4)I zAtV$QCg7eFcL|<^IPE+QdH#`rxCAOUJu14d^x065YgCX~3IbIi9`VBb(yYjLm4*FS zcwdkDpNsh$T^7>q##t!iRVxO&^y5M=#UYEqmV_RIhDCN!HB_{Tbw6*sIGf?a!V{q( z3&iskX@EFuX5pPgp?=o7m$@1P4GksbS?E)hWg(#mL%ItK#Wamo;H9}iz?)<~GE_P! z$ED;U;UQa%(OJmBD+=;L$>oqLvQ(5sVWzsgjhUO5q@X!2yqlF1V6=eONkpcc)C)_e z#zoOH^DM;FA;ZT-WOog`D334)6?q7)I9@6La7qTUSNe){Fg+zftw8<}ZL!P9{&CPD zFFxfK0&b#&gVkkth(?71(Of&}3z3Dw!R}e8Hf%f+Pp5s6afpU@456bs3%P(ml;o~i z$Sq7H60QE1*(VH??{c%!T3ccN1i)JQv7UBVTL>Fj6c(3)4iFF?if)(5g_e%>m=1~0+gUi8YQEUmSbnkJEY_y;=roXc5>QWNA(C)ZyYp4sDfXIyUjtakHH3$>v^Qm1 z*w035VPS_X)Rt%(6MpC0zm5foXfzbU34%|~kN4KL3XOZy`FI@5Ca`c^VIbXoK3^9L zN8~6pw9v}ilR+yEFS|4&KRFIbL@Rgl#unQ7ui&3PUCv<<*&%32c)q*4yT0=DdrG=!S=up_{S6C>P>g+5A^C%vachv(hP!O78gOg zqq6wst!|);sZ6IKV;UktHesQ076Q?t5SlE+#h(Vf_B*uDLl!Q)S$+IGmxP4@GLXP4 z-)&f41xHnK@Cd+0qPk}>=_3kZAx9mBMEi-F^je)u*cudO16lMb!INMp%gKZ@(2>Dy zbY$yiE7j$#X5~A+TH=fNA`wI+Aot=NJjuYrmWm11E?Z?p4{WD*8ViBe#f}wOScr=3 zji-Koc6CS|hQa}-)8TfwzGgVGm@9mYVtj=BJAixt;KJ=AII@`Zy`e@QhT>4br)ciq zpFW0!L@Nhf1Hk2S1TZj!jvT7Pe-Yhfkv6fP?bT#Ujyx-}^N>6Dq@!hyVP8S1QaF zlfH+AWTB3>GuETUYqf<*SSWA}xB`Jt_5?FIG2tN%vv`pPPBfg%#-;t!TAUJ3axcy< z;h+}DKr7Bx-g)lMLe?YaAO2E!HudHMJbX$XIvoU$!?{rI`Vt<(zyk?N#E+(h{bixC zga|?7VIi|{KPOojl`ISoC{P&b2*AZ)?j#f>`NBjtAU~3q_~z1wez#dRG96j9R@tc2 zP^jpk*A6JHys?GpRB@rO_}j}jSBJl^KYbO=dhxV29p@`}^18ALZx86(6tQd~ z{4=od;ZF;N`Dfh2^2)1NmWk++MahyKcN4{4qT8k!dNwT#@pE)TcO!tv8HjfI(x7KWYb_XrajG=^d! zWDFs2mbYFPQ*o-x=waA=qF24d*C`~KfbA8e6+B^K@n@#t;5;~Mzj`}f# zJ_VxiaE@kfs4kmXc)KXnWuZWog<5Ey<}xNM>^>}X!8wC098%(PG8rA1O$1c^1Q#N75DHDiH@KqBg#l6W8h$0rl;q!LKdho6LqYCg z5FS!Es|xew%CW_yH{hV!M2&uUX`z>JBE3@&##C7t9&lr9n8`SuZkN6wXN;n7NKF`D zP~*Z^zMh+-hFTMil9%KHb{W(!*I7fImkYC}*B}ITVIee(_`Xa%tniw=_}kRlhu_y_ z4|B4I4)p->?9yV=>&l68`Ho4*%@cI^==((en7$VbX%X4onv!wCMc4=xJ6RakTR5b} z-O@3P&0;6zH>LIGBw$NM=_Ethc9-3Q<+sgB8f$t+*gD~{DJ_ggMpLNB#h*w+-X?!Q zhk~*kltrXQ#mPM!!hu2SiN&NR^q;@`<{OCj<#!x>(3p&ym>4B|1bt}4$M#PTe>Z%; zau$p!cDP3M!$LO-X9h+(DH&biTUqFo%QG*M@BpdC8&ijEr+=2NvwvGMayOhYzp_;L*%Vp*9i}TaeCTpE-d^4BoC+fa^9017m+n8*|5~84B@nx^s&{NB!qx66n|<1 zC8|#x+NPi2<#e#E+HX>YAgY)T84itJbP0rKW}+R z{R>>=^E-0@g&I@eRH(^9fS&~!xsx8z99wxcCJCogmDAT3`xo>s+fGnh1tQIiR(lE}T4KLECUoQE_(%j=~2I5QX1R5{`;dAVYeLfOI+? ziO_R=j4T{2p5@e8nCWDpepu*oXJ8gxly{PBZ7k%~7{`?+3GH-9*d(lzKNl9)O66Ap z;N-~5gLA-1i3rQW^cEi$iZIM{EXYo$ZnlschR!9NafVT_F@Q9# z$lO2>o>wKI9hXkR!4~%6!lO68KYp4ENIquKz~ICy6A~ZK`uP5jw>0t1iZW6V#Pcck z=dMvfe)q?p?+>bb%P+R}d1Z!%{vMrpSCgqc zd{~hvf=2P44{K(>Vpmrz$TW;H(4BM{7V5oJ*W&@VE0cj}Ze^Wj&u*ujg|Y9|QK(Ns zSg65f{rsz6rmjAqqeyCMG~hBG?|pjvx>3u=nS_-}jak?@y?FcX)1P|>)zZc?@^F8V zM5H*RJbWZI%(-B&o&)tDtIHOX9+FVMy^z!+sqSOKu!J&H5s4q+%B!IuWqkF z#6=n+vbwBjn1j)vw6bS0>1|AiXW2or@L{phq`%`rJeUXdh$UieZFzZZ>+~BReQ*xL zLJ;H@cG&DMmW);CTM?tLAPd9EOq5_EPFY11@+|C9k0D_@Y?BLxXCF%IA+nHxS9W*c z9y;4ysx=V)Z(-s4jg9SUd1Ym#T-sP-8p?Ty1r>O>y8aw_7>p4XliN)eJ|GZ<#inc^ z6qM3WI0y-ah4FYPsIgF`S=T5O8y5unuh7i4L?)Vy#(uQ6$->?x6xhFg_ULN;@zWC+ zDEBdLC-&E_Tr}RkeTRy?y|GuSuI|$R5u|*$wuzaWc|Jar^Y8<2n5kp7nEcD$xyH0v zg>k&nb+oHg2V)ySa5y$5Oi5}0N9qSnjENep(U>^nrg*EDc!_*)QAAxFE@_8on+m-E zMXQw6l&U0xAw$!lf`FSu@PY|jG??gg#(A5U|8q{?p7$~ebM;&Qj<&G4#QDqrxt!-b z@9Cz6x+H~VWjav!7*W`*_CY8GA=Ld6D17^p$H!|)VxY!mIh}wk!f*PXH9;s8Dp9ry zwa*1TT?mC%=*wQ?LpwA#hBr&aQ)BT_6v_ROh|@_FdfjfX4|dqm)7{xZ9E!Ni3TALv zll8*W6c5DonwJL*bx6iRp>RS-VT2Ne>(&>)eaT2nPzVOo_h}$yw@`%N^c1peP{^eh zk_Y4rKuCH`YA+fABO`L|VD~~W;=(!*XT;Ul=kD|QT#1MWAU1W!6&y+hb2cwrz7ujc z#8)XPudJXTk0@+p5O#HI!!c(N>fjU>cd#@_cIV_Y(!xcOz#NO_CpMEppYW_uNI=MS z1`NUtebPNZCctPs@Y$|~U_U7I3=a=uJ(t((at=COf$=^hh&{;+5geuxL~lr!)#(Tn zmMSRRJ<@oJcr1*N)Z5nm;suw~Z7B3meOxObTgevag|=`61P=GP-Q#XwVvuU$IscS5fKCjS8H#02n+(k@qjmxNcen#P}J|Ab2~e_z#%}C`=KtYCG8IkinNe(h@>z@VfP{} zngt0$qHxRl{7d3V2!$Ea4B_Gw+BFm|U7T16&TOo%qQxxtZ|5H=g-Zj0@J2Nok zfgO6?fdI-Al+z(7;KsvhJ9^N`791i$)Md3S4uuzT2$Nn|ghq{qLct(GNEF5&+mgSb zI84P!4G@&P5F=X{_{402^EzrV2~L(HEPV78Yj015_vD zm?QxB+_1t>2t4{cE>|Sn*4jl!ds5>@m(>y~WqoS?k$WM8`nZ65;V3VVy9I=zG7%J# z7hcQyGzu%^w9%wLhfzVIT?ygrYqN=f-X>V?1w^|5t-UFBK}@sNXS09Co!N>l9s9OG@ffC#w`v zS&G8OxYh~*AtEwI5DFq97hX~)Md474%u5NSBk=BwH0dOagb41T->h-$O`&2FyeZsZR*c``~EZ&d0tM)tg0eb zLI~NkX`zh4Os9p776pYC;&7_4b>RqvQ@jB@1vEJ5^tr*EBN~cELvA1H6nu!zMFZ&D zH1VNqT~^CbsggqBg(#7wmbE-96bu4FPGQ~SZiN*>mZfG3ZGZ2Bjyvd1-XR_V1H5ne zgLGJ@giuRir(UHDS|RkB(W0WzR54W4imVXh44^PFfXvY8;>UP|Unqb&#qVc4V#_tF zQ#!MG;VG3TNnwVNg2J*qG-_H-Q6G~8ga}Khk&8!Fv;H;=`=^sNr~3FlrXd~aY=tWm=*_4pY~9l{jXBquUW_w1Q6~5IqhsTBB|HgC z(M0*h6Td%%SsS=yAmAEo>(OPE20|H$G||eGqOhQh+J$jJp>l*lKnMzVZY}N-7m>xT zt~9dem=TUie}X)FDR0l2se(E7?6bd{RTP>|X@w5GQW>UjO~|MeC_K>8jO$MmZ3_#% z;RrM|`dl>K;0n=9Ar=~C>M$4pA=eMmu`+gF*U*uS%?c(3f{?XQFO#ssOi?&%HmcRow?964 zcpebWPxoT#A0vbi9>D1KMIwyCfZK~#UZ_NwvNJX5DBR8{T)ny+eptGhBC?>cfK%8k z@6xEFF);`T$qTP-72~Z-O?8Q$wR<1eR1QxI_ef3%9m_G8l;PNp!D{^ZXf_grq}t7T zg)&UxiV)0C1>#fTk;9~UG_F~@Fzms6;jj-vO^j+efEgPK#h}mcK%D{wbXlbh$wd$_ zEH5iP9~A23?Ltu4KGLjg(xi%GLQsM*LKF^((nQrQ)XFgSBVVfCa6B23YdIpX8RQUx zLII%&$X23}Iity|g%HYET3GMUP-uB-{-b$DA(}P8-i5Z_pfl2s@j@SJ6dxKkZkVD6 zvDsT|tE#0O5hZih3)4c#FK?=#qv@nr^@ONu!!qse2Qpk#|x7h2;py#Gr(sXw+~D z1%$#02e}bOh{E=dVr-`_lXA1aR)(qPp_4KCw2v#!M@oMZ5T-^Maum~qj6q5Ap7kw_ zo%OjHrm)4V3CNbQ_QOpR&@`hEC&`Eh!C)`)LoXiC9iaP8D31r(uuaHs!=-({KkJ3* zIyHjAGTOqhiX`*GRcO=@g~AGz5IP}(kSOeBQ(Z|dkrtZ&d7kvg$(W(yIQK$+es@(0 zLgs=dErdKHlw{wimvniz{)v3TaN~xI1>_Zj+O*I#zW?wv7@VJ<2=)hOaD0O8>G<1- zP*O<62vWglfEw1UP=PgukRj@_TG|VXs9UI_5MEdc3cJ%m$Qksw!Yv2g!U~tX1N!6h zlKwg{#QWBkJ@}vA@{53wWEBvKfNYT|ut6`WWmLcMiBBHseDU-3JM-a(4`qTvFDSIA zO5~yTN%U#ZG3;sTr3DQ`T*Jf8a5&+P`a@JA`*4!t!}u#w#Dpu5?bM{la66+A5UMCF zlPGNLmf|sIP|67h2RVbF5DHF;J`GT`r9Zwi|M7fEfBcnf7|yOZ>s`|^5spbF&}&jr zXpt+SPwBZsm|hwDx-dzljs3=O;8 z!_Ht37w&+c%f|{8cp$vcmv92Z8eLXPc_Ge7h(btCAs}3ZMh#gZaVXR(ePF-Q1$DQK z%*UkS1Q0R`72s*DP}m_I7g?312oMr?)~V4-iTe5`z+k=pgEL?`h_0l*GRoh4$wizr*2&?@7@MY2olTubCg}bx`vVQA^mv$Dt+j;9v&1YtX z(7P3CFEmvg7#Sr9Q6z)HreJ?$$Td8~0z#y}AIYH;af0d+_CP3G)f{FTfT1p{^wmio znuJ;k$qP|6W05$iUDEEP+P7nU+^YSnuuzV)`JpLx--J}nDKyb+HKtiH)L^x!L-LRR z$YSyVLqi`gMSh?*;j!NcK(1dE6k05*fNZaq_|q(>(bun8dBzmZYMOg=LJwbr-AyV(TPr zStmXgO50s&oon5-BL}KDg^-QZAg~$*MFzTsuKHWyZ+D zv^}TdFR4cPCr5V8NdX}!R6wW>$cN;^G?}OHYzM$od*Npz^YM7s0-v;_fSn4`35QH0c47xDhg<}%x7J3G89n|Fv&knj!D?1$7e&G_*=7o6- zLh2%(Py794+JeXLtmDGEb-b{DM^{?#k)ukH6;?MaL7~OY%iy1D>2@fhG^fyfLQdgt zKcDam2(@Wpv_6d$W`M#&pir&YkJPBaV(T`#crt^ReyF#prvnuVI)xq&+BEp!Mkof0 z2{>VGRhGi#J_=N7TbH70$twVbYqxDHr*SXRW{4Ngt5C|^>2mDc4FO=NNv`XBE>>e~3|DyV-P^9?XYufHa{Id1tEK|vee zo(T|fw!H1qOE+Cyxpw2WZJamgy1lR7bjw|L-EtFj%U#gDcRcdSGxxsaiP52npfKI> z9WYbqXR{QLX+^8OYW%ko{%TAu)F=uQOvIXY_?v&v~^Qk zI2H{EjYgRi{v{yVQcbH}}R-0>Fl%qt&%|Nb+3ro_1kmwDL~{$>=H?J#zD5|#7G zF*^qH9CoXULaS8ozg5eYB31k$9WKKRYi+pAhCh)aHIwLB zo0+1*30s?AEV?dVUzRWT!ZU&pYB6e6HHNGZ5VC$@95}|io3KyQ#VEu{9u~T`b@T#5 z%yu+XRQm&7PZ;NV*|U?=ppa^gElE-Nv1W5ARIqw&<)*zi-FM%8_ulv5Bk#OVUijc! z55fuY^$a5NU9DA8iM(`LX!uzHp@Tm|$BZusy_*z=X!<7Ss)lXZTFJQdmKJrB_e7a?uuSx---EK)U?0-TI z;V-`&`<*VplNB}?3_r>a_I|X=qA{Jn)Dnw!Q;NbT^g`$00C|Ic=bq-4#(V2CV}*L3 zx?@cg9zBe1HPbYvyQa}KoWUJLOmR`idYDd=XM3^R-$x7Aov4*PbQjb=uFEQY^IDWA z2*{EdDjvRwb~PT;zjnv{_fvjI!aLLb*WZ8tj=hh~!3!a&O=Gia(n2kTsDe-Yz-MSI z22<2vm^m(HiPhE!2<_Er12QNCfuU*?C6?qMm%;E_XO3ZrZpWWg4t*&o zw5Gx_JAes^WnCk=`YnvY3}%H`;;N<49-G`fIy%`sJCKJEhN(C z?Q?Mo+YTjYV~r!4rEnRC$$1(I2}C)Epm6>9o0u+@YtyEkH&;|C!wiL{loK=@LP@ewhQqn}Bb^Vt{aDG$`udDf*kRN} zWOMb{_J`=7(0qmhPTkE<_06I~bu_JwL~j_j;;dI$xDA}g`-tJ<1{Y6%2UvyWOfyvHZEytea`sENir#Q~; zpG=+9TA}blvrLEN-NN++H{H;AsCn0e7jHZ}GZe0HnvI&}AhDy!P9A!^eYA&8@FpZP z#35dPaDgcFj^ld#Fv9Z`Owc#m(J|=5BXAqCPh(6A;iA=vP|^$QF2JSb%O5CT&2>3` zLFHu+tlovY6<&X`TWBW=&5K(hlw)PDa6+zk&Vts?B`+qMVkf13P0XT73(ayh%PDN% zpwE3^>)D$x-re#>W~^|f-=e9JO|c`z^vL+fw~xf9*#REJDI6NYCPO;J^ZLi8-0mrd z9}7Z)tsS!-+z-u8Gn_7kTNa~mOL_TolFIQp`CV!07dOBD=6kok;|(sP(RWO{?YzIWSgw_W||qhH+rjUAVe?Y0KH)tr_>t6A=Zzs#P+bXeLIg6<5P zf&Ig(qEG>0PC&k^tGIZ5Zf?=7C5^=+57eLC+`MP&n)B;ds9^zLLQJUbLU5t+g`n^azyDfWQ0Bu591OCg!$`0Eda z6`Cz(s|-RYA-BT)S2pIp@zQnr`tvT?TC!z#<1T&oqN>GSj=o%DWx&L4zTGmJjB`>7Mk-4Z_GuYM|bmG>N+aGn)-Wpd}m(`h2xL!-) z8#rjjD^!B78}E7awyQzmr+2>of*lx20T}~?HR$cx1&fBHY;p(C#+9cNPv zHKtgDj6pysypY#Cij{GB?T_V-?0kCU<~5b|Tl6atlDBTW@RG;h`QYHI^`}MQtJ_mg zm{1^Sw$MxLXz_W)5T?svhlN*eA0ZCuF6h9wNebPlO(Nme%bLP&0En?`pL?vzpFKPI zm%THOimD95IO84e6=q_F3kWzYBLsrZP;5dM10qPB5yMCzY|=7_lL1YFDbaxr0!Pdi zDLS-SRwpW)N}9C73M(vHY#~}aWgBJEe(JBz>GXVeow)-@%b)X524tPGU(dUI@ArOl zUF8}-9feVX9cB^=<2>bpjvqfVG*IbujE|4oTgNvJtoyd?3Q*`hPXlMn2AP0S-oNFs z5h*ZmzlPV|z_-MZdtUyQ@92%%~*3=Y_k55dD6P3Pw50+)&*`A?Dkq-hP?}N63D zPq}@kl29FE1z{bc^dF)VLVGnt?6Q!czeF>96F)1%BO!zo3g?Ns$7{CGU}DUjT+`SG zUA@O#V;vSP#kiS-(9W(14b9M^yK%G;Kg4Fz^o;Crtn^tMz*BR0#hW8JIk<4RdUYnR z2Do8DWH9b*KXm^KSm`QL2;K1n!SJqq*^95(k2g>P{PLAAh2qIcimF6byf9M_3SHqu zQZVjw9zHZqwBv^#CdMbu@7eWJVA&OmXM|Ah7M5lIEIMIe&>js@FHVM~^<6KJ73xYX z_M}h&{QYSTk!hM@*?`os8`kviJP;-p$TUSo8)=P}k@zCLM7NoXnl4JW#VN&!4~4py z-z@=!yvW7F)eU^Uk`N!3xc$JbPwz%3mMQ%F^UvRUaW@a*Zmd#yI>4{#1ol)L{-^5} zdQ+I3jHyEb!Xro44&uOp|yG@ z(+kEuZt1Vsy?DM(NeV>@Ulbv1XlPiCm@H(?u)~t-Ek_@``{pNbZX!?!2;Y2@=MeAi zkOd9_e$Aw5C{#nJP#A^DS3oEl;gKUlLwzgy`s_|eaq-5Dz;N>XLldA7r@ga52>#{? ze?T}UdQC&5{UjStlKmx9m@P1?7m7^(1k6@bN*yd==HpF_IAv0Q{*cgM+&1pSC zu-RxLf7&b?BduW=H_LMT&neP~V(#Np%QHLAspWI?z;p+ z0Ym7mCmz55p$Bff)4!)?CW#0tX`uq44~8fUQ^Fy=z#yXWKzVI#;lNN|4caue@r@`@ z4vnAxW!ctw(;wf>_}=lO;{Iri4`#o`Gk8ZC9?DZgsHSkAQk=vxY}A3qw!}vtIa0L2 z92ae%InQGgt(MgqXcQ+LZIBt$QVAv_XrzR1X(=rmqoFnKCGyEh*?b?NILT2c+(v$( zBnrXdVE>+`2XDXmj?X`rAiS4w`0noe@4tDse>cNSlIIvyCnqWhrQ#$d84wByAu_^R zhr?c4zIMRswAI(wJJGprZ5==RWXM){-E0i1DV*1=*FhuuGh~n)9S-JkY9Efwj18Rb6?$? z0)=%?;bYlT`|tAKJDD9rg~9}RtZO<7BjQn(bixP`j;&7np`No}8X8)=b^x|mTMH6b z6obMa1GjF~%?cqP^`>y|77K;tSYEg7NY7fwKVVC)obYFXsNNMU3N76epp z=<0s-limC3>PS4UgZKqL{=9H@DRb5{K$wZ&O(r%0Wr^4&9H^;kx$f+#J`$O&*4jQ$ zSmUsd=dA;U7x+@Be(zYVW&7^=WS=*MIQCN%vV1wBG+N#vN@jSU`X$;F3qECB3$E^1 zkUBVcpf|ZlA#64n`F=LXa>CDbD`Q=JW$dk|J`%fyP=iDvL>w^^;!!^D=`Xg&R8ER+?U*rx;{@QKMa8s*4MWlJXl{(M!UwFcfIuO1zQ7Wrx5p!y`?Z%XY9qiCAr+~Mm}atv;U(ac$# zGS=lIoScm1Kq7?#h9v@qd|Hi&EIcH5hRESP`?HsU!l(Qc&J{vX=xc^jfy}z&QqSX? zgrqhpw>o;JF73;A7UwlrwLs@ zI1x`yIF8*M9-q|tTv|tUM^vm{OWM=s9Mm727G^hhojYAx_~vL1Bta-AhTt%ux_Ypr zB)&x85Wk|)B8PQn@z1iI<)8SULp(+}0e`+BS-gJ-C)_OfUm0>o!rE>-Xv=D`+wG;L>Fah)eYVw? z!obc@<&2*|TRh_q1U zgc5}w(xF23l<=Upmy`!47!L}W{z#J%EtYy(($@XjCLlR?wG5GbfUOC!MBn znRE;}IZ+ia-O|^b&y+QK)=#}-&S6y)iWm+8I}tly`qU`83vq7Z#7Iq5XCey27z_q?%@^Y-ewGvm1U zsN`;rbObe$z#!GhL>N83!Nf+ggwFM0$_o<;h2m#HXZ?dz<1O)ID zid=$2#N`0LW@AvMP*@WTDHIY2FS_U=(6^})!eBKH>&CNQ>MOURO;ZEm%w&bFIIn%j zmnRXAFSsC3x^l7K2Nf8E*=oSNCZW@fl6`cJyyM z8l`QFWjWf+Qrwx5)SCGDHa&pqv z2PdqzIcjRGP<~-?-j3V8JOK!OD`e1y%7V0+u?rI{2I*8zsHRW{Wvdtj&Z@LjLpPq3|mco5T82C?|%4$O#FC0*BQCgapG5d?&!KxlpLA z?gxYT4P6>@ZaD}fhF4o_Egu-LO@YBvFAbHG?-k;sHXq5MV`KZJUw&FfoY0p-PwOjN zy8Pa3DM*J%@7k5ADGVu7L8uDI&?1!=au(JcOzFIEEA_6eG>RQf`kWuKc9+i`^SKL%W7|FAmWyUi{`5D|lg! zib63Y4-N_pLee8`yrLmLh5w2|zDtwbxCxZ4fB+m+*|+QD)TuuBVvVB)vJW1d291i_n1L4iTb%P_HpFr6{Y!*;?TVUQX^bwIA8R9+Z;o|!YzY=nhMw2WOD z-8JIMxy-`38Dnb0BO3xnw-0x_M9?(o&oJQ>XY_zk8y-)SIj^hD@}4Ae|9J8In~!fQ zbU4e8TefG1%zydaL3ZYdjNb!5;b3(?J^&zs@Rlv$5T|)zps+tWz^_>)MPyG3g@Bv} z2(5*M0)m*E$wz&BvI;{C`8ALgK55-#%`eV-^2;v>gr}tthA0g%WY=Nz2}Ay##fivX zS%?}!wHNMIUwlf^ySGFzV}ovv;!GT69@SfhueyAw+hWmc;@Qs5j(E3W8!3+E77e)- zpf`X$W$s^-8YAC1;bZV!MS1BHQ1d3&aM1jh??5=7B_fw7UMRXDFzi597)IRCPvM-G z`-4G9-X|Q}xC!J5BGn0Is%_(T^lJ!_R)Qb|3Y%|xI|C4^DGc6~`{RmXpS~EG2-C z!u*ybqlUxPP+pL^BaNRR-Z`NelM!@oZjydZ^nBgI`57mH-^4^#9xl2%`o@2H>Q?-#jQxh!ksNgk&N) zH3Wjf6*E7Dr<1Q0iV&tGtl5NKwP1yn?0p|kzLEB{Z(1llb*H*uqJj`+=y7g`t9az`ry!kIy4j}kLMkfUrKh>B8!j(z z5vyLAkum;HH#Io(Q?-9Gawq;&(XV5-3H9U%Hj&?-tIl+ch=$!w-`XI3)Su z!4qHR)eap$Gd>dx=BOx?4)FvEi3V|+A{;0Cy>RX|vL}ULFgz}F%_hkRAq3<~XQ}Nl z*_Y|8LGK3NwboXWgOeR^2T2t2+qWpog0@GWzX$zk-`PSngh&g07J+1l5Gn;SZkym@ zC=R6s3NtvB7n(2Ij^dY!(_1#D248*g@$QlBjYp_67sTRtgeA7KQXwG>I}S*ynTg&)gs_OcXg-=%&CG^*F?M1c3u_FpQD78 zBwjr~5c7sug`jD?Af zBHu8(IC-pVp6Eq;o)n(pr*KB$ z@|fa<0)z4KabZi6igI&NoA4qe)*=Urr<1JkzL{>J z)8<8O@7=j?8Jti>VVMtw%Y7--dDlGMDl2qf9k;Weri;3g%`_9&8`ju0oY1yGvN!|H zaU=vQ#R(V5@EdBBTc9-lwEGdWGS)Tk#Q4O@l@lu`n%j4@6E~c&J6lgpo!#Q7#Hi)a zTG#5;Q4ydpWg9OMJLLpQ!BAet65!X&QXquz%N7u}AgO3gQEpP>Ch$jsG6>ACaa8R} zcVeo#C9AX)c4!BN^<>7?Vat0X5EP1O;q0QK+unQrp8ZP!q4#^oI&UwW=PlL1Y{nLq z7gClm%OGt@Zo053%97F%Zq^#3diAkXCe6tctFqFY^GZvL;f6N;5^`y2^QT*-h}@=`gBW(v_Tl$; z@52bJ*e&$F{EixAb_(~izRNQqjxu#tTgEOPIp(@hpIqS%k1^10$_)A#d2yVUZ0?G) zM9>~%)|8$~Fygb^BzaHL;`#fZ$tx`eg)J>DfY9k6HCgNLr>0gF*9?#iDUF?o$X*l* z_s1dQ^H@oTysS$`y8RG-Sl z$B+>0X4%yqqYMmdz^rvAZ32vnl49ktF5SW}Ue7Cb*vP*zAasyh4W3>I3@aj36aqnB z36P9ouv8`cDV)s-d35b|C~D0CDzH)riQae+wTdzybKnoaH+#u@{D+JBx}A*y-VUX>SeJNG1Vbnqye zg8*#vhw<-^bsXJ!9z!AAvW$VI+-{au8Zwk6k}=V8>zbmt4kK3oTdrc2v99cE^Ga=k z9GECST#53`c?cB33k3?-CzH%jq_Cj@r|z>*h)Cn7@H7kp!NjCoFep(7FBAhZMhk7W z;wrdcRm-84maLWn5|a4>rMS3w#m2n$JjDwG6E*)u;A2tKd(ZFQpRJoFAbTwM3Rm@M zlEZeo66jH6gvon2TAQNfsuNOrySk6=y)gc(5sIua%rqG^T9!5{+yh23XDz}ASvuu^ zj>QZ2wdaxl&stH1AspBC;l#+vQ+U1ISxG|j@gwV_auAcr?m{dU_JvT%3`G+CnqC5e z(a{SMH|)tJ&u=vZWE^3|^1WY(>X!IXpB ztTk!H5KR*&3^%egzUY)!3CGP}_-%VLe7~iq06$dOorejA^*zW7&u^*k1BGNsKqmsS zvQJ8+kk1Mw`6-+mf?zOl!-g&7;q4+tczJtCBTpd$GNLgmV=KoD_0^h1cjwM zgoMKO+awBK)BJy;sc=%f+_wxUsty7_k*$#OfRO1ZqB;`{F%;zvjsc4DD1$zV+a7+= zO_%H)J43qZloA6--SWb9BV|OlurXA*5WnyQW~|c-dPsrXO5{Xh*m@mmd+ ze2~dBl0FT-=l$4@_LKPwKW$DgC`iA)r=SJR8hiagP*{Ixl2CYki=&pfA+#9?ijw_M zE|TLV3L!A)$8cH(A(6twbATZc@FPk~N?Vee3ku$7VMDb#ZWY-*HTA^@9vH) zNwjD;V`_nk%`ws(r)8DP#~j1P^OFr)X|k28HXuRV@V=BZGU!>q-JA}s>S?i)cP5>+ z__4KT>eo|Kljj%MoQDT^4A)zHD1@e`&<~+X(u@ZvgcJ&i&PhuHf=g0U8?6|q5g~*C z;q?T<^mX{LfQN7+1PV89eCC-%m}R-(z>wpg_R^%G$U&Qs}qB+1fMFk{Ln*g=y!cEeTBx z4NbjFgs@nI5XP`-6^xL4AS>Lsu^1mbitSH6bFbI&U1Y>p2fq92o3B6qpyRvmKGc3S zq8X#%M*oYz5=Tke6UXMAdt=*hZ&O!PEamaS2~do2$M;^cesrX*aC5ks+TunnY|%E5 z%P6$WqR^&ch2C`-B`=R#xG>}Gm1qSZD#Q56Rx&4a=?#`EEo@eH0w=tY+-H_=uzA!1lk3@kk3P^WW^9 zYfw~W7{@uD?HmOPJb*5@Wg)VqwhJwVEfrBT0tTdrf`UORhC+Zs3N-_cpi@i}6J4gO zGlml%YMD{7Y;+vLKz2r$#IguRArz z?3unaYR#ifQ(jndvZM;jk~8Wq{{adqB(JQ>0feCNh)btX7cO$E6dELY>ysHE1cneW zWV#Dlym)(TQ`RO8LY5V>BngU7M_R}zRGsilL&MRQjuC>;FG%2u`DxHJajfgwps@a$ zS@69!F)?PFn0VKHEvkR4|0j2Z81lbh^gKAp`q3r(X33Hm^sG|RoxlIwc5`dU!!b_5 z6GnU@hJ?2I-n#FlPq+8Do{nH&bA^Y~x+D*e)t9*Xg+0=jmV{Gew5-u9Bw@Js)t~Ux zygE4p3OiH^4|93C7$)+@wxDgQMj zL$d0HO;)??+BD|6r!>4%ayqP8!Fvzf^~yKztvMhIlY}Orvv#j*Am8l{-OoT|q1$D* zu9xWQr~W%k&-*QWq#Lsg8L6OI6g>9r~`y#gSqLzFqfLvEG?vPOcWj^3jbxQ%j_!% zWA)NR&$Wqby~o_+&{=y5w{Poc-*orrtKn5^#YtjO-Ft*>Xb ziL3-!4j=Je2we&dXa91>J@l6h6}6f12nJ2RpbYc6NM`PAt*cv3ehcm@{iwv zA;zs&athgldA~|@P)z0mgc^mAP9c|&cwtgxfypq>^^RfH_}bajdS0~6-)iLw6hV`CG?#=DO7nkV-DG;!?vfD1}b z&#coz{sGrbcKS&9k$9kltXP*=6cOzj6A!`Cv?SC2#s>C4vUwxSz;A*uh;osbIh9cukMn#0 zh+s^`37Um8*i{7S6n2~*rW3p$W--Pk3qJj0j+pW9Ck8JJ&dv%=lLuT6Z9kNQO~RsV zQ%n*Lk;5hJ=DR36abzbuMR`_U`(c>hokK~fk0Tyqv^;~GVO4qBnbAK`A>SXLS6GtM z&dl%#ZlJ7Q=16pSDg0j%8D+BWhVVh6khGjmkRQjfNv77XCJrG3LNz8IMTva+B266AMI4Q$N{6(Tn}?_*gM z=J(+7R2*Jn%9ZB2;Dqbeoy>@Dyu`YN@tKAfwqw`)1~cV_Qz zkbAKA(>;e4D^8J`f93$WGg7;KOk;%hh;WGvQn;S{qxG-v3tJdAQoN!N#Tgs5#*B3d z)|F-ag8CQ`?n+KNpHY?5u0`b4t6hoHQy8Vm$E&IRLe&hpC?vD6%+o?TyvrmCS*H-n z<-NkR8lA#3%nCu_>C*@K9ng8vq{aS{PgZ^KyVCC6R;!49;ayMI2f8-@jDJlM@**>NMU_ z8>z1n4h#Ei4+vxwR>23~UiUUp_~f6U@E2O^-Q1Y8VheqdI7FQsYvx7rzeQv(h0|k5 zcE~`~M17i|peInARAIU`0n*b#U`R*=cur%vs|)y}vVrot!K;>Cfg4^SgA0 zQ}{UD`X}75u8dLm^VMH2=hkFU%}oBN`r(Eq2MT2zqD-dHke9+~5<~qwnZ1z^kb^86 z(JjnKrMo7qIN=DY6ryfc3*@bUkOFe|CEC>$Da?yJ2VBKYvnWOG8$RPYu*Ma5`|VMR zV)aj1)3dpLFj9FUMid~~WVbmJ8FfsGpwQA*fGem{0>ERn9*~3X3wy9Hl~IUj3$Z=w)T&q(0>Gdp zF~C?EhiQK^el6PE>dA>!?<`h_g^g4agG3=aHhH@p9Oj(7jB}IoRVAAq%Ru2wLfvu? zD9yp(^@iZ76fX5rI3tDE$B=V)S2or$6fy`CKw%p5LQY{)jYc6KWuV%m?;%ilLYN0l zN(=W{d!&~-UCuY2qScxHzO8#5E44(JCz zkA{U^L_mg69z&RL1%nu>x&P;1&(r<8_9~3pq~dYVbP<;Iao~q3R$%B^pnyVKjF-Y2 zooAry@Fcu2p-9Gl8boAHVZ3pGhiQK{>!0M&Ed+(5XZ=8-zc4Q{(n2mt@!t^o@u7jI z+=&AiAVei12jbFur*ZpObo#u&o@k!;Ou?_)_#Mvhi&02m6W&2|{u_EI}!+ z;?+s|<$~`pWqr@vZ&%@GQWFx;(S`_B9O(HwycEt>lZ-GL2=W(Xg|Um-g%i5|$%_+S zB4!}XMa z7XoBl2GBl7a)_L2r`)IfUk}>$mB@B5dKsq*VS-5RV{-R^kR8T}Mt%u4>Ogs)7ezZJ~B{Dq*Omh+A?} z9EqM35{8f`hh7RN6KG%v{&>%tKqNJ7$BmOMoI>0PXE#4JCj^Ba=XV5Q$LXuX3)mgd z`O!bSg)z8ZXKqp?S6}O)op#sGK=8RN#8R>J1woS4LPS>NaCED!k_H~-hc5PTWZuES zM`@=^Z(oN!bT$duNL?}-0yW8WBRMaloZ2;cxfyTc$gTv>*Z_q*U%}56B4)!3r=>7> zX|R{VDHM824ajtkOe9*Gp2(rcD^?MP$q*pqhbO?025K5OhDnIWn5JnPy-IzWg-e8a zk;%gg#ceUw(vdZtqAZC{|MkyCt+f<)?d0SEEV~$qxdz?!q(mxCWUKzU08mk1ze~SD zs&?vQU10}LW7eN;{}Y9{7@rK(s(@j6bIq33Xb`T$PVYjVH8V2=g)qZ7uNVF=4x>4T zh|C!63W`qIgr`eXmGc!{$O{w53mJ!LB%&~rT|;ICa`#mhkPphjyh!rQ3Z04~r)*xb z{eY`8s?)B}Y~fNX!Y$H0{q$Jw6r&Oih$S&9kctygKhX=JhcJeolZ+*5NRPqL763oG+B6h^y)=6)iqDuLU~e!Y<2mI&R6!iPS`E=k5_d1 zM2Z2p5h`1EV@;Q~I8zD$T*018x=d(yXL%nEUsuS22N3#TE_817;(mS_?yPS`U*VTEYT zk{8wyhw1$Iq@bX&kq2cG&k9F}NBFS+{AluKkR=;ykGP~rf0JakR8;tXbGTX#uH6?$ zyvj}~QF7vilg2L1JN=!W4@Wk2MmlU%N7rwb^k;M5eYT+{Ga)^l|7k%X+z`9FJ}>z^ z_i`S!2dS0Hs~7S@`Z+B2T9IGiV|bKd*n--GCK(=x);h(5zVsI^+$0%kArod>l|%Q4a#r!PF+t8w1*R6&8RX91 zE_q;Ui+GwMv7~)YC9>V4heK6L?Wg(@*RT&pX=hwbV`DBqFhWd*8It40=dLU-ga|^O z6;eb7h4@w#=9iYfvdm$%M@HJQO^#hYnGB+r!fDgOP^5zvU}%ZnUa@H%3S@ew39OKv zo#0=*mJ}8=7Qi9!18lu-;FE>J)GRcH{RajHeZ<29f@~9RhD=kJSwnL0^6IXvsKoVb|tGA=Eb9f zsC{Qxg`5yi6haw=Ilyp#tKDulW6Ln}LNA5W0cdbY2Pa%K=t>20)+SgXZ4jpKENT;U zYUoNlSs{d&48aczI`E+b5MCXA2n#fgw6NcO*zIt4jSUVez9wuXl0{)IB~M*u4Vj>D zlc<=pd;F37>3W*Fg-Vq16{qOLV;VuCmJT|dOX+j_CwukcWTY~QsfPZzxw%h1xnsvJ z$_?xCzCbxb2PVW|CO+U(zTA+Eam8a5`NgHB^>5g4Nj}6&;cR?Ri^p2eFm6*01!RJd z<==?LEF@FUTE`H=%W+d+^)-f!=S&4v+11FLeq%QFGg~#`|Ol zxdaFlqI*r1i2gj<7mxr(8oOzjqwbdUCJtVneL;T+u6M!8+ z1cl5D@ng^l5rvy_&H%#$)uCn}2n@Xx-gr2U);Uz;aS4@xRX~t1Bp(EXI)xOGo12?E z3h4GH70ADRMi4Gg47UPulIXkF?H)UPcwnIa+ix9X1M8jATu~@bwn9jQ&`@B2h;E_B z`JFR70>{hFrhgc#fO#C|)vcX^s^|~f*v{^xnwm5YAz{c2@m12UUCjOx@K#68$UhK; zk3YVy2ow^B%j_YLH!r-Q?S;f3z3bBqO=~Ogm@(Slj7}^i;8Y;9DOaK}7jKOm!e+qO zataU*UtB<5_|A2^g-*x2y<-D|J^h3I{XO5hyL#74b5op53CLX6qqfuJ6X3Z9(H0Vp z-=IT>Y3!#ZL44_9eTnOrM^!7VNvCj35E_2C3t}9q0+7rOfg#-%Z73@RhsDLk8-u-G zIJ1x%8o~Hh4a3;Diq$zej6&+vl(Pc4jxPs6UPu@cg)Pm^_()C&3O@jZ({>9bB}R@J zboUPo4jdj+{(sM!7`$-`5pLxOvTby75W)*pGc@c_ zrBK6=UbUc{ipK)BT z_+zk>Ib~$F{(Fb^G!$hT6dGPg+QC4KCnXbu_(*=3M=DyeqN-zLaiQPuIb zH5PTz-%2x42nIXggk*(R_=CsZl7)E@rG+yF9)Y)_DYeKr|d>rr8F4Vj* zmz+?|4k2Es)g+T65{pO=>ucG0L7cXAAGIDU_Y%$_8NIcPMvw10;@%&B| zoN(f zWOyLuh9s53qN8ocyZeU84WWybDu?w!HX9N{8t(E^sL3GEu)>r(03qf#VTC8DPs1oo zO=TwpJTU}-Oa;xk1sa4`FLDT9JRk}4B9pp0^X5?~Vn!qBjEW&BG&+WOF+gM(CTkcb zKs0iBrnGENTld-FA>t5Wd1w#E@I-BJ3ZR~HOBwWV9JgTuoNzU(khQcBwMiz# zC``upoKu)iAsJrSLA}DWzrV=zNVG6NlKwebcoQhJbTmL5!Ujg+4kIztcw`i&aSEY2 zg0Lp3=uCe8*5a}~mEC87A(bfysZ3!c7S{&*$L#h-WL+A9L?K_rphDPA5Yoz0H7#73 zN)#s4Q4z=rOJ+bqez!S!BBLv~W5U1W0ra;oSGG?_m7)m zIfO_G$qI==twJUW`6vU@aRwmXFik^h867?Q2&WK1`IZMi{Q4Vg8@kDonG@bPh4O$f zOJ##Xh(XxEBl1)VpH%1E2*Nt`1O@G#{LNdpZY?b)J3QV84%PH<56AFCy#?j6k5`lO zLJncd2JVDfeay2$4q*a^kYBzd1|iIIkxq?{j&KMy67lx@`{xeq3%+?>o9V4^E>sE% zkro0&u*kd+{HYYOcP>sLL0HFP1ugnc-L&!0n$4x~zRI@Bw&Q(TdU$XM7&5I{X7lli z$(U?qA7O-49%C(T`#J~^>a_`{Fqu=>n1-1`mBJQS;i=Ip3v>#3jq>6xw=KNww&(7K zE!GEFZvu;^>8)@sbete0H9!Cj6mkfS!(>ije7s6w0xM8JVg9y?ijCW{*W@E6qgL+j zBMy0b*hhXys`c@TPq=D6NN-JXoI+liP+>v>ghU~K2qP#=Bk_O?b%4TxQ@H+l<+Dc? z=m^q-pB63T^7He1;IntWd~}~8%&DZC?uAxR*q~9^NECAKGomrqj$N7=k^o_HQqi_; zYmgYO$(erc*UgMHbJ90cJW<=Aax1>p&E`0GgxWDYm=me zWKN;xgbmvEzM1mqtE#hI`^|i|)MhP6E+S*P;*J`UW%bb6A`hUMSrR3O80# zUZ_IYND-Nijwe${7;*}MAaCi{G&~k}?;XoGW^dkFT)K5LtCm^Q<`OU@4llLsc?pi_ zz>F(7Z{6gF@Q=^&ZKV9&}#n`xjS zBbCBveHW-lQCe;83crSX;Q+yP`!to z$;_~ZL>M-zX4ukvsu>WbwRE5)L^;^j)`pU>t*q>uFW*1-;B8=W0b}nrypZt1^vIiE zK3W|r&c*e+n@6Fk4;1oq6QZ!7K&5bMM1~n^^Idi9jQz}7_F&(&%b%#oLVAcQ1vLuH zuM+Ws7bzc%9IveO@d`4^0%20)&i0W`#J`XERO)h0V~ZQ}_>!3AiD( zB`Pc1+A3*=J)M^ANlOHb0=CO#s4$mdNTvEr;bzy1+0jrK+j7x0|3mOp&t0qMlXDZ~yeu_e+WYRYzeq8AW5l zG4VJwtZ_o8khMEWu3!uMPa{<(nzMcm2)})A-+&;z3;2x0`QhPR_oIRP=N^Z}x6h@C z7zl*L2A#L()7QuUMn4Ax|KkdI?3;vaBC?F| zVf9C`LgeuAhy{a?NGm@~xdP+9YO#{c=eoM8)v4a8YPD7!?3Q)_;>6OLs%7iiB>tCE zNP}jhE@9aY1q$yGg_npzBmf=5ha(IHAvVa*O;pIcM4c~^O2lS);skm5K!1PFjvWhv zvH$VU-k4>d*Mk+G4`>6!MxFcihuf#m|C0#)_i5p$FF@hG3j`s*?sE#r@lco7DLgp` z3a<(jUi|PS`AV^?t5nQaa#OuhcXw}%md!x_4i5LTw(Qk%Vyi2@|F~i)p_e6wV5m(H z5VD6UR(P#(i0ZwNx&$d8&x0E!;PUc3SAaM-cfU0E5$y;Aaff%#dc@=0Iz=>vi`!yQ zTXa0&@OM95pPWAWpg&?n2yUv7|5Xa#ePNy&87mBFu!ZFM+fKssQ6Oxf@Pb;tkgp^Q z1!8ikP%I4&!l8b5^$sm@*)_aO+va}?6JhaK(byUEV2pf}1_s%d?+PfC+z8zX9}X0% zMf2RZJeHT{Nd&DhA^*k_Kf(>k34!r0@i|On-m$Q-(2F>Yah!bo^H<)!@CYiGHazjL zP(j0`UtC9oUL5Ph7k{s3{oi&A&p+aud7G)x@7oZO>qD{5x;a@J+*)2pT)wlEDxhLf zhg?^+>*kxgu)-bm4F`w_11gxUy_(qSikvXHv0OrF>2%Rt_$C0B|3BHLBCO)=oeoH7AdZ$L~cRiU@5(bMo#3_G! ziSndM?{EhY_6!g#Y~*WoEwSZg6yk(YZM*^DX$T0-3;i39%nTjF3qm}$u|hE9&buF1 zu|mu+kcj!IWjL`5E7ae7r9zCC2*#dnQgv%#7M(p4WwaI^3oUEVx&HRgd*#;_Dp(t$Z6AC{Wp(wmKqEHobHkB*n z3xym`SjrW1x8GjG4JngrSmMB4nzT{QJn?_O(1sVhLlcVQV1tgKLkNa|7{_F}p)&}D zvceyJ_~FO3)#WAJa4&sAfjBX5_3{K)1ZCAGww|g(&p^+P-fC%jx?C<7iX=?MmiE?@ zwjJA)o*5he=%p8C+o)U=p%2Cv;ZfpB7J1=)Z+t#^e9YHD9*_UawD66izFA^@(tlm_ zoG5H;6be5*6_9P7L3(yyS0!04WV5MaF8L=q4IL2 zg&a}O0>xvoU|;9MO{eMh&em<)jyrB!Q#vy}_R(iAynV`H?uu@SPGOr9IjdPQ+vw;J z82oPo@}YZ9{$^=~Rq~Dg{29-k5h>~uI)V}uf}v`YXYaf@DFzFvWIjnmR%|Z8U`~gw zYHznnwZZ;f^GoxIt*np}CV?<=LZ9#7DI;_%cQnCJag9WLxx@Y;kdy?3g_Ezd1Swxf$Dev4D7LnwXGZ51 zKYVTW?lz&Qt|G?(q11NRd2c_zK9)ZE!2g)S-Dioy7jeS?VN9VqG)|yF=oorLR=4oZ zd^TH2rYb`?q3jSh1Vj*&9kPzXlHLxY1hFBpm1Pj(gi%fy>f<;ZpLWqj7pXLXLQ@=% zNs=%J+ZyS|Z@&3j5MqSE3K1{@A?yJlsi2&YlU2wnPE4Y4YPv6-?P%{b5Ib4`@%ZDn zZ985pp55G@PLGVuz5e{3Q`#=4h_=BTJn>*r7?`~K-Pb;UeER$b2>)FQXW9;XZAlQm z=MW0RxM%IL*dY{!Ofh)Vn$iCrAgpAwq&rk5$wH1CF)tExc%qi{Y$at767NcEVKtv1P(ap(AU}NnJrI%;s_8%~hy`l3#1>AdOqgf_zMg)B6S8K| z6DX{bCgsSGaE4NOXm@*OXJ>0CqJ7@le0(z;Zaek(Q%`MX`;6P3qKf|fg?CSHqjFJ( zXwf+qK)(IT`uNC+{|SYkwYANz&A*2l88o>Oia#M3dm%dWg6?#hSUi-?a;W4>#R3fG zijasGYE`dh5Yj&FPHbU8VSQZ^Egi=Y$_eW*yt+Osd>U&2!XIJKA#@XT0C`McgqR^x zT}*}SS};u^=*yu}t_$T-E#mM5)Y{pSZSRCcbmFPU9Jj5x^@MGzTt=Q5fBelC-aW-x zM3|u~*y4RJf4=>hmIMFom6Nu%^S;0gox)FI3Li4zg!K%b1BH@GYXrR5P4yO4N7rD4sGkuvknlx_$3T}@g)$hs4Cv8 z6%qr`nuGMHtubTe@eW%uuy|}zuP~P@mosI}KK1pDWYPp?)Y{tGsnFa`Y*v~m8k<|e z^3>x_O58RwHo5ru8}FX(m5Wu-p__wrI`@sw=f;{3{r4!GJ)rHBFIHYef)EO0A2hiY zN*|!dM4|3V=BASxR+y(YvDWp_P^D0?Mde&2nJZ~2WvYtA;TFyd%?b0K6FP&j6>cC% zaf0A5?$g+qomIyxFaG$AF}Sw8f)fftN)b6B&jBqM4=DNW;nHW`sZC5USfyt@Gc%nl zXEG_oF*7pKmtik=1CczDZNoY`n=LpSh&W~EvD=P6ZrceheKTW|>(5)|0(+ssEd~Km zFAqOu_W94oGylp>F72lr(RT7T%PWCGo(^FIpdB1SlP8AK1=n{Fi?i}U9FTCF9~$CZ zsX(H25Qzm{HF}5DE$fBetM--SUs5P5L~%gI3mYl45r%J93_?0I-XP?AK<_dUgDnpG zntea=VB8CTacxp15Ys`!4i&UoT0pT65DCqS$AH+`-jT_)0HQl0JOXEDQ!7ZG+I+&1 zndxW7Kl<#`J?B~Ff`Cv0NWVI4mJ!;S^Z)6}$pM7>uU1!9A_^P!EJV(rQ+Uk>AF$W@ zIlfcPowx5UCp)r3)XB-AyshE^A1Pu|RZ0OA<%guky<3<w)gx6-Ffmt+VV-_<3)CxIWf#{@*H2pzz!;pwI`0yfSITPzVB{QwWAo z$o=qLmF!S5rEX0D@RF3vNpPe(QU5wmwLNyieWsj2w`@==QD?Vx!2VWf+V6lypEIA8npqtTW_ z|KeDeBK=ukvk#P0c#|lMF@(SdFGNsCK)&FLN~&C_V0)6BFFBM9o){KV@I*+&A-AFz zhE=16YIkeQU_R$h-&t^={i&nA310YJ+%0qnV*=|a1jEPf+*vH(g9Y4A zJ}5JUH==XW-YDiw#T=g(x1JXsX|i2fH&f^kI)$+hMzu*a#qc5!DkWT7TNZ>`vb$@q zmBsf1Ay0~8bHc&iNJgLcsx2N1LZ~DhDIAMHojDZbzF-77tAmWHZ zO(=q%qP3IQDiS-=l-upcp0w?RrgR^b%j>NFku4s~*kXVX7(>7NygjchPX3uYqMz|U z`28|9vIS(IXT7x>1p=@Uq)0Nns{4R0PKN7~J4G2Z^SnX1;iEN^C8KTkW!G zhw%0oLKuv#&=?FHHY}UqgbpF$n2eAS&52>gXw)dwppx1$S}7qO!=RjydAb_dSvdlF z@<3ZKQP(!d51t?f%?#<*03x+=Dyx4-i58AJiJ%B=2oh6}8O7>Wd+0NPNOW#bXVS@z z&Xcy$>rVG+LWhpdebioJ|oD>vi{2z6O0faaF-!Vrz!2^%|wk{~>dCZQCU$ALojbryu| zQMg7lraHz7hxhK9pg&`cLJDL_BtjvgDj6JH*wIS>_L7(-JK+a_MNJkWmJu>##34eE z2QLZEEmka{&2^yIU0!8SziYV z<%O5VjY3)B6ETD)yKQ?XO`0LJo8=NDM+}|_ig`FhvPMoMjfpKIAs97iJQ@R`1cNbz zo4qiikbq3L+Uk;J?&w~d-%CZjSDosKd4jS6v5auQh_p^2)5HR?*4tZE90o*q13_iv z1^llFccn5_2uMPpIUv~-N@j`7NjrgOHZ&45gx6_E^fVDT)zwM)O9AN8`$sk@Qd2nh z@o@q^ZCEG6m4+h77PWE7DWRjoyjWDbwDCB3&l~HHH!%|7V_mMJzK?p=Jg`FKgIs|> z4zc(){mV+pO13gIM6*yNDk)TzY^!LMw?aq9f}eG{q3!uo=P_Lt8cx zgm)T*YhSD>Bcw&B`#pCl3Tu4Jwqj6WY)@r|G^+UjEO63BJq>GLs&%m5s@A-6byzkHtqn6`WT01c_jJ_G!A#@5G7{m;( zzJ$_)FbsEK$O93LWr;9H5Vm1M7^G7}qPS)9!UhOqCyXiFxpQZraC1a;K_FztP6z^B0o*DnF7(Vm zodH+|#Y`@j@hdzLvvhw%NnT)y62Uqhafs3x57*+*-_)lH)*W8pq%lYYiAT0KwI^;P zb(AemKK|MBuc^DZp}35`@V>jF%eR+RoFLyRDYin#kR8q5e;|&?m+eeKp)qLZ?9dPw zA`$wuqG!tSg6pl57sfksS(nfSfjlA#(P^6^avYBx!Y^?`4)dBG+&j#UF zAgNbG6_z-nw9p*UVdQP8#UZrGZPeoCDEsRpI+HXu9hrtiu38A@;5-eBak_Z$5dxCu z5&XoOZKTk>kT3mwB0%^)0!2XxhF4r)DC2vkiU8#3&ZzL5%&SS`>nJ(2Me@Rk!Q@7R zCbq&rp%`=ueYVgc^ni>E!WY?Bg=S1`!bIASX<^^9jg|jLbcnpuT_s`&E{EI zI94^XYgkJrN&)H7(4<<7fX36bfElUtq zdWgJbqX3-YO^JvLn91OOoHj^=D3@`UF_ZM-+RAGq^+^4f;4?flqxI?pcM|ANW^h$< z&6(+$nP;KtSYI6r!nj%J6vk%Q=!J^Md*Az#j8NO|(W;(c!7T;thWV~g=A15ueFAgW6t-ckjA2w0+!V-TMdlm%J?TQ4m} zi%Fh1qgd1DDv?#MKq8=lR-{y>4$UKlEA@-NArMvIq;I=T&N;%BYHvZvLs}T`zyI;| z&p+KW%c4tY=^XHlDAa849n>e9Vz7X`2|}arifU0_=nKgF=ptK*12h^6(i+NE$O{Ew zY=qJ;;&JVU8Wc8Sh&K8(0m9`qv}((B!`gAd)=IP=oYsw%3-;*P4~R9n;2^_XipttL zl0&Vgiz!j41rs%E?=gC$0! zAvt0yjEjYLj6_}tJLG>r*ZAWI5F&9nHny-ZJ~=n{(MQ{z#Ut3F`>St_LLN6k;ZNZifINrX2qm+hHE0@brWvp5;shVVlKYW0dIm$bC)?Lyk^j zIi!gh3(NsXWU-jnBFpO)-a(9TgP|-i7SQ=S7RqISxTsx?DI$+Kg3_EM4AJ(*C2qrm zLgW5ZW4@mWyf6a82$9gJE{T^1^QNKaf;1sAz1v=vF}yU!*=RFZ9$qpd;F8FI=3Skfm^}R5sl?wTk2t?x0x#J<| zxE`|mLfr}BF*}slpXCg;q(e9^Y=SUUC!QCEW=$i74&kx}`-eqgwA~E!Y10oCCAgj9 zvZ@kROUwoF#DyyNml2h3E>!`McXStWmGOnD2$V_)%b;l^?l_nT#d1Zs6nGJdh<7Ya zObS9tVcNSlay=(817V)%MYG$k4DZMRV-zV%j8_su(KiZzmJ^PTkB^E&(dRY@gIM9} z>WWb)1SO-8nCt;L#!%l-becxVwK#&*iUCNUZIvI&0C{DF2^Vm=e@A5R&%Hf=@E@vw8${p|FpmK!ie=%chZl^wkvzv)6I4 z!kZS1{psle!UjG0;D!s10^b-Eay99iBPBEl7uVOyb!$_ zD7-O;G{Ng*T*?KhRL};As!@Q@&9RV7?8gc@p&&Gg!P{>x)%9tr4xy@(Mhs&LfpC7A zqC`6pYL=BmP`ugQOu(mV1jz@nK4A!TTzNR=joS4$L!x%70!8W*3(BmXf}*8OzQd#f zEzuSLgh(&ivkx0$VkB$g9El-S0G%4s*1w&^@5~HRL?`48KA2bqY z3`A*^vw5Lqg^Q+jrZ>3h`aM~pGidj{n-!u6!dC-^r}68m`0`(}0BF|2#uP(*#t(UL zK%DmHywDhoAap0J?^wq})|(j&7#f88_Od0MR_yHdCIw|Ublyn#kX0ZAX(fdxd13B9%2RMkdXalxu;6jh7xXY0v)pi4ykfjEdJ^F_-S3B@+p;Esq2#;K)+ zf=ZU?!PzBSl-D7kGZdpNQEH{_);ELuEPK1g{i4i%4i;)I{^wGf|uv9|KwO(;-! zaZF(hp(tcl{T9Z{NrUq?Fg2N=w%zi2q+0+IZc)uNC=rWmwrGc{R;N_2@2ct_E2%aiG4v>G z?Q82@bAm&y=;@7=Mr~lsNQ65tCbJ?8>Z16JBf9j4n_-+R8kd$QN+J2n$PisAIUtHT z^txme7IgwYjL_;6F}S$2xP%pc@kO8z0%6ds@SIy4yzo`YQp3|~N;|YvR8;XL63G%p zVyKZ-JqI7$y$RD~1)4p{tI=s_A+g>!$=!0vJrP8Y&bbv68}Y`=@L$?;!F6 zbK*_Jq&8yXr+-t1!SiX46QbS!dr~P8%n;XxpX*)eNyG2)6LZ!G1vo^vp=cBMN8M@lMXM=i**Y1ig z)hZjW%@I{Q>l8@r%Sa&~RA`ndh7U!e3kD^3!b#SI^yL`y>#Jx9Eh{FkHc)tu+J!NN zaY$xdxK``(Tc6~B`aO-wg7~wdnJX6VtcwVc`{_)LIbm#t1<7lZ+jD`!con(k9C|n& z)FeY}g#)%DCehftggp#Z_d_19@Is5ps!upMY(Q8-IfUUMcqAs{hJ2>RAx#^FVu7gI zglNV835csBvFJe=6Y;Rkwd_!yS1{keQw&TLhwZe#R>dL^B|q}grqGL%oVN?( zZXq1TC32$`YWo=q6RSxELbDq3!T{l5NDKv{E!+vjuE-7TXptAGCUzkGPUM`b$D+F( zxP_acA`nGl05c#c77LPLr&%!j?W|)H=nEBdSc&GsA#?eq8jO_0Wy=IdG<9eZ8$~O5 zxFHlGd>;_~dt0bba72N)^7NVBq-ms37&?SeNWSrgsA=4)!5oytg#eY4_{V=AAWa2j1p$DXD1d$}h09cerFS4OPNmLe^W) z5YLI>@O2tm%X7`v*4D&7*s0L$Jm8SvkXdZu0g$lyoVdpk`M>jH#N0^5B>ZN2VZXq_ zK?+%9bGEj%{yiSp%WCa6Sy>DpuQoQu58e*{SlV1{6K)gYXn@vAZX8h@>MWPWC(b?| zKc@_|+dUSFhDpNcYMW9tRM&LVx-M&%PiB2EUuI9#=W5-~=RB^2H=S%c%<~vJ&i-(f z)!D8kFD%ZSH(7u-PrSc(j5jr|{+8{$9NYZ0eJk+3=6uM3G+UK%0ix&hZ1Qs%JL&MA z1*x03r^DPdt%whqj-7T^ZdO!bo!>3tAEn2M`>*PqcR9&c0$NO0FBLZ*pV}z8hDuai z%xkLU~Kze)e?=Ype1(%c^#vrAoT!As^;62_^1? zZM9UTw@e8#D%7a55wt)`e7*-`obJm<_L|ia(QKyLVUkyhS}b}KYt8i!y$e%dV=LQY z%Z4h-&n|24pp3JQLsigw`J7G0`KVhO+*D)Eu~@f6*;lWtCVj-Flch9$TgR`hEPf#M zCr%`FwOVLsn0IZ^yE>2XpR$cfuis6sZR*Wc_80rYuVmv0mDXumO@gvs6;&0pWkZpQ zd8C82{-j6!|&V`JY4!v_4EW%D{Jk(^%U-8gUG{;Q+=T1vx!u5I%M?D2A7 zDl5d4ULPNH0l{d{-2rRB`{-!QMlw>b%4Pk8Er&9b?E9gs2f;0uHCt)@&vTXx?rZL6 zq$GTvfo!HpG-e|$5FpdXd@-D0h&XFS^urVnD$lxAjB|`c0jOaV(~)PjHB@j<0iJ8a z^YBjSQ{AMi7$yqz$c`f0wIyuRu+r{2yW{jLkC+l zXkL{r#qFuvT~j++S$2nPP1L|*h+%0M**aMMW(WDDYs2y$-Km{X5GyD3G?mHc{24}h zhO-{QgiL!JdU7-jy7H3;Rcph*p2v?hu8CiEHty|K=ee7viK$)~b0VnU&0SQU@puRZ z`N54FI6Uw`i2I%PSkT+X8CK}SJg;f%`` zA(3MiuL+7Yyue)N1cY)I4{h>i8@(EuX*(5eW?=dD{vEex1jg^r;GGWE(qF|kQSup} zU|&t)n;s(8pBrPWt=rr#INqndlHO+)7mWjLwhV49F6-NnhYSH}+3LZjf(}r4B zc6C*wk-dJK1J2VLa`RjT*{oOxu;V`3jgn}I%9(2fzv?n9?xkf`cf5(cv>v# zq$vf4v>X*0$rY&}7W0pEIac>01>V7NeVJ$ChcUor@&B)f#-po^rTJ9}s1$R5d*e?~ zRerM$AzvDa$!ji2g^h2Aw%fVOTL-H|EBZ9i+R?dR@&P?KedOh)tWAGFJscUN^55BkPsHak z{<@Zd?A%^wz=dR}a78U6V=i3|AH4)z*(i-ZXyZAJ(L;y$6}>{Hw4E+iHa0eq6{`ea z{nXjxe87NF?Eb!bx|IpG^))#WX0kzp7L>C+UO*LTx~0Pf>3`FrVtm!4q~Si4vo`Jn z#%49;oTmTSsvM=iWv*xAviF-<_!iHC^F!N%QMIS{+P(Y3o^03P{0G>Z))M;hukBS# zZr2^i6>to=Bh?L}=vewR!5r!PUT93t(Q*7rR#>A#rlcG?=^?y!y0{S~4j7+g^q3RH}pRVFMz{E7_M)0qr>_^E~xJr52IX zQ@g})<@l+Drvz+;=1!e2)!+K94CIo96BAi+z=E#62W;k?tJkjuSp4_#rYsG<&tZP;0kRGPlafRYA3JiimF_-hEFAsW6^%2vjJ5H$N9R1g4`qI z(tK2wh9x#hLJq;yQqia-&v}JMXvR#5Kgva^E=6qWs_zwY9=ppT%6+7nVh7o;XH6mG z(nUpy2g^0)n1w#(9g~&9{&9klxVHBXtUBe)L-c#P1@WA7ce*B-v~9}oB4<s3__W1I&xhl&|> zp9Sd4ZA(0N4dcGE;VdVlkheGfjF4-0(^8uIhUJsp_fxTl={f4Nv1B3WFg0KS@x&tu zHv*bH&8aj#OhsMS6fhinbHyY*i~}7=M``*ra7GL;q=5L|pAQ&Tp&>?{0Q@$S^U1u! z>{fQsoJwuv5&hTR!G}Qrm}Od5Q*GM!^gbcdRgrZ$Tk^}JvcR9F%!0!5F-X9K$!2@GNu~v8nUpyb4`P7*0 zaqcng@a1l6L%yyYcbA|`J$ASa@$;GBlYvztURAJ%6BQ1qTA(MrO@uGV0fq~$+weyx z=aQ_D#Qa+8J%t{;JXSauH*qln;~-rs(e9>JE!rj;B^TGp^_I&v&VhZ_p3<8>AtFtl zcP|?@R^r;t?9v;YgW6!zm4Av^f6-1`4(S-fHH+9WdB3bSUA3(dQn#!iBtExhJx%Ri z=GeOfqD)*G?fcBw@X(@_7!rzox-m@PX%pbPMpbAqo%-#ASl)z~r2cA(RC2RD9uaHf zJM<}tvDFt`4sY@QQ$6mWVrU&b_vzDTK%o^s!@ z@xXW;awuTmNZCju_%!f=9+BD1MTE%9-0P1xOjMb5~9HiT}@CAnrYB~ac%_cp` z#@xTR5wvwC)@Xg%_aM-Kx4e*S8yCojkwTVFv8mSJmVuR&c+{Y#lMt|wX``&pEjmVv zt)@?u&`-;AHP6i5EI**83?Z!lYE5ql+Q|y@WCMCET4Khelr6w_B~zC#0;x=>m5qp! zrIdqk{u)Q}Ev6JHsYzj>07pn4Xo(QIqc^1 zX+Yu?OI;-nW*0<)cL_WpIR%>(bESV`=R!u22rY;n)J7sLkWmX;IidW%?)+gJv)Y~aQWBOi%Uuc#Xzr_)bg8ZpKp zx}in-sXkCfa^tXS91V=B>Bo;VWPfad%VqulVncsXb*xtj=iZ|GgogGq`0S*o+Npto z$4qzgWTo9$j9OgTtJ46Pk5VilNZNEVJ$JW?peRg@AuI|VI_$cJIW;r&V2LcEJ0v5C zIF#9B*Z33&uG=&K@zwn5==Y#FqI#nVE||a?ve;K8rsak@CRM6#f$O-=2lM<$w@$C6 z+e#yK*#@iGGtgh~e%kqJ&Zpcgq(pU^A->Y-M(bq~qp> zR>dTm0#SFGXtAE%a5(Ecx%H3#YtT{yJM8>Y2(qN2dmvtLk$|B~v71$B%E z{{J-Z-1tdt_sLB|gDWX}TM>P78$skG2+%t@>##vyrdq^3=b3CLollLZ{?uJNQ{sSq zr2BE|Ev)-`vO8a{n!rYee8C^ZTq!~`xMLTSxYf?j&LZjhSEW z*(x(g(Ju@JT{k(VP>S6@!?p4bDcrvRtc1!Svh+eP<&KU3Ak?x%Yc3lk@WF7<2uSZ$ zJn3F1%rAIp-5olyziEt1<0Q3*BI4K`IVX~WrElo?-J{)HwRrH&=zF~!9`ah|aVv9O z<8vc9a}f7J);VD<-uNnoFAtZ?f#$r=tc(caU|&bKUd1E;@xxQCQl~(fV- z(mE>Djb*>|H837Ad|tjHe(tU5@YFnsJYub}B^uKorto{8fX%n8ytnD<8Pt6(XpD&4@NkL#CB)F_t{dClne#H!+6m2cU7jzx zv16X1^I@=wyGGq8=Df6Fo#qac5}h^$>zXHjx1oWZ+vNd~o}Lj-FHFBP06)+Jr5@H2 zqMQ$kNtR!%jJ-~IsSCaOu2ZhYKYu~^nHU#$a&CAUb~6d^v(gG=n8-57Qu}+JwFZ(F zdR&A=vC&qVi?3`kzfdi<*hFFo5LhA-@w$_mDT&bKW}27f8+Lh!YI!_wPJjEbgY;JsIWB_-+@QIeqGT92W|&hhNKui$jp3 zn3!*xqMx3zA`J65G1u9`m70!UR8ym9f>%f9v~o49rkK=eKvm*=>H4ogix}lXV!vT37Fxz? z40t-w$@-hG^N6#u&egkI>Lm6@2XIQZ7=;eiH3N8jeuTsieh{ch{&6E3xNeQ!?Ux-( z68yn6p7!R};cpZk-`eMrS(HqHJ%!ZSzXJH2JjYZ;W_A z-sSGvw>-XbibQjot5a6dWKb$mN5`6p-TDGj7fxwPd6l*y)diEDMeJmr+RIZ>CR{Uk zKwe^7mh|lCyTp!TsrEgNA9|IzerdiSu&<%_7b--D6EtZ~QaH;W(W^e@z$s=Sa%3tY zDP_ryxK6S&Aw+-61YCvx*R9Ug7rS)}h6D6V%QvsG{(4<_$QJ&netfdN93YQixpaPE z`R||jD~PF9^c$MiV1%i%w`&C;+AC9)l1fkUnkev2-YN*HQ`Kr+kIUCoyZ%j@ds*<= z`l7dtw|f%nEhlr|$gZbY6)z^Qv@7#*qgs-%iScokx^E*sc8up~Sw+`1cBvT|s3F{0 zQ@7m-UxwUzJg$uIaA~MHb6GuqB#1t9*yz@5S6FmtG&hNbW(;%Sc_kUK^w2$HY&hRh zRp{y#?eDW|{w)mbA`WFIy6J@yvghKMrDc)h!$c&iuAEZ1Tc+Z(bRnqCe$7ITH2pDy zZ98<8#q1f+W=;_Z0)zH>v$#q`VoLV-WH%;AtOKJ z?6rq9Gxw&6;_g(fB&g;KBJ4ivTxa*dM6o3Er&Y9yiprUj6Ew_41eJ9v$pzHSIt;2g znQSDu<+<=YAwRHJV6*TQ`}&@Httve$1P=P*lwl(ZI!(J(Vt8Chvy^`yq9^>;7Y1y- zo3sfc|B`|X+Uf{+72mz}==R^Rgk_cwwLOp8|GZWGxyrz)X`B}v4_}L#m#v9Wb|Pi2 ze0?7O!x~D0`eHd;-9EWJ?WfwV;MNFbR*nipSu=)I8(@VHm zN3lnN(B?va)Rbb&1U_MKdcK4*HDzV&`AuO-exHn(Y_e$a977Y4WS#JNn@HLudbde6 z?1wtH0T+cYB_i$^)GAfwTuqtU(SA`T*0&&M01%Z64$BVlBYd3ZLSN(MDhGl@TAoEO zeQRHjc(*1X{xf#gP&T1^ZBeO-vB4Dc8)6Z$;$fdEf1*)?RZ z&leg#tf^;U(N^H#@g&*c3AZ`b*$q8(4TQqw!fCwxr>)W1G=qPsEymMPGa01TRThfo zZ1uET;OfWHx7Q%Qf(R}oW@hagsG9iO+}J4rJ`lX3qT(u`LL|XLG@<_1Iz-84^xpPj zW?Gp@Lf@Y^81GFs4o83~5R;}rDb|7_q?CMwjq#DXN5&xCyHCXLl0dp3C4^P)j?Lj> z#Q1F3YrD>@?k(ISxEU)(wP*w|CndB&I8((L>dzguIo4dw6aeys8r@I&J z;^BY@S`nu$2^^|DzL{mo;BhEipzLDrw(<-Ib0k)NY+U2!N6~p2-SrK@HP+CqDi&D+ z#9&G@hZQ%aN|3q!3>kBga8lNMT}L zu3242WLPmauS9%Txg>dhY3oMSb zk4y527NRJ?cI_ksMy}|$mCdu<(YiUB692F5AO7qfNWCDRsq)3og{6t#mk|K_n0t=v zH3iAYi1@e+fW`S{~^vgCe8l3zzAu_vlRkZq_kDYKF%5jo2NI)uz z=B^17zjkhb1%~JUq_HPDsEOFAtdv4uVAO zrB_Tb{f}Zxj%pdzvzoHaj_DK{cD^pxXJy%>?;&kz z@6{WK)$6MXt)? zOUu${rp%CJc%>e5WVjZ@MsNtmKz^S0$1-&V1u{{E=7&DmHe-k{#(|rT^lBe-s7>Xb z4kHjm&~F?{%9nmaj-6hBW|hRDdc5}n-|=xWmXjI#WIEv5MJg=J_IHqd$^YWkT0K5zG9H@ETfag!;DHWemL!H2{>O&fKSG?)F#MdZ2e2<$-NOV zBoUF3v$M0YJ|aHCGTiMx>|_a4I&GxIdNi|f@JW<9MG?q)xTX! zT=C@%ZW7|ThwUVlDrV=q8NW?FqWa0c1y#k3gXVuG1Q7fe&bKxJ@t*bBaBZ_UDC=3K z7-u&5#^aZ_N<*AiBF_;^Dt*+eFa-|O(o1RbeeQ&zh0vlrb(>art4crE<(=-noNmN_6zSxulpJ&)p;#Gqs1~vS zd!wha3UoODIIcY?kyOU8mYvnVI^plgwBuA?^`AX-)UdG4?_Zp_?atWsEqHaI;Cy_2 zWxn;x{KaeE&W(fYHs9#ZH^0mOMkdHVPBBlcpafo-;0zBg>{Gn7_50w)S9*#rxLS=o zCPK%*YYSdN>NP8`aYT&EvN%ZkQ}-jpVFH9DMhN|TfH_hUGV1;LPXG$)qzVKox&*2E z###oSFKb(xni?80*-<8a!dbFU9G09AV#+!f>0yAjv27gNfaGv+4`g$ntOBMlJRm#W6;`9^er-(0sZGPEI0 zrUq5V?CV8kE!#UT^nd`vsX=07{vg6r-7-~*Z8EtANj4WX-hnX=K8ZIdR%twR-qpwH z7l`a2A)YWZ){#%bNh}rXCy-UBQp)eBgxiE;Y&%g6g-l1Xi4+sWYxiQRnFwk`x{us266Y#bg7?UJ3PGQBO5BL*vt9ag7Wa z8|^>gJ;wYT4EUcaF7IZN2hxJ=8dBx8v6Ry;OBRG9f5^quyXMY(I`LQYZdke|wTEz8 zcwM1bcMiQjeD}Dm0t;#v45y@yto|99FL$$(+1f>R)Q2j@l~O)-8F8r%t-mj&VRUHG zKr=J4kA`dHbIdcZx42omz;^;27qs{Xv~g_|3$82p)SKHY6}Tpg$ysdXL(F=uhpJq{ zHntYZB?5kC#7*qW;;eO#7gCod*Z&`{<5}AlsP3ES1+vCd2ecx^bX*-pq|CO;eksjO zoBulT%TMRmgJ@|bX8x$}w~9F5_BG}}tduR->Htm%44WkiV4`M)7>}8TVNl@{YpX11 zwP#CXmFW~#eAwSoCYP;-amuBidQ;zZ%Gf8^*sM&Ek#)H2cyluUR?#uM2rQ<`8zy85 z5!%d&k8CH^8|zM`NUTJxECHNen~U*qOP(DacF5~D%%KW}Jn61s>^$B+gre=smM?_k z)s|Q4mhmonoYEzSNy+>2%Z3(cqOd5|*?&)@8k|)+c(3t}rNn`t6&DG?Ja@*L-d0*i z3f+!?+u7+2LnaqrH-nOZqEeu?elOY^z4D2(Z~Pf4cfhj`w@C}bh&#vBoaWndti$dL zGu(`V4Lk#@J@-ixCFK(m{gUd3$D4eCDkYvPgsV_LRRkSmVD=>YSJhoBIoS5f(dopm@>t8nG#1aqjNC` z^rHHw$3bOkxC1HTB}$0Je>7F2&e=Rey8-Y;ooDSC$weKlSmKW84bb(roaD46Dlv-m zMkNe#+H;AUYGr{Sp@ccQV;% zC>N4AnC%SZtrDHS49)Li-jpkEYe714cG@Kft;e5f-JZXX4CF_-UUuYsXC0rAm#VBO z>#K4?`&|g2gOr4(kP?-t+y%bG2Vqw!uTsG}0708uA;YatmwxQ{JC>9KN)9X)N^AYe zg5l(-kS70NCQQo0CJjU%&Uu^}f2m6rG{cXkylXnLq~{90S46@@HPz$U=iAZ;UwL|* z8f%eFEBfw&Wzqe4{^SiRs(vDKa50;Cj#r6?HO_%n0r*P4?J^#cLmYKTy#f#Lg|=NI zm3xfq$J+gk+8;<-sFyv>rO3&dRMP@9Esc_Q=a$pk(Ve)+IB zx9vb%D!2`$a?|jYZA6phHMx1gTAZ~jsy0qVVS{Xe8)1q`rW zLRALvNMT^~dXu>4Rgd0qR+d@#o58490dthAJx%WsJ0>Jpv=LN>Z|a zMT$orQVl9}MK2D{qp1~2^PgDnH|^b9*k}OEQjCqYu*p05Ygc&pgMy%dg|RqNO#Vj{ zq*?!m&?{`x2BQ+`Oss1%MbqBPG=)PKW(cjND0f{rPUjZAG`Y_uez`UavR325+45M{ z*bRP8s7-mqg#4n8qN0?~EL_+(zRp6(S*Y|pGX@rKxkGxBwZGJOCHJ0piq{u{>v5V0 zwkGpGu8np7sRt_SN;_7LP7F7ukg8&RObF(6E0n~$#8TtR)V63X7HrB#4ns)JG^R;nb*osi?<6);#t zVPCgw2uf*9VS9Z!j7sGiJ@nS z^IWOaE{LCaQ`I?Ri(5c^V56HULrFBS%XSe~ z#Kpg0U&=0H5#2I=qJm|YSEj{7CpQrc_z!YVjGtI49`5Lj6u65s+1N~2cw(%v{jvg+ zK&)Hl3V*Kiht`<0H3L7wd!;6~U8)rLDNh=@~kF4eORPQEH9~_y{ zhd#Bt?s1f44h|l!%sI=hC|ym~3WpEAWFSKX3gV{Aw&%Pny~bF8=?VD`3B|9p_*up9dr>@xL}Q&fF2I zi!aU9*3+H}wqhktTRsy&FC;)bBvnCm9*o{Y>w5o?OjD-A0ur$}B!3P4Z#9e6#DJ*1 zS!mwtL(CSCy7|JR&W@N_j!aRDfKZ}Z$5|7t-GpLo*5KQ|h`TM|S6u?8TY-w9H$XIn z@{XP9EqHS&iNk%f>LPL;K6o%}(GZE_1Hg@Dt(aqq#yJocl^?9{N;hBw_@lczuI6W+4{S!=82QJT!=Jd;clIWof$ zzKtKuDruM+8u%}&E}45+rK={&n76b4NJ^&UZ9deaVJdB~g@EQe2j6LKyc0w-xHUq( zY3MI-9rWxjQWZeje7(oT#ACpeHtu{xh#x8c=LOm{l8)WKf`Ey#`7K|F>SWOL3tG&0 zO>GU}D+o)NI3$-lX=sfBX4PLCa-_)7oeenmXXb+|p*4_N^C`y>)on5q=#aTy@Vls6 z?y;8O9Z&Aj_XKZ5xM-)&1}q8K8X)ND&^{?`CI;-5627jh27ytWy_!m`;q+ybg}C2$ z%A}?gMqUhPLmk44XS?yRnlt}Az(93x3C_P9TG?t(Q9c>HxxEp=2l3j;fO2Wf;+~; zGqI2SfY}0~JoIlhDCISruvBPqNiy=iC!73!*34n!DxPKLl``B_jvaP)wn#-LOw~`c zOMJLo6Gz|8Q(C1@8-bOkh%I^mVO*IV*V802E||~v3qh%WL!(Ek#sl9^EHbrIwIqQF zD6{=qHc{25e1Vy0pc!#l_^bnF`s1|eeNV~qW3SEak8#L4u9sMHyevSovhp$FR{PMs zW}BmUlFl}x%B~4{v6=Y2hJM!t7>5>xhC^6Ktr``kYt|d0%#e_`EfXQtf);^{je~(@ zW^5I>xcJPeKEnKMJ^Q|a8;5}&gX9p z6M)_MONO`dfB?(2 zV9DEpD&=*en`^P2FWm%W#o5o%h8;p(z9cE^E}3#eR=>T@ z=-B1j0?`#+SOF&KVLHyA?~k??D2ysy-KQ6AmxVt!?f9j~Z{npyHQPHylB%?FSP}6R zh0aO*hvO*aMqHtP(cPBGlAO9-G8?w?y<2$s8&jAwCDQ_~GxS*Rtue0k|wE(lsKw7d3~ERWlS zwCFvc4)zwAJ{me(Y{T&_pib*^%{3o=C|E~qKo)XLP}1*_UDV4NU!PP*Jt2Z*S^b<6 z^~xIH6KFBHP<|r#RArIRcG6#|eDuAK9a2S{V%`T4#3zJFw+tE8Qphlq_-}Xms+I5# zDBYl8a=`ZzRaRC)CCKB-iVX4G^a>8hD1`oIiHU@_sX-n1lj>0t&yh$2S3+qbku~oM zm+kfIUo^L(K@{*9ol;RLjRC6y5r-38E`Y2Gp#=M+p;|^>hVH4UeI!&?CT|etS?w1* z#WC22?_a5|H*c`1gnXcs;{WyHr?~e;;30Wec7Kv)C~@oqL`aHTCadmTvcD=bPQNBK zYq4cKv!6^jD<3rDo;<71Xmv!8KHIoqkv`K#gdS$K3+F2GON6r<)ae$m2|Pf;xx@R@ z>tsoWJ>oB;gbpX|{j=fn*LYZ4XBa@AclJGMgs$p9a@5S$RiAD6e?$}aQ9#JkA0EeY8*lsZxQ#OnX zyo^?*!B+NCU_BjVl-C#f!I|v)Ls>Tsv(p3~k6d&A79I}Ep%J65JD5hEs5*e^iV=eo z@grRzzGWA!5)IU5B0+=K*=dKe1!clCro`X<@p44-sd_q2SUGz#8rq&Djk(elu{YNU z?mvAOQ-@xjW9wVu$WEp55qLltTQBaW(M<@AuKUk9PS)vZMf*yNds+Y}qv;TD*c^)Z zEn0@F{oLxX{Bv;cOYSpp$s|z>oy$;C-Hwca@6O_b-Ce(h_+kYNLDG4N;DE%kWj5>^ zdPa}ufut1j>Oeu%s|Boz^4FCJ;I-sfXtB$xZoOSu8%VmrpUH!wBB(~L5cw5Nm*?Cp zs%I85A^9B;;LCR$U*A+$vA2<-o=kAQhynrIbd%yf<^E@GPE^0B(C>H9p3~Kquk5Db zR{*?pnDpI_G~-;2;Si)x`uD#xIh~g}X86jsOeGcU32pACq+(y|UR(JBOsgt3NnR5ULni}B$+sx{YAw&%dyRAFVu<746+@MKB=N>8SyldMg^w>S z`u&7xVS?3F1?bhx;28a(d8pyZquWPQ%Zuqk6(@J&9=?OP82`19e!*F3B)~^l z3k5mZ0raEC&Pf!FIwGlj?D77k`ptQF7q7mRLx`5t^@C50-642yo;(A2WYLBx5j^-C zLm8$|?&!gaJ>hzC6;O7>#jMOl7Yb?HE%-mdlgMT{_uJ<5j_0SvWv4=(#dHG*FjHF} zum&CucAEX3O4o<@0_~O}^`#TQKEVD(5h(CNAV`Rzlt!(RUhZGf3(6pX41yd1Zvvk=vJB-pBz3#&wBcG z)uHlR|KRdu0ZLO-6N~y5gVm=xiVQyO#7EL{dG9ycFEbhDb#F`s*(xfkOL z?|{rPRb4rk$<_|I4Mw}7~F)~iK;X%1*%ryc<>Z+JeTNe0Nf zXbFhX!7g!*ZpkZq5j)TjkKpu-td_$9jvdv4czB|v3zmE8sazs*A|(L^=3jO0>8`3# z-mGZ_sOZ|Wb!cJD!v296Cd=q5k8{V1-+l_3h#+9hOAg0dBnQ$i(dY3Axau#Y&3bHs zE@b^BTk`xxdpu2vewFwt-mQ0mpC&btk3E|mj%PnCR8PhUPjE{T|B6%ss4LerFlhx; zAyRQBNFK0Xpy%9sLx4?&fOWJNP-9i1bHf8H;cGhgAy9!?f~G~5xdmv|hsgph8!=bW zwUL{I)VG2nz?%K@i$L?7)5|jw!Ci$2+q}(pSfIpS{)5 zSny376~C^%wtPD~?-H3aIN65dRLNTn&GmF`VCWwI_U@SuuCH04RSrRIa++1XOb?T6 zr)~#Msz@QjFnMsW(9GT-R&bX;aYpeOirR%pIci3NVQeeB$Jo!?66CKk_B7wRs;1yC zqA$Q_mt@5R@jGDF$j@1Ys46nBX75iunQWB7zQOnvdGbb?YN-mfnn>+qDyGScIy7NM z_UJP3$IW_Deko759;u|Nbwg=78Qu4&@jiWn7tGZS*S+`W&_&mqEiE&ee%ypH-bf{_;0~&)hH!}`^L_)!?<127jXB$ zPZV4PSGRq0R`JX0Gb}C#)rEl2MH^QTYywqjf$u176^1~ZWH4*}LFhGLcJL#X*^%d4 z2Kg(Zuo?7zg_V(!5s`NFkaWsIf8%t&G zGkmD~OOVV`Vn`y8#HmbpZM3c64Z5Syqz;?V-FY`+3~A+Q#l(PPJ7R90Wx zN{6^JdebUG-&X;Su1luof}f|iyz@Kwc5j(oU$kdL&Z@uA)_ZzGBn5eB)C3o7?g+uK3a9uDCmhr5cuaI8?=hPV1>MwnsAcVf3)nAmIOR&;*lR2=m z#_z*)jn!fgfO<%4ai?yo7_D30(h>a z+ffmUU`|{%-z%}9T|>y>uh}p+s8RlWW>4)ZXl#>z`H>ABakVGG_N*~kIri- zFP>eC@;rc*H8 zsSuc?-Q|`cm%%miIy!f^M?LkpQ5melQ^w|w0$vmCE`;tBz zzhA6DcX~j48#R43T?{X!A==NXXjrfiy}yk)nq<&&!rUWBr};+*(&rm zqx|p2Csu?Y{4P(yrW}dqnFdHL2ntAy+yg3&Zx4h@#z_HW!-tZi-Xnki?xWJyRmdv$Sf2RhtC;A@hx4jbddPVg-vh;h@ zpMn_GNflIa)fknNGRvlDaJDW6oHSpBbJ=J5c)*CZRjAt(?WgiPag2CwL10w4)xjS= zcL6B-h z8FDRJXeMXJrkM%xJY!*Fck^@diY-bi?myD79p< zF!IY;8VC=(7#x=09xvtuf|+uP9IP@hD1Su1eq6mCyLVnHt1K5!YZi2))syr4{Yp8q z;)UrZGwEhqBh+O?x^94Mj`NARC!yEvl2c)+F2n7VIbRRzx7ymABI!JB${To_&R( zkZD{


    TC`v1xQh*y^H=gMKkWOki4zD%+4ct1?=yRQTi**8lZacrtH4Ibk^v-CeO z+>1`bEgs~ZcVCIK1UHE|;O|WC6e;;xFMFit$FK~I^x$s#h)E}1R-+hGyaiAN5SCmZUC1xrd!WFg5qk=-jA z0!vRoKm;~8&(8?04v&PyN=C`8;Xj_Qz-kWjbmK=Y3hDg-DeGPJQItj0&%u0v;E=hL zl2uINE*wEbR{SY~WHs$ROGHh1`0#Z>0r~ZL09zFH?26u|1T7hkJ6WJ?d@RNP3?D+u z!cfy15|4E^Q}87d*K0X|^Vy98MUQH>vIzagqU9UW+M6mGXcICLs4>mD6}396nf#&Y zRpwmt_2#R}ca zQsHL2AWI_~8#x{QzDsa1Z2P-I{#T8c&yS6+H8lJ^69<2I!OW1?CY3L+7aG4cxW|0I zo2P;u&fPVAE^cmfd^C#ibUB^{h^VyD>8n{9(^OPR1p%Jmxf7)#85_#@q-TeoRFz}B z^E`}sQHv;~m(>`wb2KX^>2{#UdP+wnaTDZ~^pH}JjIN4kcF7z^L_{c;92vbDW^dcLSZ^qbuY?9%&+v$Gb*gGFfsMfx#0Glk{)HT4>l$UAOYq#7UMcU z;YP<0Ze4JECslU#zf!T{oYP34#r~W|yVD+yB$=P;yW`a?Dw0x6*R(lv+>5TT>I=l^ zP{y&UGkB(R>`TGg$ICVOS&_GDF#Cl|nvMy$qVw#eF9ZykUUpIk>egk&m-HL46n)ce z$|EUaLuEjflQ$@_1w`kGP%@IlEkhP7j++6^`hZ1GpIPMn67|XazS;F+$rdZEU|u6I z;TEDX@B=ys4{_EbbjdQ_SOdESL(#5Sqw<>1Ogg_lYLpZ%Q-RE2=M&a6hUP|CmDce% zmv)WV&&}vpfc-JzUkel)zZH*IfCD6P(};B&^0;PIiJ6iOy>_7Q5kQmd+P+LZunr2k z9aoK6_k5^oK*-_1KW3nx6REr+^0k8h7$-(T3IMu_rZBg@uSvxAY^e;ohAMCgE>3~<2d z^^S7%>b0fV>hYeM-wdX=rtSjuYY?YAL48!ajPuuhp;ng!r{S&0R19PU!{_DSC8og@ zC!Jp9;1UJ61%u8v`Fo1)?JpCT8{*1w=t{cWag$06MFJ$b`8{ldadfn=%;tDAvwHa% z_4Lo^ajk!T(d(iU;4YdMS?j&FU9^@R zKE7w(+MJ5|{Is-W`X-EvZ)p7}qbpPArr*0{^!zZIFosw^IBduSt=p|dLoG-VHddxW zhcV!d8aGKMPm*7cPjjiK1g{z;Xhaf+_JD$pxZdEDX`~0fY(x~IIfPdRr3uo(V&WX5 zJM4dgl$DjeNsWs&Wk0U%AHQK41(5tU&`K81ukGoKpWQn02$M|Alf7%d{?0bD_%A?> zQMdX5H^%y|sm^iV=7DE0!`;atAh*D54c+NSuh9f?g=5lf%k1r|n=605_Hyp!1xAGU z|7bb~zdHQ){l}A6%dXYQwmaE2mX?i$W!tuG*Roy9ow(Ynnovkk3@`ll^YSetg^RMGXr5$xNkS6>dif(@=)DdUj z=RQr484CD)rT~<-kUW#1nXm5OufLq@J$N-B&PPei7(jakuPVJD3Dl-5n}B-5x=g5h zPyw1cI$@+s=iOI73UWnn-=y}5d}ucIr_w#B#>Y1UWY}Yql5vx&IG(htd4L0M)Y-{R z9`}k#86vEvI`!IA#={<_gTGDG8dWQhqS2kgy|IrPoeTm!V>T*m_SjYx)NntJPh@OP z8`D5D(@<+!yTWl5Ne_o(P+jkc)0SSV(8u2qB}3sD5Ox0=?qYUAsDxh<$Y5)6Ow=$Ho3AUR|Rg~XGU7_d(2^i155VlIyDV##Pt z){s}l)ySq|Z*CCrKk)Svbq3hbY9=OXHrc=x4l|_;Oef~T%|(ADGUwOkRX(UiSqPt> z|42wcfXT|w&dw-Goe;@ECo{#?f#>{E>_Z+<7^N3?$zNB}`X6#!mVv1uAoMe)$Znyr z1^v4L*|PnEB}}UJt5&=Ni}5eJUEq0fe=@Xa9^)Nn!H`GV52dobFZDPoVkZ4oxDTHq zR|6PX?wL2cw0ulYLQN%y8%u`g$9C5UfnQvquXY}zsGWaJqp)> z(;c^8gYcbxFP$3p0m07&zHDP%$(WvHd5v^N9+aAz4QJllPe1EU9N^`C+H@do$AxYG z-t6E|gZ=E1o^-2u?##dBOL&VU>Xrg0-}sCw3XcOW)Q>+et!9+PvvrFa+u2U11f8oc zGN@Bz0_4mrSgAZ5D9#hWPW!$6HzDs(h?{0^=^&?{Ul#{0(`qXO5>00F3Hea zR>DkNDe6ZtP-C{>x_NkE>P>XoLLLDgX^v)Z9gDn#kYjPED5&sFJlTlcoyfxQko#$? zmBhK9acT<^|0}A5)X}Zf5(fv+ zMCFKD`hfcK!HGQYm`O_2ZC+a~u~xJR#}uPQL7T-W$p&CG9Grt)vS3}W*R&=rm&x0H zhse%Wz`__zXpGok1x1MuNKRI6J%UFq_Pnsr4~)AIm`_BVBtxB$MFCH@HKwxQ`y+(_*oD&jU#5anOrv@q-`a04* zf*XPusxQ_SkbYu4*PAFsJQjlzF1Wt$Z6y^=cA7#+o^U6O(qj*XqBFbCa~M-Se3J)| zg>1B5mISi-aO|1nT$BT_uAX5*WhO(5|C?}DPTuc#HE479Df$C;vt4E1sR(4$3{z88 z&?rdlzaEmO1?f28quU1+{!j(--P?!jw#R@ZDR#G!@&?MuRYyspYI4l@PDv~xt%e(e zYGIcK(xW9V!k948AiA&Ni9=uAoV^w%sz>Z(Ki@xpoux;LTq4J|AP&BgSxRGI@frP# z)GHq>lUw#%iiMgP6(1URfR(U+wF*%Dqmft^A)v`KyO`_&f9tLXBr^N*^J4CD)}Q;Z zi%mkZ2rh>Wi!CzAxW4zX3ToJoX|rzJ(ib@Y!O`@Vr0wh(shxlOe=r&eziWiUa3^%9 zsK`$q2J+83-{qzl7?xb`2}eyW1D?bbls6MXvQBy5=GZ!4Za0pml>JgKOtcq%kUN#o zrN-fZWBZD~JCS=vPNir-k6g+wo9NnO5vzNG$>BM~xmIxrq*DsLfzg!5N&L15?SO$;c*h4m+z26bQyv9@q9U9XZV<-=g+qU+@|L1moFMy|))d~v(1ex9vr z(@!%12Q$5-0<}+C$&dfLXLO@+N?0|^Xt`h!p)UtJY3cVOzHY=2u#@xPS_$)!1W}Jz}T{%RDbV(w}YS)(vvG z1c<@zXc;Jb9!$=+l+EtRyx!2+4K{-vHxRF@!a&BxrC!`5gP%zQf;50U)4I`cndd zFkC~0FFQ&E|ERF6kYz*Qc;UENnP*?HUU`N%u$GhT`=*4CAW) zrYzJiySvvv^Y7(hV17k7uH^T;e8|e$RvsBS5hWGt-uViyKEJ?H7Myo`(-n~V+K8H4 zf!FB=vO*?Mm#fJRed0z$i9RF!_C8d6H^nK-cSkrH;;HWOdUg{tFaCayqW`-b-1o5V zytaJTF$DF-O>b8t*RR8!UryNUB-#6C3I{IlJNr@alT?guZ`es?K#E>w*jK*FFBGp~ zKH&mNN%gI${%v%*ld3+%`^W5qFj|vTfHX-H05s~yf}mL#T-Bi-wU66k`(BvI2Z(aN z2J%^xr=qf@TJ_4lS}Hec_(uM(vFc-|5U`JN$2WW745<3|uW(;`Bp|M>BO9{6?`6KG zE=iXZ5D7c;Zc*qeu^}BAtDCojWm}B|CpOO&r;(X#c#zsB<@nm9hi{nw!L{N<{q$Hs zk&MRciX(1Sd1IHipD*BsWK$0Dce5)Nw}5d;T^E&wa^xDK$Gi*R3U>sK$bS=P zDTew5_p(#}EHLR-c}27fZT&ibx0u}bKnBwQ<9=BfPI|m94CqTY^5cu3;C_<7+dc*JeY_QgH<}S*T%l?%`B;vxMgko|C9khAZ$wQBIk=BD106cF#$n#E2 zHPV+eSWn~HQHMY1*X&mTb)WZLxa%3{f05;tSDezKGhsKrRZ$J0(naBFQ#JiQ`Q%3B zrkG4aU0u!an=%6%jAF60JMMjiY%Dnyp(jOQS3)p;z>W%M>U#DF(;n)|Q@12D3MZ`w zHZB@3z=AZHdShD0c$1E$n@D+mlhBkCH5{^y1|LozB@d=3#VF7J?D3`|H~0A>_^)De z$a+`Rf#J2RoWTR5tYLpn+!Kn%8<~K62|yBNll{bZ68VHqCG5iYCg4td=Z8~xV9hDQ zVYHsrG&+-(Khc^NzD%Fc{ZJ9BiiWYu*&>P$5e{c7unGUg=VeK^ioH3(Y1mYCy*;?N z5vD-4g&+st>5yxS1h!kWHv2OQ!@I-P`hK*5=%*h;uLz_?<*&Q-2pi%KVLqEPP>9d~ zHY>tDDZ4w<%bshY;wST5|L+G|*9Sj*GouWPZT;I$x+Wx7ZG8j8Of1};49m;PfOEhm zo}X#y=|{_^^;!7!Js9de+Hdd+>WyC-js1(!CwOYcb4M8Vrw5&&)~N&Y2^4m-^YLi~~6ClU=# z!^UVKF#%lG1cq!HOF}syISVk0x(-!j=FBvH&e4u%hO28xF<`7=>(VJdL5WtAL!Y0# zdb<0^igh9VaeNj3MVsp`X*&u{%1KzU+>x6Zdy=Y`{FP!|f!$rMQnVq|yx`MLO7*@* zI$43@NKqn;j$-7YroxwOGGj!Hur-jQx`VjQje4I5?M|U1j20?Gh2fv(YM0aw*-Hay zLS(xb7$0T7UEL;CvSmn#uYR+?A;P^q>@-EB$$^aPnH>X(2Q2r?<4=3@(MyBdfrF=e zOOW`}c~9TTE42fkLb7z+!VT8gz9XDTOk?-*45|OKvx)RzZwv_JO!HET6d<#FYd>M~ z2)Y##^LIRxq(7;!g_0%KrWvArIe`kn*YSoP6uI60G^5X8^I`r=uz=i4bhhcDd(M!?2s?Ue+}k2{ymbh9fq zSsaeRojJ_>e*R{kRF~9?r!tvUTz2HYULPt?swTj81j!$I+`ieJa$OG>S5h z2;`_1G>k=bnYDp7I&k6Cj@q_!QneGwRh&jc1eeMZX`weaMQ|lc_`DRId=t|^TdEW| z?{W5Pq~41kxdKH0R6c*Q$N;WOFyR9{y#yuK49`x0xhAoOIh!ZBD&LUWWFEV-#u3;E z$cYzZZshcHK(X`yDky@Jx{ryzV;^PpwQikLb-W6}L{?WM{{lY77zKk+rQ-P@i=Q9= zh<+IQXVm=UF@5g07tO>tMKTR~)cTjd{4)#vD)&;yS=mkk8%R4xo79YrgG&A{&W{-A zu8qu^f|!h-wl5qEt-Bna2+SU4T0D>wd~S~{H9FG+ z;>kV>a$~aJ56W8fHZz{3WkOGXh_8$!3+4zX0DaC@n#OuF+QXN~n{%lFLfFqI%Jhqo zx6zFe27rTo4Z0qcI*fCpQi+*=v8OtBQ)bI5)Kps&5+T(2?Lh5M>%;_?mE$7LZswBx z+pMt44X1gMKwV>38U1;EN)~9q*C2G8R%i^P@O+ytstyfV5KYK zL8z3(UNeE{jJ|Bsa^-vr6~qVbGKY%sQSu1Oethz+9vckQYT~qdv=_QheOE zJ2_y$m+-;2*unq*N5amdR=@zvewFK}wPdYf_HiL20T8LB@&>-ga(FpBhe3Opc^UlL zGVv5V#HGdy=NAI)v`*ZyLCQo72qT%g{vbHJJmrRyp!5erSfUP3W-PB>N8A;p~b>`w_UW(@}CWMy*w&EgeAKd0l(z%eU+-p8vY*dZ+*@En0X{nDJkxF zK17DYJb$%p{t)9!D1y&Dgq`K$le?@GvloN6D&M`cgFgCkBh!ZE7iQqVaM4hL_eVbD zA$#fDQGCC67T<>{pC6aryN?`PvrlhmW@=$?jLMLgEx$4QmX>b%Bhyn2F&k8Iy;1Xk zYmOVKOlX3nx^y5R0iuhUYfKW9)w8c&c{X$g+|^-&Sik{vFKn@O(2st=C;>J_I=R}~ zPG-=x(zmd8r#j~JbaoGySahE6%F%tNd`qyt~is(1+e907TI4=w{O|bpO`AwQM&<$p7e7PS3V?7 zP7H&*sEDa=#xxwOiKpw@CXCcot6T+hwvxmsP_DADNK9nj)Rsj=Uzkm& z^h&2~Ll#;h^l)z0MH?063OuqE375Q}v-}wS?;QyFeQ20`j_$f(8m?vqCEo`&lgf(r zj~@<>SJ3@JveKCsrl%Faw?^N7!5?iX$89V5n`6f4JBr+A-Y{JEF$v0RIzH+Bfcmx- zP<5ou8;b^XzG|Ns!&lmgo&7^hxGg9CwExc(b-CgQTQ#zpN4zO@HD{$9D#>ayD5}?nUQ39W! z2XUkc;8dWr$?&Qx&lF?Addjna$AQ8LIDEuBr0Ca>Cf$WTn?yC#eA3yVoxcRfMK6_R z2rLXxp9SbiD%nIDG~@RQYXYHKycdphgL-Q>nhw**o~^UIc9L5zC_y6SuUDXQNF&We zeS1bby}YhvzE9BkL)^vjdiV>vu!Ooi*efXCGS4&2&-kAFWpj^2|MgZmE$xWR&_9np z52kD@NIoX;0VTa2<-)Pcl>5}N9EiqI3O$1|#`(TPerFc2J^y=D_ESw;nqbHTi0V2Z z5-PpzXSlZfAfseJBO~Wo~(LWn7IGCNTzFW!ndb(YXi`TEnr+a(XcnuQR%Q~&05VLml2iVx zrY%;fHF-jC_5&FMagWWRbQ)YT=&zsF!j;HA3G-qK$k2MkAhel3LtUPSPOTA0&D)}I zt2SL)kcmV4@@D`U@!Ac6!jgvl{GHIzhuKL^hX4@@bR9*~kl8$8#r=I80~*b)_7jNS z0N)iIV%sGb<`Qd$V9m*jX6zocoeC5NKy>#`P%in-HwYt_&*xgy>u&o2P4C+=hbyH0 zl|ZvD2kj9C=^^jp-r@Kb)l&w z9^{I${Lx{H_}x_-$6(iUOyZ#rVx-A_DNLGhw>V08rXhV}e`w^iuc==c6Ml6@VvMjm zXzT7AhKe@VV^FNyD#=j5cTy5~(HGCJZR5ddwEOgyuS_Yf-r}(hXW$vPVV`nOs*Q!B zaL!s8`+k0EcZ6#`v0%drOH&6E3I2l34uAZk$?EQ>(4nUz>s%N)mf0%)Dh8L~WhoPUM-S(BUK`?t<={6eSfjg?$_hZI&6PFKgBmMDL}y*czx z@^WcU9SOv(A?gdvz%l2sp-S@ieageuAXPZ$hp3K{hHaBBWs_BwIrKoG=1p*_I;zt( zCofzujZ5Rfk(E_C=VUTAma@NS zbS-KKbbs|sS}u~h8)*HfPvU z#p5l_?=L0UI-H8p>*CnaY-$+o!LXtG{G*Q7 ztGn^C5_Rxof0!gu`Y*Q~z66>~36MGSqkP^c{4=p{|wcIaXGcuC_E56F?fOEFAircJ`jI^-&vThsDLfa^XN#~uTk zL-G{f`agUrLJ4D=U}-_wmY|EK0Y{d?R`jc#Jco9p!p6S0-&pvg*Z+vp>b+f(sR~s?$A_G%o);zPfZzpCb^zf`6;0eEZKIY~>Z6D?<{1or03muD&zD7y!Yed3; zL3IQ41bjM8g;+4a(r#K)VZmi&=>6D$ZUHOj;aFpWN4-hC$X5%4>GBTL0!8c}neq#4U}wuOVHOmO>Xm88gyB_tp_CI0~@%AC#_!J_`B zRn!#X1aPQ4_Ddu;GCbgGTfhpx{QNh=lJF)@enH@Dr2@O;|Fj`oY5j?g7?G9gnK4j8 z8_sZuF!*(~wQ5PC^m$y84tP^eGcd#yXlQ2pK7J8zZJ~Uh_4JZ%j$^(42`RQ(nELha ztF^i#(_(PQLmW{_9kNlDpL#@%4wyTkD#)XBVa4%8NyfJhx}e8x=k=xHZq_M6Hi~2Q zJl{Kk&0+(LVHiyKJXsz zA}X2es1Vd;eNkc;sfOvzZ6iroi>xmkft~qv@y5q1?l8~%Iy0Ae@oK$(H9mIqi07~E zXIlb5Ho^xhcQa48f?kf47lrONDaW3-UpM@V`)J;NzQ?6wM%Z(>BA%DWIHt?goV`7!G>!aEXP1s1X= zEc)C&DUV)%mRx?1SWKVZK1gc)!s<06$JAT!55rEeyPwV}R15q#)ozb%@%|cS<95`F z0<9j%T@l+SYnDcc&yMzX@r8Mb>~lP zC++$)+PHqo?;$aJ@Bz#$^|HBNz}mh2zo#Z=p#*t$XueNw7dsAh2r4Qm%-`SRkC3o> zp+zzS3Z}}~pR+9_Z?|Y25HrNnP1&f#ck}d^YULiOlQEH#$!{3NUk5W3dJ`cQ-^?W1 zthrehTW!Jr-MwWu`+H!Ags&wUnUp_P2QiR)*~rIgz)?>dN>|pU8jV52tJG0z;F=sM za~oeHz94z0meRdXyf#A~1M6fd~^K) zs1S2gQ%cSe*Z~HXKB-h20xm4<>_Ve~HAHy6gk>0xvh<3e9q;U5`Ziehm$ZPBmLq9l z$%luby_-Zzq9{)<2rbFum49^a-|9XYX)-^anJr)CgsDqNW4gIez+nE%T7D@_-nXE4 zle&a&zyg8qc*p~f`P~O0P5#lQSYdWp6?nGkk1zT-^8?-!N3OC9gN{G)M&Wi-$=^2 zS&Vde_dIrxHsg!G{Z>mv&l{<9QzumYxDdYt41sMcIbn(Tlz2DBIvYC5AQEV*3hNlb zkdfa~J8eO<=5UpE*za{m5mTxh9hIh10tL-LeM~auwiH~3f=~G{d_am#`0Z300z%x(r_%2^@;fV}{I=j9waa96ee{SjJ!$)oz3cvANW)?hIV# zUi;`* zma3NJ_dPP=sPlDt|He2Y$txEU_qL`Gklkg}4<_NPv~U7QLnzIdE>Owoq)OkgLBGCs z8&D;mElh5@cOk1h)Lp#v8o%T}=6{Ha-|V=;qZMM8NcK*;e&$eK04g)v$Xi{?^N5C?joS@rHoMoJiQ5mi1JY}LbqZq*WDN>pj(DEL#7$gZAb ziDPk?mGNf|*-Y1>((k77Rap|77Jt(V2>kbiiIUTl*ELc*=&i4N0Y=)kuFQSKThU?u{i>GsO<6yBoY30I=iqs|1@Fiu=v4W=q~W0 zEIR)o{`&disB8U*FD^~&KI1liz^sqzd+ zVw?TVFl$;-HjW$X7l{QHS}~#WC@q0)y5kd{Ve<#Tj8pHRUmF{s3{d*ywN^lN)uGW*Adb^U$4NFi)qSeIPe|_2zCyN{4A@vRo^BbGYJ!p^9-DhQg=w zqsmIUcR`XFlrBcWA@?%Yq$G@OZ@OLe^g*$#)}Sd8zob*VWSv+;=8=Z*e2$#<1jedv66~!H zsA~NZS;SFQCzCvCF#3cuE0zX}?TZT5Jlz;2#x}6oob*-HUpcHyt1Ha%MaLHwjS41h zl^6a7=a;~4Ulw!v+zVsk^^t}sSa^{sf}Umh-?raKQgzO~9{it8^tT6n>#lm=AP@C( zm3o2ZzX|st$=B-WZ#4}JfS+B42@_qu(%t?vbwF>{aM64OsE~yibF}W*Mg-Dt1(q(S zxvN@?d7n?FIb)>*RI-&>dak27X?z!y0qcQ2rx9|-V}e=RAO`TBmvd}=E#Vq!6Cr9R zR5x%2b(=+J+q||j0@FPL*MdA8)9sR?Iwd3Ym?>^BXI={%f0z3WVMnk0 zGNco(px^PMCys7Nf-I)m6gj`{GmfWk$}%icmZcNlu>JogmcMUoU2iwvZ77@+ZJ2lY z*tv!22k6#_InGh#c#w&rCWt4aXTP-S{i|!+h*k>P;j!d^DME0fxPKn=G;_b8iBxPFM8y4cj?mJnyU7%aq4G7^ zPKa;N(V>ESvAh~enW3hF73t9W=r7c+3&vzuTjfoeOO_cE{UK(gHli^0ZVDaGY}ie{ zQQ$+0FSTKT#20p=qd12lp=PEMe$8`amnJ18ZEfR~CKYz|+bc+xI><^&mvq#G!i8Wm z26%pO%QR7(VZ5VT#4r*BT>EDx>#kliLqvmkUGM=f7X!BKXo_k51VR!zkY(~?nu3WY zYCE5*6kcybSC0EU!m>~iWiD*K+N~?i0&S>&DL`c-Kx``nE;1s;9>JFlvtijifqUw6 zy$Z~HQ|Efr5lGcBzZn-pOJwOx&A?OuC786Cq-4P%ag%!T;{||`-eMRN3aN6bUi)y` z@eR|!8=`!)LiS2P=nqDC@Xloq^$)X1B}h2It59Wz#J^*O2~6VI@9?vopft$!E&dJx z5ec<03l(3UHZa9aDEAZeY- zd>*0~xxGlfHEue=GowH@z9wmL8HKnWLANcE8qPZ6(n<+!M{#g$%wweUO`9Ujl-;>e z2PQAEAfZ~D1rlAl8w+DJR6{%r`JIItNvPIr#C1C4*H_sK1kLQvURN7mBYlVeKOYzo$}|q+t2) znevLG-;VuDkL}-;)?>ZlKYE|xYV(Dp_HEM%unj5NRq>8G7Go|$DyS$=PQuSi1A^XTdh--2{s2p<^VR_xN^bSL4zi@kiQ{y;YRy+lHcFayrf z63PESeWv>T_=|p*>Hy(5`(LCPn#L>eZn z5yN1p;))Ecf0G5gnk^4zJHI3uu1ghaXL7 zoyZd%THiKi!i%#Y;!n0`;2MG-RQRNGLsOdjSn8l0~Uj11aFmO-8S2O z^3yiQA&jg*rG2eU(u&hE__1*iNf9ZBd)n>Zffa>-V!Ps&Wby+Yp%Pm1+Y)k5=V}Q^ z$Ukjz8D|oh;jB>IkB;>h#=Rl^?MpIM-P8%*;o;s{mC`k?1qXRZ%gP?KS8bCRo;J%u z>P__Z6AFOJn; zoue7`R=QG0E0Aa!9&)2wO205YoGF{~T$Bdqy%dd#p}NRh2%~W96HmU6ZG%puE}NL5 z>RzWpJC8rrKdx!RF&8tUmLhvFvPG3FpTxr#wp4}58urvvcaiyRbKcHZJV_r<-aNG{ z;ce=&(>yIA@nqp9;g3b`8?%i4z5+MZ$$&kaT9c{t{Mi5EEr_f(BJ2uV^`PdEEv^gG z%@LYxre583zwqxA3w@WsB+=*B8Db5R;2$3bYhGw9 zWBSktJ2p+@{sr_OWk7F8b*Qsclq=-n5o1w6+gA7tvPidm)j6J+pJM49gq1QtX#0*l z$G&L&U^piWGN#urV3qNwEWJIp-@Y^55|ILJP$qc*g+}W?0&G0yo)1N{e$1*Z$javR zuMjMa9=sZG+%29Zd(7h*zM%>^zcRGw>7%JV1{j1~$7t}g0yk5yN?{G>*2|5ad>-bnEGsikYS=)#erKA5$27?h+Z91aNJgCDS^%O>YJG z^_}^?i=0jf%v_qGfAVy>#%%8p#S7Ju5@|`pJkKe(Ozn=EP2CNni3aV_%D;On{(9P= z%BC@iwTQ`5Qq5x;>iFoax=M>%;uU$qiF5yZLdj&eQxJr4mOV2(UOOhie@mDbfyf|3 zGqm7Hk(zQBwoM*QFrJcJT9RM9WR-Rit2$YNsbLy+F*yi-slAkIrqx&jD{s@8L)|{{ zVnC`_xV(@NAfcfG!resshLhGP?(ova3b=F>> zrLLTSOPQg8A76qsrA|1gb5L}5Am1FL z`pKm7X2>}ydv$VdjeSnHq#PQmkiUMVtgW3RpaJCZW>lb0fcgak)rUcx-H&GooZtj< zek!+`9XEVDJMfD=_930_(0o{aZYxM9M*u=9E~nx-c)Rbdy~@0je){iFy8gOWclEmw zWWvF-E>=~+QNY(Irf$fwbbM-|)F<)y{`0aR0OQ4fFHt&Z_GMM;M3V8BahTQC6u9o= zR=?-fOB&41;WT_Zaff7`wz{t@@>K#=Z}7MS6di6lDyC$465D&~-+}jNddRYqv!rYn zng#OZwVdUmnh6~E6{05!mU46=;`UEZ*Wgis`i%;}nywKCD4FYg_(58vUaqw8fO4?! zxmYt)EBxxSc93gla!l6i5U zdGMWfU5d56TWHk?S5{6=62Z%Aj%2w~H!~Za-y#Z(W(-kEVtnmiOXR7)X;mJAA};%F z9B1gG%u(w69F(+YlCTaa)tn61`T1{X&>^`i1lM2W;LFf|Dz5dk&z(N?<+5`~(+V|) z|6pzIf^2d!J>Rk}&*K zs?H!&di6BoA1e#5&#ME#smW*TLOJJPHD|%DtaoAbDA+x>YI?!GfZL@K2u(30KGe;k z4~b2y;_B$ZlF6C{dk5!h{}mYJimfoM_z12yDwnjN$d=J^%*kj(0i+vqLi5TKQCT2< zeJ5l6-mQdLV%cOQ_!LHqIdv;9o7r&wfg>}m{S3-eMP|D8u=(b#K(!k+#3p#u7e%JW zUaavkX4n>9Sg!a|NoebJBXo2%_+vp6Txb}gB(0$KN`|!AyA%b+Bvy+D#gw8dmEZyC z#s+E}R4B$X{Nva%PaKErz+xixR2HAatRAS5^|W;sfd5AGa6AH?3n5y5npRXxQ+J6- z%?A}EfuV5Gg|a{yM7p{o*%o+@QmZk>^SKJ7st5i%JyvNpkAXpiIj_ zCU>S+U9Y}}bD#EMSHfR5jGmY}ciZ%>wtERIauzi7jfx)h9kIw=ULGmX;>Gw+>)jy* zw@T*Z>1pYunBTYd`OgSu$nNXzMWd?71Nnlxc$@9VA85`g*c5nW@jL02aT!pL=~K~0 zzFl!prA|UFW+9Fg1E_p~lQduE5OC4cA0U%eCHdBzpDV@oA{_JO{LlleKVp^@yKZ%U zhLx8GThpeOPFy-q?k{i(36;`w%8o_W8Fk2w#1;wK{(Tn3=G2kegrzhs=H%x8acV3j zx3ll!DF-C!jn8J+4SoL4?U%`f>7D#c@WO7!3lK}@l&Uw?Kl5`ldBBwa(pUnJ&qF>H zF{`iFyFpW@{phPRmKy%GR;#cz)jUrZkCysX0uBDKL{b`mQiEUKIW3CSNu&-=AVUTy z2@uo%0(1XO+L=l;TZ8NO={Yb|6iPf($()v>H$2b#Mzb=K5NtBvyQgu@g(Y`pZC7)f z<7x4ogZv=2$)=hAkh(?7pmf{k&-Q|ts3vpdWk<}_rG^jH+Fcdl0%P6cg1k}b5yBfP zyhF+8Jsb_Ysq3EfEAEW%HNxQ_*&9ET?^&OG7Fze<3Z3*WNtj2aZMC_7jy&oqtGaqy zdaHCnd;XiBuGs3+&pX2^M#BR2F{9!j9)-J$t0Q#Ki}_>k#VhXPLVB-^c(e3Tow&Lh zHCjJ#3cRC5ewl4xGpc;Ks@+$XA>3ruATV^#+P=x7p~n#JGW~naIec;%?UINYx4Na< zEBAQ1?Guu#U|AiL%oMXSBf~Vzs3~1#CThUSH8H)Gft~@wBpj}A%U^`grbpkkj0&lZ zrksi9CuOT#vS+-K14$4){hph&1L}-b^Vk7n;r!z1;R*#=Hr>x=D;Td+l?qt|lTCX}*SgfB zZc!1=DP)`0DK3f&aQ$Gu-~sAOTYF zs8O6AG%h^_{*+K_kO|zxdJej(s?8`)qJr%iS1iwkc7H}%&Tb?=Xc!CPl)vMyrJBFy zA$hBr)C7i69rd6|2tP~PRIH7nK6~2pbvpQ*;*8Z6C5l0|zJ`JagsdTS8E1upN&|*T zxgtLn+BNPCtGO=LozsE}O~%~6Z1uy%b^YR!AT(rRSqyFc+M*M3>h_*uG;DC4OBp^+ zYA-z4x`?DW^=j@Z`v% zj^D=F|4aErozVMk>}bK#KX}E+KMi5#EK?&n{Nsf&0W^jQeMLVqzElHqLU}B<{fcUD zNmSq{|NrFth_0cgDUJ1<^6?Gg22%t%y^XuV*X5C_S+jf{X!!4X2)sO2ft`=pfLvR|k*(@PdqSlN%T&GBm{au$Xp zYUs{cagBnt>zU*zPTpT?Fi9RLDLQ$;jCi)b5s5G#-{gp2DRl5%JnX9a2qWuRtdWTL z$E#NKNFuC$KSogVAAPe0ylQ{G`jb(*uT{NoY1tYf#bAstF7v}xi6aI^L^UcZKQ00| zEdH}CH3f+I1rcM=XzreQ5Mg`)(^>w1yXVCTVGGRvDHxU8)<3`21eJ=h@pOAa1@8%?*%{CQ1BDGv*Og0 zxKDSV|Bh*kc6tWNMyOY$)>c+dxzY28QOU%F>|A@Rb=bN{G z!0SEPvyh(Guj-Zy{SOm-s-ogOXamrT7caor?JK{|zchWKmi`C%3k3jU3;M2%g7gLj z$DczNu`(XlW%EJqc;1}Wa?wk zq@ZuIqbV)Xz|25XNA0ej;SU$GWRSXm>MMXw_+LHZGhkC zbPkVS!ybu`V_gcuYxsD{QOk>tz=J1!-}XH_Tl^w%tF*1meKV_KkIRJPt{PvHGZA#D zf2g%r?;I@@E&05J8r{P`CXzjTOk6E1D?6NAuIBW9$KjxaJKvyQ{`Nh&@z3s9KOECd z&XOGInr-}C4eB$xkCGxdyAvz9==0wUt10!_H7WAik) zMLkY4qDyv|y?~Pb`ztbE;gSeTZPUqnGE#zI3;-{yhQ&6p4|M#g#LS_S%JUhb9 z!uTIhdPUj3l8Mb%)<@wO$?*G!$S?BKFEkkZeO_9Ie|xIA>9bd6ub}Sl%C{9Srj*s% z8KC9!%vA0DPmEIb8@oFCE9a8YaPtyr$32P`1X3zp(UU%n~X9Fl2)I(V+%`&lZV*@JeZI%(ZIocOU8^xX}CG zzkjdg!F4=DmNbO$%E>HIS>V>Q7#3gQsd0ip%IzdVgLl?SIu;79Y>99MpN)|o*IR92 zC=!F&{=K!#*&q!3>nFpnCxOerj8v{zugx&@T17>-HY>N9A_`5COj(BIwR9)TDV}8w z?#MY&fi`6W4~jt4=l=GWlm=9yXq1!+yrX%9bDV?gljj6s|MQ~zXIdV)>?|z?611!< z)MClbN#sm=hTt_N7zO@Xyat885dYqTPk<10p>_jH+-r6Jm-53W|3BsHX>actu^2B0 zv%Yyv#irS9fjK_c^WjI4{%_H)zZT!}KKNa{DX63S3XCjJ8r-Ss_bQ~n?t$P2czbF# zJOi-po|!yc>M%SvmoJ*8*flSQ%cpG7_*t_`JMR2N{GOKn0(&lC$*9vUQQb(d%g3%X zTAN+dbc^RbNcQceo^1NEdy-2{pS9wJUfqHy!w$xP%Zua|O0h`PusT=x{afDKFMB}y zOyeTWF>Oz|+D(j+d!d<{t>u$wS5N5oc#)`3_%tsP=xbRE=zY&1JgB_0iL2o|a-xkU zmhqVp%%X6n#0cqVDu5$*D)+s^uU&j1vT`40<JiieF3j)7fYggJs%ZU{ve|?p9|qCL3`qnU z=_CKQZ2#PDDFZd#e%YQu#(r(mH^LW4{j;r}p*|Ja{sYjH8UC!|rCQjtE~)vc)q&j_ zwBgE;OwQl^6N97B-{Vmj5VE**5@f}Sbrq}MbRFz}ImYAL{?-rucz@^H$GaFlzzmW6 z!rF5qPF70e{{pUPa}70oTJ96a16^&jya~Kv1`j#zUM(SaL#??yOudEDgPG@*;%49y zPxl1h<6-0yCPc#IrR6xd?}NXH7zud>mAUX)z+GWa?OD&h4*8thb((MI_|z}l>F~qL zd2jb+o^6Ikw`iG&jL@{!;RFPdDv5r67uAQ1K?QlmZMrjHn{b(6>8|gdBn=3>$E47c zbC~i>GhXcN@fu_s7BOh!S~)uhuYkeUL;C-ZrE~Dg^n2g-lkJ*pO>VMn+qP|E^5lBb zq{%hewx4W!vhBCu`~Cb2_r2C$dtcXi9!HuB5V;lhy!gk2T_J{M6@5BvTzsq&M_LkJ#8)LXsT=hxZ%J=yX=(L6R}*czv~D2Vu*D~J z5m#!Lw5};m>IhzT3G|H$fU3&I%`Wb3k@H^=IcEd*w9vYl`IQRIGoOvs$J(kO4tBq3 z<=sNhsz-aRPe~|RO_4NJWoYi$$ZmMnevJWIWqisAk$+DiawV`P2%d@509W^u;aW!^Yb=l4MDsZN>dkBV+#g!oTRo~QS~>~Q2wnr_Yd z7Ma73)9PuBMMdv+VY-YSWFo%r!mRIjRgTQTFc#ruWx+(5?FT^K$Z{yWoK4Z{jyrTD z#fyB?;i=jDQ5+;ikVXBp*UeScbR@7!iTRoRDN07u|()d6{jO z#-#TL3HX&GP0OZQF<@FsUc`_L;EyTA%7E^nVz_$7ORaO2L{>;RSOo{^b>Hg&rqZN@ zLK-QY$cI7O6s#Nd$rx@sV_0AjR|j;M*rl~L$~@U=KNp=)di@d8FsJ%|LLaBwjZy?1 zVxj-5W?|khBmGj+L2yBbD~MDzn(-*GvRY@Rr;|0$Bt-RoXAPAqjFqw+`FABd&{ly+ zH1(TX+!jRE7alQ8@dSCk=481epcpIvpC!~*TTpc2-}T>Il9bJ@1~M=IYr?v|tp+qi z;DfW>0lXVMYx;5~shvF?2za+dstK{i1&v0em-z+c)oULMZLNF*_a01lM1ZZ-9CN$4 zUpn62DY#1(d^of=_D?ks@C`mFPJgISLmQ=<#k1>S9xqSexpv|#QhuUh(^G&?%D#H*1+9P4_#7x-}9M(9Jr|JCM z->Bciy@>woE^NuL;F13Ykh=Ia?^Y$awP8z}nDKS$YH{==Snc;JQfNd+xl%|%CgPD= zsxr_Ro%R;FUitj+mNAPs0!HBxw%rQ1H8jX5R4RN8wWvxgaosdV;|2!}AI>et5i}_r zw{o8Qb*mmVF4o zMJ7eC#6`52qv5yqppfl@-TGt&JrsFym$&E{>R^7uMVpMZi3O$s&3yTYNrb7Nyl9J9 zs#TLq_qiT1-246$I55~Lne?w7H?N&h8^Mn2a8gk{K2KjbeH-8=bR!bp1}`I z!*Qxz!52yGl|O}YUVIv3n1^&lC6r`1$fMuw7G`m1dCc@a{Wv@Ix%;WW&MR8w7clSo=_dh0)f=lhM9i)n*12qBAj{l!uv)zc{ z?%OxQ_2dHEh%M2D1xlYK|Hn=S;hp0-OKYEx9^mOVr}s`+8rm*hGGBXHYEadZIl?^6 zE!(o{{V#rKD~>I9Km6JOpP!VAzrMqMcWjkTXp(dKO{*Hgi)%zTndFiaSQ1sMoSBuA zPp4TuGZ>>e81LwPKN=z9Rah?8`ey2m@o zljuidicl$%L}Kjoumq~7iz^cCvC(0=Ht zi-?CyW9IGY2x7k=f!nk3vBA;VGOKiEyRn{H-0h!~`pf_eZV(!^+d+N!9&6Eo9Fc(E z1q^eDagZy|;`41m^Ymlv#TI(UXT*W(U3^t1Np3t5KW%{L#u=UAb2KwK(_8Q5%nl6k z$qA6T&6D`N^_7U{wsE-Zc6sJ&PZpN*enj1ebNJm48KzN^*uUZQrn2fdI=euwO&a5+ zW8KFHcx-A>T9=#GCy`ON=j!(HM)NU4NIQ$SaxmBMn_DVPu}i9X^O>=37FXuVJ#_+Q zW|O~s(t=isXE><+PUg4$yjptQ= zu{YoQ0TCO=f{(WBB24n}9l1EF^s+TpR{1ZHhK18ewQQQT`8kgxI!2yD`Jd9!s0`GK z!w^~8J{hZ#XGh4GycF6Ywu#JeiKSzkPPm9a1^a_U5-ppG_9^ zpCXeeJik~@uRlKiwPFZM*#FHy2SF#k#-FxY=R&pZfq!1w`9oGpoX~ClFnXVb0M(yq zI<_grM$p0mh*GWY^9+^B{-&Yy(0WJ+i1~`K@DQ{CLa!s-LlA5PAO`5593+8+6$l6S zgFdKePJN%NP2Z!rctK$eDujG#Byl1XbcbwccIgBVqOPTY0Dv^H+Y42+5g8x~kWfA7 zADMw>4hf_G7E||*kZMlri!{cYwL(48+1=`r8Q^`bRr43ys;{f-DvU`gaB=c?v5ax{ zETYR@v;DBsV{;&N_WO(GT9BS#D{TMezh&NFW6Rb~gLAifXQI2uiw)lNt($3xg}1%w!H^mD|5opN>;v>Erv2V^k$;et+N}I;JSM{ zwKBx$3l9h0NKs=OU1F7hVSDMdE=`qc zfBaVr6MaitJ5Uw$t~-@LeS;qQCq1XZTlZu*duwMXVk(cpu4AOx#lP_Qf%idbl&2;# zDQV11r)GX&dX|x}IHQJ}r`4YfKdmRuk3-Uw>{(&<3)wY((lde_UUg9Cn zR7}-T-#0bd+Swt^%*y&7tGmg!Nm>EdX>aqd@liF=p7K;a?R-@?H)N4%XB>yWs-ku! zD)5_VR+(Q|`sgdIhz2@xUs}B7HY4lLSRHAXgoPMew%<~!&epNGzbV+gfs8YaBclIq zw&U_tHTwugcfq)Z>@hX43n3TSRFrGz8`ReG^a8YIO-UBQw=8KhE0=%VHb;>`t6KHs z{0Kts000ZSXhR2oadlBc@pXdE2D-Hb6asBeE}B&Aad-l44-nrAPMMmd8&Cw_nB7@x zGUNFl(kc9_s;Xzom;w_oKIT2`bx`cj0=N0u`hM-4h!4W!4Y{_v)}(H2D^Tv$kXpO{ zU%`fChFPN-ggo;x$~z$0phGj46NP3GVh4QqRyK0B;BMhd`+DrsP%Qf^!? zNMPlrYO8Tw4{h(##689K;zO2S96y*rPIB=MK`~=7=D`G1j8PFKqlC ze7^&e8A#n_R&x2n^$udVZBnCwxksU^JuDABDNz<^<7>85(MJxWkVU%jt$$VhJP4iv~BmUsUvi3NZHKXtQqd}*Q z-g7Di9TJVjyt|l#wCr7T5w118!CqgFbHPDkj^L^>G}Pn>r8Q3>D2=!RTq%n^0qPwXOe39(v{DM zdZyJE6xMA*bGI1lIo$8p|1H1|veZKsq>LgfgH%&7aKM!iKfLMi`2h1H<%=|fbxu($ z&9zY-<>n`?=wWN9+?kY?KuB#+Q2-yeCpbYfE234nw%98ya`3xtyO3lyK_@k*u;FTp zM0d*#nKq)Ego_Qya9*q9mVori?8H~we+K%jD%UTY<6E_=hn*{#?eEtw0*uJi=f&k0 zbXy@=Way3tQ4EH^$pNnQ)fz_b#Q$+a^8JfsW4L$ggitRWH{UpMc&pnSE2Tk5kfadG zZ*uIsS#r|;pq!L(NNb2Ko08{go*ryMqIC!-(WktG)02y#*tDADCkqdLCfLvom2>}i z?~}2s0bFV2QP2Dqi((omP)0GWP=WLVYI`q38Ca=Lxu+_>gDDwGKR;|?%_hjAa3GVN zwEp>16k=t4oh$YiqGKy^+@7qV_b*(L76ToZsbI>xW*-h5qazqNsRh-ZrGQ~Seh^6E zcx#xwR5=UlX_G@V;Ac}&P8bJnpy@4z+CqYqATMe{k{pYd1r%w)~In_VY%0OarKnrDx}9xkXLD`7h4+ zV!_vrUfTEJBGI&a=W1>FamyIakiKg9U_BA=f{Y2L8vh}m!+!Txsz#8_}`y6sbfpB;!@ z!Zir>$(G&M>}{uO-Jxwz^C=pdyl(<)-6-9T?tI3lDfuwm5wP3beot4$U2dnk-lp=< z-VGlwsaS13A2|GOO9bi}!bJEJN<6Ieqkm-wLu#ZpVym+n$}JM5x!Jn06aT4#s8a-fobtn^t(NIyGU)LV~*>-2fzhap9mu%Hhln0=$Q z;FRW7Qc4Xxr2h<%YO<4SGoiFH^AqWj^FXJFf?g;SX^>4Q~{Fm5s6&KGW8i71=_lpMvY7Q>VB6jI3?7d(kcWig4NQn;Omh5@3zwZFJh|= zsrcNfHq9LY`Zy)E-TyGT>=x~eYF;id1frR*#WxC8t7~z9wlnsfMUxi7t&_pB8WjA5rI^pN}*Q^2aQ_5Y2X?&_FTm#vr9;opg6neOG5ZZ;pg znl0PEFqN86c4U!IEUZC0P{4%Cr-9~ENKo`(=Meo`efRB}+x6gK8CW*L%PIKl9gNWdrU_pnTnjO63Qbn0A*_KR+w_lYa6 z1Pa>8+qzwA9TkAmK+mLGb<2_GKh%x{rek70sA_65APg-Fb9aN*mM3li4IqMY@rRySg>9u?cy& z$SS)18aM0?$|eCVk6)qz^Il|>Mtli6r3bX6bIwaBAtoAH8V35>Xii#H8c+Ld6qhFw z`8`u~S;%MY|EWtDvs5(NdwM;FrcdTwkTmLbgeFc#xaZ(@SDV@8Oi5-Ndh!=)F>KCd zeg3plh0^o@t7%h>iYqJDqtwFhSX9FQ!l5ps8uma#pzUKr7C=3>C|AkUY1M=|REn5y zTG&kq+_aE#g)NGsBQ=YqwZHWe z3m~TNAO!zxE+V9ytKqSq-rE!qLr5K^_B*C(cYh@Zp=Ks60tZd2r@t^vMbXkbtKj^v zxgX^EZzq~s$l?c)nA|IWgGB7&J@1f0Z}Je04{x#oq6E5v(iP6gv3h>*H&B^oqgSfA zZ#8GPB#Ho~e`gq5FQhuvFKjt2V1^uUNyW*dl4oAc^6Y%_fJbr z$OZTGNH72uV9wAJG%1t#lQZ)JIOlt|#tt4R|6kOz!~JEpqmYF8w<+u(YFJctP1)P& zV%qCKp#h&Tlbc#lLJaJlW8dOasFZIx0({3*JI$KJJT;&*0;;QV-_V9Odlj&@i`7>CGL^ zn-FHPv2aOX0zq&Qj4A!1#G7YwV1Wn`Ymx`r63|g5_NNb$CqN>ai7aChIpOmC84I3* zpb{cY&%<+Evuf)#Y9N&LVts>+C53OrmTlSSN_+qp2-`S2F3G(Zy8&|&{Pg|IK<2xH z<^Q1T2Fcla&-s)dfqS4a-6359!l~lPfEg!@vlb{ywn7IAxI>j%(+;Nys79!}?X=Wn zfG_`V;IGa1&4}X{ozysjP00h3jLqAgcek}f_cj;z3}k|JMJQm3Y`?Y7{T+Idj5*Kq z?%dtjHS1k|JfD>3`mK~MFAuGQ6Zz%Q}YK(L!Nj1(DgyWxqf@lRQ=dcJfmZnMn#=N$0a?>f>p9PuQoGv97n0 zcxAbD2>w=CdqOq|Qs<8G85L$@B<1KQOv?<8Y@&a*9y%BPkUn;v_TP;x>B6fZ_~3;W zC~4aHE9firbb&H4g?^Z^LcnSyLWf3lq>p#TMe%6M%y2)rgeUW;>U|0%bxbk`t=x0HcFpz5C5 zS-`)`XJzcqYQ%%}p!nC&&sn|pz)>Mn_Jbb#c=Er|2=1#xewTHKqm95e9jydkNlIgv zp{&~o_hYQCRL;Mc_1$z8RQF=8WDycup-X9r8B|NsM)_61mHpbs1CAymL=G;KSw%ZH z_=~I@M=fy`n%&Ml7mqh3u01CiOiN_hgZr(izB=&zbk~!UmzS<94B*5Z)OQuo=ka12 zKVG3rOGs{>_VgCfjH2n$%Mo*1`c&@9YW2DYF1Vc-`d=6)Zq}d^{c+=%0-CLsGY=_Y{$^(X33{T@QSgTq)971If?J&yz{(jT~!EufV zsn|Dretv8dVN38?Wm`c8qpv+-?0OpN=p^2_osX6`LktG2NgkY*(q>WYeI>0ki}QC{ zS{$UL$KqJm&okAwl@;ySNp9T-$;Q{)fsIk>8j6y#!J>)sYR9sF&8Z0kE(&o9Ehx&p zTwFwwj4n6E}Km{IoALi*<`lK$h zsf-##Gu>cVTk9107z#lU+XQ4uw{DG+@9(7vrn=i2_!l~P9grJ1F;Q>{QsgTp@ zF1D4o&2%I+fwVxyX`WJl$iQ4e3hR}!-3uaY8KY4f$i9VZvzX~ag^EFf6Q5!O^c7l% zzM5kgDa>t}WW~QD7rY^7!RZr3Mub`xorjm8Ocs7Yf0%)nB#c->(4-Wm&A#F}f=F`9 zid1Gcm1yHwLssE^scOGi?BV@e7?y@W^4Y;gACB{E(^IQKkV4_&} zrdsX6xa&uftRtB?-WV#nRp1JZ`HKk$%(~=V>r8#G=@Upb2n|I z5sN&6AS?-8BFtH-dpJJ{S?8;b?DAyqNwD*Zgmx?i7doosxlGuFEba`uEV+;aKH4=# z)${Mh5kobMS-pW}Sv*MDFtv@s5T>#>S6iljSw$ZzFqT9W6j0ylspNSiHm|KnNCFPeI$IVAM$!AY~TM$J?21;td5#3*B+U&ed~E-;p4r{mC4Dx`3ZjTAlj5oi0dt-0fQ< z)}}Z;oKKH%S&7+5<5njUp~7t5sMq`kfOuo(m;aMB$bVzwi1cgkaEo{d_ zo=tr8(*t5B)P-kEcKQ-0*g`Wx!FH5!;QnQ^bvxbhE(dDj{!J@wamj%92*>k>${taAVG*WbNsWiHv#^q*T-n} z%&XwXC__Hs*bpg67>B%or;)(h_hd5SEuT9Q&WKkvsMvd3Xo}3kj8=|;VMRr@0YRKA zxsqCC{1Zku`xG%5kF2o+sK0bK9AsPDAhtiLht^+xM{lT9MTt zoipJd^U==D|C>{9_?^NXgNG<$#URxGd~YaD&G^QAb{f3#Q95|G4iFjXMXOA`u~Kix8YV?%;tD^}g0bp!Wu7j1G1EC-3F%c#Z?0YbA&^xVyhlp(E=unVV`E3W zNk=RDkuG%;O89C&Uy-*dmYK9C91U04By8BDbu zm*(l8t*Z$_bh00nFYCK{BZ>K=&=o(5@_&k}#0|6hCau!c%)E7A*^hPm3ZULuOt(Vy zP~|yL%NVu1{F_kK#`nK)ByQWo1z>c55CAEPFj?_a=fp2Di&rE$KXsOD1mw-&Z zPuf|#BeS-+1!sdM;(HHx4W2dNjjKPP#=xIBs3sS7!wK_>1o4PuE36x)XN@)p+5%j| zNFpwLr{ip;-g54xbMjSV{92}%CBNv0&s`|7dRYOknBdJ-`!ip0S?@1J>+GWaeERp^ z>UVsfDMtE~*s}r?gCdyGAlvzFD5Bp?Fj{VDVL>^y zlSrO+^mM&+e7{Fs+SAP)vhk~$d>^@V1@O~J`ab{~v~Ed*1elZ+zo71ibO0Aip}p?A z=TZw+#opzW3_NO+T+vKriY&`_s%_5i%0A_Osr{i;&@zSbWht~O@SwE)nQy5$Lc6Zn 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 z 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 diff --git a/views/website/md/introduction.md b/views/website/md/introduction.md index 81304b3c..ff39b890 100755 --- a/views/website/md/introduction.md +++ b/views/website/md/introduction.md @@ -90,7 +90,7 @@ The following shows a JWT that has the previous header and payload encoded, and If you want to play with JWT and put these concepts into practice, you can use [jwt.io Debugger](https://jwt.io/#debugger-io) to decode, verify, and generate JWTs. -![JWT.io Debugger](https://cdn.auth0.com/blog/legacy-app-auth/legacy-app-auth-5.png) +![JWT.io Debugger](https://cdn.auth0.com/website/jwt/introduction/debugger.png) ## How do JSON Web Tokens work? In authentication, when the user successfully logs in using their credentials, a JSON Web Token will be returned. Since tokens are credentials, great care must be taken to prevent security issues. In general, you should not keep tokens longer than required. @@ -111,7 +111,7 @@ If the token is sent in the `Authorization` header, Cross-Origin Resource Sharin The following diagram shows how a JWT is obtained and used to access APIs or resources: -![How does a JSON Web Token work](https://cdn2.auth0.com/docs/media/articles/api-auth/client-credentials-grant.png) +![How does a JSON Web Token work](https://cdn.auth0.com/website/jwt/introduction/client-credentials-grant.png) 1. The application or client requests authorization to the authorization server. This is performed through one of the different authorization flows. For example, a typical [OpenID Connect](http://openid.net/connect/) compliant web application will go through the `/oauth/authorize` endpoint using the [authorization code flow](http://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth). 2. When the authorization is granted, the authorization server returns an access token to the application. @@ -134,4 +134,4 @@ Regarding usage, JWT is used at Internet scale. This highlights the ease of clie ![Comparing the length of an encoded JWT and an encoded SAML](https://cdn.auth0.com/content/jwt/comparing-jwt-vs-saml2.png) _Comparison of the length of an encoded JWT and an encoded SAML_ -If you want to read more about JSON Web Tokens and even start using them to perform authentication in your own applications, browse to the [JSON Web Token landing page](http://auth0.com/learn/json-web-tokens) at Auth0. +If you want to read more about JSON Web Tokens and even start using them to perform authentication in your own applications, browse to the [JSON Web Token landing page](http://auth0.com/learn/json-web-tokens) at Auth0 by Okta. From 8dcebbf29705c290448282b1c0a6d119ddcf2617 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:16:24 -0500 Subject: [PATCH 582/611] use single deck logo --- img/website/auth0_logo_ft.svg | 17 +++++++++++++++++ .../{pic_logo_ft.svg => auth0_logo_header.svg} | 0 views/website/counter.pug | 2 +- views/website/navigation.pug | 4 ++-- 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 img/website/auth0_logo_ft.svg rename img/website/{pic_logo_ft.svg => auth0_logo_header.svg} (100%) diff --git a/img/website/auth0_logo_ft.svg b/img/website/auth0_logo_ft.svg new file mode 100644 index 00000000..57c51da3 --- /dev/null +++ b/img/website/auth0_logo_ft.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/img/website/pic_logo_ft.svg b/img/website/auth0_logo_header.svg similarity index 100% rename from img/website/pic_logo_ft.svg rename to img/website/auth0_logo_header.svg diff --git a/views/website/counter.pug b/views/website/counter.pug index a3f2bdd0..95c4363d 100644 --- a/views/website/counter.pug +++ b/views/website/counter.pug @@ -1,6 +1,6 @@ .tokens-created .container - img(src='http://github.com/img/pic_logo_ft.svg' alt='Auth0 logo').logo + img(src='http://github.com/img/auth0_logo_ft.svg' alt='Auth0 logo').logo p JWT.io is brought to you by a(href='https://auth0.com/signup/?utm_source=jwt.io&utm_medium=microsites&utm_campaign=devn_signup', target="_blank", rel="noreferrer noopener") Auth0 p Securely implement authentication with JWTs using Auth0 on any stack and any device in less than 10 minutes. diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 57edd64c..f0b9d527 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -17,9 +17,9 @@ nav.navbar.closed .social a.a0(href='https://developer.auth0.com/', target='_blank') span.by-text Crafted by - img(src='http://github.com/img/pic_logo_ft.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication') + img(src='http://github.com/img/auth0_logo_header.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication') span.crafted-by__question-mark ? a.supported(href='https://auth0.com/', target="_blank") | Supported by - img(src='http://github.com/img/ico_logo.svg', alt='Supported by Auth0 - JWT.io Token Based Authentication').logo-mobile \ No newline at end of file + img(src='http://github.com/img/ico_logo.svg', alt='Supported by Auth0 - JWT.io Token Based Authentication').logo-mobile From 08b617ad8b0163c8abda71a1e52c025d19afa566 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:21:08 -0500 Subject: [PATCH 583/611] update crafted by logo on footer --- views/extension/index.pug | 4 ++-- views/website/layout.pug | 6 +++--- views/website/navigation.pug | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/views/extension/index.pug b/views/extension/index.pug index 131b7306..ede24c46 100644 --- a/views/extension/index.pug +++ b/views/extension/index.pug @@ -37,8 +37,8 @@ block content .colophon.clearfix .pull-left a(target="_blank" href="https://developer.auth0.com/") - | Supported by   - img(src="http://github.com/img/ico_logo.svg" alt='Supported by Auth0 - JWT.io Token Based Authentication') + | Crafted by   + img(src="http://github.com/img/auth0_logo_ft.svg" alt='Crafted by Auth0 - JWT.io Token Based Authentication') a  -  a.keep-deco(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/blob/master/LICENSE.txt', target="_blank") License diff --git a/views/website/layout.pug b/views/website/layout.pug index 40ee91e5..74f46239 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -62,8 +62,8 @@ html(lang='en') | Your Privacy Choices img.ccpa-toggle(src='https://cdn.auth0.com/website/footer/ccpa.svg' alt='Privacy choices') a(href='https://developer.auth0.com/', target="_blank") - | Supported by - img(src='http://github.com/img/ico_logo.svg' alt='Supported by Auth0 - JWT.io Token Based Authentication').logo + | Crafted by + img(src='http://github.com/img/auth0_logo_ft.svg' alt='Crafted by Auth0 - JWT.io Token Based Authentication').logo #ccpa-modal button#close-ccpa x h3 Your Privacy Choices @@ -83,4 +83,4 @@ html(lang='en') if process.env.NODE_ENV === "production" script(src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js", type="text/javascript", charset="UTF-8", data-domain-script=COOKIE_CONSENT_DOMAIN_ID, id="consent-script") - script(src="http://github.com/js/cookie-consent.js") \ No newline at end of file + script(src="http://github.com/js/cookie-consent.js") diff --git a/views/website/navigation.pug b/views/website/navigation.pug index f0b9d527..1388f24c 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -21,5 +21,5 @@ nav.navbar.closed span.crafted-by__question-mark ? a.supported(href='https://auth0.com/', target="_blank") - | Supported by - img(src='http://github.com/img/ico_logo.svg', alt='Supported by Auth0 - JWT.io Token Based Authentication').logo-mobile + | Crafted by + img(src='http://github.com/img/auth0_logo_ft.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication').logo-mobile From d8635699ef06953099a5524470f08480285473c7 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Thu, 22 Feb 2024 13:30:43 -0500 Subject: [PATCH 584/611] feature: tippy top banner code::identity --- .tool-versions | 1 + src/website/index.js | 4 +- src/website/top-banner.js | 11 +++++ stylus/website/index.styl | 93 ++++++++++++++++++++++++++++++++++++ views/website/navigation.pug | 13 ++++- 5 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 .tool-versions create mode 100644 src/website/top-banner.js diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 00000000..826ccf4f --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +nodejs 16.15.0 diff --git a/src/website/index.js b/src/website/index.js index 1f2e33c3..d86eb9d2 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -11,6 +11,7 @@ import { shareJwtTextElement, } from "./dom-elements.js"; import { CCPAModal } from "./ccpa-modal.js"; +import { TopBanner } from "./top-banner.js"; import queryString from "querystring"; @@ -54,4 +55,5 @@ parseLocationQuery(); setupHighlighting(); setupJwtCounter(); setupShareJwtButton(shareJwtButton, shareJwtTextElement); -CCPAModal(); \ No newline at end of file +CCPAModal(); +TopBanner(); diff --git a/src/website/top-banner.js b/src/website/top-banner.js new file mode 100644 index 00000000..1cc65776 --- /dev/null +++ b/src/website/top-banner.js @@ -0,0 +1,11 @@ +export function TopBanner() { + document.addEventListener("DOMContentLoaded", function () { + document + .querySelector(".close-top-banner") + .addEventListener("click", () => { + document.querySelector(".top-banner").classList.add("closed"); + document.querySelector(".top-banner-spacer").classList.add("hide"); + document.querySelector(".navbar").classList.remove("top-banner-open"); + }); + }); +} diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 5f70f938..50efd788 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1849,3 +1849,96 @@ footer { height: 48px; z-index: 100; } + +.top-banner { + background: linear-gradient(90deg, #ff4f40 0%, #ff44dd 99.99%); + border-radius: 8px; + max-width: 1216px; + padding: 8px 16px; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); + visibility: visible; + opacity: 1; + box-sizing: border-box; + margin: 0 auto; + position: fixed; + top: 12px; + z-index: 1000; + width: 100%; + left: 0; + right: 0; + overflow: hidden; + + &.closed { + visibility: hidden; + height: 0; + opacity: 0; + padding: 0; + transition: all 0.2s linear; + } + + .top-banner-container { + margin: 0 auto; + display: grid; + grid-template-columns: 1fr 30px; + max-width: 1200px; + align-items: center; + + div { + +breakpoint('tablet') { + display: flex; + align-items: center; + } + } + } + + p { + font-size: 14px; + color: #fff; + margin: 0 2rem 0 0; + display: inline; + } + + a { + font-weight: 600; + font-size: 14px; + color: #fff; + text-decoration: none; + display: block; + + span { + margin-left: 8px; + } + + &:hover { + text-decoration: underline; + } + + +breakpoint('tablet') { + display: inline; + } + } + + button { + font-weight: 600; + font-size: 20px; + color: #fff; + text-decoration: none; + background: none; + border: none; + justify-self: flex-end; + display: block; + cursor: pointer; + text-align: right; + transform: rotate(45deg); + } +} + +.top-banner-spacer { + background: black; + height: 50px; + + &.hide { + height: 0; + transition: all 0.2s linear; + } +} diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 1388f24c..1044d9b9 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,4 +1,15 @@ -nav.navbar.closed +.top-banner-bg +.top-banner + .top-banner-container + div + p Build your login box in minutes with Auth0. + a(href="https://regionalevents.okta.com/soyouneedtobuildaloginbox/DeveloperCenter" target="_blank") Register for Code::Identity to learn how + span(aria-hiden="true") → + button.close-top-banner + + +.top-banner-spacer + +nav.navbar.closed.top-banner-open .container .top-mobile .menu-trigger From e6526743329f58dde2099d259584a9a727dd56bc Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Thu, 22 Feb 2024 14:05:31 -0500 Subject: [PATCH 585/611] fix: mobile nav banner not visible due top-banner-bg --- src/website/top-banner.js | 1 + stylus/website/index.styl | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/website/top-banner.js b/src/website/top-banner.js index 1cc65776..e8910a9e 100644 --- a/src/website/top-banner.js +++ b/src/website/top-banner.js @@ -3,6 +3,7 @@ export function TopBanner() { document .querySelector(".close-top-banner") .addEventListener("click", () => { + document.querySelector(".top-banner-bg").classList.add("closed"); document.querySelector(".top-banner").classList.add("closed"); document.querySelector(".top-banner-spacer").classList.add("hide"); document.querySelector(".navbar").classList.remove("top-banner-open"); diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 50efd788..8883933a 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1848,6 +1848,14 @@ footer { width: 100%; height: 48px; z-index: 100; + + &.closed { + visibility: hidden; + height: 0; + opacity: 0; + padding: 0; + transition: all 0.1s linear; + } } .top-banner { From ad5d27cbb0f5a24bdbf6d695cdd0228cacee97e1 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Thu, 22 Feb 2024 15:37:36 -0500 Subject: [PATCH 586/611] update copy --- .tool-versions | 1 - views/website/navigation.pug | 6 ++---- 2 files changed, 2 insertions(+), 5 deletions(-) delete mode 100644 .tool-versions diff --git a/.tool-versions b/.tool-versions deleted file mode 100644 index 826ccf4f..00000000 --- a/.tool-versions +++ /dev/null @@ -1 +0,0 @@ -nodejs 16.15.0 diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 1044d9b9..5e32b2c5 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,10 +1,8 @@ .top-banner-bg .top-banner .top-banner-container - div - p Build your login box in minutes with Auth0. - a(href="https://regionalevents.okta.com/soyouneedtobuildaloginbox/DeveloperCenter" target="_blank") Register for Code::Identity to learn how - span(aria-hiden="true") → + a(href="https://regionalevents.okta.com/soyouneedtobuildaloginbox/DeveloperCenter" target="_blank") Developers! Catch our webinar and see how to build with Auth0 in minutes. + span(aria-hiden="true") → button.close-top-banner + .top-banner-spacer From 8e46978aa9224ede30d1923931865307a7b0d874 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Fri, 23 Feb 2024 09:42:22 -0500 Subject: [PATCH 587/611] fix tippy top banner not closing on introduction and libraries pages --- src/website/introduction/index.js | 2 ++ src/website/libraries/index.js | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/website/introduction/index.js b/src/website/introduction/index.js index 2645aba5..f2d329f1 100644 --- a/src/website/introduction/index.js +++ b/src/website/introduction/index.js @@ -1,6 +1,8 @@ import { setupHighlighting } from "../highlighting.js"; import { setupJwtCounter } from "../counter.js"; +import { TopBanner } from "../top-banner.js"; // Initialization setupHighlighting(); setupJwtCounter(); +TopBanner(); diff --git a/src/website/libraries/index.js b/src/website/libraries/index.js index 2dc41b1b..3b3280ff 100644 --- a/src/website/libraries/index.js +++ b/src/website/libraries/index.js @@ -1,8 +1,10 @@ import { setupLibraries } from "./libraries.js"; import { setupHighlighting } from "../highlighting.js"; import { setupJwtCounter } from "../counter.js"; +import { TopBanner } from "../top-banner.js"; // Initialization setupLibraries(); setupHighlighting(); -setupJwtCounter(); \ No newline at end of file +setupJwtCounter(); +TopBanner(); From 60ac8b5cbe539b6bc04bc68f1b1f4ba013e80384 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Fri, 23 Feb 2024 09:47:58 -0500 Subject: [PATCH 588/611] fix privacy choices modal not opening on introduction and libraries pages --- src/website/introduction/index.js | 4 +++- src/website/libraries/index.js | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/website/introduction/index.js b/src/website/introduction/index.js index f2d329f1..b35fb926 100644 --- a/src/website/introduction/index.js +++ b/src/website/introduction/index.js @@ -1,8 +1,10 @@ -import { setupHighlighting } from "../highlighting.js"; +import { CCPAModal } from "../ccpa-modal.js"; import { setupJwtCounter } from "../counter.js"; +import { setupHighlighting } from "../highlighting.js"; import { TopBanner } from "../top-banner.js"; // Initialization setupHighlighting(); setupJwtCounter(); +CCPAModal(); TopBanner(); diff --git a/src/website/libraries/index.js b/src/website/libraries/index.js index 3b3280ff..0775a920 100644 --- a/src/website/libraries/index.js +++ b/src/website/libraries/index.js @@ -1,10 +1,12 @@ -import { setupLibraries } from "./libraries.js"; -import { setupHighlighting } from "../highlighting.js"; +import { CCPAModal } from "../ccpa-modal.js"; import { setupJwtCounter } from "../counter.js"; +import { setupHighlighting } from "../highlighting.js"; import { TopBanner } from "../top-banner.js"; +import { setupLibraries } from "./libraries.js"; // Initialization setupLibraries(); setupHighlighting(); setupJwtCounter(); +CCPAModal(); TopBanner(); From 66cfebc4a64afd00fbd9ff56e8f2fb1163aae688 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Fri, 23 Feb 2024 10:29:59 -0500 Subject: [PATCH 589/611] fix mobile nav bar not working on introduction and libraries pages --- src/website/dom-elements-common.js | 11 +++++++++-- src/website/dom-elements.js | 10 +--------- src/website/introduction/index.js | 2 ++ src/website/libraries/index.js | 2 ++ src/website/navbar.js | 6 +++--- src/website/smooth-scrolling.js | 4 ++-- 6 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/website/dom-elements-common.js b/src/website/dom-elements-common.js index 9c3abe51..dd9631e8 100644 --- a/src/website/dom-elements-common.js +++ b/src/website/dom-elements-common.js @@ -1,2 +1,9 @@ -export const codeElements = document.querySelectorAll('.plain-text pre code'); -export const counterElement = document.querySelector('.counter'); +export const codeElements = document.querySelectorAll(".plain-text pre code"); +export const counterElement = document.querySelector(".counter"); + +export const navbarElement = document.querySelector("nav.navbar"); +export const menuTriggerElement = document.querySelector(".menu-trigger"); +export const menuLinks = document.querySelectorAll(".navbar .menu a"); +export const menuScrollableLinks = navbarElement.querySelectorAll("a.scrollto"); + +export const sectionElements = document.getElementsByTagName("section"); diff --git a/src/website/dom-elements.js b/src/website/dom-elements.js index 5e1fc415..5d85131c 100644 --- a/src/website/dom-elements.js +++ b/src/website/dom-elements.js @@ -1,14 +1,6 @@ export * from '../dom-elements.js'; export * from './dom-elements-common.js'; -export const navbarElement = document.querySelector('nav.navbar'); -export const menuTriggerElement = document.querySelector('.menu-trigger'); -export const menuLinks = document.querySelectorAll('.navbar .menu a'); -export const menuScrollableLinks = - navbarElement.querySelectorAll('a.scrollto'); - -export const sectionElements = document.getElementsByTagName('section'); - export const extensionSection = document.querySelector('.update-site'); export const ebookSection = document.querySelector('.jtw-ebook-banner'); @@ -22,4 +14,4 @@ export const debuggerSection = document.getElementById('debugger-io'); export const shareJwtButton = document.querySelector('.website-share button'); export const shareJwtTextElement = shareJwtButton.querySelector('span'); -export const starsElements = document.getElementsByClassName('stars'); \ No newline at end of file +export const starsElements = document.getElementsByClassName('stars'); diff --git a/src/website/introduction/index.js b/src/website/introduction/index.js index b35fb926..c75a1b41 100644 --- a/src/website/introduction/index.js +++ b/src/website/introduction/index.js @@ -1,9 +1,11 @@ import { CCPAModal } from "../ccpa-modal.js"; import { setupJwtCounter } from "../counter.js"; import { setupHighlighting } from "../highlighting.js"; +import { setupNavbar } from "../navbar.js"; import { TopBanner } from "../top-banner.js"; // Initialization +setupNavbar(); setupHighlighting(); setupJwtCounter(); CCPAModal(); diff --git a/src/website/libraries/index.js b/src/website/libraries/index.js index 0775a920..e1aaa352 100644 --- a/src/website/libraries/index.js +++ b/src/website/libraries/index.js @@ -1,10 +1,12 @@ import { CCPAModal } from "../ccpa-modal.js"; import { setupJwtCounter } from "../counter.js"; import { setupHighlighting } from "../highlighting.js"; +import { setupNavbar } from "../navbar.js"; import { TopBanner } from "../top-banner.js"; import { setupLibraries } from "./libraries.js"; // Initialization +setupNavbar(); setupLibraries(); setupHighlighting(); setupJwtCounter(); diff --git a/src/website/navbar.js b/src/website/navbar.js index db4821d0..9de30cd6 100644 --- a/src/website/navbar.js +++ b/src/website/navbar.js @@ -1,12 +1,12 @@ import { getOffsetBoundingClientRect } from './utils.js'; -import { +import { navbarElement, menuTriggerElement, menuLinks, sectionElements, menuScrollableLinks -} from './dom-elements.js'; +} from './dom-elements-common.js'; export function setupNavbar() { window.addEventListener('scroll', () => { @@ -50,4 +50,4 @@ export function setupNavbar() { document.body.classList.remove('menu-mobile'); }); }); -} \ No newline at end of file +} diff --git a/src/website/smooth-scrolling.js b/src/website/smooth-scrolling.js index 1cd0758b..1356279f 100644 --- a/src/website/smooth-scrolling.js +++ b/src/website/smooth-scrolling.js @@ -1,4 +1,4 @@ -import { menuScrollableLinks, navbarElement } from './dom-elements.js'; +import { menuScrollableLinks, navbarElement } from './dom-elements-common.js'; import { isWideScreen } from '../utils.js'; import $ from 'jquery'; @@ -9,7 +9,7 @@ import log from 'loglevel'; // jQuery somewhere else. export function smoothScrollTo(element) { // TODO: don't use jQuery - + const navHeight = $(navbarElement).height(); const targetElement = $(element); From 80e4950528f758cd3bf4ef5940a9087721dd955a Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Tue, 27 Feb 2024 11:35:15 -0500 Subject: [PATCH 590/611] fix: update URL TTB --- views/website/navigation.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 5e32b2c5..1a1e0b6c 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,7 +1,7 @@ .top-banner-bg .top-banner .top-banner-container - a(href="https://regionalevents.okta.com/soyouneedtobuildaloginbox/DeveloperCenter" target="_blank") Developers! Catch our webinar and see how to build with Auth0 in minutes. + a(href="https://regionalevents.okta.com/soyouneedtobuildaloginbox/jwtio" target="_blank") Developers! Catch our webinar and see how to build with Auth0 in minutes. span(aria-hiden="true") → button.close-top-banner + From 0c065eaa337c54909b4fc5f80bcb76ea001dbecb Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Thu, 14 Mar 2024 14:00:50 -0500 Subject: [PATCH 591/611] feature: update banner for FGA Webinar --- views/website/navigation.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 1a1e0b6c..18a37be1 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,7 +1,7 @@ .top-banner-bg .top-banner .top-banner-container - a(href="https://regionalevents.okta.com/soyouneedtobuildaloginbox/jwtio" target="_blank") Developers! Catch our webinar and see how to build with Auth0 in minutes. + a(href="https://pages.okta.com/2024-03-WBN-Introduce-FGA?_gl=1*1tgmuji*_ga*NzU5NTY0MzE1LjE2NzcyNjg2OTU.*_ga_QKMSDV5369*MTcxMDQyNjYzMS4zNDQuMS4xNzEwNDI5NjkxLjYwLjAuMA" target="_blank") Catch our webinar on next-gen authorization: Okta Fine-Grained Authorization span(aria-hiden="true") → button.close-top-banner + From 0bc74d546329d9d48980058847d85d537658b46f Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Fri, 15 Mar 2024 10:05:11 -0500 Subject: [PATCH 592/611] fix: typo on OKTA FGA product name --- views/website/navigation.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 18a37be1..09d0921b 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,7 +1,7 @@ .top-banner-bg .top-banner .top-banner-container - a(href="https://pages.okta.com/2024-03-WBN-Introduce-FGA?_gl=1*1tgmuji*_ga*NzU5NTY0MzE1LjE2NzcyNjg2OTU.*_ga_QKMSDV5369*MTcxMDQyNjYzMS4zNDQuMS4xNzEwNDI5NjkxLjYwLjAuMA" target="_blank") Catch our webinar on next-gen authorization: Okta Fine-Grained Authorization + a(href="https://pages.okta.com/2024-03-WBN-Introduce-FGA?_gl=1*1tgmuji*_ga*NzU5NTY0MzE1LjE2NzcyNjg2OTU.*_ga_QKMSDV5369*MTcxMDQyNjYzMS4zNDQuMS4xNzEwNDI5NjkxLjYwLjAuMA" target="_blank") Catch our webinar on next-gen authorization: Okta Fine Grained Authorization span(aria-hiden="true") → button.close-top-banner + From 67e8da56a9dd935466323b536353e2746e45a78c Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Fri, 5 Apr 2024 07:33:12 -0500 Subject: [PATCH 593/611] fix: disable message banner (#687) --- src/website/index.js | 2 -- src/website/introduction/index.js | 2 -- src/website/libraries/index.js | 2 -- views/website/navigation.pug | 11 +---------- 4 files changed, 1 insertion(+), 16 deletions(-) diff --git a/src/website/index.js b/src/website/index.js index d86eb9d2..cb849342 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -11,7 +11,6 @@ import { shareJwtTextElement, } from "./dom-elements.js"; import { CCPAModal } from "./ccpa-modal.js"; -import { TopBanner } from "./top-banner.js"; import queryString from "querystring"; @@ -56,4 +55,3 @@ setupHighlighting(); setupJwtCounter(); setupShareJwtButton(shareJwtButton, shareJwtTextElement); CCPAModal(); -TopBanner(); diff --git a/src/website/introduction/index.js b/src/website/introduction/index.js index c75a1b41..f0076d8f 100644 --- a/src/website/introduction/index.js +++ b/src/website/introduction/index.js @@ -2,11 +2,9 @@ import { CCPAModal } from "../ccpa-modal.js"; import { setupJwtCounter } from "../counter.js"; import { setupHighlighting } from "../highlighting.js"; import { setupNavbar } from "../navbar.js"; -import { TopBanner } from "../top-banner.js"; // Initialization setupNavbar(); setupHighlighting(); setupJwtCounter(); CCPAModal(); -TopBanner(); diff --git a/src/website/libraries/index.js b/src/website/libraries/index.js index e1aaa352..81c2ad9f 100644 --- a/src/website/libraries/index.js +++ b/src/website/libraries/index.js @@ -2,7 +2,6 @@ import { CCPAModal } from "../ccpa-modal.js"; import { setupJwtCounter } from "../counter.js"; import { setupHighlighting } from "../highlighting.js"; import { setupNavbar } from "../navbar.js"; -import { TopBanner } from "../top-banner.js"; import { setupLibraries } from "./libraries.js"; // Initialization @@ -11,4 +10,3 @@ setupLibraries(); setupHighlighting(); setupJwtCounter(); CCPAModal(); -TopBanner(); diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 09d0921b..1388f24c 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,13 +1,4 @@ -.top-banner-bg -.top-banner - .top-banner-container - a(href="https://pages.okta.com/2024-03-WBN-Introduce-FGA?_gl=1*1tgmuji*_ga*NzU5NTY0MzE1LjE2NzcyNjg2OTU.*_ga_QKMSDV5369*MTcxMDQyNjYzMS4zNDQuMS4xNzEwNDI5NjkxLjYwLjAuMA" target="_blank") Catch our webinar on next-gen authorization: Okta Fine Grained Authorization - span(aria-hiden="true") → - button.close-top-banner + - -.top-banner-spacer - -nav.navbar.closed.top-banner-open +nav.navbar.closed .container .top-mobile .menu-trigger From fd7b0d06376dc6cdeb4a3990f00797ca85aa6a86 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Fri, 5 Apr 2024 14:31:02 -0500 Subject: [PATCH 594/611] feature: promote new webinar --- src/website/index.js | 2 ++ src/website/introduction/index.js | 2 ++ src/website/libraries/index.js | 2 ++ views/website/navigation.pug | 9 +++++++++ 4 files changed, 15 insertions(+) diff --git a/src/website/index.js b/src/website/index.js index cb849342..d86eb9d2 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -11,6 +11,7 @@ import { shareJwtTextElement, } from "./dom-elements.js"; import { CCPAModal } from "./ccpa-modal.js"; +import { TopBanner } from "./top-banner.js"; import queryString from "querystring"; @@ -55,3 +56,4 @@ setupHighlighting(); setupJwtCounter(); setupShareJwtButton(shareJwtButton, shareJwtTextElement); CCPAModal(); +TopBanner(); diff --git a/src/website/introduction/index.js b/src/website/introduction/index.js index f0076d8f..c75a1b41 100644 --- a/src/website/introduction/index.js +++ b/src/website/introduction/index.js @@ -2,9 +2,11 @@ import { CCPAModal } from "../ccpa-modal.js"; import { setupJwtCounter } from "../counter.js"; import { setupHighlighting } from "../highlighting.js"; import { setupNavbar } from "../navbar.js"; +import { TopBanner } from "../top-banner.js"; // Initialization setupNavbar(); setupHighlighting(); setupJwtCounter(); CCPAModal(); +TopBanner(); diff --git a/src/website/libraries/index.js b/src/website/libraries/index.js index 81c2ad9f..e1aaa352 100644 --- a/src/website/libraries/index.js +++ b/src/website/libraries/index.js @@ -2,6 +2,7 @@ import { CCPAModal } from "../ccpa-modal.js"; import { setupJwtCounter } from "../counter.js"; import { setupHighlighting } from "../highlighting.js"; import { setupNavbar } from "../navbar.js"; +import { TopBanner } from "../top-banner.js"; import { setupLibraries } from "./libraries.js"; // Initialization @@ -10,3 +11,4 @@ setupLibraries(); setupHighlighting(); setupJwtCounter(); CCPAModal(); +TopBanner(); diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 1388f24c..745e1971 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,3 +1,12 @@ +.top-banner-bg +.top-banner + .top-banner-container + a(href="https://regionalevents.okta.com/codeidentityq1releaseroundup/jwtio" target="_blank") Dive into passkeys, see MFA and other new features in action in this developer webinar + span(aria-hiden="true") → + button.close-top-banner + + +.top-banner-spacer + nav.navbar.closed .container .top-mobile From b6e7708e42840d48729c6e1ae56b5ba0844e6568 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Mon, 8 Apr 2024 09:12:16 -0500 Subject: [PATCH 595/611] fix: nav bar top banner missing class --- views/website/navigation.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 745e1971..e194cb99 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -7,7 +7,7 @@ .top-banner-spacer -nav.navbar.closed +nav.navbar.closed.top-banner-open .container .top-mobile .menu-trigger From 88829bff9dc90fea351490927a51317e310e3224 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Tue, 30 Apr 2024 09:39:16 -0500 Subject: [PATCH 596/611] feat: disable ad bar q1 roundup webinar (#691) --- src/website/index.js | 2 -- src/website/introduction/index.js | 2 -- src/website/libraries/index.js | 2 -- views/website/navigation.pug | 11 +---------- 4 files changed, 1 insertion(+), 16 deletions(-) diff --git a/src/website/index.js b/src/website/index.js index d86eb9d2..cb849342 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -11,7 +11,6 @@ import { shareJwtTextElement, } from "./dom-elements.js"; import { CCPAModal } from "./ccpa-modal.js"; -import { TopBanner } from "./top-banner.js"; import queryString from "querystring"; @@ -56,4 +55,3 @@ setupHighlighting(); setupJwtCounter(); setupShareJwtButton(shareJwtButton, shareJwtTextElement); CCPAModal(); -TopBanner(); diff --git a/src/website/introduction/index.js b/src/website/introduction/index.js index c75a1b41..f0076d8f 100644 --- a/src/website/introduction/index.js +++ b/src/website/introduction/index.js @@ -2,11 +2,9 @@ import { CCPAModal } from "../ccpa-modal.js"; import { setupJwtCounter } from "../counter.js"; import { setupHighlighting } from "../highlighting.js"; import { setupNavbar } from "../navbar.js"; -import { TopBanner } from "../top-banner.js"; // Initialization setupNavbar(); setupHighlighting(); setupJwtCounter(); CCPAModal(); -TopBanner(); diff --git a/src/website/libraries/index.js b/src/website/libraries/index.js index e1aaa352..81c2ad9f 100644 --- a/src/website/libraries/index.js +++ b/src/website/libraries/index.js @@ -2,7 +2,6 @@ import { CCPAModal } from "../ccpa-modal.js"; import { setupJwtCounter } from "../counter.js"; import { setupHighlighting } from "../highlighting.js"; import { setupNavbar } from "../navbar.js"; -import { TopBanner } from "../top-banner.js"; import { setupLibraries } from "./libraries.js"; // Initialization @@ -11,4 +10,3 @@ setupLibraries(); setupHighlighting(); setupJwtCounter(); CCPAModal(); -TopBanner(); diff --git a/views/website/navigation.pug b/views/website/navigation.pug index e194cb99..1388f24c 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,13 +1,4 @@ -.top-banner-bg -.top-banner - .top-banner-container - a(href="https://regionalevents.okta.com/codeidentityq1releaseroundup/jwtio" target="_blank") Dive into passkeys, see MFA and other new features in action in this developer webinar - span(aria-hiden="true") → - button.close-top-banner + - -.top-banner-spacer - -nav.navbar.closed.top-banner-open +nav.navbar.closed .container .top-mobile .menu-trigger From 563ae49ba822b080d0a2b2ede9aa15f58226c31b Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Wed, 24 Jul 2024 13:26:53 -0500 Subject: [PATCH 597/611] feat: enable ttb to gather feedback from community (#701) --- src/website/index.js | 2 ++ src/website/introduction/index.js | 2 ++ src/website/libraries/index.js | 2 ++ views/website/navigation.pug | 11 ++++++++++- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/website/index.js b/src/website/index.js index cb849342..d86eb9d2 100644 --- a/src/website/index.js +++ b/src/website/index.js @@ -11,6 +11,7 @@ import { shareJwtTextElement, } from "./dom-elements.js"; import { CCPAModal } from "./ccpa-modal.js"; +import { TopBanner } from "./top-banner.js"; import queryString from "querystring"; @@ -55,3 +56,4 @@ setupHighlighting(); setupJwtCounter(); setupShareJwtButton(shareJwtButton, shareJwtTextElement); CCPAModal(); +TopBanner(); diff --git a/src/website/introduction/index.js b/src/website/introduction/index.js index f0076d8f..c75a1b41 100644 --- a/src/website/introduction/index.js +++ b/src/website/introduction/index.js @@ -2,9 +2,11 @@ import { CCPAModal } from "../ccpa-modal.js"; import { setupJwtCounter } from "../counter.js"; import { setupHighlighting } from "../highlighting.js"; import { setupNavbar } from "../navbar.js"; +import { TopBanner } from "../top-banner.js"; // Initialization setupNavbar(); setupHighlighting(); setupJwtCounter(); CCPAModal(); +TopBanner(); diff --git a/src/website/libraries/index.js b/src/website/libraries/index.js index 81c2ad9f..e1aaa352 100644 --- a/src/website/libraries/index.js +++ b/src/website/libraries/index.js @@ -2,6 +2,7 @@ import { CCPAModal } from "../ccpa-modal.js"; import { setupJwtCounter } from "../counter.js"; import { setupHighlighting } from "../highlighting.js"; import { setupNavbar } from "../navbar.js"; +import { TopBanner } from "../top-banner.js"; import { setupLibraries } from "./libraries.js"; // Initialization @@ -10,3 +11,4 @@ setupLibraries(); setupHighlighting(); setupJwtCounter(); CCPAModal(); +TopBanner(); diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 1388f24c..4b01443a 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,4 +1,13 @@ -nav.navbar.closed +.top-banner-bg +.top-banner + .top-banner-container + a(href="https://a0.to/jwt-io-feedback" target="_blank") Help us shape the future of jwt.io! Learn more about upcoming changes and share feedback. + span(aria-hiden="true") → + button.close-top-banner + + +.top-banner-spacer + +nav.navbar.closed.top-banner-open .container .top-mobile .menu-trigger From 59f098d576b9d77a069c5f4a6c0bf4391bdc2f61 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Thu, 25 Jul 2024 09:09:55 -0500 Subject: [PATCH 598/611] fix: update ttb copy jwt.io feedback (#703) --- views/website/navigation.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 4b01443a..5a7625b7 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,7 +1,7 @@ .top-banner-bg .top-banner .top-banner-container - a(href="https://a0.to/jwt-io-feedback" target="_blank") Help us shape the future of jwt.io! Learn more about upcoming changes and share feedback. + a(href="https://a0.to/jwt-io-feedback" target="_blank") Learn about the upcoming changes to jwt.io and share your feedback span(aria-hiden="true") → button.close-top-banner + From 0c5ba7a1ca414675a06180ba26dec4e1e1ddcb7d Mon Sep 17 00:00:00 2001 From: Paul Toffoloni <69189821+ptoffy@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:23:53 +0200 Subject: [PATCH 599/611] Update Swift's JWTKit's supported algorithms (#680) * Update Swift's JWTKit supported algorithms * Update JWTKit install command * Format * Add `typ` header to JWTKit --- views/website/libraries/19-Swift.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/views/website/libraries/19-Swift.json b/views/website/libraries/19-Swift.json index 482b87bf..97af5d28 100644 --- a/views/website/libraries/19-Swift.json +++ b/views/website/libraries/19-Swift.json @@ -47,6 +47,7 @@ "nbf": true, "iat": true, "jti": true, + "typ": true, "hs256": true, "hs384": true, "hs512": true, @@ -56,16 +57,16 @@ "es256": true, "es384": true, "es512": true, - "ps256": false, - "ps384": false, - "ps512": false + "ps256": true, + "ps384": true, + "ps512": true, + "eddsa": true }, "authorUrl": "https://github.com/vapor", "authorName": "Vapor", "gitHubRepoPath": "vapor/jwt-kit", "repoUrl": "https://github.com/vapor/jwt-kit", - "installCommandHtml": - ".package(url: \"https://github.com/vapor/jwt-kit.git/", from: \"4.0.0\")" + "installCommandHtml": ".package(url: \"https://github.com/vapor/jwt-kit.git/", from: \"5.0.0\")" }, { "minimumVersion": null, @@ -127,8 +128,7 @@ "authorName": "IBM Swift", "gitHubRepoPath": "IBM-Swift/Swift-JWT", "repoUrl": "https://github.com/IBM-Swift/Swift-JWT", - "installCommandHtml": - ".package(url:\"https://github.com/IBM-Swift/Swift-JWT/", from: \"3.5.0\")" + "installCommandHtml": ".package(url:\"https://github.com/IBM-Swift/Swift-JWT/", from: \"3.5.0\")" }, { "minimumVersion": null, From c4ecc6ddee63594d1256efa76103febfa640b654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20Frade?= <106541307+beatt83@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:30:50 +0100 Subject: [PATCH 600/611] add beatt87 jose-swift library (#678) Add a jose library that adds support of Jose (JWA, JWK, JWS, JWE, JWT). Supported JWT features: - Signing with all JWS algorithms including EDDSA and ES256K. - Encrypting with all JWE algorithms including ECDH-1PU. - Nested JWTs. - Validation of iss, sub, aud, exp, nbf, iat. - Support of jti, typ and cty. --- views/website/libraries/19-Swift.json | 35 +++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/views/website/libraries/19-Swift.json b/views/website/libraries/19-Swift.json index 97af5d28..f0ca67c9 100644 --- a/views/website/libraries/19-Swift.json +++ b/views/website/libraries/19-Swift.json @@ -160,6 +160,41 @@ "gitHubRepoPath": "airsidemobile/JOSESwift", "repoUrl": "https://github.com/airsidemobile/JOSESwift", "installCommandHtml": "pod 'JOSESwift'" + }, + { + "minimumVersion": null, + "support": { + "sign": true, + "verify": true, + "iss": true, + "sub": true, + "aud": true, + "exp": true, + "nbf": true, + "iat": true, + "jti": true, + "typ": true, + "hs256": true, + "hs384": true, + "hs512": true, + "rs256": true, + "rs384": true, + "rs512": true, + "es256": true, + "es384": true, + "es512": true, + "es256k": true, + "ps256": true, + "ps384": true, + "ps512": true, + "eddsa": true + }, + "authorUrl": "https://github.com/beatt83", + "authorName": "Gonçalo Frade", + "gitHubRepoPath": "beatt83/jose-swift", + "repoUrl": "https://github.com/beatt83/jose-swift", + "installCommandHtml": + ".package(url: \"https://github.com/beatt83/jose-swift.git/", .upToNextMinor(from: \"4.0.0\"))" } ] } From a8069602043e1f8c92332c00aa0d25ca72143aff Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Thu, 17 Oct 2024 06:31:35 -0500 Subject: [PATCH 601/611] Add persistence to ad banner (#710) * feature: add persistence to the ad banner with localStorage * fix: smooth transition * fix: remove class not required * update copy for best of devday * remove not used properties * delete GH test action * move GH test action * fix: fixed height logo hero banner * fix: fixed height logo Auth0 by Okta * fix: render the ttb banner smoothly when loading --- .github/{workflows => inactive}/test.yml | 0 src/website/top-banner.js | 99 +++++++++++++++++++++++- stylus/website/index.styl | 36 ++++++++- views/website/layout.pug | 3 +- views/website/navigation.pug | 10 +-- 5 files changed, 133 insertions(+), 15 deletions(-) rename .github/{workflows => inactive}/test.yml (100%) diff --git a/.github/workflows/test.yml b/.github/inactive/test.yml similarity index 100% rename from .github/workflows/test.yml rename to .github/inactive/test.yml diff --git a/src/website/top-banner.js b/src/website/top-banner.js index e8910a9e..84fa6304 100644 --- a/src/website/top-banner.js +++ b/src/website/top-banner.js @@ -1,12 +1,103 @@ +const MESSAGE_BAR_STATE = { + CLOSED: "CLOSED", + OPEN: "OPEN", +}; + +const MESSAGE_BAR_STATUS = { + ACTIVE: "ACTIVE", + INACTIVE: "INACTIVE", +}; + +const messageBar = { + status: MESSAGE_BAR_STATUS.ACTIVE, + id: { + key: "messageBar_id", + value: "BEST_OF_DEVDAY_2024", + }, + state: { + key: "messageBar_state", + }, +}; + +const closeMessageBar = () => { + const isMessageBarActive = messageBar.status === MESSAGE_BAR_STATUS.ACTIVE; + + if (!isMessageBarActive) { + return; + } + + window.localStorage.setItem(messageBar.state.key, MESSAGE_BAR_STATE.CLOSED); + + document.querySelector(".top-banner-bg").classList.add("closed"); + document.querySelector(".top-banner").classList.add("closed"); + document.querySelector(".content").classList.remove("top-banner-open"); + document.querySelector(".top-mobile").classList.remove("top-banner-open"); + document.querySelector(".navbar").classList.remove("top-banner-open"); +}; + +const renderTopBanner = () => { + document.querySelector(".top-banner-bg").classList.remove("closed"); + document.querySelector(".top-banner").classList.remove("closed"); + document.querySelector(".content").classList.add("top-banner-open"); + document.querySelector(".top-mobile").classList.add("top-banner-open"); + document.querySelector(".navbar").classList.add("top-banner-open"); +}; + +const loadBannerStateFromLocalStorage = () => { + let messageBarId = window.localStorage.getItem(messageBar.id.key); + let messageBarState = window.localStorage.getItem(messageBar.state.key); + + if (!messageBarId) { + window.localStorage.setItem(messageBar.id.key, messageBar.id.value); + messageBarId = window.localStorage.getItem(messageBar.id.key); + } + + if (!messageBarState) { + window.localStorage.setItem(messageBar.state.key, MESSAGE_BAR_STATE.OPEN); + messageBarState = window.localStorage.getItem(messageBar.state.key); + } + + switch (messageBar.status) { + case MESSAGE_BAR_STATUS.ACTIVE: { + const isExistingCta = messageBarId === messageBar.id.value; + + if (!isExistingCta) { + window.localStorage.setItem(messageBar.id.key, messageBar.id.value); + window.localStorage.setItem( + messageBar.state.key, + MESSAGE_BAR_STATE.OPEN + ); + + renderTopBanner(); + + return; + } + + switch (messageBarState) { + case MESSAGE_BAR_STATE.OPEN: { + renderTopBanner(); + + return; + } + default: { + return; + } + } + } + default: { + return; + } + } +}; + export function TopBanner() { document.addEventListener("DOMContentLoaded", function () { + loadBannerStateFromLocalStorage(); + document .querySelector(".close-top-banner") .addEventListener("click", () => { - document.querySelector(".top-banner-bg").classList.add("closed"); - document.querySelector(".top-banner").classList.add("closed"); - document.querySelector(".top-banner-spacer").classList.add("hide"); - document.querySelector(".navbar").classList.remove("top-banner-open"); + closeMessageBar(); }); }); } diff --git a/stylus/website/index.styl b/stylus/website/index.styl index 8883933a..cbe3099b 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -126,7 +126,7 @@ body { &.top-banner-open { margin-top: 5px; - transition: all 0.2s linear; + transition: margin-top 0.4s linear; +breakpoint('tablet') { margin-top: 48px; @@ -141,11 +141,21 @@ body { border-bottom: 1px solid rgba(#4A4A4A, 0.6); clearfix(); margin: 0 -15px; + padding-top: 0; + transition: padding-top 0.4s linear; +breakpoint('tablet') { border: none; margin: 0; } + + &.top-banner-open { + padding-top: 50px; + + +breakpoint('tablet') { + padding-top: 0; + } + } } .menu-trigger { @@ -299,6 +309,7 @@ body { position: absolute; right: 15px; top: 28px; + height: 32px; } +breakpoint('desktop') { @@ -442,6 +453,19 @@ body { } } +.content { + +breakpoint('tablet') { + padding-top: 0; + transition: padding-top 0.4s linear; + } + + &.top-banner-open { + +breakpoint('tablet') { + padding-top: 50px; + } + } +} + // banner-jwt .banner-jwt { background: black; @@ -503,10 +527,12 @@ body { img { width: 70px; + height: 70px; display: block; +breakpoint('desktop') { width: 80px; + height: 80px; } } } @@ -1848,13 +1874,14 @@ footer { width: 100%; height: 48px; z-index: 100; + transition: height 0.4s linear; &.closed { visibility: hidden; height: 0; opacity: 0; padding: 0; - transition: all 0.1s linear; + transition: height 0.4s linear; } } @@ -1875,13 +1902,14 @@ footer { left: 0; right: 0; overflow: hidden; + transition: all 0.4s linear; &.closed { visibility: hidden; height: 0; opacity: 0; padding: 0; - transition: all 0.2s linear; + transition: all 0.4s linear; } .top-banner-container { @@ -1947,6 +1975,6 @@ footer { &.hide { height: 0; - transition: all 0.2s linear; + transition: all 0.4s linear; } } diff --git a/views/website/layout.pug b/views/website/layout.pug index 74f46239..d692a850 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -45,7 +45,8 @@ html(lang='en') include ./navigation.pug - block content + .content + block content footer .container diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 5a7625b7..fe93afb6 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,13 +1,11 @@ -.top-banner-bg -.top-banner +.top-banner-bg.closed +.top-banner.closed .top-banner-container - a(href="https://a0.to/jwt-io-feedback" target="_blank") Learn about the upcoming changes to jwt.io and share your feedback + a(href="https://pages.okta.com/2024-11-WBN-Best-of-Dev-Day_LP/" target="_blank") Missed DevDay24? Register for the Best of DevDay span(aria-hiden="true") → button.close-top-banner + -.top-banner-spacer - -nav.navbar.closed.top-banner-open +nav.navbar .container .top-mobile .menu-trigger From 6a9c56726bf9f5725ffa4d6bdb23dd1d65f4f004 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Tue, 22 Oct 2024 16:11:18 -0500 Subject: [PATCH 602/611] update ttb background --- stylus/website/index.styl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stylus/website/index.styl b/stylus/website/index.styl index cbe3099b..fe593c89 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1886,7 +1886,7 @@ footer { } .top-banner { - background: linear-gradient(90deg, #ff4f40 0%, #ff44dd 99.99%); + background: #242424; border-radius: 8px; max-width: 1216px; padding: 8px 16px; From f2eb7337ea723c0dd16cc6e2f7c51e3cdf841f0e Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Fri, 8 Nov 2024 10:13:16 -0500 Subject: [PATCH 603/611] feat: promote jwt.io feedback ttb --- src/website/top-banner.js | 2 +- views/website/navigation.pug | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/website/top-banner.js b/src/website/top-banner.js index 84fa6304..4afc4158 100644 --- a/src/website/top-banner.js +++ b/src/website/top-banner.js @@ -12,7 +12,7 @@ const messageBar = { status: MESSAGE_BAR_STATUS.ACTIVE, id: { key: "messageBar_id", - value: "BEST_OF_DEVDAY_2024", + value: "JWT_IO_FEEDBACK", }, state: { key: "messageBar_state", diff --git a/views/website/navigation.pug b/views/website/navigation.pug index fe93afb6..85f1aaf8 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,7 +1,7 @@ .top-banner-bg.closed .top-banner.closed .top-banner-container - a(href="https://pages.okta.com/2024-11-WBN-Best-of-Dev-Day_LP/" target="_blank") Missed DevDay24? Register for the Best of DevDay + a(href="https://a0.to/jwt-io-feedback" target="_blank") Learn about the upcoming changes to jwt.io and share your feedback span(aria-hiden="true") → button.close-top-banner + From 08a3deec3143c617689d31998e38730544f93f39 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Thu, 19 Dec 2024 14:25:42 -0500 Subject: [PATCH 604/611] feat: update ttb copy --- src/website/top-banner.js | 2 +- stylus/website/index.styl | 2 +- views/website/navigation.pug | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/website/top-banner.js b/src/website/top-banner.js index 4afc4158..da4208ff 100644 --- a/src/website/top-banner.js +++ b/src/website/top-banner.js @@ -12,7 +12,7 @@ const messageBar = { status: MESSAGE_BAR_STATUS.ACTIVE, id: { key: "messageBar_id", - value: "JWT_IO_FEEDBACK", + value: "JWT_V2_FEEDBACK", }, state: { key: "messageBar_state", diff --git a/stylus/website/index.styl b/stylus/website/index.styl index fe593c89..cbe3099b 100644 --- a/stylus/website/index.styl +++ b/stylus/website/index.styl @@ -1886,7 +1886,7 @@ footer { } .top-banner { - background: #242424; + background: linear-gradient(90deg, #ff4f40 0%, #ff44dd 99.99%); border-radius: 8px; max-width: 1216px; padding: 8px 16px; diff --git a/views/website/navigation.pug b/views/website/navigation.pug index 85f1aaf8..dd10e956 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,7 +1,7 @@ .top-banner-bg.closed .top-banner.closed .top-banner-container - a(href="https://a0.to/jwt-io-feedback" target="_blank") Learn about the upcoming changes to jwt.io and share your feedback + a(href="https://a0.to/jwt-io-feedback" target="_blank") Get an exclusive look at jwt.io v2 and help us shape its final form with your feedback. span(aria-hiden="true") → button.close-top-banner + From 5d0061e32f7db93ebf6219796ddd1815209caf06 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Thu, 19 Dec 2024 15:22:13 -0500 Subject: [PATCH 605/611] feat: add robots.txt file --- Gruntfile.js | 6 +++++- robots.txt | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 robots.txt diff --git a/Gruntfile.js b/Gruntfile.js index c6d22bae..15e564c6 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -48,6 +48,10 @@ module.exports = (grunt) => { src: ["sitemap.xml"], dest: "dist/website/", }, + { + src: ["robots.txt"], + dest: "dist/website/", + }, ], }, extension: { @@ -278,4 +282,4 @@ module.exports = (grunt) => { grunt.registerTask("test", ["unit-tests", "functional-tests"]); grunt.registerTask("default", ["build-dev", "connect:website", "watch"]); -}; \ No newline at end of file +}; diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..0713d672 --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Disallow: /beta/ +Allow: / +Sitemap: https://jwt.io/sitemap.xml From 17d2d4051705800f6d5012cf5371bf72414a0838 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Thu, 16 Jan 2025 12:31:27 -0500 Subject: [PATCH 606/611] feat: localize jwt.io banner japanese --- server.js | 27 +++++++++++++++++++++++---- views/website/navigation.pug | 8 ++++++-- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/server.js b/server.js index 8f4148fc..52fbdc3a 100644 --- a/server.js +++ b/server.js @@ -18,22 +18,41 @@ if (process.env.NODE_ENV === "production") { ); } +app.use((req, res, next) => { + const acceptLanguage = req.headers['accept-language']; + + if(acceptLanguage){ + const preferredLanguage = acceptLanguage.split(",")[0].split("-")[0]; + + req.preferredLanguage = preferredLanguage; + }else{ + req.preferredLanguage = 'en'; + } + + next(); +}) + app.use((req, res, next) => { res.locals.COOKIE_CONSENT_DOMAIN_ID = process.env.COOKIE_CONSENT_DOMAIN_ID; next(); }); app.use(express.static("dist/website")); app.get("/", function(req, res) { - res.render("index"); + res.render("index", { + preferredLanguage: req.preferredLanguage, + }); }); app.get("/introduction", function(req, res) { - res.render("introduction"); + res.render("introduction", { + preferredLanguage: req.preferredLanguage, + }); }); app.get("/libraries", function(req, res) { res.render("libraries", { - languages: languages + languages: languages, + preferredLanguage: req.preferredLanguage, }); }); @@ -44,4 +63,4 @@ app.get("/home", function(req, res) { app.listen(process.env.PORT || 3000, function() { console.log("Started."); -}); \ No newline at end of file +}); diff --git a/views/website/navigation.pug b/views/website/navigation.pug index dd10e956..d84a986e 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -1,8 +1,12 @@ .top-banner-bg.closed .top-banner.closed .top-banner-container - a(href="https://a0.to/jwt-io-feedback" target="_blank") Get an exclusive look at jwt.io v2 and help us shape its final form with your feedback. - span(aria-hiden="true") → + if preferredLanguage === 'ja' + a(href="https://a0.to/jwt-io-feedback-ja" target="_blank") jwt.io v2ベータバージョン: フィードバックをお寄せください。 + span(aria-hiden="true") → + else + a(href="https://a0.to/jwt-io-feedback" target="_blank") Get an exclusive look at jwt.io v2 and help us shape its final form with your feedback. + span(aria-hiden="true") → button.close-top-banner + nav.navbar From 6d2191c8b1e7f8b4de3325361affe3c7310fa40f Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Thu, 16 Jan 2025 14:18:33 -0500 Subject: [PATCH 607/611] refactor: use negotiator and intl-localematcher to get the preferred language --- package-lock.json | 54 ++++++++++++++++++++++++++++++++++++++--------- package.json | 4 +++- server.js | 19 ++++++++++------- 3 files changed, 58 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d2092ac..6f26525a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "jwt.io", "version": "3.3.0", "dependencies": { + "@formatjs/intl-localematcher": "^0.5.10", "@octokit/rest": "^18.0.12", "dotenv": "^8.2.0", "express": "^4.17.1", @@ -15,6 +16,7 @@ "jstransformer-markdown": "^1.2.1", "jstransformer-markdown-it": "^2.1.0", "lodash.debounce": "^4.0.8", + "negotiator": "^1.0.0", "pug": "^2.0.4", "querystring": "^0.2.0" }, @@ -72,6 +74,9 @@ "webpack": "^4.33.0", "webpack-merge": "^4.2.1", "xhr-mock": "^2.4.1" + }, + "engines": { + "node": "16" } }, "node_modules/@ampproject/remapping": { @@ -1860,6 +1865,14 @@ "integrity": "sha512-oyOjMhyKMLEjOOtvkwg0G4pAzLQ9WdbbeX7WdqKzvYXu+UFgD0Zo/Brq5Q49zNmnGPPzV5rmYvrr0jz1zWx8Iw==", "dev": true }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.10.tgz", + "integrity": "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==", + "dependencies": { + "tslib": "2" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", @@ -2297,6 +2310,14 @@ "node": ">= 0.6" } }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", @@ -11822,9 +11843,9 @@ } }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "engines": { "node": ">= 0.6" } @@ -16863,8 +16884,7 @@ "node_modules/tslib": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "node_modules/tty-browserify": { "version": "0.0.0", @@ -19916,6 +19936,14 @@ } } }, + "@formatjs/intl-localematcher": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.10.tgz", + "integrity": "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==", + "requires": { + "tslib": "2" + } + }, "@jridgewell/gen-mapping": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", @@ -20331,6 +20359,13 @@ "requires": { "mime-types": "~2.1.34", "negotiator": "0.6.3" + }, + "dependencies": { + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + } } }, "acorn": { @@ -28207,9 +28242,9 @@ } }, "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==" }, "neo-async": { "version": "2.6.2", @@ -32457,8 +32492,7 @@ "tslib": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "tty-browserify": { "version": "0.0.0", diff --git a/package.json b/package.json index fe769327..187c558b 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "url": "https://github.com/jsonwebtoken/jsonwebtoken.github.io" }, "dependencies": { + "@formatjs/intl-localematcher": "^0.5.10", "@octokit/rest": "^18.0.12", "dotenv": "^8.2.0", "express": "^4.17.1", @@ -13,6 +14,7 @@ "jstransformer-markdown": "^1.2.1", "jstransformer-markdown-it": "^2.1.0", "lodash.debounce": "^4.0.8", + "negotiator": "^1.0.0", "pug": "^2.0.4", "querystring": "^0.2.0" }, @@ -83,4 +85,4 @@ "build:libraries": "node libraries.js" }, "heroku-run-build-script": true -} \ No newline at end of file +} diff --git a/server.js b/server.js index 52fbdc3a..8d4812eb 100644 --- a/server.js +++ b/server.js @@ -2,6 +2,8 @@ const express = require("express"); const enforce = require("express-sslify"); const languages = require("./libraries.json"); const dotenv = require("dotenv").config(); +const Negotiator = require("negotiator"); +const localeMatcher = require("@formatjs/intl-localematcher"); const app = express(); @@ -19,16 +21,17 @@ if (process.env.NODE_ENV === "production") { } app.use((req, res, next) => { - const acceptLanguage = req.headers['accept-language']; + const languagesFromRequestHeaders = new Negotiator(req).languages(); + const LANGUAGE_CODES = ["en", "ja"] + const DEFAULT_LANGUAGE_CODE = ["en"] - if(acceptLanguage){ - const preferredLanguage = acceptLanguage.split(",")[0].split("-")[0]; - - req.preferredLanguage = preferredLanguage; - }else{ - req.preferredLanguage = 'en'; - } + const languageFromRequestHeader = localeMatcher.match( + languagesFromRequestHeaders, + LANGUAGE_CODES, + DEFAULT_LANGUAGE_CODE, + ); + req.preferredLanguage = languageFromRequestHeader; next(); }) From 11ddb09d47b1edcfd649691249c39d04a7436de5 Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Fri, 31 Jan 2025 07:30:53 -0500 Subject: [PATCH 608/611] feat: update header and footer logo (#731) --- img/website/auth0_logo.svg | 29 +++++++++++++++++++++++++++++ img/website/auth0_logo_ft.svg | 17 ----------------- img/website/auth0_logo_header.svg | 17 ----------------- views/extension/index.pug | 2 +- views/website/counter.pug | 2 +- views/website/layout.pug | 2 +- views/website/md/introduction.md | 2 +- views/website/navigation.pug | 4 ++-- 8 files changed, 35 insertions(+), 40 deletions(-) create mode 100644 img/website/auth0_logo.svg delete mode 100644 img/website/auth0_logo_ft.svg delete mode 100644 img/website/auth0_logo_header.svg diff --git a/img/website/auth0_logo.svg b/img/website/auth0_logo.svg new file mode 100644 index 00000000..12a27bb8 --- /dev/null +++ b/img/website/auth0_logo.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + diff --git a/img/website/auth0_logo_ft.svg b/img/website/auth0_logo_ft.svg deleted file mode 100644 index 57c51da3..00000000 --- a/img/website/auth0_logo_ft.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/img/website/auth0_logo_header.svg b/img/website/auth0_logo_header.svg deleted file mode 100644 index c24832d1..00000000 --- a/img/website/auth0_logo_header.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/views/extension/index.pug b/views/extension/index.pug index ede24c46..71a2b7ed 100644 --- a/views/extension/index.pug +++ b/views/extension/index.pug @@ -38,7 +38,7 @@ block content .pull-left a(target="_blank" href="https://developer.auth0.com/") | Crafted by   - img(src="http://github.com/img/auth0_logo_ft.svg" alt='Crafted by Auth0 - JWT.io Token Based Authentication') + img(src="http://github.com/img/auth0_logo.svg" alt='Crafted by Auth0 - JWT.io Token Based Authentication') a  -  a.keep-deco(href='https://github.com/jsonwebtoken/jsonwebtoken.github.io/blob/master/LICENSE.txt', target="_blank") License diff --git a/views/website/counter.pug b/views/website/counter.pug index 95c4363d..a4a41daa 100644 --- a/views/website/counter.pug +++ b/views/website/counter.pug @@ -1,6 +1,6 @@ .tokens-created .container - img(src='http://github.com/img/auth0_logo_ft.svg' alt='Auth0 logo').logo + img(src='http://github.com/img/auth0_logo.svg' alt='Auth0 logo').logo p JWT.io is brought to you by a(href='https://auth0.com/signup/?utm_source=jwt.io&utm_medium=microsites&utm_campaign=devn_signup', target="_blank", rel="noreferrer noopener") Auth0 p Securely implement authentication with JWTs using Auth0 on any stack and any device in less than 10 minutes. diff --git a/views/website/layout.pug b/views/website/layout.pug index d692a850..b65068f5 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -64,7 +64,7 @@ html(lang='en') img.ccpa-toggle(src='https://cdn.auth0.com/website/footer/ccpa.svg' alt='Privacy choices') a(href='https://developer.auth0.com/', target="_blank") | Crafted by - img(src='http://github.com/img/auth0_logo_ft.svg' alt='Crafted by Auth0 - JWT.io Token Based Authentication').logo + img(src='http://github.com/img/auth0_logo.svg' alt='Crafted by Auth0 - JWT.io Token Based Authentication').logo #ccpa-modal button#close-ccpa x h3 Your Privacy Choices diff --git a/views/website/md/introduction.md b/views/website/md/introduction.md index ff39b890..c4a2abc7 100755 --- a/views/website/md/introduction.md +++ b/views/website/md/introduction.md @@ -134,4 +134,4 @@ Regarding usage, JWT is used at Internet scale. This highlights the ease of clie ![Comparing the length of an encoded JWT and an encoded SAML](https://cdn.auth0.com/content/jwt/comparing-jwt-vs-saml2.png) _Comparison of the length of an encoded JWT and an encoded SAML_ -If you want to read more about JSON Web Tokens and even start using them to perform authentication in your own applications, browse to the [JSON Web Token landing page](http://auth0.com/learn/json-web-tokens) at Auth0 by Okta. +If you want to read more about JSON Web Tokens and even start using them to perform authentication in your own applications, browse to the [JSON Web Token landing page](http://auth0.com/learn/json-web-tokens) at Auth0. diff --git a/views/website/navigation.pug b/views/website/navigation.pug index d84a986e..beda0aa9 100644 --- a/views/website/navigation.pug +++ b/views/website/navigation.pug @@ -28,9 +28,9 @@ nav.navbar .social a.a0(href='https://developer.auth0.com/', target='_blank') span.by-text Crafted by - img(src='http://github.com/img/auth0_logo_header.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication') + img(src='http://github.com/img/auth0_logo.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication') span.crafted-by__question-mark ? a.supported(href='https://auth0.com/', target="_blank") | Crafted by - img(src='http://github.com/img/auth0_logo_ft.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication').logo-mobile + img(src='http://github.com/img/auth0_logo.svg', alt='Crafted by Auth0 - JWT.io Token Based Authentication').logo-mobile From faf1867d77bbc56186b1ae841e0025f3f44cdc8d Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:58:03 -0500 Subject: [PATCH 609/611] feat: add event dataLayer --- src/cookie-consent.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/cookie-consent.js b/src/cookie-consent.js index 32fdb795..401b19f4 100644 --- a/src/cookie-consent.js +++ b/src/cookie-consent.js @@ -11,6 +11,23 @@ function addScripts(lvl) { // Necessary if (lvl.includes(COOKIE_CONSENT_NECESSARY)) { + if (!window.digitalData) { + window.digitalData = {}; + } + + if (!window.dataLayer) { + window.dataLayer = []; + } + + const dataLayerInfo = { + event: "ab-viewed", + experiment: "OKTA_NEW_HOMEPAGE_v1", + variation: "control" + }; + + //add the data to each data layer object + window.digitalData.abInfo = dataLayerInfo; + window.dataLayer.push(dataLayerInfo); // GTM (function(w, d, s, l, i) { w[l] = w[l] || []; @@ -62,4 +79,4 @@ const poll = window.setInterval(() => { } else { tries++; } -}, POLL_INTERVAL); \ No newline at end of file +}, POLL_INTERVAL); From 3c66281f1269ceb75309f2f99a67c332c2aa424a Mon Sep 17 00:00:00 2001 From: Byron Motoche <116190812+byron-okta@users.noreply.github.com> Date: Wed, 5 Feb 2025 17:19:12 -0500 Subject: [PATCH 610/611] refactor: follow conventions dataLayer data --- src/cookie-consent.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/cookie-consent.js b/src/cookie-consent.js index 401b19f4..bb7e40c9 100644 --- a/src/cookie-consent.js +++ b/src/cookie-consent.js @@ -20,12 +20,11 @@ function addScripts(lvl) { } const dataLayerInfo = { - event: "ab-viewed", - experiment: "OKTA_NEW_HOMEPAGE_v1", - variation: "control" + 'event': "ab-viewed", + 'experiment': "JWT_NEW_DESIGN", + 'variation': "control" }; - //add the data to each data layer object window.digitalData.abInfo = dataLayerInfo; window.dataLayer.push(dataLayerInfo); // GTM From 5b5dcb32ecbc126d300069d779744d1e81e6c238 Mon Sep 17 00:00:00 2001 From: christiansamaniego-okta <199278128+christiansamaniego-okta@users.noreply.github.com> Date: Fri, 21 Feb 2025 18:20:35 -0500 Subject: [PATCH 611/611] Update README.md (#741) * Update README.md This change adds a section on the README.md file including the steps to run the project locally * Update README.md Co-authored-by: christiansamaniego-okta <199278128+christiansamaniego-okta@users.noreply.github.com> --------- Co-authored-by: Byron Motoche <116190812+byron-okta@users.noreply.github.com> --- README.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/README.md b/README.md index 8e09a5a2..c79ca634 100644 --- a/README.md +++ b/README.md @@ -115,4 +115,36 @@ To run tests, execute: Look at the end of the [Gruntfile](/Gruntfile.js) for other common tasks. +### How to run project locally + +- Make sure that you run these commands using Node `v16.x.x`. + +- Clone the project: + +```bash +git clone org-6887375@github.com:jsonwebtoken/jsonwebtoken.github.io.git +``` +- Make the project directory your current directory: + +```bash +cd jsonwebtoken.github.io +``` + +- Install required dependencies: + +```bash +npm install +``` +- Build the project: + +```bash +npm run build +``` +- Run the development server: + +```bash +npm run start +``` +- Visit: [http://localhost:3000](http://localhost:3000) + ### Happy hacking!